12 txs
13 calls
constructor
constructor(address tokenContractAddress, address defaultAdmin, address _presaleWallet, address _vestingContractAddress, address _paymentGatewayAddress)
functions
checkWalletBlacklistStatus
viewfunction checkWalletBlacklistStatus(address buyerWallet) view returns (bool)
currentStage
viewfunction currentStage() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getBothToken
viewfunction getBothToken() view returns (tuple)
getBuyerToken
viewfunction getBuyerToken(address buyerAddress) view returns (tuple)
getCoinPair
viewfunction getCoinPair(address CoinPair) view returns (tuple)
getLatestPrice
viewfunction getLatestPrice(address priceFeed) view returns (uint256)
getLockedTokens
viewfunction getLockedTokens() view returns (uint256)
getPurchasePrice
viewfunction getPurchasePrice(address coinPairPriceFeed, uint256 hyphaTokenAmount) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getStageTokenLeft
viewfunction getStageTokenLeft() view returns (uint256)
getStageTokenLimit
viewfunction getStageTokenLimit() view returns (uint256)
getStageTokenPrice
viewfunction getStageTokenPrice() view returns (uint256)
getStageTokenSold
viewfunction getStageTokenSold() view returns (uint256)
getTokenAmount
viewfunction getTokenAmount(address coinPairPriceFeed, uint256 ethAmount) view returns (uint256)
getTotalRewards
viewfunction getTotalRewards() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
paused
viewfunction paused() view returns (bool)
PAYMENT_GATEWAY_ROLE
viewfunction PAYMENT_GATEWAY_ROLE() view returns (bytes32)
PRESALE_ROLE
viewfunction PRESALE_ROLE() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalPresaleToken
viewfunction totalPresaleToken() view returns (uint256)
totalTokenSold
viewfunction totalTokenSold() view returns (uint256)
buyTokenWithCoin
nonpayablefunction buyTokenWithCoin(uint256 hyphaTokenAmount, address referrerAddress, address coinPair) returns (bool)
buyTokenWithEther
payablefunction buyTokenWithEther(uint256 hyphaTokenAmount, address referrerAddress, address coinPair) payable returns (bool)
claimStuckTokens
nonpayablefunction claimStuckTokens(address coin)
disableCoinPair
nonpayablefunction disableCoinPair(address CoinPair) returns (bool)
enableClaim
nonpayablefunction enableClaim() returns (bool)
enableCoinPair
nonpayablefunction enableCoinPair(address CoinPair) returns (bool)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialClaim
nonpayablefunction initialClaim() returns (bool success)
pause
nonpayablefunction pause()
processExternalTranaction
nonpayablefunction processExternalTranaction(address buyer, address referrerAddress, uint256 hyphaTokenAmount) returns (bool)
removeWalletFromBlacklist
nonpayablefunction removeWalletFromBlacklist(address buyerWallet) returns (bool)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setCoinPairs
nonpayablefunction setCoinPairs(address coinPair, address coinAddress, uint256 chainId) returns (bool)
setLockedTokens
nonpayablefunction setLockedTokens(uint256 lockedTokens) returns (bool)
setWalletToBlacklist
nonpayablefunction setWalletToBlacklist(address buyerWallet) returns (bool)
transferFromCompromitedWallet
nonpayablefunction transferFromCompromitedWallet(address oldWallet, address newWallet, uint256 tokenAmount) returns (bool success)
unpause
nonpayablefunction unpause()
updatePresaleWallet
nonpayablefunction updatePresaleWallet(address _presaleWallet) returns (bool)
updateVestingWallet
nonpayablefunction updateVestingWallet(address _vestingContractAddress) returns (bool)
events
Buy
event Buy(address indexed buyer, address indexed referrer, uint256 amount)
Paused
event Paused(address account)
Received
event Received(address, uint256)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
TransferToVesting
event TransferToVesting(address indexed buyer, uint256 amount)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedInnerCall
error FailedInnerCall()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405260405180610120016040528061a41062ffffff16815260200161f55062ffffff168152602001620132a462ffffff16815260200162017f3462ffffff1681526020016201baf862ffffff1681526020016201f78462ffffff1681526020016202434c62ffffff1681526020016202904062ffffff1681526020015f62ffffff16815250600b906009610097929190610443565b506100b6670de0b6b3a7640000622625a06102a460201b90919060201c565b600c556100d9670de0b6b3a764000064012a05f2006102a460201b90919060201c565b600d553480156100e7575f80fd5b506040516162dd3803806162dd8339818101604052810190610109919061050e565b5f60015f6101000a81548160ff021916908315150217905550600160028190555061013c5f801b856102e460201b60201c565b5061016d7fc48556de71c0f73e8524a5d68cd20d7a4c9ca6279c843fc18720937bba83be1c826102e460201b60201c565b5061019e7f6a4b509b5f306a69ec99e97ff6b166daad9c0a3dfce739a6d67ad1c57143a6b2846102e460201b60201c565b508460035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6008819055505f600460146101000a81548160ff0219169083151502179055505f600460156101000a81548160ff0219169083151502179055508260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050610659565b5f8083036102b4575f90506102de565b5f82846102c191906105bb565b90508284826102d09190610629565b146102d9575f80fd5b809150505b92915050565b5f6102f583836103d960201b60201c565b6103cf5760015f808581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061036c61043c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600190506103d3565b5f90505b92915050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b828054828255905f5260205f20908101928215610484579160200282015b82811115610483578251829062ffffff16905591602001919060010190610461565b5b5090506104919190610495565b5090565b5b808211156104ac575f815f905550600101610496565b5090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6104dd826104b4565b9050919050565b6104ed816104d3565b81146104f7575f80fd5b50565b5f81519050610508816104e4565b92915050565b5f805f805f60a08688031215610527576105266104b0565b5b5f610534888289016104fa565b9550506020610545888289016104fa565b9450506040610556888289016104fa565b9350506060610567888289016104fa565b9250506080610578888289016104fa565b9150509295509295909350565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6105c582610585565b91506105d083610585565b92508282026105de81610585565b915082820484148315176105f5576105f461058e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61063382610585565b915061063e83610585565b92508261064e5761064d6105fc565b5b828204905092915050565b615c77806106665f395ff3fe60806040526004361061025f575f3560e01c80635bf5d54c11610143578063b5f7f636116100b5578063d547741f11610079578063d547741f146109e5578063de1ea86614610a0d578063e627f2db14610a37578063ecb499e014610a61578063f283439214610a8b578063f9d0831a14610ac75761029f565b8063b5f7f636146108ef578063b8bb1c5714610919578063c23c01b014610943578063c50796a81461097f578063c8f07109146109bb5761029f565b80638cc90faa116101075780638cc90faa146107bd5780638e17c017146107f957806391d14854146108355780639326197a14610871578063a217fddf1461089b578063a646b909146108c55761029f565b80635bf5d54c146106db5780635c975abb146107055780635db7060f1461072f5780636fac731a1461076b5780638456cb59146107a75761029f565b8063248a9ca3116101dc57806336568abe116101a057806336568abe146105bf5780633b0f7eb6146105e75780633f4ba83a1461062357806355440fc11461063957806359995cdb1461066357806359ab34e21461069f5761029f565b8063248a9ca3146104d757806328dae6e3146105135780632b8362611461053d5780632f2ff15d1461056d5780633317bbcc146105955761029f565b806313e9924c1161022357806313e9924c146103bd57806316345f18146103e757806317274bdc1461042357806318f52ff21461045f5780631c9291da1461049b5761029f565b806301ffc9a7146102a357806307a3a067146102df57806307c52d831461031b57806308799f4814610345578063115ece4c146103815761029f565b3661029f577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f885258743334604051610295929190614621565b60405180910390a1005b5f80fd5b3480156102ae575f80fd5b506102c960048036038101906102c491906146a1565b610aef565b6040516102d691906146e6565b60405180910390f35b3480156102ea575f80fd5b5061030560048036038101906103009190614729565b610b68565b60405161031291906146e6565b60405180910390f35b348015610326575f80fd5b5061032f610bbf565b60405161033c9190614754565b60405180910390f35b348015610350575f80fd5b5061036b60048036038101906103669190614729565b610be4565b60405161037891906146e6565b60405180910390f35b34801561038c575f80fd5b506103a760048036038101906103a291906147d2565b610c50565b6040516103b49190614754565b60405180910390f35b3480156103c8575f80fd5b506103d1610cca565b6040516103de9190614754565b60405180910390f35b3480156103f2575f80fd5b5061040d60048036038101906104089190614810565b610d4d565b60405161041a9190614754565b60405180910390f35b34801561042e575f80fd5b5061044960048036038101906104449190614729565b610e0d565b60405161045691906146e6565b60405180910390f35b34801561046a575f80fd5b50610485600480360381019061048091906147d2565b610f1e565b6040516104929190614754565b60405180910390f35b3480156104a6575f80fd5b506104c160048036038101906104bc919061483b565b610fb2565b6040516104ce91906146e6565b60405180910390f35b3480156104e2575f80fd5b506104fd60048036038101906104f891906148be565b6113fa565b60405161050a91906148f8565b60405180910390f35b34801561051e575f80fd5b50610527611416565b60405161053491906146e6565b60405180910390f35b61055760048036038101906105529190614911565b6114fc565b60405161056491906146e6565b60405180910390f35b348015610578575f80fd5b50610593600480360381019061058e9190614961565b611a51565b005b3480156105a0575f80fd5b506105a9611a73565b6040516105b69190614754565b60405180910390f35b3480156105ca575f80fd5b506105e560048036038101906105e09190614961565b611a89565b005b3480156105f2575f80fd5b5061060d60048036038101906106089190614729565b611b04565b60405161061a91906149db565b60405180910390f35b34801561062e575f80fd5b50610637611c1b565b005b348015610644575f80fd5b5061064d611c3a565b60405161065a91906149db565b60405180910390f35b34801561066e575f80fd5b5061068960048036038101906106849190614729565b611d42565b6040516106969190614a52565b60405180910390f35b3480156106aa575f80fd5b506106c560048036038101906106c09190614a6b565b611ec0565b6040516106d291906146e6565b60405180910390f35b3480156106e6575f80fd5b506106ef611ef8565b6040516106fc9190614754565b60405180910390f35b348015610710575f80fd5b50610719611efe565b60405161072691906146e6565b60405180910390f35b34801561073a575f80fd5b506107556004803603810190610750919061483b565b611f13565b60405161076291906146e6565b60405180910390f35b348015610776575f80fd5b50610791600480360381019061078c9190614729565b612183565b60405161079e91906146e6565b60405180910390f35b3480156107b2575f80fd5b506107bb612293565b005b3480156107c8575f80fd5b506107e360048036038101906107de919061483b565b6122b2565b6040516107f091906146e6565b60405180910390f35b348015610804575f80fd5b5061081f600480360381019061081a9190614729565b612686565b60405161082c91906146e6565b60405180910390f35b348015610840575f80fd5b5061085b60048036038101906108569190614961565b6126dd565b60405161086891906146e6565b60405180910390f35b34801561087c575f80fd5b50610885612740565b60405161089291906148f8565b60405180910390f35b3480156108a6575f80fd5b506108af612764565b6040516108bc91906148f8565b60405180910390f35b3480156108d0575f80fd5b506108d961276a565b6040516108e69190614754565b60405180910390f35b3480156108fa575f80fd5b5061090361278d565b6040516109109190614754565b60405180910390f35b348015610924575f80fd5b5061092d6127b0565b60405161093a91906146e6565b60405180910390f35b34801561094e575f80fd5b5061096960048036038101906109649190614729565b612c3f565b60405161097691906146e6565b60405180910390f35b34801561098a575f80fd5b506109a560048036038101906109a09190614729565b612caa565b6040516109b291906146e6565b60405180910390f35b3480156109c6575f80fd5b506109cf612cfc565b6040516109dc91906148f8565b60405180910390f35b3480156109f0575f80fd5b50610a0b6004803603810190610a069190614961565b612d20565b005b348015610a18575f80fd5b50610a21612d42565b604051610a2e9190614754565b60405180910390f35b348015610a42575f80fd5b50610a4b612d65565b604051610a589190614754565b60405180910390f35b348015610a6c575f80fd5b50610a75612d7b565b604051610a829190614754565b60405180910390f35b348015610a96575f80fd5b50610ab16004803603810190610aac9190614911565b612e34565b604051610abe91906146e6565b60405180910390f35b348015610ad2575f80fd5b50610aed6004803603810190610ae89190614729565b613375565b005b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b615750610b608261358f565b5b9050919050565b5f805f1b610b75816135f8565b82600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001915050919050565b5f600b60085481548110610bd657610bd5614a96565b5b905f5260205f200154905090565b5f805f1b610bf1816135f8565b600160115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001915050919050565b5f80610c5a610bbf565b90505f610c6685610d4d565b90505f610cbc610c846402540be4008561360c90919063ffffffff16565b610cae610c9f6402540be4008661360c90919063ffffffff16565b8861360c90919063ffffffff16565b61364c90919063ffffffff16565b905080935050505092915050565b5f600d546006541115610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990614b43565b60405180910390fd5b5f610d2a600654600d5461367190919063ffffffff16565b9050610d47670de0b6b3a76400008261364c90919063ffffffff16565b91505090565b5f808273ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610d98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dbc9190614be7565b5050509150505f8113610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb90614ca8565b60405180910390fd5b80915050919050565b5f805f1b610e1a816135f8565b6001600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490501015610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9590614d10565b60405180910390fd5b6001600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110610eef57610eee614a96565b5b905f5260205f2090600302016002015f6101000a81548160ff0219169083151502179055506001915050919050565b5f80610f28610bbf565b90505f610f3485610d4d565b90505f610fa4610f526402540be4008461360c90919063ffffffff16565b610f96610f70670de0b6b3a76400008961360c90919063ffffffff16565b610f886402540be4008861360c90919063ffffffff16565b61360c90919063ffffffff16565b61364c90919063ffffffff16565b905080935050505092915050565b5f600460149054906101000a900460ff16611002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff990614d78565b60405180910390fd5b5f801b61100e816135f8565b5f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905011611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790614de0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111690614e6e565b60405180910390fd5b5f83036111f7576111f4600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154811061117857611177614a96565b5b905f5260205f20906002020160010154600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815481106111d7576111d6614a96565b5b905f5260205f2090600202015f015461369790919063ffffffff16565b92505b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663426e04b685856040518363ffffffff1660e01b81526004016112b4929190614621565b6020604051808303815f875af11580156112d0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f49190614eb6565b611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90614f2b565b60405180910390fd5b6113a0600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168460035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166136bd9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167fca8434b646e42f759a6f797c766eaf105a486cfcb4cbc3d176b73fd036690f89846040516113e69190614754565b60405180910390a260019150509392505050565b5f805f8381526020019081526020015f20600101549050919050565b5f805f1b611423816135f8565b60076008541015611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090614f93565b60405180910390fd5b5f1515600460159054906101000a900460ff161515146114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590614ffb565b60405180910390fd5b6001600460146101000a81548160ff0219169083151502179055506001600460156101000a81548160ff021916908315150217905550600191505090565b5f61150561373c565b61150d61377d565b6008805410611551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154890615063565b60405180910390fd5b61155961278d565b611561612d7b565b116115a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611598906150cb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160690615133565b60405180910390fd5b5f3411611651576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611648906151c1565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036116bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b69061524f565b60405180910390fd5b5f15156116cb33612caa565b15151461170d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611704906152b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461178a5761174a83336137c1565b611789576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117809061531f565b60405180910390fd5b5b5f8290505f6117998234610c50565b90506117a361399b565b6117d26117c1670de0b6b3a76400008961360c90919063ffffffff16565b60065461369790919063ffffffff16565b1115611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90615387565b60405180910390fd5b5f61182e662386f26fc100008861360c90919063ffffffff16565b9050611843818361369790919063ffffffff16565b61185e670de0b6b3a76400008961360c90919063ffffffff16565b1080156118965750611879818361367190919063ffffffff16565b611894670de0b6b3a76400008961360c90919063ffffffff16565b115b6118d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cc906153ef565b60405180910390fd5b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163460405161191b9061543a565b5f6040518083038185875af1925050503d805f8114611955576040519150601f19603f3d011682016040523d82523d5f602084013e61195a565b606091505b505090508061199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199590615498565b60405180910390fd5b5f6119aa33898b6139bd565b9050806119ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e390615526565b60405180910390fd5b5f6119f68a613edd565b905080611a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2f9061558e565b60405180910390fd5b60019650505050505050611a4a613f80565b9392505050565b611a5a826113fa565b611a63816135f8565b611a6d8383613f8a565b50505050565b5f805f1b611a80816135f8565b600c5491505090565b611a91614073565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611af5576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aff828261407a565b505050565b611b0c61457c565b5f801b611b18816135f8565b5f600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905011611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b91906155f6565b60405180910390fd5b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611be957611be8614a96565b5b905f5260205f2090600202016040518060400160405290815f8201548152602001600182015481525050915050919050565b611c23614163565b5f801b611c2f816135f8565b611c376141a3565b50565b611c4261457c565b5f600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905011611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb906155f6565b60405180910390fd5b600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611d1357611d12614a96565b5b905f5260205f2090600202016040518060400160405290815f8201548152602001600182015481525050905090565b611d4a614594565b5f801b611d56816135f8565b6001600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490501015611dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd190614d10565b60405180910390fd5b600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611e2957611e28614a96565b5b905f5260205f2090600302016040518060600160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152602001600282015f9054906101000a900460ff161515151581525050915050919050565b5f805f1b611ecd816135f8565b611ee8670de0b6b3a76400008461360c90919063ffffffff16565b600c819055506001915050919050565b60085481565b5f60015f9054906101000a900460ff16905090565b5f805f1b611f20816135f8565b5f600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050111561206b5783600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110611fb857611fb7614a96565b5b905f5260205f2090600302015f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154811061205357612052614a96565b5b905f5260205f20906003020160010181905550612177565b5f60405180606001604052808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001600115158152509050600e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015f6101000a81548160ff0219169083151502179055505050505b60019150509392505050565b5f805f1b612190816135f8565b6001600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490501015612214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220b90614d10565b60405180910390fd5b5f600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154811061226457612263614a96565b5b905f5260205f2090600302016002015f6101000a81548160ff0219169083151502179055506001915050919050565b61229b61373c565b5f801b6122a7816135f8565b6122af614204565b50565b5f6122bb61377d565b60088054106122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690615063565b60405180910390fd5b7fc48556de71c0f73e8524a5d68cd20d7a4c9ca6279c843fc18720937bba83be1c612329816135f8565b61233161278d565b612339612d7b565b11612379576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612370906150cb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036123e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123de90615133565b60405180910390fd5b5f8311612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242090615684565b60405180910390fd5b61243161399b565b61246061244f670de0b6b3a76400008661360c90919063ffffffff16565b60065461369790919063ffffffff16565b11156124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249890615712565b60405180910390fd5b5f15156124ad86612caa565b1515146124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e6906152b7565b60405180910390fd5b5f600c54111561255957600c54612517670de0b6b3a76400008561360c90919063ffffffff16565b1115612558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254f9061577a565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146125d65761259684866137c1565b6125d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125cc9061531f565b60405180910390fd5b5b5f6125e28686866139bd565b905080612624576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261b90615526565b60405180910390fd5b5f61262e85613edd565b905080612670576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126679061558e565b60405180910390fd5b6001935050505061267f613f80565b9392505050565b5f805f1b612693816135f8565b8260095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001915050919050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b7f6a4b509b5f306a69ec99e97ff6b166daad9c0a3dfce739a6d67ad1c57143a6b281565b5f801b81565b5f612788670de0b6b3a7640000600d5461364c90919063ffffffff16565b905090565b5f6127ab670de0b6b3a764000060055461364c90919063ffffffff16565b905090565b5f6127b961377d565b600460149054906101000a900460ff16612808576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ff90614d78565b60405180910390fd5b5f600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490501161288a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288190614de0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291090614e6e565b60405180910390fd5b5f151561292533612caa565b151514612967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295e906152b7565b60405180910390fd5b5f612a36600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815481106129ba576129b9614a96565b5b905f5260205f20906002020160010154600f5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110612a1957612a18614a96565b5b905f5260205f2090600202015f015461369790919063ffffffff16565b9050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663426e04b633836040518363ffffffff1660e01b8152600401612af5929190614621565b6020604051808303815f875af1158015612b11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b359190614eb6565b612b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6b90614f2b565b60405180910390fd5b612be1600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168260035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166136bd9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fca8434b646e42f759a6f797c766eaf105a486cfcb4cbc3d176b73fd036690f8982604051612c279190614754565b60405180910390a26001915050612c3c613f80565b90565b5f805f1b612c4c816135f8565b5f60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001915050919050565b5f60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7fc48556de71c0f73e8524a5d68cd20d7a4c9ca6279c843fc18720937bba83be1c81565b612d29826113fa565b612d32816135f8565b612d3c838361407a565b50505050565b5f612d60670de0b6b3a764000060065461364c90919063ffffffff16565b905090565b5f805f1b612d72816135f8565b60075491505090565b5f612e2f670de0b6b3a764000060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612de29190615798565b602060405180830381865afa158015612dfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e2191906157b1565b61364c90919063ffffffff16565b905090565b5f612e3d61373c565b612e4561377d565b6008805410612e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8090615063565b60405180910390fd5b612e9161278d565b612e99612d7b565b11612ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ed0906150cb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603612f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3e90615133565b60405180910390fd5b5f8411612f89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f8090615684565b60405180910390fd5b612f9161399b565b612fc0612faf670de0b6b3a76400008761360c90919063ffffffff16565b60065461369790919063ffffffff16565b1115613001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff890615387565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361306f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130669061524f565b60405180910390fd5b600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815481106130be576130bd614a96565b5b905f5260205f2090600302016002015f9054906101000a900460ff16613119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311090615826565b60405180910390fd5b5f151561312533612caa565b151514613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e906152b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146131e4576131a483336137c1565b6131e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131da9061531f565b60405180910390fd5b5b5f8290505f6131f38287610f1e565b90505f600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154811061324557613244614a96565b5b905f5260205f2090600302015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506132c33360095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16848473ffffffffffffffffffffffffffffffffffffffff16614265909392919063ffffffff16565b5f6132cf33888a6139bd565b905080613311576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330890615526565b60405180910390fd5b5f61331b89613edd565b90508061335d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133549061558e565b60405180910390fd5b60019550505050505061336e613f80565b9392505050565b61337d61377d565b5f801b613389816135f8565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161340f906158b4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036134b55760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156134af573d5f803e3d5ffd5b50613583565b5f8290505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016134f39190615798565b602060405180830381865afa15801561350e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061353291906157b1565b905061358060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166136bd9092919063ffffffff16565b50505b5061358c613f80565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b61360981613604614073565b6142e7565b50565b5f80830361361c575f9050613646565b5f828461362991906158ff565b9050828482613638919061596d565b14613641575f80fd5b809150505b92915050565b5f808211613658575f80fd5b5f8284613665919061596d565b90508091505092915050565b5f8282111561367e575f80fd5b5f828461368b919061599d565b90508091505092915050565b5f8082846136a591906159d0565b9050838110156136b3575f80fd5b8091505092915050565b613737838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016136f0929190614621565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614338565b505050565b613744611efe565b1561377b576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60028054036137b8576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028081905550565b5f80600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905011613844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161383b90615a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461390e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161390590615b01565b60405180910390fd5b6001600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905010613991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161398890615b69565b60405180910390fd5b6001905092915050565b5f806139b4600c54600d5461367190919063ffffffff16565b90508091505090565b5f805f90505f600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490501115613afa57613a94613a28670de0b6b3a76400008561360c90919063ffffffff16565b600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110613a7757613a76614a96565b5b905f5260205f2090600202015f015461369790919063ffffffff16565b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110613ae357613ae2614a96565b5b905f5260205f2090600202015f0181905550613ba6565b5f6040518060400160405280613b21670de0b6b3a76400008761360c90919063ffffffff16565b8152602001838152509050600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f0155602082015181600101555050505b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614613e6c57613c1a6064613c0c600a613bfe670de0b6b3a76400008861360c90919063ffffffff16565b61360c90919063ffffffff16565b61364c90919063ffffffff16565b90508360105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613d0881600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110613cea57613ce9614a96565b5b905f5260205f2090600202016001015461369790919063ffffffff16565b600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110613d5757613d56614a96565b5b905f5260205f20906002020160010181905550613ddb81600f5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110613dbd57613dbc614a96565b5b905f5260205f2090600202016001015461369790919063ffffffff16565b600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f81548110613e2a57613e29614a96565b5b905f5260205f20906002020160010181905550613e65613e5460028361360c90919063ffffffff16565b60075461369790919063ffffffff16565b6007819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd0c183be209f70036b50de16805d88249019e1288d7b77ef877710999c0d08e685604051613ec99190614754565b60405180910390a360019150509392505050565b5f613f0d613efc670de0b6b3a76400008461360c90919063ffffffff16565b60055461369790919063ffffffff16565b600581905550613f42613f31670de0b6b3a76400008461360c90919063ffffffff16565b60065461369790919063ffffffff16565b600681905550600d5460065403613f7757613f69600160085461369790919063ffffffff16565b6008819055505f6006819055505b60019050919050565b6001600281905550565b5f613f9583836126dd565b6140695760015f808581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550614006614073565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001905061406d565b5f90505b92915050565b5f33905090565b5f61408583836126dd565b15614159575f805f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506140f6614073565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061415d565b5f90505b92915050565b61416b611efe565b6141a1576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6141ab614163565b5f60015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6141ed614073565b6040516141fa9190615798565b60405180910390a1565b61420c61373c565b6001805f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861424e614073565b60405161425b9190615798565b60405180910390a1565b6142e1848573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161429a93929190615b87565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614338565b50505050565b6142f182826126dd565b6143345780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161432b929190615bbc565b60405180910390fd5b5050565b5f614362828473ffffffffffffffffffffffffffffffffffffffff166143cd90919063ffffffff16565b90505f8151141580156143865750808060200190518101906143849190614eb6565b155b156143c857826040517f5274afe70000000000000000000000000000000000000000000000000000000081526004016143bf9190615798565b60405180910390fd5b505050565b60606143da83835f6143e2565b905092915050565b60608147101561442957306040517fcd7860590000000000000000000000000000000000000000000000000000000081526004016144209190615798565b60405180910390fd5b5f808573ffffffffffffffffffffffffffffffffffffffff1684866040516144519190615c2b565b5f6040518083038185875af1925050503d805f811461448b576040519150601f19603f3d011682016040523d82523d5f602084013e614490565b606091505b50915091506144a08683836144ab565b925050509392505050565b6060826144c0576144bb82614538565b614530565b5f82511480156144e657505f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561452857836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161451f9190615798565b60405180910390fd5b819050614531565b5b9392505050565b5f8151111561454a5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405180604001604052805f81526020015f81525090565b60405180606001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f151581525090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6145f3826145ca565b9050919050565b614603816145e9565b82525050565b5f819050919050565b61461b81614609565b82525050565b5f6040820190506146345f8301856145fa565b6146416020830184614612565b9392505050565b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6146808161464c565b811461468a575f80fd5b50565b5f8135905061469b81614677565b92915050565b5f602082840312156146b6576146b5614648565b5b5f6146c38482850161468d565b91505092915050565b5f8115159050919050565b6146e0816146cc565b82525050565b5f6020820190506146f95f8301846146d7565b92915050565b614708816145e9565b8114614712575f80fd5b50565b5f81359050614723816146ff565b92915050565b5f6020828403121561473e5761473d614648565b5b5f61474b84828501614715565b91505092915050565b5f6020820190506147675f830184614612565b92915050565b5f614777826145e9565b9050919050565b6147878161476d565b8114614791575f80fd5b50565b5f813590506147a28161477e565b92915050565b6147b181614609565b81146147bb575f80fd5b50565b5f813590506147cc816147a8565b92915050565b5f80604083850312156147e8576147e7614648565b5b5f6147f585828601614794565b9250506020614806858286016147be565b9150509250929050565b5f6020828403121561482557614824614648565b5b5f61483284828501614794565b91505092915050565b5f805f6060848603121561485257614851614648565b5b5f61485f86828701614715565b935050602061487086828701614715565b9250506040614881868287016147be565b9150509250925092565b5f819050919050565b61489d8161488b565b81146148a7575f80fd5b50565b5f813590506148b881614894565b92915050565b5f602082840312156148d3576148d2614648565b5b5f6148e0848285016148aa565b91505092915050565b6148f28161488b565b82525050565b5f60208201905061490b5f8301846148e9565b92915050565b5f805f6060848603121561492857614927614648565b5b5f614935868287016147be565b935050602061494686828701614715565b925050604061495786828701614715565b9150509250925092565b5f806040838503121561497757614976614648565b5b5f614984858286016148aa565b925050602061499585828601614715565b9150509250929050565b6149a881614609565b82525050565b604082015f8201516149c25f85018261499f565b5060208201516149d5602085018261499f565b50505050565b5f6040820190506149ee5f8301846149ae565b92915050565b6149fd816145e9565b82525050565b614a0c816146cc565b82525050565b606082015f820151614a265f8501826149f4565b506020820151614a39602085018261499f565b506040820151614a4c6040850182614a03565b50505050565b5f606082019050614a655f830184614a12565b92915050565b5f60208284031215614a8057614a7f614648565b5b5f614a8d848285016147be565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82825260208201905092915050565b7f48595048413a207374616765546f6b656e536f6c6420657863656564732073745f8201527f616765546f6b656e4c696d697400000000000000000000000000000000000000602082015250565b5f614b2d602d83614ac3565b9150614b3882614ad3565b604082019050919050565b5f6020820190508181035f830152614b5a81614b21565b9050919050565b5f69ffffffffffffffffffff82169050919050565b614b7f81614b61565b8114614b89575f80fd5b50565b5f81519050614b9a81614b76565b92915050565b5f819050919050565b614bb281614ba0565b8114614bbc575f80fd5b50565b5f81519050614bcd81614ba9565b92915050565b5f81519050614be1816147a8565b92915050565b5f805f805f60a08688031215614c0057614bff614648565b5b5f614c0d88828901614b8c565b9550506020614c1e88828901614bbf565b9450506040614c2f88828901614bd3565b9350506060614c4088828901614bd3565b9250506080614c5188828901614b8c565b9150509295509295909350565b7f48797068613a20496e76616c69642070726963650000000000000000000000005f82015250565b5f614c92601483614ac3565b9150614c9d82614c5e565b602082019050919050565b5f6020820190508181035f830152614cbf81614c86565b9050919050565b7f48797068613a20436f696e2070616972206e6f742065786973740000000000005f82015250565b5f614cfa601a83614ac3565b9150614d0582614cc6565b602082019050919050565b5f6020820190508181035f830152614d2781614cee565b9050919050565b7f48595048413a20436c61696d696e67206e6f7420617661696c61626c650000005f82015250565b5f614d62601d83614ac3565b9150614d6d82614d2e565b602082019050919050565b5f6020820190508181035f830152614d8f81614d56565b9050919050565b7f48595048413a204e6f206461746120617661696c61626c6500000000000000005f82015250565b5f614dca601883614ac3565b9150614dd582614d96565b602082019050919050565b5f6020820190508181035f830152614df781614dbe565b9050919050565b7f48595048413a2056657374696e672063616e6e6f7420626520416464726573735f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f614e58602283614ac3565b9150614e6382614dfe565b604082019050919050565b5f6020820190508181035f830152614e8581614e4c565b9050919050565b614e95816146cc565b8114614e9f575f80fd5b50565b5f81519050614eb081614e8c565b92915050565b5f60208284031215614ecb57614eca614648565b5b5f614ed884828501614ea2565b91505092915050565b7f48595048413a2056657374696e6720636f756c64206e6f7420626520736574005f82015250565b5f614f15601f83614ac3565b9150614f2082614ee1565b602082019050919050565b5f6020820190508181035f830152614f4281614f09565b9050919050565b7f48595048413a2050726573616c6520686173206e6f7420656e646564000000005f82015250565b5f614f7d601c83614ac3565b9150614f8882614f49565b602082019050919050565b5f6020820190508181035f830152614faa81614f71565b9050919050565b7f48595048413a20436c61696d20616c726561647920656e61626c6564000000005f82015250565b5f614fe5601c83614ac3565b9150614ff082614fb1565b602082019050919050565b5f6020820190508181035f83015261501281614fd9565b9050919050565b7f48595048413a2050726573616c652068617320656e64656400000000000000005f82015250565b5f61504d601883614ac3565b915061505882615019565b602082019050919050565b5f6020820190508181035f83015261507a81615041565b9050919050565b7f48595048413a20416c6c20546f6b656e7320536f6c646564204f7574000000005f82015250565b5f6150b5601c83614ac3565b91506150c082615081565b602082019050919050565b5f6020820190508181035f8301526150e2816150a9565b9050919050565b7f48595048413a2043616e277420757365204164647265737320300000000000005f82015250565b5f61511d601a83614ac3565b9150615128826150e9565b602082019050919050565b5f6020820190508181035f83015261514a81615111565b9050919050565b7f48595048413a20455448207175616e74697479206d75737420626520677265615f8201527f746572207468616e203000000000000000000000000000000000000000000000602082015250565b5f6151ab602a83614ac3565b91506151b682615151565b604082019050919050565b5f6020820190508181035f8301526151d88161519f565b9050919050565b7f48595048413a20427579657220616e6420526566657265722063616e277420625f8201527f65207468652073616d6520616464726573730000000000000000000000000000602082015250565b5f615239603283614ac3565b9150615244826151df565b604082019050919050565b5f6020820190508181035f8301526152668161522d565b9050919050565b7f48595048413a2057616c6c657420697320626c61636b6c6973746564000000005f82015250565b5f6152a1601c83614ac3565b91506152ac8261526d565b602082019050919050565b5f6020820190508181035f8301526152ce81615295565b9050919050565b7f48595048413a20696e76616c69642072656665727265720000000000000000005f82015250565b5f615309601783614ac3565b9150615314826152d5565b602082019050919050565b5f6020820190508181035f830152615336816152fd565b9050919050565b7f48595048413a204e6f7420656e6f75676820546f6b656e204c656674000000005f82015250565b5f615371601c83614ac3565b915061537c8261533d565b602082019050919050565b5f6020820190508181035f83015261539e81615365565b9050919050565b7f48595048413a20546f6b656e20646576696174696f6e20746f206869676874005f82015250565b5f6153d9601f83614ac3565b91506153e4826153a5565b602082019050919050565b5f6020820190508181035f830152615406816153cd565b9050919050565b5f81905092915050565b50565b5f6154255f8361540d565b915061543082615417565b5f82019050919050565b5f6154448261541a565b9150819050919050565b7f48595048413a204661696c656420746f2073656e6420457468657200000000005f82015250565b5f615482601b83614ac3565b915061548d8261544e565b602082019050919050565b5f6020820190508181035f8301526154af81615476565b9050919050565b7f48595048413a20546f6b656e20636f756c64206e6f7420626520616c6c6f63615f8201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b5f615510602383614ac3565b915061551b826154b6565b604082019050919050565b5f6020820190508181035f83015261553d81615504565b9050919050565b7f48595048413a204275792064617461206e6f74207570646174656400000000005f82015250565b5f615578601b83614ac3565b915061558382615544565b602082019050919050565b5f6020820190508181035f8301526155a58161556c565b9050919050565b7f48797068613a204e6f20746f6b656e20617661696c61626c65000000000000005f82015250565b5f6155e0601983614ac3565b91506155eb826155ac565b602082019050919050565b5f6020820190508181035f83015261560d816155d4565b9050919050565b7f48595048413a20546f6b656e207175616e74697479206d7573742062652067725f8201527f6561746572207468616e20300000000000000000000000000000000000000000602082015250565b5f61566e602c83614ac3565b915061567982615614565b604082019050919050565b5f6020820190508181035f83015261569b81615662565b9050919050565b7f48595048413a204e6f7420656e6f75676820746f6b656e204c65667420696e205f8201527f7468697320737461676500000000000000000000000000000000000000000000602082015250565b5f6156fc602a83614ac3565b9150615707826156a2565b604082019050919050565b5f6020820190508181035f830152615729816156f0565b9050919050565b7f48595048413a20546f6b656e73206578656564206c696d6974000000000000005f82015250565b5f615764601983614ac3565b915061576f82615730565b602082019050919050565b5f6020820190508181035f83015261579181615758565b9050919050565b5f6020820190506157ab5f8301846145fa565b92915050565b5f602082840312156157c6576157c5614648565b5b5f6157d384828501614bd3565b91505092915050565b7f48595048413a20436f696e2070616972206e6f7420617661696c61626c6500005f82015250565b5f615810601e83614ac3565b915061581b826157dc565b602082019050919050565b5f6020820190508181035f83015261583d81615804565b9050919050565b7f48595048413a204f776e65722063616e6e6f7420636c61696d206e61746976655f8201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b5f61589e602783614ac3565b91506158a982615844565b604082019050919050565b5f6020820190508181035f8301526158cb81615892565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61590982614609565b915061591483614609565b925082820261592281614609565b91508282048414831517615939576159386158d2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61597782614609565b915061598283614609565b92508261599257615991615940565b5b828204905092915050565b5f6159a782614609565b91506159b283614609565b92508282039050818111156159ca576159c96158d2565b5b92915050565b5f6159da82614609565b91506159e583614609565b92508282019050808211156159fd576159fc6158d2565b5b92915050565b7f48595048413a205265666572726572206973206e6f7420746f6b656e20686f6c5f8201527f6465720000000000000000000000000000000000000000000000000000000000602082015250565b5f615a5d602383614ac3565b9150615a6882615a03565b604082019050919050565b5f6020820190508181035f830152615a8a81615a51565b9050919050565b7f48595048413a204e657720627579657220616c726561647920726566657272655f8201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b5f615aeb602183614ac3565b9150615af682615a91565b604082019050919050565b5f6020820190508181035f830152615b1881615adf565b9050919050565b7f48595048413a204e657720627579657220697320746f6b656e20686f6c6465725f82015250565b5f615b53602083614ac3565b9150615b5e82615b1f565b602082019050919050565b5f6020820190508181035f830152615b8081615b47565b9050919050565b5f606082019050615b9a5f8301866145fa565b615ba760208301856145fa565b615bb46040830184614612565b949350505050565b5f604082019050615bcf5f8301856145fa565b615bdc60208301846148e9565b9392505050565b5f81519050919050565b8281835e5f83830152505050565b5f615c0582615be3565b615c0f818561540d565b9350615c1f818560208601615bed565b80840191505092915050565b5f615c368284615bfb565b91508190509291505056fea2646970667358221220ac984a23882992329824dea6b66de0f3d02e1421d50e92854548db2a70319b0064736f6c634300081a00330000000000000000000000001d18168701347464b6f19977e282a703cc6ba127000000000000000000000000e35f88a6fce6ec2a1dc8e7ac146246d6944ae3140000000000000000000000002c23ce6340b5244050a87e31451561f7873d6d5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000007e729da9703d763b59ab49c53eb83c7ea8fd4952