1.3k txs
1.1k calls
constructor
constructor(address _calculator, address _svgGenerator, address _feeCollector)
functions
_getReleasableShares
viewfunction _getReleasableShares(uint256 vestingId) view returns (uint256)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
calculator
viewfunction calculator() view returns (address)
feeCollector
viewfunction feeCollector() view returns (address)
feeExemptCreators
viewfunction feeExemptCreators(address) view returns (bool)
feeExemptTokens
viewfunction feeExemptTokens(address) view returns (bool)
feePercentage
viewfunction feePercentage() view returns (uint256)
flatFee
viewfunction flatFee() view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getReleasableAmount
viewfunction getReleasableAmount(uint256 vestingId) view returns (uint256)
getVestedAmount
viewfunction getVestedAmount(uint256 vestingId) view returns (uint256)
getVestingSchedule
viewfunction getVestingSchedule(uint256 vestingId) view returns (tuple)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
nextVestingId
viewfunction nextVestingId() view returns (uint256)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
svgGenerator
viewfunction svgGenerator() view returns (address)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
vestingSchedules
viewfunction vestingSchedules(uint256) view returns (address token, address creator, address beneficiary, uint256 totalAmount, uint256 released, bool isSoft, bool isNftized, bool cancelled, bool isTopable, uint8 vestingType)
acceptOwnership
nonpayablefunction acceptOwnership()
approve
nonpayablefunction approve(address to, uint256 tokenId)
cancel
nonpayablefunction cancel(uint256 vestingId)
createAirdropVesting
payablefunction createAirdropVesting(address token, tuple[] tranches, address[] beneficiaries, bool isSoft, bool isNftized, bool isTransferable, bool isTopable) payable returns (uint256[])
createBulkVestingForBeneficiaries
payablefunction createBulkVestingForBeneficiaries(address[] tokens, tuple[][] tranchesList, address[] beneficiaries, bool isSoft, bool isNftized, bool isTransferable, bool isTopable) payable returns (uint256[])
createBulkVestingForBeneficiary
payablefunction createBulkVestingForBeneficiary(address[] tokens, tuple[][] tranchesList, address beneficiary, bool isSoft, bool isNftized, bool isTransferable, bool isTopable) payable returns (uint256[])
createDailySoftVesting
payablefunction createDailySoftVesting(address token, tuple[] tranches, address beneficiary) payable returns (uint256)
createVesting
payablefunction createVesting(address token, tuple[] tranches, address beneficiary, bool isSoft, bool isNftized, bool isTransferable, bool isTopable) payable returns (uint256)
mintVestingNFT
nonpayablefunction mintVestingNFT(uint256 vestingId)
release
nonpayablefunction release(uint256 vestingId)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setCreatorFeeExempt
nonpayablefunction setCreatorFeeExempt(address _creator, bool _isExempt)
setFeeCollector
nonpayablefunction setFeeCollector(address newFeeCollector)
setFeePercentage
nonpayablefunction setFeePercentage(uint256 _feePercentage)
setFlatFee
nonpayablefunction setFlatFee(uint256 _flatFee)
setSVGGenerator
nonpayablefunction setSVGGenerator(address newSVGGenerator)
setTokenFeeExempt
nonpayablefunction setTokenFeeExempt(address _token, bool _isExempt)
topUpVesting
nonpayablefunction topUpVesting(uint256 vestingId, tuple[] additionalTranches)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferVesting
nonpayablefunction transferVesting(uint256 vestingId, address newBeneficiary)
events
AirdropVestingCreated
event AirdropVestingCreated(uint256[] vestingIds, address[] beneficiaries)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BulkVestingCreated
event BulkVestingCreated(uint256[] vestingIds, address indexed beneficiary)
BulkVestingCreatedForBeneficiaries
event BulkVestingCreatedForBeneficiaries(uint256[] vestingIds, address[] beneficiaries)
CreatorFeeExemptionUpdated
event CreatorFeeExemptionUpdated(address creator, bool isExempt)
FeeCollectorUpdated
event FeeCollectorUpdated(address indexed oldFeeCollector, address indexed newFeeCollector)
FeeExemptionStatusUpdated
event FeeExemptionStatusUpdated(bool enabled)
FeePercentageUpdated
event FeePercentageUpdated(uint256 newFeePercentage)
FeesCollected
event FeesCollected(address token, uint256 amount, uint256 flatFee)
FlatFeeUpdated
event FlatFeeUpdated(uint256 newFlatFee)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
SVGGeneratorUpdated
event SVGGeneratorUpdated(address indexed oldSVGGenerator, address indexed newSVGGenerator)
TokenFeeExemptionUpdated
event TokenFeeExemptionUpdated(address token, bool isExempt)
TokensReleased
event TokensReleased(uint256 indexed vestingId, address indexed beneficiary, uint256 amount)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
VestingCancelled
event VestingCancelled(uint256 indexed vestingId)
VestingCreated
event VestingCreated(uint256 indexed vestingId, address indexed beneficiary, address token, (uint256 time, uint256 amount, uint8 eqType)[] tranches, bool isSoft, bool isTopable, bool isTransferable)
VestingToppedUp
event VestingToppedUp(uint256 indexed vestingId, address indexed sender, uint256 amount, (uint256 time, uint256 amount, uint8 eqType)[] tranches)
VestingTransferred
event VestingTransferred(uint256 indexed vestingId, address indexed from, address indexed to)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
FailedInnerCall
error FailedInnerCall()
FeeTransferFailed
error FeeTransferFailed()
InvalidAmount
error InvalidAmount()
InvalidArray
error InvalidArray()
InvalidBeneficiary
error InvalidBeneficiary()
InvalidCalculator
error InvalidCalculator()
InvalidFeeCollector
error InvalidFeeCollector()
InvalidFeePercentage
error InvalidFeePercentage()
InvalidFlatFee
error InvalidFlatFee()
InvalidSVGGenerator
error InvalidSVGGenerator()
InvalidTime
error InvalidTime()
InvalidToken
error InvalidToken()
NFTAlreadyMinted
error NFTAlreadyMinted()
NonTransferableToken
error NonTransferableToken()
NotAuthorized
error NotAuthorized()
NotCancellable
error NotCancellable()
NoTokensToRelease
error NoTokensToRelease()
NotSoftVesting
error NotSoftVesting()
NotTopable
error NotTopable()
NotWhitelisted
error NotWhitelisted()
OnlyCreatorCanCancel
error OnlyCreatorCanCancel()
OnlyOwner
error OnlyOwner()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
TokenDoesNotExist
error TokenDoesNotExist()
VestingAlreadyCancelled
error VestingAlreadyCancelled()
creation bytecode
0x60a06040523461049357614b2c6060813803918261001c81610498565b93849283398101031261049357610032816104bd565b61004a6040610043602085016104bd565b93016104bd565b916100556040610498565b92600b84526a15995cdd1a5b99c813919560aa1b60208501526100786040610498565b60048152631593919560e21b6020820152845190946001600160401b0382116103935760005490600182811c92168015610489575b60208310146103735781601f84931161041a575b50602090601f83116001146103b4576000926103a9575b50508160011b916000199060031b1c1916176000555b83516001600160401b03811161039357600154600181811c91168015610389575b602082101461037357601f811161030e575b50602094601f82116001146102a75794819293949560009261029c575b50508160011b916000199060031b1c1916176001555b331561028657600780546001600160a01b0319908116909155600680549182163390811790915560405194916001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a360016008556001600160a01b0316918215610275576001600160a01b0316908115610264576001600160a01b03169182156102535760805260018060a01b0319600954161760095560018060a01b0319601254161760125561465a90816104d282396080518181816102e8015281816109270152818161154801528181611dc00152818161270e01528181612a1901528181612e3801528181613b910152613c460152f35b63bb0bac9960e01b60005260046000fd5b63086665d760e31b60005260046000fd5b6396590cbb60e01b60005260046000fd5b631e4fbdf760e01b600052600060045260246000fd5b01519050388061013e565b601f198216956001600052806000209160005b8881106102f6575083600195969798106102dd575b505050811b01600155610154565b015160001960f88460031b161c191690553880806102cf565b919260206001819286850151815501940192016102ba565b60016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f830160051c81019160208410610369575b601f0160051c01905b81811061035d5750610121565b60008155600101610350565b9091508190610347565b634e487b7160e01b600052602260045260246000fd5b90607f169061010f565b634e487b7160e01b600052604160045260246000fd5b0151905038806100d8565b60008080528281209350601f198516905b81811061040257509084600195949392106103e9575b505050811b016000556100ee565b015160001960f88460031b161c191690553880806103db565b929360206001819287860151815501950193016103c5565b600080529091507f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f840160051c8101916020851061047f575b90601f859493920160051c01905b81811061047057506100c1565b60008155849350600101610463565b9091508190610455565b91607f16916100ad565b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761039357604052565b51906001600160a01b03821682036104935756fe61022080604052600436101561001457600080fd5b60003560e01c90816301ffc9a7146133b757508063025d3c831461334657806306fdde031461328b578063081812fc1461324d578063095ea7b31461315e5780630c558e4414612d735780631878559014612cc15780631ce113491461296a5780631e6492b11461290057806323241b131461240557806323b872dd146123ee57806323fa495a146123a257806337bdc99b146121ea57806340e58ee51461205357806340ee653814611acb57806342842e0e14611aa1578063495f3d2714611a835780636352211e14611a535780636d3cbe21146119925780636d6060f5146119695780636de18fbb1461192a57806370a08231146118d4578063715018a61461187f57806379ba5097146118075780638799ce22146114ab5780638da5cb5b1461148257806395d89b411461137757806397b5bb3a14611338578063a001ecdd1461131a578063a22cb4651461127f578063a42dce80146111fa578063ae06c1b714611193578063b3a0f37d1461110e578063b8677ebd14611087578063b88d4fde14610fff578063beb8f88314610d07578063c415b95c14610cde578063c86055cb14610c6b578063c87b56dd14610974578063cafeedf614610956578063ce3e39c014610911578063d9eb5947146108f3578063dda085cf146108cd578063e30c3978146108a4578063e985e9c514610849578063f2fde38b146107dc5763fc48422c1461022557600080fd5b34610753576040366003190112610753576004356024356001600160401b038111610753576102589036906004016134ac565b9091610262613d93565b6000818152600d6020526040902060018101549093906001600160a01b031633036107cb57600584015460ff8160101c166107ba5760181c60ff16156107a9576006840180546000198101908111610793576102be9082613a62565b5054841561077d578235111561076c57604051630a7951fb60e11b815260206004820181905290957f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692918780610322602482018a89613639565b0381865afa96871561076057600097610727575b50600381019081548098111561071657600097806020870135106107075760405190630a7951fb60e11b8252602060048301526020828061037b602482018d8c613639565b0381895afa80156106fc578a906106c4575b61039792506136c6565b81546103ab906001600160a01b0316613fae565b81546001600160a01b0316808a52601460205260408a205490918a9160ff1615806106ad575b806106a2575b610685575b816103e691613845565b6040516370a0823160e01b815230600482015292602084602481845afa938415610641578c9461064c575b509061042091309033906140d6565b82546040516370a0823160e01b81523060048201526001600160a01b0390911690602081602481855afa908115610641578c91610608575b5061047593610466916136c6565b9082806105bb575b50506136c6565b9360206040518092630a7951fb60e11b8252826004830152818061049e8d60248301908d613639565b03915afa9081156105b057899161057a575b5081546104c79086906001600160a01b0316614513565b9255858852600c602052604088206104e0838254613845565b9055546001600160a01b03168752600b602052604087208054909161050491613845565b9055855b85811061055d575050907f3ca9c0d48ed2e86756871eee17814f70a8e4471f79823d1fd8836be2ddd8bdde9161055260405192839283526040602084015233966040840191613639565b0390a3600160085580f35b8061057461056e60019389886142f5565b84614305565b01610508565b90506020813d6020116105a8575b81610595602093836135ee565b810103126105a45751386104b0565b8880fd5b3d9150610588565b6040513d8b823e3d90fd5b6012546105d3926001600160a01b0390911690614121565b6000805160206145c5833981519152606060018060a01b038654166040519081528460208201528d6040820152a1388261046e565b90508b8160203d60201161063a575b60209261062482846135ee565b50810103126106365751610475610458565b8b80fd5b503d610617565b6040513d8e823e3d90fd5b919093508b8260203d60201161067e575b60209261066a82846135ee565b508101031261063657905192610420610411565b503d61065d565b90506103e661271061069960105484613693565b049190506103dc565b5060105415156103d7565b50338b52601360205260ff60408c205416156103d1565b506020823d6020116106f4575b816106de602093836135ee565b810103126106f057610397915161038d565b8980fd5b3d91506106d1565b6040513d8c823e3d90fd5b63162908e360e11b8952600489fd5b63162908e360e11b60005260046000fd5b9096506020813d602011610758575b81610743602093836135ee565b8101031261075357519538610336565b600080fd5b3d9150610736565b6040513d6000823e3d90fd5b6337bf561360e11b60005260046000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6303813f7960e41b60005260046000fd5b635bc2daf760e01b60005260046000fd5b63ea8e4eb560e01b60005260046000fd5b34610753576020366003190112610753576107f561346a565b6107fd61422b565b600780546001600160a01b0319166001600160a01b039283169081179091556006549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b346107535760403660031901126107535761086261346a565b61086a613496565b9060018060a01b0316600052600560205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b34610753576000366003190112610753576007546040516001600160a01b039091168152602090f35b346107535760203660031901126107535760206108eb600435613c03565b604051908152f35b34610753576000366003190112610753576020601154604051908152f35b34610753576000366003190112610753576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346107535760203660031901126107535760206108eb600435613b4c565b34610753576020366003190112610753576004356001600160a01b0361099982613d5c565b1615610c5a5780600052600d602052604060002060018060a01b03815416916000604051906395d89b4160e01b82528082600481885afa90918282610c3d575b5050610c3757506040516109ee6040826135ee565b60058152642a27a5a2a760d91b6020820152905b6040516306fdde0360e01b8152600081600481885afa60009181610c1a575b50610c0f57506004602083955b60405163313ce56760e01b815292839182905afa8091600091610bcc575b5090610bc7575060125b6006840180548015801593929190610bc0576000825415610bac578083602092522054935b15610ba357600019810190811161079357610a9591613a62565b5054945b610aa284613b4c565b90600160a01b600190036009541696600382015494600583015492600160a01b60019003906002015416936040519a8b998a99632af8528160e11b8b5260048b015260248a0161016090526101648a01610afb91613445565b8981036003190160448b0152610b1091613445565b966064890152608488015260a487015260c486015260ff8116151560e486015260181c60ff16151561010485015261012484015260ff1661014483015203815a93600094fa801561076057610b7c91600091610b80575b50604051918291602083526020830190613445565b0390f35b610b9d91503d806000833e610b9581836135ee565b810190613a7e565b82610b67565b50504294610a99565b634e487b7160e01b81526032600452602490fd5b4293610a7b565b610a56565b6020813d602011610c07575b81610be5602093836135ee565b81010312610c0357519060ff82168203610c00575086610a4c565b80fd5b5080fd5b3d9150610bd8565b602060049195610a2e565b610c309192503d806000833e610b9581836135ee565b9086610a21565b90610a02565b610c529293503d8091833e610b9581836135ee565b9085806109d9565b63677510db60e11b60005260046000fd5b34610753576020366003190112610753576004356000818152600d6020526040902060028101546001600160a01b03169190338390036107cb576005019182549260ff8460081c16610ccd57610100610ccb9461ff00191617905561423f565b005b634b3aaa7960e11b60005260046000fd5b34610753576000366003190112610753576012546040516001600160a01b039091168152602090f35b34610753576020366003190112610753576060610140604051610d29816135d2565b60008152600060208201526000604082015260008382015260006080820152600060a0820152600060c0820152600060e0820152600061010082015260006101208201520152600435600052600d602052604060002060405190610d8c826135d2565b60018060a01b03815416825260018060a01b03600182015416602083015260018060a01b036002820154169060408301918252600381015492606081019384526004820154916080820192835260058101549060a0830160ff83161515815260c084019160ff8460081c161515835260ff60e0860194818160101c1615158652818160181c16151561010088015260201c16906001821015610fd3579260068693948996936101208c9901520193845494610e4686613703565b95610e5460405197886135ee565b80875260208701916000526020600020916000905b828210610f65575050505091839161012093610140610f049601968752604051998a9960208b526101808b019960018060a01b0387511660208d015260018060a01b0360208801511660408d015260018060a01b0390511660608c01525160808b01525160a08a015251151560c089015251151560e088015251151561010087015261010081015115158287015201516101408501906135c5565b519061016080840152815180915260206101a0840192019060005b818110610f2d575050500390f35b9193509160206060600192610f57604088518051845285810151868501520151604083019061362c565b019401910191849392610f1f565b60409b9495969798999a9b5180606081011060018060401b03606083011117610fe95760608101604052845481526001850154602082015260ff6002860154166004811015610fd35760019282602092604060039501528152019401910190929a999897969594939a610e69565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b346107535760803660031901126107535761101861346a565b611020613496565b606435916001600160401b03831161075357366023840112156107535782600401359161104c83613611565b9261105a60405194856135ee565b8084523660248287010111610753576020816000926024610ccb9801838801378501015260443591613943565b34610753576040366003190112610753577f4bf9282e3599b6ced47a6b43d6cc20c76b84e799284fcc9a2630e5760cb31fc96110c161346a565b6110c9613518565b906110d261422b565b60018060a01b03811660005260146020526110f18260406000206137f0565b604080516001600160a01b039290921682529115156020820152a1005b346107535760203660031901126107535761112761346a565b61112f61422b565b6001600160a01b0316801561118257600980546001600160a01b0319811683179091556001600160a01b03167f7c5678af833b27d4a7e7c941e937740f7a52441e57ccee32a250aafbcf6fdfe1600080a3005b63086665d760e31b60005260046000fd5b34610753576020366003190112610753576004356111af61422b565b6101f481116111e9576020817f74516f05eb4bd2461d57aa1e935ee553f86a3e02bfed7759f2f772915de3d9be92601055604051908152a1005b63390edff560e11b60005260046000fd5b346107535760203660031901126107535761121361346a565b61121b61422b565b6001600160a01b0316801561126e57601280546001600160a01b0319811683179091556001600160a01b03167f5d16ad41baeb009cd23eb8f6c7cde5c2e0cd5acf4a33926ab488875c37c37f38600080a3005b63bb0bac9960e01b60005260046000fd5b346107535760403660031901126107535761129861346a565b6112a0613518565b6001600160a01b03909116908115611305573360005260056020526040600020826000526020526112d58160406000206137f0565b60405190151581527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b50630b61174360e31b60005260045260246000fd5b34610753576000366003190112610753576020601054604051908152f35b34610753576020366003190112610753576001600160a01b0361135961346a565b166000526013602052602060ff604060002054166040519015158152f35b346107535760003660031901126107535760405160006001548060011c90600181168015611478575b6020831081146114645782855290811561144057506001146113e1575b610b7c836113cd818503826135ee565b604051918291602083526020830190613445565b600160009081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b808210611426575090915081016020016113cd6113bd565b91926001816020925483858801015201910190929161140e565b60ff191660208086019190915291151560051b840190910191506113cd90506113bd565b634e487b7160e01b84526022600452602484fd5b91607f16916113a0565b34610753576000366003190112610753576006546040516001600160a01b039091168152602090f35b6060366003190112610753576114bf61346a565b6024356001600160401b038111610753576114de9036906004016134ac565b916114e7613480565b906114f0613d93565b6000936001600160a01b0382169384156117f8576001600160a01b0384169485156117e95761151e84613fae565b604051630a7951fb60e11b81526020600482018190528180611544602482018888613639565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156117de5788916117a8575b50801561179957879188818a52601460205260ff60408b2054161580611782575b60115490811515908161176a575b81611752575b80611747575b61172f575b611727575b506115d2833033856140d6565b836116e6575b8061166f575b5050906115ea916136c6565b9586600a5497889683806115fd8a613852565b600a55600161160f9481948b8d614369565b61161a84848861441a565b61162590858761445d565b848152600e6020526040812060ff198154169055604051936001859461164d94829387613db5565b036000805160206145a583398151915291a36001600855604051908152602090f35b8034106116d757898080808460018060a01b03601254165af16116906136d3565b50156116c85760606115ea9493926000805160206145c5833981519152926040519182528c60208301526040820152a19091896115de565b634033e4e360e01b8a5260048afd5b6383e05c6760e01b8a5260048afd5b6012546116fe9085906001600160a01b031684614121565b6000805160206145c583398151915260606040518481528660208201528c6040820152a16115d8565b90508a6115c5565b945061271061174060105486613693565b04946115c0565b5060105415156115bb565b338d52601360205260408d205460ff161591506115b5565b848d52601460205260408d205460ff161591506115af565b50338a52601360205260ff60408b205416156115a1565b63162908e360e11b8852600488fd5b90506020813d6020116117d6575b816117c3602093836135ee565b810103126117d2575188611580565b8780fd5b3d91506117b6565b6040513d8a823e3d90fd5b631559b7d760e21b8752600487fd5b63c1ab6dc160e01b8652600486fd5b3461075357600036600319011261075357600754336001600160a01b039091160361186a57600780546001600160a01b0319908116909155600680543392811683179091556001600160a01b03166000805160206145e5833981519152600080a3005b63118cdaa760e01b6000523360045260246000fd5b346107535760003660031901126107535761189861422b565b600780546001600160a01b03199081169091556006805491821690556000906001600160a01b03166000805160206145e58339815191528280a3005b34610753576020366003190112610753576001600160a01b036118f561346a565b1680156119145760005260036020526020604060002054604051908152f35b6322718ad960e21b600052600060045260246000fd5b34610753576020366003190112610753576001600160a01b0361194b61346a565b166000526014602052602060ff604060002054166040519015158152f35b34610753576000366003190112610753576009546040516001600160a01b039091168152602090f35b3461075357602036600319011261075357600435600052600d6020526101406040600020611a5160018060a01b038254169160018060a01b036001820154169060018060a01b036002820154166003820154906005600484015493015493604051968752602087015260408601526060850152608084015260ff8116151560a084015260ff8160081c16151560c084015260ff8160101c16151560e084015260ff8160181c16151561010084015260ff61012084019160201c166135c5565bf35b34610753576020366003190112610753576020611a71600435613d5c565b6040516001600160a01b039091168152f35b34610753576000366003190112610753576020600a54604051908152f35b3461075357610ccb611ab23661358b565b9060405192611ac26020856135ee565b60008452613943565b60e0366003190112610753576004356001600160401b03811161075357611af6903690600401613527565b6101405260a0526024356001600160401b03811161075357611b1c903690600401613527565b90608052611b28613480565b61012052611b346134dc565b90611b3d6134eb565b611b456134fa565b611b4d613509565b90611b56613d93565b610120516001600160a01b0316156120425761014051158015612035575b612024576011548015158061200b575b611f8e575b50611b966101405161371a565b92611ba36101405161371a565b93611bb06101405161371a565b611bbc6101405161371a565b90611bc96101405161371a565b9060009384905b610140518210611d7a57505060005b848110611d55575060005b848110611ccd575050505050611c026101405161371a565b9560005b610140518110611c7357610b7c88604051602081527f2d341c7697798648bc908b4256501fbc76cd15da64aae8fbbdf825d06078c26760018060a01b0361012051169180611c576020820186613557565b0390a26001600855604051918291602083526020830190613557565b80611cbc87878787878d87611cb0611ca882611c9f611c9a60019e6101405160a05161374c565b61375c565b94608051613801565b929098613770565b5196610120519261415c565b611cc6828b613770565b5201611c06565b6001906001600160a01b03611ce28285613770565b5116611cee8287613770565b51611d06611cfc8488613770565b51913033856140d6565b80611d14575b505001611bea565b6000805160206145c58339815191529181611d3b606093878060a01b036012541684614121565b604051918252602082015260006040820152a18c80611d0c565b600190611d746001600160a01b03611d6d8386613770565b5116613fae565b01611bdf565b90948a611dbc6020611d9989611c9f611c9a826101405160a05161374c565b604051630a7951fb60e11b81526004810184905293849283926024840191613639565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561076057600091611f5d575b508015610716576001600160a01b03821660009081526014602052604090205460ff161580611f44575b80611f39575b60009015611f335750612710611e4160105483613693565b04915b8c611e658a611e5386866136c6565b9285611e5f838b613770565b52613770565b5260001960005b858110611f06575b506000198103611ec25750600193611eb993909290916001600160a01b0316611e9d8489613770565b52611ea8838a613770565b52611eb38288613770565b52613852565b955b0190611bd0565b91611f0091506001949993611ee4611ef992611ede868d613770565b51613845565b611eee858c613770565b52611ede848a613770565b9187613770565b52611ebb565b6001600160a01b0383811690611f1c838b613770565b511614611f2b57600101611e6c565b905038611e74565b91611e44565b506010541515611e29565b5033600052601360205260ff6040600020541615611e23565b906020823d8211611f86575b81611f76602093836135ee565b81010312610c005750518e611df9565b3d9150611f69565b803410611ffa576012546000918291829182916001600160a01b03165af1611fb46136d3565b5015611fe9576000805160206145c583398151915260606011546040519060008252600060208301526040820152a185611b89565b634033e4e360e01b60005260046000fd5b6383e05c6760e01b60005260046000fd5b5033600052601360205260ff6040600020541615611b84565b631ec5aa5160e01b60005260046000fd5b5083610140511415611b74565b631559b7d760e21b60005260046000fd5b346107535760203660031901126107535760043561206f613d93565b6000818152600d602052604090206001810180546001600160a01b031633036107cb576005820190815460ff8116156121d95760101c60ff166107ba576120b584613b4c565b600384018054936120c683866136c6565b948061218d575060005b87600052600c6020526120e8816040600020546136c6565b80612163575b5087600052600c6020526040600020556201000062ff0000198254161790555581612141575b837f7e54bd6094c71de17a15debc487b7c7d159855192adae118555e86f58df3217f600080a26001600855005b9154915461215b926001600160a01b039182169116614121565b818080612114565b60018060a01b03885416600052600b60205261218560406000209182546136c6565b9055886120ee565b6121ae9088600052600c6020526121a960406000205486613693565b6136a6565b87600052600c6020526040600020548111156120d0575086600052600c6020526040600020546120d0565b6367909b1560e01b60005260046000fd5b3461075357602036600319011261075357600435612206613d93565b80600052600d60205260406000209060ff600583015460081c1660001461237d576001600160a01b0361223882613d5c565b1633036107cb575b8154612254906001600160a01b0316613fae565b61225d81613c03565b91821561236c5780546040516370a0823160e01b8152306004820152916001600160a01b0390911690602083602481855afa92831561076057600093612336575b506122c46122af6123039487613693565b83600052600b602052604060002054906136a6565b948592600483016122d6838254613845565b9055600052600b6020526122f060406000209182546136c6565b90555433906001600160a01b0316614121565b6040519182527fa6c812047c4dc10f52f9e7943b1b3dfafae864d5e0d4ded081bbbde69dd6ff0d60203393a36001600855005b92506020833d602011612364575b81612351602093836135ee565b81010312610753579151916122c461229e565b3d9150612344565b63094b911b60e41b60005260046000fd5b60028201546001600160a01b031633146122405763ea8e4eb560e01b60005260046000fd5b34610753576020366003190112610753577f2dfc898b3677e9a8db0ccd358b29e83d409f092f876498f4cf135d707165f85f60206004356123e161422b565b80601155604051908152a1005b3461075357610ccb6123ff3661358b565b91613861565b60e0366003190112610753576004356001600160401b03811161075357612430903690600401613527565b61018052610100526024356001600160401b03811161075357612457903690600401613527565b60e0919091526044356001600160401b0381116107535761247c903690600401613527565b60c0526101605261248b6134dc565b6124936134eb565b9161249c6134fa565b906124a5613509565b610200526124b1613d93565b6101805115612024578061018051036120245760c051610180510361202457601154801515806128e7575b61288c575b506124ee6101805161371a565b916124fb6101805161371a565b926125086101805161371a565b6125146101805161371a565b906125216101805161371a565b9060009384905b6101805182106126c257505060005b8481106126a4575060005b84811061262657505050505061255a6101805161371a565b9460005b6101805181106125be57610b7c877f66e7e3b09cc02b8629f3bfb57a8df3ec300fcc82ac09025e4056ee07789f80e5604051806125a260c051610160518684613784565b0390a16001600855604051918291602083526020830190613557565b80612615866125d9611c9a600195610180516101005161374c565b86868b6125e9878c60e051613801565b61260989612603611c9a8260c09b969b516101605161374c565b93613770565b5196610200519661415c565b61261f828a613770565b520161255e565b6001906001600160a01b0361263b8285613770565b51166126478287613770565b51612655611cfc8488613770565b80612663575b505001612542565b6000805160206145c5833981519152918161268a606093878060a01b036012541684614121565b604051918252602082015260006040820152a18b8061265b565b6001906126bc6001600160a01b03611d6d8386613770565b01612537565b90946126d8611c9a87610180516101005161374c565b60018060a01b036126f2611c9a8960c0516101605161374c565b16156120425761270a6020611d99898c60e051613801565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156107605760009161285b575b508015610716576001600160a01b03821660009081526014602052604090205460ff161580612842575b80612837575b60009015612831575061271061278f60105483613693565b04915b8b6127a18a611e5386866136c6565b5260001960005b858110612804575b5060001981036127e257506001936127d993909290916001600160a01b0316611e9d8489613770565b955b0190612528565b916127fe91506001949993611ee4611ef992611ede868d613770565b526127db565b6001600160a01b038381169061281a838b613770565b511614612829576001016127a8565b90508f6127b0565b91612792565b506010541515612777565b5033600052601360205260ff6040600020541615612771565b906020823d8211612884575b81612874602093836135ee565b81010312610c005750518d612747565b3d9150612867565b803410611ffa576012546000918291829182916001600160a01b03165af16128b26136d3565b5015611fe9576000805160206145c583398151915260606011546040519060008252600060208301526040820152a1846124e1565b5033600052601360205260ff60406000205416156124dc565b34610753576040366003190112610753577f4f2b5251c8f306eb85fdbe1289e523181135fc91cea742686337ccf264194c4b61293a61346a565b612942613518565b9061294b61422b565b60018060a01b03811660005260136020526110f18260406000206137f0565b60e03660031901126107535761297e61346a565b6024356001600160401b0381116107535761299d9036906004016134ac565b906044356001600160401b038111610753576129bd903690600401613527565b916129c66134dc565b6129ce6134eb565b6129d66134fa565b906129df613509565b926129e8613d93565b86156120245760405198630a7951fb60e11b8a52602060048b015260208a80612a15602482018d8b613639565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa998a156107605760009a612c8d575b508915610716576001600160a01b03811660008181526014602052604090205460ff161590899082612c70575b8c60009380612c65575b612c48575b83612a98916136c6565b9c60115480151580612c2f575b80612c16575b612bae575b50612ac783612acf92612ac288613fae565b613693565b3033846140d6565b82612b60575b50612ae0915061371a565b9860005b898110612b2257610b7c8b7ffaaa088e25588dbd6e83ae9fad440a4572e7e028ad331b943999846d4609cea58c8c6125a26040519283928684613784565b808b612b59828f612b53908f8f8f8f928f928f928f92908f928f9260019f611c9a91612b4d9361374c565b9261415c565b92613770565b5201612ae4565b612b7b6060926000805160206145c583398151915294613693565b601254612b939082906001600160a01b031684614121565b604051918252602082015260006040820152a18a8881612ad5565b809193503410611ffa576012546000918291829182916001600160a01b03165af1612bd76136d3565b5015611fe957612acf612ac78c80946000805160206145c5833981519152606060115460405190888252600060208301526040820152a1925050612ab0565b5033600052601360205260ff6040600020541615612aab565b5082600052601460205260ff6040600020541615612aa5565b9250612a98612710612c5c60105486613693565b04939050612a8e565b506010541515612a89565b9150503360005260136020528860ff604060002054161591612a7f565b90996020823d602011612cb9575b81612ca8602093836135ee565b81010312610c00575051988a612a52565b3d9150612c9b565b3461075357604036600319011261075357600435612cdd613496565b6001600160a01b03811691908215612042576000828152600d60205260409020600281018054909291906001600160a01b031633036107cb5760ff60058592015460081c16612d62575b505080546001600160a01b0319168317905533907f7371e69f52f4d686cd45411aa8f42c54be6f5296342d67e6e43daf1db1bc25c6600080a4005b612d6b91613df2565b508382612d27565b60e036600319011261075357612d8761346a565b6101a0526024356001600160401b03811161075357612daa9036906004016134ac565b612db2613480565b91612dbb6134dc565b612dc36134eb565b93612dcc6134fa565b612dd4613509565b612ddc613d93565b6101a051600097906001600160a01b0316801561314f576001600160a01b0385161561314057612e0e6101a051613fae565b604051630a7951fb60e11b81526020600482018190528180612e34602482018d8d613639565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156106fc578a9161310e575b5080156130ff5789918a818c52601460205260ff60408d20541615806130e8575b8c6011549182151591826130d0575b826130b7575b50806130ac575b613094575b61308c575b50612ec4833033856140d6565b8361304a575b80612fad575b50509360406000805160206145a583398151915298999a829594612efa612f6695612f84996136c6565b6101e052600a546101c052612f116101c051613852565b600a55612f2e8682848d8d6101e051906101a0516101c051614369565b612f3c8d8d6101c05161441a565b612f506101e0516101a0516101c05161445d565b612f9b575b6101c0518152600e602052206137f0565b60405194859460018060a01b0316986101c051986101a05187613db5565b0390a36101c0516001600855604051908152602090f35b612fa86101c0518961423f565b612f55565b80341061303b578b8080808460018060a01b03601254165af1612fce6136d3565b501561302c579a869594612efa612f6695612f8499956000805160206145a58339815191529d9e9f60606040976000805160206145c583398151915292895191825288602083015289820152a19550955050949596509a9998612ed0565b634033e4e360e01b8c5260048cfd5b6383e05c6760e01b8c5260048cfd5b6012546130629085906001600160a01b031684614121565b6000805160206145c583398151915260608d604051908582528760208301526040820152a1612eca565b90508c612eb7565b94506127106130a560105486613693565b0494612eb2565b506010541515612ead565b3381526013602052604090205460ff161591508e612ea6565b8581526014602052604081205460ff16159250612ea0565b50338c52601360205260ff60408d20541615612e91565b63162908e360e11b8a5260048afd5b90506020813d602011613138575b81613129602093836135ee565b810103126106f057518a612e70565b3d915061311c565b631559b7d760e21b8952600489fd5b63c1ab6dc160e01b8952600489fd5b346107535760403660031901126107535761317761346a565b60243561318381613d5c565b3315158061323a575b8061320c575b6131f75781906001600160a01b0384811691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4600090815260046020526040902080546001600160a01b0319166001600160a01b03909216919091179055005b63a9fbf51f60e01b6000523360045260246000fd5b506001600160a01b038116600090815260056020908152604080832033845290915290205460ff1615613192565b506001600160a01b03811633141561318c565b346107535760203660031901126107535760043561326a81613d5c565b506000526004602052602060018060a01b0360406000205416604051908152f35b3461075357600036600319011261075357604051600080548060011c9060018116801561333c575b6020831081146114645782855290811561144057506001146132df57610b7c836113cd818503826135ee565b60008080527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563939250905b808210613322575090915081016020016113cd6113bd565b91926001816020925483858801015201910190929161330a565b91607f16916132b3565b346107535760203660031901126107535760043580600052600d602052613371604060002091613c03565b9060018060a01b03905416670de0b6b3a7640000820291808304670de0b6b3a76400001490151715610793576020916108eb91600052600f8352604060002054906136a6565b34610753576020366003190112610753576004359063ffffffff60e01b8216809203610753576020916380ac58cd60e01b8114908115613411575b8115613400575b5015158152f35b6301ffc9a760e01b149050836133f9565b635b5e139f60e01b811491506133f2565b60005b8381106134355750506000910152565b8181015183820152602001613425565b9060209161345e81518092818552858086019101613422565b601f01601f1916010190565b600435906001600160a01b038216820361075357565b604435906001600160a01b038216820361075357565b602435906001600160a01b038216820361075357565b9181601f84011215610753578235916001600160401b038311610753576020808501946060850201011161075357565b60643590811515820361075357565b60843590811515820361075357565b60a43590811515820361075357565b60c43590811515820361075357565b60243590811515820361075357565b9181601f84011215610753578235916001600160401b038311610753576020808501948460051b01011161075357565b906020808351928381520192019060005b8181106135755750505090565b8251845260209384019390920191600101613568565b6060906003190112610753576004356001600160a01b038116810361075357906024356001600160a01b0381168103610753579060443590565b906001821015610fd35752565b61016081019081106001600160401b03821117610fe957604052565b601f909101601f19168101906001600160401b03821190821017610fe957604052565b6001600160401b038111610fe957601f01601f191660200190565b906004821015610fd35752565b916020908281520191906000905b8082106136545750505090565b909192833581526020840135602082015260408401359060048210156107535760608161368860019460408495019061362c565b019401920190613647565b8181029291811591840414171561079357565b81156136b0570490565b634e487b7160e01b600052601260045260246000fd5b9190820391821161079357565b3d156136fe573d906136e482613611565b916136f260405193846135ee565b82523d6000602084013e565b606090565b6001600160401b038111610fe95760051b60200190565b9061372482613703565b61373160405191826135ee565b8281528092613742601f1991613703565b0190602036910137565b919081101561077d5760051b0190565b356001600160a01b03811681036107535790565b805182101561077d5760209160051b010190565b61379b602092949394604083526040830190613557565b90828183039101528281520191906000905b8082106137ba5750505090565b91929091908335906001600160a01b0382168203610753576001600160a01b0390911681526020908101930191600101906137ad565b9060ff801983541691151516179055565b919081101561077d5760051b81013590601e19813603018212156107535701803591906001600160401b038311610753576020016060830236038113610753579190565b9190820180921161079357565b60001981146107935760010190565b9091906001600160a01b0383161561392d57600092613881338483613ea7565b6001600160a01b0381169490919085151580613925575b1561391e57848152600e60205260ff6040822054161561390f57848152600d6020526040902060020180546001600160a01b0319166001600160a01b039092169190911790555b506001600160a01b03168083036138f557505050565b6364283d7b60e01b60005260045260245260445260646000fd5b6330d4e75d60e01b8152600490fd5b50506138df565b506001613898565b633250574960e11b600052600060045260246000fd5b9291613950818386613861565b813b61395d575b50505050565b604051630a85bd0160e11b81523360048201526001600160a01b03948516602482015260448101919091526080606482015292169190602090829081906139a8906084830190613445565b03816000865af18091600091613a1f575b50906139ea57506139c86136d3565b805190816139e55782633250574960e11b60005260045260246000fd5b602001fd5b6001600160e01b03191663757a42ff60e11b01613a0b575038808080613957565b633250574960e11b60005260045260246000fd5b6020813d602011613a5a575b81613a38602093836135ee565b81010312610c035751906001600160e01b031982168203610c005750386139b9565b3d9150613a2b565b805482101561077d576000526003602060002091020190600090565b602081830312610753578051906001600160401b038211610753570181601f82011215610753578051613ab081613611565b92613abe60405194856135ee565b8184526020828401011161075357613adc9160208085019101613422565b90565b9291906040840190604085528054809252606085019060005260206000209160005b818110613b1357505060209150930152565b90916003606060019286548152838701546020820152613b3e60ff600289015416604083019061362c565b019401910192919092613b01565b600052600d602052604060002060ff600582015460101c16613bfc576020613b8d916040518093819263eaa9048560e01b8352600642910160048401613adf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561076057600091613bcd575090565b90506020813d602011613bf4575b81613be8602093836135ee565b81010312610753575190565b3d9150613bdb565b6003015490565b80600052600d602052604060002060ff600582015460101c16613d3f5760405163eaa9048560e01b815260208180613c42426006870160048401613adf565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561076057600091613d0d575b506003820154808211613d05575b600081613ce6575050506000915b80600052600c6020526040600020548311613cce575b506004015480821115613cc757613adc916136c6565b5050600090565b6000908152600c602052604090205491506004613cb1565b613cff92604082876121a99452600c6020522054613693565b91613c9b565b905080613c8d565b906020823d602011613d37575b81613d27602093836135ee565b81010312610c0057505138613c7f565b3d9150613d1a565b613adc91600052600c6020526004604060002054910154906136c6565b6000818152600260205260409020546001600160a01b0316908115613d7f575090565b637e27328960e01b60005260045260246000fd5b600260085414613da4576002600855565b633ee5aeb560e01b60005260046000fd5b9491608094979693613ddc9260018060a01b0316875260a0602088015260a0870191613639565b9515156040850152151560608401521515910152565b6000828152600260205260409020546001600160a01b0316919082613e70575b6001600160a01b031680613e56575b600082815260026020526040812080546001600160a01b0319168317905583906000805160206146058339815191529080a490565b806000526003602052604060002060018154019055613e21565b600082815260046020526040902080546001600160a01b031916905582600052600360205260406000206000198154019055613e12565b6000828152600260205260409020546001600160a01b03908116931680151580613f16575b505082613e70576001600160a01b031680613e5657600082815260026020526040812080546001600160a01b0319168317905583906000805160206146058339815191529080a490565b80613f5a575b15613f275780613ecc565b905082613f435750637e27328960e01b60005260045260246000fd5b63177e802f60e01b60005260045260245260446000fd5b508084148015613f8a575b80613f1c57506000838152600460205260409020546001600160a01b03168114613f1c565b5083600052600560205260406000208160005260205260ff60406000205416613f65565b6001600160a01b03166000818152600b602052604090205480156140bc576040516370a0823160e01b8152306004820152602081602481865afa9081156107605760009161408a575b50801561406f576001820180921161079357670de0b6b3a7640000820291808304670de0b6b3a7640000149015171561079357600181018091116107935780614055575050600052600f602052670de0b6b3a7640000604060002055565b61405e916136a6565b90600052600f602052604060002055565b5050600052600f602052670de0b6b3a7640000604060002055565b906020823d6020116140b4575b816140a4602093836135ee565b81010312610c0057505138613ff7565b3d9150614097565b50600052600f602052670de0b6b3a7640000604060002055565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261411f9161411a6084836135ee565b61449c565b565b60405163a9059cbb60e01b60208201526001600160a01b03909216602483015260448083019390935291815261411f9161411a6064836135ee565b92959093969794919760018060a01b0384161561421a576001600160a01b03871697881561204257861561071657600a54998a9889988785888c8785876141a284613852565b600a556141b196600094614369565b6141bc838a8c61441a565b6141c790888b61445d565b6000805160206145a5833981519152986142049661420a575b9050600052600e6020526141f88460406000206137f0565b60405196879687613db5565b0390a390565b6142139161423f565b38896141e0565b63c1ab6dc160e01b60005260046000fd5b6006546001600160a01b0316330361186a57565b6001600160a01b0381161561392d5760009061425c828483613ea7565b6001600160a01b03811615159390929084806142ed575b156142e557808252600e60205260ff604083205416156142d6578152600d6020526040902060020180546001600160a01b0319166001600160a01b039092169190911790555b506142c057565b6339e3563760e11b600052600060045260246000fd5b6330d4e75d60e01b8252600482fd5b5050506142b9565b506001614273565b919081101561077d576060020190565b8054600160401b811015610fe95761432291600182018155613a62565b614353578135815560208201356001820155600201906040013560048110156107535760ff80198354169116179055565b634e487b7160e01b600052600060045260246000fd5b6000908152600d6020526040902080546001600160a01b039283166001600160a01b03199182161782556001820180543390831617905560028201805494909316931692909217905560038101919091556005810194939092916143cd90866137f0565b61ff00855491151560081b169061ff0019161784556000600485549301556001811015610fd35763ff0000009060ff60201b9060201b1692151560181b169064ffffff0000191617179055565b919091600052600d602052604060002090600660009201915b8181106144405750505050565b8061445761445160019385886142f5565b85614305565b01614433565b916144689082614513565b91600052600c6020528160406000205560018060a01b0316600052600b6020526144986040600020918254613845565b9055565b6000806144c59260018060a01b03169360208151910182865af16144be6136d3565b9083614543565b80519081151591826144ef575b50506144db5750565b635274afe760e01b60005260045260246000fd5b819250906020918101031261075357602001518015908115036107535738806144d2565b6001600160a01b03166000908152600f6020526040902054670de0b6b3a76400009161453f9190613693565b0490565b90614569575080511561455857805190602001fd5b630a12f52160e11b60005260046000fd5b8151158061459b575b61457a575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b1561457256fecfcd2ea84a9e988255710b3adc4919275a012aa72f68b63acf1e9f67296e134f2e4fb6077d4acf86e12bb7411fb82b2b3eaa6a49787f4b1e17b423e7ea8411698be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207735b669f2510af4e8e016c90cd472f134c9c5e0ffc51986c114f9ed556c96d264736f6c634300081b0033000000000000000000000000a878f580cca386dcee5226b7c3d455e35f62aac40000000000000000000000002e697f70369218c361cef54cbbac492d512c174500000000000000000000000090cf3e1fb9d1b35fad621649ca503ea13cf37163