Address Details
contract
token

0xDB452CC669D3Ae454226AbF232Fe211bAfF2a1F9

Token
Duino Coin on Celo (celoDUCO)
Creator
0x3f119c–319d44 at 0xa34a04–592510
Balance
0 CELO ( )
Locked CELO Balance
0.00 CELO
Voting CELO Balance
0.00 CELO
Pending Unlocked Gold
0.00 CELO
Tokens
Fetching tokens...
Transactions
579 Transactions
Transfers
5 Transfers
Gas Used
25,875,847
Last Balance Update
28936528
This contract has been verified via Sourcify. View contract in Sourcify repository
Contract name:
Token




Optimization enabled
false
Compiler version
v0.7.6+commit.7338295f




EVM Version
istanbul




Verified at
2021-09-02T21:24:07.718307Z

Contract source code

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.7.0;
pragma abicoder v2;

import "./ERC20.sol";
import "./ERC20Detailed.sol";

/**
 * @title SimpleToken
 * @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the creator.
 * Note they can later distribute these tokens as they wish using `transfer` and other
 * `ERC20` functions.
 */
contract Token is ERC20Detailed {

    /**
     * @dev Constructor that gives developper admin rights
     */
    constructor () ERC20Detailed("Duino Coin on Celo", "celoDUCO", 18) {
		AdminAddress = msg.sender;
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"RevokeWrapper","inputs":[{"type":"address","name":"_address","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"UnwrapConfirmed","inputs":[{"type":"address","name":"_address","internalType":"address","indexed":true},{"type":"uint256","name":"_amount","internalType":"uint256","indexed":false},{"type":"string","name":"_ducoUsername","internalType":"string","indexed":true}],"anonymous":false},{"type":"event","name":"UnwrapInitiated","inputs":[{"type":"address","name":"_address","internalType":"address","indexed":true},{"type":"uint256","name":"_amount","internalType":"uint256","indexed":false},{"type":"string","name":"_ducoUsername","internalType":"string","indexed":true}],"anonymous":false},{"type":"event","name":"Wrap","inputs":[{"type":"address","name":"_address","internalType":"address","indexed":true},{"type":"uint256","name":"_amount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"allowWrapper","inputs":[{"type":"address","name":"_address","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"changeAdminConfirmed","inputs":[{"type":"address","name":"_oldAdmin","internalType":"address","indexed":true},{"type":"address","name":"_newAdmin","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"changeAdminRequest","inputs":[{"type":"address","name":"_currentAdmin","internalType":"address","indexed":true},{"type":"address","name":"_newAdmin","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"ChangeAdmin","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"addWrapperAccess","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"value","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"cancelChangeAdmin","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"cancelWithdrawals","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"string","name":"_ducousername","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"checkWrapperStatus","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"confirmChangeAdmin","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"confirmWithdraw","inputs":[{"type":"string","name":"_ducousername","internalType":"string"},{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"currentAdmin","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"tuple[]","name":"","internalType":"struct ERC20.addressUsername[]","components":[{"type":"address","name":"_address","internalType":"address"},{"type":"string","name":"username","internalType":"string"},{"type":"uint256","name":"pendingBalance","internalType":"uint256"}]}],"name":"getUserList","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"initiateWithdraw","inputs":[{"type":"string","name":"_ducousername","internalType":"string"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"pendingWithdrawals","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"string","name":"_ducousername","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"positionInList","inputs":[{"type":"bytes","name":"","internalType":"bytes"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"revokeWrapperAccess","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"userExists","inputs":[{"type":"bytes","name":"","internalType":"bytes"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"string","name":"username","internalType":"string"},{"type":"uint256","name":"pendingBalance","internalType":"uint256"}],"name":"usersList","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"usersListLength","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"wrap","inputs":[{"type":"address","name":"_tronaddress","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}]}]
              

Contract Creation Code

0x60806040523480156200001157600080fd5b506040518060400160405280601281526020017f4475696e6f20436f696e206f6e2043656c6f00000000000000000000000000008152506040518060400160405280600881526020017f63656c6f4455434f000000000000000000000000000000000000000000000000815250601282600c90805190602001906200009892919062000117565b5081600d9080519060200190620000b192919062000117565b5080600e60006101000a81548160ff021916908360ff16021790555050505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001cd565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200014f57600085556200019b565b82601f106200016a57805160ff19168380011785556200019b565b828001600101855582156200019b579182015b828111156200019a5782518255916020019190600101906200017d565b5b509050620001aa9190620001ae565b5090565b5b80821115620001c9576000816000905550600101620001af565b5090565b6131be80620001dd6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063832daeb8116100f9578063be15955e11610097578063daf705ef11610071578063daf705ef146105cd578063dd62ed3e146105eb578063eb3c17a91461061b578063fb48270c1461064b576101c4565b8063be15955e1461053d578063bf376c7a1461056d578063d3ee83671461059d576101c4565b8063a457c2d7116100d3578063a457c2d7146104a1578063a9059cbb146104d1578063b852204314610501578063ba4bcd721461051f576101c4565b8063832daeb814610423578063927cc0641461045357806395d89b4114610483576101c4565b80634a4095d81161016657806370291c2b1161014057806370291c2b1461036357806370a082311461039357806379e0965a146103c357806380f1e25c146103f3576101c4565b80634a4095d8146102d15780634ad69e9c14610301578063502aa3b514610331576101c4565b80631d567ac6116101a25780631d567ac61461023557806323b872dd14610253578063313ce5671461028357806339509351146102a1576101c4565b806306fdde03146101c9578063095ea7b3146101e757806318160ddd14610217575b600080fd5b6101d1610669565b6040516101de9190612e6b565b60405180910390f35b61020160048036038101906101fc9190612829565b61070b565b60405161020e9190612e50565b60405180910390f35b61021f610722565b60405161022c9190612f0d565b60405180910390f35b61023d61072c565b60405161024a9190612f0d565b60405180910390f35b61026d60048036038101906102689190612786565b610739565b60405161027a9190612e50565b60405180910390f35b61028b6107ea565b6040516102989190612f28565b60405180910390f35b6102bb60048036038101906102b69190612829565b610801565b6040516102c89190612e50565b60405180910390f35b6102eb60048036038101906102e69190612721565b6108a6565b6040516102f89190612e50565b60405180910390f35b61031b600480360381019061031691906127d5565b6109a6565b6040516103289190612f0d565b60405180910390f35b61034b60048036038101906103469190612961565b610a0c565b60405161035a93929190612df0565b60405180910390f35b61037d600480360381019061037891906127d5565b610afe565b60405161038a9190612e50565b60405180910390f35b6103ad60048036038101906103a89190612721565b610d48565b6040516103ba9190612f0d565b60405180910390f35b6103dd60048036038101906103d89190612865565b610d90565b6040516103ea9190612f0d565b60405180910390f35b61040d60048036038101906104089190612865565b610dbe565b60405161041a9190612e50565b60405180910390f35b61043d60048036038101906104389190612721565b610df4565b60405161044a9190612e50565b60405180910390f35b61046d60048036038101906104689190612721565b610e4a565b60405161047a9190612e50565b60405180910390f35b61048b610fc6565b6040516104989190612e6b565b60405180910390f35b6104bb60048036038101906104b69190612829565b611068565b6040516104c89190612e50565b60405180910390f35b6104eb60048036038101906104e69190612829565b61110d565b6040516104f89190612e50565b60405180910390f35b610509611124565b6040516105169190612e2e565b60405180910390f35b610527611285565b6040516105349190612dd5565b60405180910390f35b610557600480360381019061055291906128a6565b6112af565b6040516105649190612e50565b60405180910390f35b61058760048036038101906105829190612829565b611596565b6040516105949190612e50565b60405180910390f35b6105b760048036038101906105b29190612721565b61175a565b6040516105c49190612e50565b60405180910390f35b6105d561185a565b6040516105e29190612e50565b60405180910390f35b6106056004803603810190610600919061274a565b611957565b6040516106129190612f0d565b60405180910390f35b6106356004803603810190610630919061290d565b6119de565b6040516106429190612e50565b60405180910390f35b610653611c6e565b6040516106609190612e50565b60405180910390f35b6060600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b6000610718338484611e55565b6001905092915050565b6000600854905090565b6000600b80549050905090565b6000610746848484612020565b6107df84336107da85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229090919063ffffffff16565b611e55565b600190509392505050565b6000600e60009054906101000a900460ff16905090565b600061089c338461089785600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231990919063ffffffff16565b611e55565b6001905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090257600080fd5b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f5f806f3ca519fc72d08c4011e42740ef881cb0e7d1eafc2d815990cf61c788d660405160405180910390a260019050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020826040516109f59190612dbe565b908152602001604051809103902054905092915050565b600b8181548110610a1c57600080fd5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610aee5780601f10610ac357610100808354040283529160200191610aee565b820191906000526020600020905b815481529060010190602001808311610ad157829003601f168201915b5050505050908060020154905083565b60003373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610b835750600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610b8c57600080fd5b610c38600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083604051610bdc9190612dbe565b9081526020016040518091039020546000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b600a8585604051602001610c93929190612d7f565b604051602081830303815290604052604051610caf9190612da7565b90815260200160405180910390205481548110610cc857fe5b9060005260206000209060030201600201819055506000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083604051610d2c9190612dbe565b9081526020016040518091039020819055506001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6009818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610ef75750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610f0057600080fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f970463257929c46e52bf7dd3a563ed16c0f5e6a3479abc8e52ba6553d1f0996560405160405180910390a360019050919050565b6060600d8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561105e5780601f106110335761010080835404028352916020019161105e565b820191906000526020600020905b81548152906001019060200180831161104157829003601f168201915b5050505050905090565b600061110333846110fe85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229090919063ffffffff16565b611e55565b6001905092915050565b600061111a338484612020565b6001905092915050565b6060600b805480602002602001604051908101604052809291908181526020016000905b8282101561127c57838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561125a5780601f1061122f5761010080835404028352916020019161125a565b820191906000526020600020905b81548152906001019060200180831161123d57829003601f168201915b5050505050815260200160028201548152505081526020019060010190611148565b50505050905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156113655750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020846040516113529190612dbe565b9081526020016040518091039020548211155b61136e57600080fd5b6113dc82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020866040516113bf9190612dbe565b90815260200160405180910390205461229090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020856040516114299190612dbe565b9081526020016040518091039020819055506114508260085461229090919063ffffffff16565b60088190555081600b600a858760405160200161146e929190612d7f565b60405160208183030381529060405260405161148a9190612da7565b908152602001604051809103902054815481106114a357fe5b906000526020600020906003020160020160008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151f9190612f0d565b60405180910390a3836040516115359190612dbe565b60405180910390208373ffffffffffffffffffffffffffffffffffffffff167f89b150a7d8dd46b598462ffa78fbc665025b695cc7456f641b0ae689639fb7d4846040516115839190612f0d565b60405180910390a3600190509392505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115ee57600080fd5b61163f826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116968260085461231990919063ffffffff16565b6008819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116fa9190612f0d565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff167fb61d00fdfee32467c7d81db64c811ae60c104c346debf36a14afe84b8fce59e5836040516117489190612f0d565b60405180910390a26001905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117b657600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdf1d9a75136006638a78c18b68d45e85ebea79c2f242f92d9e411f227159a05960405160405180910390a260019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119055750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61190e57600080fd5b6000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a2b57600080fd5b611a3533846123a1565b611a86826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b3682600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085604051611b199190612dbe565b90815260200160405180910390205461231990919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084604051611b839190612dbe565b90815260200160405180910390208190555081600b600a3386604051602001611bad929190612d57565b604051602081830303815290604052604051611bc99190612da7565b90815260200160405180910390205481548110611be257fe5b90600052602060002090600302016002016000828254019250508190555082604051611c0e9190612dbe565b60405180910390203373ffffffffffffffffffffffffffffffffffffffff167f832a3e1124acbd787fae1148d3336f1abd89d5653a4b38e85a5edd9c3d4c783484604051611c5c9190612f0d565b60405180910390a36001905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cca57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb11ca9633c9e7170e67a7fe48d31c68c1141e6c72de58a385fe9fc199b8abefb60405160405180910390a36001905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc90612eed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90612ead565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120139190612f0d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208790612ecd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790612e8d565b60405180910390fd5b612151816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121e4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122839190612f0d565b60405180910390a3505050565b600082821115612308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6123a9612545565b82816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160200181905250600083836040516020016123ff929190612d7f565b60405160208183030381529060405290506009816040516124209190612da7565b908152602001604051809103902060009054906101000a900460ff1661253f57600b82908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190805190602001906124cf92919061257c565b5060408201518160020155505060016009826040516124ee9190612da7565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506001600b8054905003600a8260405161252c9190612da7565b9081526020016040518091039020819055505b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826125b257600085556125f9565b82601f106125cb57805160ff19168380011785556125f9565b828001600101855582156125f9579182015b828111156125f85782518255916020019190600101906125dd565b5b509050612606919061260a565b5090565b5b8082111561262357600081600090555060010161260b565b5090565b600061263a61263584612f74565b612f43565b90508281526020810184848401111561265257600080fd5b61265d8482856130c2565b509392505050565b600061267861267384612fa4565b612f43565b90508281526020810184848401111561269057600080fd5b61269b8482856130c2565b509392505050565b6000813590506126b28161315a565b92915050565b600082601f8301126126c957600080fd5b81356126d9848260208601612627565b91505092915050565b600082601f8301126126f357600080fd5b8135612703848260208601612665565b91505092915050565b60008135905061271b81613171565b92915050565b60006020828403121561273357600080fd5b6000612741848285016126a3565b91505092915050565b6000806040838503121561275d57600080fd5b600061276b858286016126a3565b925050602061277c858286016126a3565b9150509250929050565b60008060006060848603121561279b57600080fd5b60006127a9868287016126a3565b93505060206127ba868287016126a3565b92505060406127cb8682870161270c565b9150509250925092565b600080604083850312156127e857600080fd5b60006127f6858286016126a3565b925050602083013567ffffffffffffffff81111561281357600080fd5b61281f858286016126e2565b9150509250929050565b6000806040838503121561283c57600080fd5b600061284a858286016126a3565b925050602061285b8582860161270c565b9150509250929050565b60006020828403121561287757600080fd5b600082013567ffffffffffffffff81111561289157600080fd5b61289d848285016126b8565b91505092915050565b6000806000606084860312156128bb57600080fd5b600084013567ffffffffffffffff8111156128d557600080fd5b6128e1868287016126e2565b93505060206128f2868287016126a3565b92505060406129038682870161270c565b9150509250925092565b6000806040838503121561292057600080fd5b600083013567ffffffffffffffff81111561293a57600080fd5b612946858286016126e2565b92505060206129578582860161270c565b9150509250929050565b60006020828403121561297357600080fd5b60006129818482850161270c565b91505092915050565b60006129968383612cda565b905092915050565b6129af6129aa8261306d565b613116565b82525050565b6129be8161305b565b82525050565b6129cd8161305b565b82525050565b6129e46129df8261305b565b613104565b82525050565b60006129f582612fe4565b6129ff8185613012565b935083602082028501612a1185612fd4565b8060005b85811015612a4d5784840389528151612a2e858261298a565b9450612a3983613005565b925060208a01995050600181019050612a15565b50829750879550505050505092915050565b612a688161307f565b82525050565b6000612a7982612fef565b612a838185613023565b9350612a938185602086016130d1565b80840191505092915050565b6000612aaa82612ffa565b612ab4818561302e565b9350612ac48185602086016130d1565b612acd8161313c565b840191505092915050565b6000612ae382612ffa565b612aed818561303f565b9350612afd8185602086016130d1565b612b068161313c565b840191505092915050565b6000612b1c82612ffa565b612b268185613050565b9350612b368185602086016130d1565b80840191505092915050565b6000612b4f60238361303f565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bb560228361303f565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c1b60258361303f565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c8160248361303f565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000606083016000830151612cf260008601826129b5565b5060208301518482036020860152612d0a8282612a9f565b9150506040830151612d1f6040860182612d2a565b508091505092915050565b612d33816130ab565b82525050565b612d42816130ab565b82525050565b612d51816130b5565b82525050565b6000612d63828561299e565b601482019150612d738284612b11565b91508190509392505050565b6000612d8b82856129d3565b601482019150612d9b8284612b11565b91508190509392505050565b6000612db38284612a6e565b915081905092915050565b6000612dca8284612b11565b915081905092915050565b6000602082019050612dea60008301846129c4565b92915050565b6000606082019050612e0560008301866129c4565b8181036020830152612e178185612ad8565b9050612e266040830184612d39565b949350505050565b60006020820190508181036000830152612e4881846129ea565b905092915050565b6000602082019050612e656000830184612a5f565b92915050565b60006020820190508181036000830152612e858184612ad8565b905092915050565b60006020820190508181036000830152612ea681612b42565b9050919050565b60006020820190508181036000830152612ec681612ba8565b9050919050565b60006020820190508181036000830152612ee681612c0e565b9050919050565b60006020820190508181036000830152612f0681612c74565b9050919050565b6000602082019050612f226000830184612d39565b92915050565b6000602082019050612f3d6000830184612d48565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612f6a57612f6961313a565b5b8060405250919050565b600067ffffffffffffffff821115612f8f57612f8e61313a565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612fbf57612fbe61313a565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006130668261308b565b9050919050565b60006130788261308b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156130ef5780820151818401526020810190506130d4565b838111156130fe576000848401525b50505050565b600061310f82613128565b9050919050565b600061312182613128565b9050919050565b60006131338261314d565b9050919050565bfe5b6000601f19601f8301169050919050565b60008160601b9050919050565b6131638161305b565b811461316e57600080fd5b50565b61317a816130ab565b811461318557600080fd5b5056fea2646970667358221220f5254ecba3d03f612734927984b115de10ccf28fc2774fbc8ff28a877c1e938a64736f6c63430007060033

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063832daeb8116100f9578063be15955e11610097578063daf705ef11610071578063daf705ef146105cd578063dd62ed3e146105eb578063eb3c17a91461061b578063fb48270c1461064b576101c4565b8063be15955e1461053d578063bf376c7a1461056d578063d3ee83671461059d576101c4565b8063a457c2d7116100d3578063a457c2d7146104a1578063a9059cbb146104d1578063b852204314610501578063ba4bcd721461051f576101c4565b8063832daeb814610423578063927cc0641461045357806395d89b4114610483576101c4565b80634a4095d81161016657806370291c2b1161014057806370291c2b1461036357806370a082311461039357806379e0965a146103c357806380f1e25c146103f3576101c4565b80634a4095d8146102d15780634ad69e9c14610301578063502aa3b514610331576101c4565b80631d567ac6116101a25780631d567ac61461023557806323b872dd14610253578063313ce5671461028357806339509351146102a1576101c4565b806306fdde03146101c9578063095ea7b3146101e757806318160ddd14610217575b600080fd5b6101d1610669565b6040516101de9190612e6b565b60405180910390f35b61020160048036038101906101fc9190612829565b61070b565b60405161020e9190612e50565b60405180910390f35b61021f610722565b60405161022c9190612f0d565b60405180910390f35b61023d61072c565b60405161024a9190612f0d565b60405180910390f35b61026d60048036038101906102689190612786565b610739565b60405161027a9190612e50565b60405180910390f35b61028b6107ea565b6040516102989190612f28565b60405180910390f35b6102bb60048036038101906102b69190612829565b610801565b6040516102c89190612e50565b60405180910390f35b6102eb60048036038101906102e69190612721565b6108a6565b6040516102f89190612e50565b60405180910390f35b61031b600480360381019061031691906127d5565b6109a6565b6040516103289190612f0d565b60405180910390f35b61034b60048036038101906103469190612961565b610a0c565b60405161035a93929190612df0565b60405180910390f35b61037d600480360381019061037891906127d5565b610afe565b60405161038a9190612e50565b60405180910390f35b6103ad60048036038101906103a89190612721565b610d48565b6040516103ba9190612f0d565b60405180910390f35b6103dd60048036038101906103d89190612865565b610d90565b6040516103ea9190612f0d565b60405180910390f35b61040d60048036038101906104089190612865565b610dbe565b60405161041a9190612e50565b60405180910390f35b61043d60048036038101906104389190612721565b610df4565b60405161044a9190612e50565b60405180910390f35b61046d60048036038101906104689190612721565b610e4a565b60405161047a9190612e50565b60405180910390f35b61048b610fc6565b6040516104989190612e6b565b60405180910390f35b6104bb60048036038101906104b69190612829565b611068565b6040516104c89190612e50565b60405180910390f35b6104eb60048036038101906104e69190612829565b61110d565b6040516104f89190612e50565b60405180910390f35b610509611124565b6040516105169190612e2e565b60405180910390f35b610527611285565b6040516105349190612dd5565b60405180910390f35b610557600480360381019061055291906128a6565b6112af565b6040516105649190612e50565b60405180910390f35b61058760048036038101906105829190612829565b611596565b6040516105949190612e50565b60405180910390f35b6105b760048036038101906105b29190612721565b61175a565b6040516105c49190612e50565b60405180910390f35b6105d561185a565b6040516105e29190612e50565b60405180910390f35b6106056004803603810190610600919061274a565b611957565b6040516106129190612f0d565b60405180910390f35b6106356004803603810190610630919061290d565b6119de565b6040516106429190612e50565b60405180910390f35b610653611c6e565b6040516106609190612e50565b60405180910390f35b6060600c8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107015780601f106106d657610100808354040283529160200191610701565b820191906000526020600020905b8154815290600101906020018083116106e457829003601f168201915b5050505050905090565b6000610718338484611e55565b6001905092915050565b6000600854905090565b6000600b80549050905090565b6000610746848484612020565b6107df84336107da85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229090919063ffffffff16565b611e55565b600190509392505050565b6000600e60009054906101000a900460ff16905090565b600061089c338461089785600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231990919063ffffffff16565b611e55565b6001905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461090257600080fd5b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f5f806f3ca519fc72d08c4011e42740ef881cb0e7d1eafc2d815990cf61c788d660405160405180910390a260019050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020826040516109f59190612dbe565b908152602001604051809103902054905092915050565b600b8181548110610a1c57600080fd5b90600052602060002090600302016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610aee5780601f10610ac357610100808354040283529160200191610aee565b820191906000526020600020905b815481529060010190602001808311610ad157829003601f168201915b5050505050908060020154905083565b60003373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610b835750600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610b8c57600080fd5b610c38600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083604051610bdc9190612dbe565b9081526020016040518091039020546000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b600a8585604051602001610c93929190612d7f565b604051602081830303815290604052604051610caf9190612da7565b90815260200160405180910390205481548110610cc857fe5b9060005260206000209060030201600201819055506000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083604051610d2c9190612dbe565b9081526020016040518091039020819055506001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6009818051602081018201805184825260208301602085012081835280955050505050506000915054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015610ef75750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b610f0057600080fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f970463257929c46e52bf7dd3a563ed16c0f5e6a3479abc8e52ba6553d1f0996560405160405180910390a360019050919050565b6060600d8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561105e5780601f106110335761010080835404028352916020019161105e565b820191906000526020600020905b81548152906001019060200180831161104157829003601f168201915b5050505050905090565b600061110333846110fe85600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229090919063ffffffff16565b611e55565b6001905092915050565b600061111a338484612020565b6001905092915050565b6060600b805480602002602001604051908101604052809291908181526020016000905b8282101561127c57838290600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561125a5780601f1061122f5761010080835404028352916020019161125a565b820191906000526020600020905b81548152906001019060200180831161123d57829003601f168201915b5050505050815260200160028201548152505081526020019060010190611148565b50505050905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156113655750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020846040516113529190612dbe565b9081526020016040518091039020548211155b61136e57600080fd5b6113dc82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020866040516113bf9190612dbe565b90815260200160405180910390205461229090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020856040516114299190612dbe565b9081526020016040518091039020819055506114508260085461229090919063ffffffff16565b60088190555081600b600a858760405160200161146e929190612d7f565b60405160208183030381529060405260405161148a9190612da7565b908152602001604051809103902054815481106114a357fe5b906000526020600020906003020160020160008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151f9190612f0d565b60405180910390a3836040516115359190612dbe565b60405180910390208373ffffffffffffffffffffffffffffffffffffffff167f89b150a7d8dd46b598462ffa78fbc665025b695cc7456f641b0ae689639fb7d4846040516115839190612f0d565b60405180910390a3600190509392505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115ee57600080fd5b61163f826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231990919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116968260085461231990919063ffffffff16565b6008819055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116fa9190612f0d565b60405180910390a38273ffffffffffffffffffffffffffffffffffffffff167fb61d00fdfee32467c7d81db64c811ae60c104c346debf36a14afe84b8fce59e5836040516117489190612f0d565b60405180910390a26001905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117b657600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fdf1d9a75136006638a78c18b68d45e85ebea79c2f242f92d9e411f227159a05960405160405180910390a260019050919050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806119055750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61190e57600080fd5b6000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611a2b57600080fd5b611a3533846123a1565b611a86826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229090919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b3682600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085604051611b199190612dbe565b90815260200160405180910390205461231990919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084604051611b839190612dbe565b90815260200160405180910390208190555081600b600a3386604051602001611bad929190612d57565b604051602081830303815290604052604051611bc99190612da7565b90815260200160405180910390205481548110611be257fe5b90600052602060002090600302016002016000828254019250508190555082604051611c0e9190612dbe565b60405180910390203373ffffffffffffffffffffffffffffffffffffffff167f832a3e1124acbd787fae1148d3336f1abd89d5653a4b38e85a5edd9c3d4c783484604051611c5c9190612f0d565b60405180910390a36001905092915050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cca57600080fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb11ca9633c9e7170e67a7fe48d31c68c1141e6c72de58a385fe9fc199b8abefb60405160405180910390a36001905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc90612eed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90612ead565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120139190612f0d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208790612ecd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790612e8d565b60405180910390fd5b612151816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461229090919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121e4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122839190612f0d565b60405180910390a3505050565b600082821115612308576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600080828401905083811015612397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6123a9612545565b82816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160200181905250600083836040516020016123ff929190612d7f565b60405160208183030381529060405290506009816040516124209190612da7565b908152602001604051809103902060009054906101000a900460ff1661253f57600b82908060018154018082558091505060019003906000526020600020906003020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190805190602001906124cf92919061257c565b5060408201518160020155505060016009826040516124ee9190612da7565b908152602001604051809103902060006101000a81548160ff0219169083151502179055506001600b8054905003600a8260405161252c9190612da7565b9081526020016040518091039020819055505b50505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826125b257600085556125f9565b82601f106125cb57805160ff19168380011785556125f9565b828001600101855582156125f9579182015b828111156125f85782518255916020019190600101906125dd565b5b509050612606919061260a565b5090565b5b8082111561262357600081600090555060010161260b565b5090565b600061263a61263584612f74565b612f43565b90508281526020810184848401111561265257600080fd5b61265d8482856130c2565b509392505050565b600061267861267384612fa4565b612f43565b90508281526020810184848401111561269057600080fd5b61269b8482856130c2565b509392505050565b6000813590506126b28161315a565b92915050565b600082601f8301126126c957600080fd5b81356126d9848260208601612627565b91505092915050565b600082601f8301126126f357600080fd5b8135612703848260208601612665565b91505092915050565b60008135905061271b81613171565b92915050565b60006020828403121561273357600080fd5b6000612741848285016126a3565b91505092915050565b6000806040838503121561275d57600080fd5b600061276b858286016126a3565b925050602061277c858286016126a3565b9150509250929050565b60008060006060848603121561279b57600080fd5b60006127a9868287016126a3565b93505060206127ba868287016126a3565b92505060406127cb8682870161270c565b9150509250925092565b600080604083850312156127e857600080fd5b60006127f6858286016126a3565b925050602083013567ffffffffffffffff81111561281357600080fd5b61281f858286016126e2565b9150509250929050565b6000806040838503121561283c57600080fd5b600061284a858286016126a3565b925050602061285b8582860161270c565b9150509250929050565b60006020828403121561287757600080fd5b600082013567ffffffffffffffff81111561289157600080fd5b61289d848285016126b8565b91505092915050565b6000806000606084860312156128bb57600080fd5b600084013567ffffffffffffffff8111156128d557600080fd5b6128e1868287016126e2565b93505060206128f2868287016126a3565b92505060406129038682870161270c565b9150509250925092565b6000806040838503121561292057600080fd5b600083013567ffffffffffffffff81111561293a57600080fd5b612946858286016126e2565b92505060206129578582860161270c565b9150509250929050565b60006020828403121561297357600080fd5b60006129818482850161270c565b91505092915050565b60006129968383612cda565b905092915050565b6129af6129aa8261306d565b613116565b82525050565b6129be8161305b565b82525050565b6129cd8161305b565b82525050565b6129e46129df8261305b565b613104565b82525050565b60006129f582612fe4565b6129ff8185613012565b935083602082028501612a1185612fd4565b8060005b85811015612a4d5784840389528151612a2e858261298a565b9450612a3983613005565b925060208a01995050600181019050612a15565b50829750879550505050505092915050565b612a688161307f565b82525050565b6000612a7982612fef565b612a838185613023565b9350612a938185602086016130d1565b80840191505092915050565b6000612aaa82612ffa565b612ab4818561302e565b9350612ac48185602086016130d1565b612acd8161313c565b840191505092915050565b6000612ae382612ffa565b612aed818561303f565b9350612afd8185602086016130d1565b612b068161313c565b840191505092915050565b6000612b1c82612ffa565b612b268185613050565b9350612b368185602086016130d1565b80840191505092915050565b6000612b4f60238361303f565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612bb560228361303f565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c1b60258361303f565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612c8160248361303f565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000606083016000830151612cf260008601826129b5565b5060208301518482036020860152612d0a8282612a9f565b9150506040830151612d1f6040860182612d2a565b508091505092915050565b612d33816130ab565b82525050565b612d42816130ab565b82525050565b612d51816130b5565b82525050565b6000612d63828561299e565b601482019150612d738284612b11565b91508190509392505050565b6000612d8b82856129d3565b601482019150612d9b8284612b11565b91508190509392505050565b6000612db38284612a6e565b915081905092915050565b6000612dca8284612b11565b915081905092915050565b6000602082019050612dea60008301846129c4565b92915050565b6000606082019050612e0560008301866129c4565b8181036020830152612e178185612ad8565b9050612e266040830184612d39565b949350505050565b60006020820190508181036000830152612e4881846129ea565b905092915050565b6000602082019050612e656000830184612a5f565b92915050565b60006020820190508181036000830152612e858184612ad8565b905092915050565b60006020820190508181036000830152612ea681612b42565b9050919050565b60006020820190508181036000830152612ec681612ba8565b9050919050565b60006020820190508181036000830152612ee681612c0e565b9050919050565b60006020820190508181036000830152612f0681612c74565b9050919050565b6000602082019050612f226000830184612d39565b92915050565b6000602082019050612f3d6000830184612d48565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612f6a57612f6961313a565b5b8060405250919050565b600067ffffffffffffffff821115612f8f57612f8e61313a565b5b601f19601f8301169050602081019050919050565b600067ffffffffffffffff821115612fbf57612fbe61313a565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006130668261308b565b9050919050565b60006130788261308b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156130ef5780820151818401526020810190506130d4565b838111156130fe576000848401525b50505050565b600061310f82613128565b9050919050565b600061312182613128565b9050919050565b60006131338261314d565b9050919050565bfe5b6000601f19601f8301169050919050565b60008160601b9050919050565b6131638161305b565b811461316e57600080fd5b50565b61317a816130ab565b811461318557600080fd5b5056fea2646970667358221220f5254ecba3d03f612734927984b115de10ccf28fc2774fbc8ff28a877c1e938a64736f6c63430007060033