Loading
[ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_whitelisting", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "OnlyAdmin", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "AdminAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "AdminRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "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": "address", "name": "user", "type": "address" } ], "name": "guardAdmin", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "isAdmin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "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": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "whitelisting", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620026e0380380620026e0833981810160405281019062000037919062000431565b83828281600390816200004b91906200072c565b5080600490816200005d91906200072c565b505050620000756000801b82620000c260201b60201c565b505082600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000813565b6000620000d68383620001c660201b60201c565b620001bb5760016005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001576200023160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050620001c0565b600090505b92915050565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200027a826200024d565b9050919050565b6200028c816200026d565b81146200029857600080fd5b50565b600081519050620002ac8162000281565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200030782620002bc565b810181811067ffffffffffffffff82111715620003295762000328620002cd565b5b80604052505050565b60006200033e62000239565b90506200034c8282620002fc565b919050565b600067ffffffffffffffff8211156200036f576200036e620002cd565b5b6200037a82620002bc565b9050602081019050919050565b60005b83811015620003a75780820151818401526020810190506200038a565b60008484015250505050565b6000620003ca620003c48462000351565b62000332565b905082815260208101848484011115620003e957620003e8620002b7565b5b620003f684828562000387565b509392505050565b600082601f830112620004165762000415620002b2565b5b815162000428848260208601620003b3565b91505092915050565b600080600080608085870312156200044e576200044d62000243565b5b60006200045e878288016200029b565b945050602062000471878288016200029b565b935050604085015167ffffffffffffffff81111562000495576200049462000248565b5b620004a387828801620003fe565b925050606085015167ffffffffffffffff811115620004c757620004c662000248565b5b620004d587828801620003fe565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200053457607f821691505b6020821081036200054a5762000549620004ec565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005b47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000575565b620005c0868362000575565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200060d620006076200060184620005d8565b620005e2565b620005d8565b9050919050565b6000819050919050565b6200062983620005ec565b62000641620006388262000614565b84845462000582565b825550505050565b600090565b6200065862000649565b620006658184846200061e565b505050565b5b818110156200068d57620006816000826200064e565b6001810190506200066b565b5050565b601f821115620006dc57620006a68162000550565b620006b18462000565565b81016020851015620006c1578190505b620006d9620006d08562000565565b8301826200066a565b50505b505050565b600082821c905092915050565b60006200070160001984600802620006e1565b1980831691505092915050565b60006200071c8383620006ee565b9150826002028217905092915050565b6200073782620004e1565b67ffffffffffffffff811115620007535762000752620002cd565b5b6200075f82546200051b565b6200076c82828562000691565b600060209050601f831160018114620007a457600084156200078f578287015190505b6200079b85826200070e565b8655506200080b565b601f198416620007b48662000550565b60005b82811015620007de57848901518255600182019150602085019450602081019050620007b7565b86831015620007fe5784890151620007fa601f891682620006ee565b8355505b6001600288020188555050505b505050505050565b611ebd80620008236000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c8063520c5828116100c35780639dc29fac1161007c5780639dc29fac146103ed578063a217fddf14610409578063a9059cbb14610427578063d547741f14610457578063dd62ed3e14610473578063e0b60c65146104a357610158565b8063520c582814610317578063704802751461033557806370a082311461035157806375b238fc1461038157806391d148541461039f57806395d89b41146103cf57610158565b8063248a9ca311610115578063248a9ca31461024557806324d7806c146102755780632f2ff15d146102a5578063313ce567146102c157806336568abe146102df57806340c10f19146102fb57610158565b806301ffc9a71461015d57806306fdde031461018d578063095ea7b3146101ab5780631785f53c146101db57806318160ddd146101f757806323b872dd14610215575b600080fd5b6101776004803603810190610172919061190a565b6104bf565b6040516101849190611952565b60405180910390f35b610195610539565b6040516101a291906119fd565b60405180910390f35b6101c560048036038101906101c09190611ab3565b6105cb565b6040516101d29190611952565b60405180910390f35b6101f560048036038101906101f09190611af3565b6105ee565b005b6101ff6106af565b60405161020c9190611b2f565b60405180910390f35b61022f600480360381019061022a9190611b4a565b6106b9565b60405161023c9190611952565b60405180910390f35b61025f600480360381019061025a9190611bd3565b61081a565b60405161026c9190611c0f565b60405180910390f35b61028f600480360381019061028a9190611af3565b61083a565b60405161029c9190611952565b60405180910390f35b6102bf60048036038101906102ba9190611c2a565b61088c565b005b6102c96108ae565b6040516102d69190611c86565b60405180910390f35b6102f960048036038101906102f49190611c2a565b6108b7565b005b61031560048036038101906103109190611ab3565b610932565b005b61031f6109e8565b60405161032c9190611cb0565b60405180910390f35b61034f600480360381019061034a9190611af3565b610a0e565b005b61036b60048036038101906103669190611af3565b610a9f565b6040516103789190611b2f565b60405180910390f35b610389610ae7565b6040516103969190611c0f565b60405180910390f35b6103b960048036038101906103b49190611c2a565b610b0b565b6040516103c69190611952565b60405180910390f35b6103d7610b76565b6040516103e491906119fd565b60405180910390f35b61040760048036038101906104029190611ab3565b610c08565b005b610411610cbe565b60405161041e9190611c0f565b60405180910390f35b610441600480360381019061043c9190611ab3565b610cc5565b60405161044e9190611952565b60405180910390f35b610471600480360381019061046c9190611c2a565b610e27565b005b61048d60048036038101906104889190611ccb565b610e49565b60405161049a9190611b2f565b60405180910390f35b6104bd60048036038101906104b89190611af3565b610ed0565b005b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610532575061053182610f57565b5b9050919050565b60606003805461054890611d3a565b80601f016020809104026020016040519081016040528092919081815260200182805461057490611d3a565b80156105c15780601f10610596576101008083540402835291602001916105c1565b820191906000526020600020905b8154815290600101906020018083116105a457829003601f168201915b5050505050905090565b6000806105d6610fc1565b90506105e3818585610fc9565b600191505092915050565b6105f733610ed0565b6106217fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610b0b565b156106ac576106507fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177582610fdb565b503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fdb9d5d31320daf5bc7181d565b6da4d12e30f0f4d5aa324a992426c14a1d19ce60405160405180910390a35b50565b6000600254905090565b600033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b81526004016107179190611cb0565b602060405180830381865afa158015610734573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107589190611d97565b5083600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b81526004016107b59190611cb0565b602060405180830381865afa1580156107d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f69190611d97565b506108028686866110ce565b61080d868686611162565b6001925050509392505050565b600060056000838152602001908152602001600020600101549050919050565b6000806108677fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177584610b0b565b905060006108786000801b85610b0b565b905081806108835750805b92505050919050565b6108958261081a565b61089e81611256565b6108a8838361126a565b50505050565b60006012905090565b6108bf610fc1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610923576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61092d8282610fdb565b505050565b61093b33610ed0565b81600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b81526004016109979190611cb0565b602060405180830381865afa1580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d89190611d97565b506109e3838361135c565b505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a1733610ed0565b610a417fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217758261126a565b503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fbf3f493c772c8c283fd124432c2d0f539ab343faa04258fe88e52912d36b102b60405160405180910390a350565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b60006005600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b606060048054610b8590611d3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb190611d3a565b8015610bfe5780601f10610bd357610100808354040283529160200191610bfe565b820191906000526020600020905b815481529060010190602001808311610be157829003601f168201915b5050505050905090565b610c1133610ed0565b81600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b8152600401610c6d9190611cb0565b602060405180830381865afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae9190611d97565b50610cb983836113de565b505050565b6000801b81565b600033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b8152600401610d239190611cb0565b602060405180830381865afa158015610d40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d649190611d97565b5083600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ba137713826040518263ffffffff1660e01b8152600401610dc19190611cb0565b602060405180830381865afa158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e029190611d97565b506000610e0d610fc1565b9050610e1a818787611162565b6001935050505092915050565b610e308261081a565b610e3981611256565b610e438383610fdb565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000610efc7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583610b0b565b90506000610f0d6000801b84610b0b565b905081158015610f1b575080155b15610f52576040517f4755657900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b610fd68383836001611460565b505050565b6000610fe78383610b0b565b156110c35760006005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611060610fc1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a4600190506110c8565b600090505b92915050565b60006110da8484610e49565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461115c578181101561114c578281836040517ffb8f41b200000000000000000000000000000000000000000000000000000000815260040161114393929190611dc4565b60405180910390fd5b61115b84848484036000611460565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111d45760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016111cb9190611cb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112465760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161123d9190611cb0565b60405180910390fd5b611251838383611637565b505050565b61126781611262610fc1565b61185c565b50565b60006112768383610b0b565b6113515760016005600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506112ee610fc1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611356565b600090505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ce5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016113c59190611cb0565b60405180910390fd5b6113da60008383611637565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114505760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016114479190611cb0565b60405180910390fd5b61145c82600083611637565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114d25760006040517fe602df050000000000000000000000000000000000000000000000000000000081526004016114c99190611cb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115445760006040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161153b9190611cb0565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611631578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516116289190611b2f565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361168957806002600082825461167d9190611e2a565b9250508190555061175c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611715578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161170c93929190611dc4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a557806002600082825403925050819055506117f2565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161184f9190611b2f565b60405180910390a3505050565b6118668282610b0b565b6118a95780826040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526004016118a0929190611e5e565b60405180910390fd5b5050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6118e7816118b2565b81146118f257600080fd5b50565b600081359050611904816118de565b92915050565b6000602082840312156119205761191f6118ad565b5b600061192e848285016118f5565b91505092915050565b60008115159050919050565b61194c81611937565b82525050565b60006020820190506119676000830184611943565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156119a757808201518184015260208101905061198c565b60008484015250505050565b6000601f19601f8301169050919050565b60006119cf8261196d565b6119d98185611978565b93506119e9818560208601611989565b6119f2816119b3565b840191505092915050565b60006020820190508181036000830152611a1781846119c4565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a4a82611a1f565b9050919050565b611a5a81611a3f565b8114611a6557600080fd5b50565b600081359050611a7781611a51565b92915050565b6000819050919050565b611a9081611a7d565b8114611a9b57600080fd5b50565b600081359050611aad81611a87565b92915050565b60008060408385031215611aca57611ac96118ad565b5b6000611ad885828601611a68565b9250506020611ae985828601611a9e565b9150509250929050565b600060208284031215611b0957611b086118ad565b5b6000611b1784828501611a68565b91505092915050565b611b2981611a7d565b82525050565b6000602082019050611b446000830184611b20565b92915050565b600080600060608486031215611b6357611b626118ad565b5b6000611b7186828701611a68565b9350506020611b8286828701611a68565b9250506040611b9386828701611a9e565b9150509250925092565b6000819050919050565b611bb081611b9d565b8114611bbb57600080fd5b50565b600081359050611bcd81611ba7565b92915050565b600060208284031215611be957611be86118ad565b5b6000611bf784828501611bbe565b91505092915050565b611c0981611b9d565b82525050565b6000602082019050611c246000830184611c00565b92915050565b60008060408385031215611c4157611c406118ad565b5b6000611c4f85828601611bbe565b9250506020611c6085828601611a68565b9150509250929050565b600060ff82169050919050565b611c8081611c6a565b82525050565b6000602082019050611c9b6000830184611c77565b92915050565b611caa81611a3f565b82525050565b6000602082019050611cc56000830184611ca1565b92915050565b60008060408385031215611ce257611ce16118ad565b5b6000611cf085828601611a68565b9250506020611d0185828601611a68565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611d5257607f821691505b602082108103611d6557611d64611d0b565b5b50919050565b611d7481611937565b8114611d7f57600080fd5b50565b600081519050611d9181611d6b565b92915050565b600060208284031215611dad57611dac6118ad565b5b6000611dbb84828501611d82565b91505092915050565b6000606082019050611dd96000830186611ca1565b611de66020830185611b20565b611df36040830184611b20565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611e3582611a7d565b9150611e4083611a7d565b9250828201905080821115611e5857611e57611dfb565b5b92915050565b6000604082019050611e736000830185611ca1565b611e806020830184611c00565b939250505056fea2646970667358221220cb8f5f2e501270e596d1a69e3d3d03031c1d0ee24a8f6721f2f664eb1fac416064736f6c634300081800330000000000000000000000002582e52b4810a66b1a48149afb4a9d88a7e35343000000000000000000000000d9c57aaa92336e988a23685ad3c3cf6d6df22df1000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000941706172746d656e74000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034150500000000000000000000000000000000000000000000000000000000000