1 tx
36 calls
constructor
constructor(address _router, address _proxyOutputReceiver, address _proxyAddressLock, address _resonateHelper, address _smartWalletWhitelist, address _priceProvider, address _dev_address)
functions
activated
viewfunction activated(uint256) view returns (uint256 principalId, uint256 sharesPerPacket, uint256 startingSharesPerPacket, bytes32 poolId)
consumerQueue
viewfunction consumerQueue(bytes32, uint256) view returns (uint256 packetsRemaining, uint256 depositedShares, bytes32 owner)
fnftIdToIndex
viewfunction fnftIdToIndex(uint256) view returns (uint256)
owner
viewfunction owner() view returns (address)
pools
viewfunction pools(bytes32) view returns (address asset, address vault, address adapter, uint32 lockupPeriod, uint128 rate, uint128 addInterestRate, uint256 packetSize)
providerQueue
viewfunction providerQueue(bytes32, uint256) view returns (uint256 packetsRemaining, uint256 depositedShares, bytes32 owner)
PROXY_ADDRESS_LOCK
viewfunction PROXY_ADDRESS_LOCK() view returns (address)
PROXY_OUTPUT_RECEIVER
viewfunction PROXY_OUTPUT_RECEIVER() view returns (address)
queueMarkers
viewfunction queueMarkers(bytes32) view returns (uint64 providerHead, uint64 providerTail, uint64 consumerHead, uint64 consumerTail)
REGISTRY_ADDRESS
viewfunction REGISTRY_ADDRESS() view returns (address)
residuals
viewfunction residuals(uint256) view returns (uint256)
RESONATE_HELPER
viewfunction RESONATE_HELPER() view returns (address)
vaultAdapters
viewfunction vaultAdapters(address) view returns (address)
batchClaimInterest
nonpayablefunction batchClaimInterest(uint256[][] fnftIds, address recipient)
claimInterest
nonpayablefunction claimInterest(uint256 fnftId, address recipient)
createPool
nonpayablefunction createPool(address asset, address vault, uint128 rate, uint128 additionalRate, uint32 lockupPeriod, uint256 packetSize, string poolName) returns (bytes32 poolId)
modifyExistingOrder
nonpayablefunction modifyExistingOrder(bytes32 poolId, uint112 amount, uint64 position, bool isProvider)
modifyVaultAdapter
nonpayablefunction modifyVaultAdapter(address vault, address adapter)
receiveRevestOutput
nonpayablefunction receiveRevestOutput(uint256 fnftId, address, address tokenHolder, uint256 quantity)
submitConsumer
nonpayablefunction submitConsumer(bytes32 poolId, uint256 amount, bool shouldFarm)
submitProducer
nonpayablefunction submitProducer(bytes32 poolId, uint256 amount, bool shouldFarm)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
BatchInterestClaimed
event BatchInterestClaimed(bytes32 indexed poolId, uint256[] fnftIds, address indexed claimer, uint256 amountInterest)
CapitalActivated
event CapitalActivated(bytes32 indexed poolId, uint256 numPackets, uint256 indexed principalFNFT)
DepositERC20OutputReceiver
event DepositERC20OutputReceiver(address indexed mintTo, address indexed token, uint256 amountTokens, uint256 indexed fnftId, bytes extraData)
DequeueConsumer
event DequeueConsumer(bytes32 indexed poolId, address indexed dequeuer, address indexed owner, uint64 position, (uint256 packetsRemaining, uint256 depositedShares, bytes32 owner) order)
DequeueProvider
event DequeueProvider(bytes32 indexed poolId, address indexed dequeuer, address indexed owner, uint64 position, (uint256 packetsRemaining, uint256 depositedShares, bytes32 owner) order)
EnqueueConsumer
event EnqueueConsumer(bytes32 indexed poolId, address indexed addr, uint64 indexed position, bool shouldFarm, (uint256 packetsRemaining, uint256 depositedShares, bytes32 owner) order)
EnqueueProvider
event EnqueueProvider(bytes32 indexed poolId, address indexed addr, uint64 indexed position, bool shouldFarm, (uint256 packetsRemaining, uint256 depositedShares, bytes32 owner) order)
FeeCollection
event FeeCollection(bytes32 indexed poolId, uint256 amountTokens)
FNFTCreation
event FNFTCreation(bytes32 indexed poolId, bool indexed isPrincipal, uint256 indexed fnftId, uint256 quantityFNFTs)
FNFTRedeemed
event FNFTRedeemed(bytes32 indexed poolId, bool indexed isPrincipal, uint256 indexed fnftId, uint256 quantityFNFTs)
InterestClaimed
event InterestClaimed(bytes32 indexed poolId, uint256 indexed fnftId, address indexed claimer, uint256 amount)
OracleRegistered
event OracleRegistered(address indexed vaultAsset, address indexed paymentAsset, address indexed oracleDispatch)
OrderWithdrawal
event OrderWithdrawal(bytes32 indexed poolId, uint256 amountPackets, bool fullyWithdrawn, address owner)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PoolCreated
event PoolCreated(bytes32 indexed poolId, address indexed asset, address indexed vault, address payoutAsset, uint128 rate, uint128 addInterestRate, uint32 lockupPeriod, uint256 packetSize, bool isFixedTerm, string poolName, address creator)
VaultAdapterRegistered
event VaultAdapterRegistered(address indexed underlyingVault, address indexed vaultAdapter, address indexed vaultAsset)
WithdrawERC20OutputReceiver
event WithdrawERC20OutputReceiver(address indexed caller, address indexed token, uint256 amountTokens, uint256 indexed fnftId, bytes extraData)
errors
No errors.
creation bytecode
0x6101806040523480156200001257600080fd5b5060405162005f2d38038062005f2d83398101604081905262000035916200020e565b60016000556001600160a01b038716158015906200005b57506001600160a01b03861615155b80156200007057506001600160a01b03851615155b80156200008557506001600160a01b03841615155b80156200009a57506001600160a01b03831615155b8015620000af57506001600160a01b03821615155b8015620000c457506001600160a01b03811615155b620000fd5760405162461bcd60e51b8152602060048201526005602482015264455230303360d81b604482015260640160405180910390fd5b6001600160a01b0380881660a081905287821660c05286821660e0528582166101005290821660805260408051636acf14b760e11b8152905163d59e296e916004808201926020929091908290030181865afa15801562000162573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001889190620002a3565b6001600160a01b039081166101205283811661014052821661016052600180546001600160a01b031916339081179091556040516000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350505050505050620002c8565b80516001600160a01b03811681146200020957600080fd5b919050565b600080600080600080600060e0888a0312156200022a57600080fd5b6200023588620001f1565b96506200024560208901620001f1565b95506200025560408901620001f1565b94506200026560608901620001f1565b93506200027560808901620001f1565b92506200028560a08901620001f1565b91506200029560c08901620001f1565b905092959891949750929550565b600060208284031215620002b657600080fd5b620002c182620001f1565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051615b57620003d66000396000818161116a0152818161168d0152611e2d015260006133d50152600081816120e40152818161217e015281816127e6015281816128b901528181612c740152612d8101526000818161039301528181613258015281816145fd01528181614dcd0152614e360152600081816102de015281816149d50152614b7801526000818161052701528181611fbb01528181612c2201526148f50152600081816105000152614e8a015260008181610ba0015281816119ba015281816126b901528181613049015281816138bf015281816139c601528181613d780152613ea10152615b576000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063ad790fae1161007c578063ad790fae14610402578063b5217bb414610415578063bc1fc7c3146104db578063bd3bf7f3146104fb578063c4db156314610522578063f2fde38b1461054957600080fd5b80638da5cb5b14610326578063a582a95514610339578063aa30e9301461038e578063aca1c665146103b5578063acf875ed146103c857600080fd5b8063537febb61161010a578063537febb6146102855780635b4340ba146102985780636d0880b1146102ab5780636e60289a146102d95780637f660be11461030057806380f6865f1461031357600080fd5b80630e88662814610147578063214760151461015c57806331dd23461461016f57806332fad9d8146101ef5780634adde6e614610244575b600080fd5b61015a61015536600461508a565b61055c565b005b61015a61016a36600461511a565b610d5f565b6101b761017d366004615153565b6009602052600090815260409020546001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b03958616815293851660208501529184169183019190915290911660608201526080015b60405180910390f35b6102246101fd366004615153565b60046020526000908152604090208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016101e6565b61026d61025236600461516c565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101e6565b61015a610293366004615189565b610f15565b61015a6102a6366004615189565b61144c565b6102cb6102b9366004615153565b60036020526000908152604090205481565b6040519081526020016101e6565b61026d7f000000000000000000000000000000000000000000000000000000000000000081565b61015a61030e3660046151c2565b611bbe565b6102cb6103213660046151fe565b611c5e565b60015461026d906001600160a01b031681565b6103736103473660046152db565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016101e6565b61026d7f000000000000000000000000000000000000000000000000000000000000000081565b61015a6103c33660046152fd565b611f89565b6103736103d63660046152db565b600760209081526000928352604080842090915290825290208054600182015460029092015490919083565b61015a6104103660046153ae565b612983565b610483610423366004615153565b600660205260009081526040902080546001820154600283015460038401546004909401546001600160a01b039384169492841693821692600160a01b90920463ffffffff16916001600160801b0380821692600160801b909204169087565b604080516001600160a01b0398891681529688166020880152949096169385019390935263ffffffff9190911660608401526001600160801b0390811660808401521660a082015260c081019190915260e0016101e6565b6102cb6104e9366004615153565b60056020526000908152604090205481565b61026d7f000000000000000000000000000000000000000000000000000000000000000081565b61026d7f000000000000000000000000000000000000000000000000000000000000000081565b61015a61055736600461516c565b6131c3565b6002600054036105875760405162461bcd60e51b815260040161057e906154cb565b60405180910390fd5b60026000908155816105ba5760008581526008602090815260408083206001600160401b038716845290915290206105dd565b60008581526007602090815260408083206001600160401b038716845290915290205b60408051606080820183528354825260018401546020830152600290930154918101829052925033911c1461063c5760405162461bcd60e51b8152602060048201526005602482015264455230303760d81b604482015260640161057e565b80516001600160701b03851690036108885760008581526009602052604090819020905186907f1c1f0f1b38c7da27bf073087227fec72fc265b8fd4adba0d3c67a181908e5c94906106949088906001903390615502565b60405180910390a2821561078d5780546001600160401b03908116908516036106f85780546001600160401b03168160006106ce83615542565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050610758565b80546001600160401b03600160401b909104811690851603610758578054600160401b90046001600160401b031681600861073283615568565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b60008681526007602090815260408083206001600160401b038816845290915281208181556001810182905560020155610882565b80546001600160401b03600160801b9091048116908516036107f1578054600160801b90046001600160401b03168160106107c783615542565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050610851565b80546001600160401b03600160c01b909104811690851603610851578054600160c01b90046001600160401b031681601861082b83615568565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b60008681526008602090815260408083206001600160401b0388168452909152812081815560018101829055600201555b50610953565b81156108d45760008581526007602090815260408083206001600160401b0387168452909152812080546001600160701b03871692906108c990849061558b565b909155506109159050565b60008581526008602090815260408083206001600160401b0387168452909152812080546001600160701b038716929061090f90849061558b565b90915550505b847f1c1f0f1b38c7da27bf073087227fec72fc265b8fd4adba0d3c67a181908e5c948560003360405161094a93929190615502565b60405180910390a25b6000858152600660209081526040808320815160e08101835281546001600160a01b03908116825260018301548116828601526002830154908116828501819052600160a01b90910463ffffffff16606083015260038301546001600160801b038082166080850152600160801b9091041660a083015260049283015460c083015283516338d52e0f60e01b8152935191959490936338d52e0f9381810193918290030181865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3091906155a2565b9050600084610a565760c0830151610a51906001600160701b0389166155bf565b610a9a565b670de0b6b3a764000083608001516001600160801b03168460c00151896001600160701b0316610a8691906155bf565b610a9091906155bf565b610a9a91906155f4565b835160208601519192506001600160a01b03848116911614159015801590610ac85750851580610ac8575080155b15610beb576000610ad88a61323f565b6001600160a01b0316630d17358d670de0b6b3a76400008b6001600160701b03168960200151610b0891906155bf565b610b1291906155f4565b3088604001516040518463ffffffff1660e01b8152600401610b3693929190615608565b6020604051808303816000875af1158015610b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b799190615627565b9050600083821115610bc557610b8f848361558b565b9050610bc56001600160a01b0386167f0000000000000000000000000000000000000000000000000000000000000000836132d4565b610be433610bd3838561558b565b6001600160a01b03881691906132d4565b5050610d4f565b808015610bf55750855b15610cdc576000670de0b6b3a76400008660200151670de0b6b3a76400008760c0015188608001516001600160801b0316610c3091906155bf565b610c3a91906155f4565b610c4491906155bf565b610c4e91906155f4565b9050610c598a61323f565b6001600160a01b0316637a5c1e5a610c7a6001600160701b038c16846155bf565b87516040516001600160e01b031960e085901b168152610ca4929160009133908390600401615640565b600060405180830381600087803b158015610cbe57600080fd5b505af1158015610cd2573d6000803e3d6000fd5b5050505050610d4f565b610ce58961323f565b8451604051633d2e0f2d60e11b81526001600160a01b039290921691637a5c1e5a91610d1c91869160009133908390600401615640565b600060405180830381600087803b158015610d3657600080fd5b505af1158015610d4a573d6000803e3d6000fd5b505050505b5050600160005550505050505050565b6001546001600160a01b03163314610d895760405162461bcd60e51b815260040161057e9061566e565b6001600160a01b03828116600090815260026020526040902080546001600160a01b031916918316918217905515610ed557610e2681826001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906155a2565b61332f565b806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8891906155a2565b6001600160a01b0316816001600160a01b0316836001600160a01b03167f062751405a8b3a6883b0743f59635dafaa5248173c888d03abb29b8c2b595e8660405160405180910390a45050565b6040516000906001600160a01b0383811691908516907f062751405a8b3a6883b0743f59635dafaa5248173c888d03abb29b8c2b595e86908490a45b5050565b600260005403610f375760405162461bcd60e51b815260040161057e906154cb565b6002600081815584815260066020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116938201939093529381015491821692840192909252600160a01b900463ffffffff16606083015260038101546001600160801b038082166080850152600160801b9091041660a08301526004015460c08201526103e88311610fe05760405162461bcd60e51b815260040161057e9061568d565b610fe86133a6565b6110045760405162461bcd60e51b815260040161057e906156ac565b604080516060810182526000808252602082018190529181018290529061102b868261344f565b159050600080846040015190506000806000839050806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561107e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a291906155a2565b945087600001516001600160a01b0316856001600160a01b03160361114d57886110cd5760006110d0565b60015b60ff169150670de0b6b3a764000088608001516001600160801b03168960c001516110fb91906155bf565b61110591906155f4565b92506005611113848c6156cb565b106111485760405162461bcd60e51b815260206004820152600560248201526422a918181b60d91b604482015260640161057e565b611269565b87516040516310dd87e960e01b815260009a506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916310dd87e99161119f9189916004016156df565b602060405180830381865afa1580156111bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e09190615627565b9150670de0b6b3a764000082670de0b6b3a76400008a60c001518b608001516001600160801b031661121291906155bf565b61121c91906155f4565b61122691906155bf565b61123091906155f4565b92508261123d818c6155f4565b61124791906155bf565b995060008a116112695760405162461bcd60e51b815260040161057e906156f9565b6040518060600160405280848c61128091906155f4565b6001600160701b03168152602081018490526040013360601b6001600160601b03191690529650508415611414575b8480156112bc5750855115155b156114145760006112ce8b60006134f4565b600281015490915060601c6112ed576112e88b6000613560565b611400565b8651815460009190808210156113035781611305565b805b925050506113a560405180610120016040528084604051806060016040529081600082015481526020016001820154815260200160028201548152505081526020018a81526020016001151581526020018b600001516001600160a01b0316896001600160a01b03161415151581526020018381526020018a6020015181526020018b8152602001876001600160a01b031681526020018e81525061375a565b50808260000160008282546113ba919061558b565b90915550508751819089906113d090839061558b565b9052506113dd84826155bf565b6113e7908c61558b565b8254909b506000036113fe576113fe8c6000613560565b505b61140b8b600061344f565b159550506112af565b841580156114225750855115155b1561143b5761143b8a60018a898d8c6000015189613fa2565b505060016000555050505050505050565b60026000540361146e5760405162461bcd60e51b815260040161057e906154cb565b6002600081815584815260066020908152604091829020825160e08101845281546001600160a01b03908116825260018301548116938201939093529381015491821692840192909252600160a01b900463ffffffff16606083015260038101546001600160801b038082166080850152600160801b9091041660a08301526004015460c08201526103e883116115175760405162461bcd60e51b815260040161057e9061568d565b60058160c001518461152991906156cb565b111561155f5760405162461bcd60e51b8152602060048201526005602482015264455230303560d81b604482015260640161057e565b6115676133a6565b6115835760405162461bcd60e51b815260040161057e906156ac565b600061159085600161344f565b159050600080836040015190506000819050806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160491906155a2565b925050600060405180606001604052808660c001518961162491906155f4565b8152600060208201526040013360601b6001600160601b031916905290508315611b8c5760006116538961323f565b90506000846001600160a01b031687600001516001600160a01b0316146117065786516040516310dd87e960e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916310dd87e9916116c29189916004016156df565b602060405180830381865afa1580156116df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117039190615627565b90505b8580156117135750825115155b15611b895760006117258b60016134f4565b9050856001600160a01b031688600001516001600160a01b031614611a44576001810154828114611a425760008382846000015461176391906155bf565b61176d91906155f4565b905060008187600001511061187a578285111561180857670de0b6b3a764000061179784846155bf565b85546117a49088906155bf565b6117ae919061558b565b670de0b6b3a76400008d60c001518e608001516001600160801b03166117d491906155bf565b6117de91906155f4565b6117e891906155bf565b6117f291906155f4565b875190915061180190826155f4565b905061187a565b8354670de0b6b3a76400009061181f9087906155bf565b61182985856155bf565b611833919061558b565b670de0b6b3a76400008d60c001518e608001516001600160801b031661185991906155bf565b61186391906155f4565b61186d91906155bf565b61187791906155f4565b90505b8160000361197e57670de0b6b3a764000083670de0b6b3a764000086600001548e60c001518f608001516001600160801b03166118b791906155bf565b6118c191906155bf565b6118cb91906155f4565b6118d591906155bf565b6118df91906155f4565b905060006118f1856002015460601c90565b90506118fe8f6001613560565b8b51604051633d2e0f2d60e11b81526001600160a01b03891691637a5c1e5a916119349186916000919087908390600401615640565b600060405180830381600087803b15801561194e57600080fd5b505af1158015611962573d6000803e3d6000fd5b505050506119718f600161344f565b159a505050505050611706565b600184018590558184558015611a3f578a51604051633d2e0f2d60e11b81526001600160a01b03881691637a5c1e5a916119e4918591600091907f0000000000000000000000000000000000000000000000000000000000000000908390600401615640565b600060405180830381600087803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b505050508d600080516020615b2b83398151915282604051611a3691815260200190565b60405180910390a25b50505b505b600281015460601c611a6057611a5b8b6001613560565b611b75565b835181546000919081811015611a765780611a78565b815b92505050611b146040518061012001604052808781526020018460405180606001604052908160008201548152602001600182015481526020016002820154815250508152602001600015158152602001896001600160a01b03168c600001516001600160a01b03161415151581526020018381526020018581526020018b8152602001886001600160a01b031681526020018e81525061375a565b508085600001818151611b27919061558b565b905250815481908390600090611b3e90849061558b565b909155505060c0890151611b5290826155bf565b611b5c908c61558b565b8254909b50600003611b7357611b738c6001613560565b505b611b808b600161344f565b15965050611706565b50505b83158015611b9a5750805115155b15611baf57611baf88600088848b8888613fa2565b50506001600055505050505050565b604080516001808252818301909252600091816020015b6060815260200190600190039081611bd557505060408051600180825281830190925291925060009190602080830190803683370190505090508381600081518110611c2357611c23615718565b6020026020010181815250508082600081518110611c4357611c43615718565b6020026020010181905250611c588284612983565b50505050565b6000600260005403611c825760405162461bcd60e51b815260040161057e906154cb565b600260008181556001600160a01b03808b168252602092909252604081205490911680611cc15760405162461bcd60e51b815260040161057e9061572e565b6001600160a01b038b16611ce75760405162461bcd60e51b815260040161057e9061572e565b60008611611d1f5760405162461bcd60e51b8152602060048201526005602482015264455230323360d81b604482015260640161057e565b6201518063ffffffff881610801590611d3f57506001600160801b038816155b80611d6257506000886001600160801b0316118015611d62575063ffffffff8716155b611d965760405162461bcd60e51b815260206004820152600560248201526408aa46060760db1b604482015260640161057e565b806001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df891906155a2565b915050806001600160a01b03168a6001600160a01b03161480611ea557506040516376d79e1960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063edaf3c3290611e649084908e906004016156df565b602060405180830381865afa158015611e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea5919061574d565b611ed95760405162461bcd60e51b8152602060048201526005602482015264455230333360d81b604482015260640161057e565b611ee78a8a8a8a8a8a614219565b9150611ef28261323f565b50611efc826145e4565b50886001600160a01b03168a6001600160a01b0316837ffc75603344878adc58051699c255fb75c8be5b283ed95c4ab643e0d74f84f2b5848c8c8c8c60008f63ffffffff16118015611f5757508f6001600160801b03166000145b8d8d33604051611f6f9998979695949392919061576a565b60405180910390a450600160005598975050505050505050565b600260005403611fab5760405162461bcd60e51b815260040161057e906154cb565b6002600055336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120105760405162461bcd60e51b8152602060048201526005602482015264455230313760d81b604482015260640161057e565b60008481526003602081815260408084205484526004808352818520825160808082018552825482526001808401548388015260028085015484880152938801546060808501829052908a5260068852868a20875160e08101895281546001600160a01b03908116825293820154841699810199909952948501548083168989015263ffffffff600160a01b9091041690880152968301546001600160801b0380821692880192909252600160801b90041660a08601529082015460c08501528051925163f77ee79d60e01b8152909593947f0000000000000000000000000000000000000000000000000000000000000000169263f77ee79d92612119920190815260200190565b602060405180830381865afa158015612136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215a9190615627565b835190915087036124665760008260c001518561217791906155bf565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f77ee79d876000015160016121bc91906157f4565b6040518263ffffffff1660e01b81526004016121da91815260200190565b602060405180830381865afa1580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190615627565b119050600084604001519050600061223687606001516145e4565b6001600160a01b03166324cdab9d838b87670de0b6b3a76400008d8d6020015161226091906155bf565b61226a91906155f4565b6040516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909216602484015260448301526064820152851515608482015260a4016020604051808303816000875af11580156122cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ef9190615627565b9050801561232a5780600560006123078e60016157f4565b8152602001908152602001600020600082825461232491906157f4565b90915550505b60608701516040518981528c916001917fc404941c85ccc20e3d7111964b0ad57fd6c210492a7555e0b9dad7a7b845a72d9060200160405180910390a4886001600160a01b03168b88606001517fe6f1b034295c49944db5cd931787c3bfcd5545565de82885383997d10c9b661e846040516123a891815260200190565b60405180910390a48a826001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241391906155a2565b6001600160a01b03168a6001600160a01b03167ff2b6e7f64080f438239b56473f2cd92b33165c88688fd898e1d99082bd0eb95487604051612455919061580c565b60405180910390a4505050506127af565b8360011461249e5760405162461bcd60e51b8152602060048201526005602482015264455230313360d81b604482015260640161057e565b600087815260056020526040812054819080156124c55760008a8152600560205260408120555b60008560c00151856124d791906155bf565b90506000670de0b6b3a76400008689602001516124f491906155bf565b6124fe91906155f4565b905061250d88606001516145e4565b604080890151905163119f15f960e31b81526001600160a01b039182166004820152306024820152604481018590526064810184905260848101869052911690638cf8afc89060a40160408051808303816000875af1158015612574573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125989190615830565b955093505084159150612625905057826125ba670de0b6b3a7640000846155bf565b6125c491906155f4565b915084602001518211612605578185602001516125e1919061558b565b60008a81526003602090815260408083205483526004909152902060010155612625565b600089815260036020908152604080832054835260049091528120600101555b600060646126346005846155bf565b61263e91906155f4565b9050600085604001516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612684573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a891906155a2565b90506126de6001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000846132d4565b6126fd896126ec848661558b565b6001600160a01b03841691906132d4565b6060870151604051600181528c916000917fc404941c85ccc20e3d7111964b0ad57fd6c210492a7555e0b9dad7a7b845a72d9060200160405180910390a46060870151604051838152600080516020615b2b8339815191529060200160405180910390a2886001600160a01b03168b88606001517fe6f1b034295c49944db5cd931787c3bfcd5545565de82885383997d10c9b661e866040516127a291815260200190565b60405180910390a4505050505b8251600090815260036020526040812054908290036127da5783516000908152600360205260408120555b83516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f77ee79d906128189060016157f4565b6040518263ffffffff1660e01b815260040161283691815260200190565b602060405180830381865afa158015612853573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128779190615627565b6000036128a45783516003906000906128919060016157f4565b8152602001908152602001600020600090555b8115801561294c575083516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f77ee79d906128eb9060016157f4565b6040518263ffffffff1660e01b815260040161290991815260200190565b602060405180830381865afa158015612926573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294a9190615627565b155b15611baf57600081815260046020526040812081815560018101829055600281018290556003015550506001600055505050505050565b6002600054036129a55760405162461bcd60e51b815260040161057e906154cb565b60026000558151806129c95760405162461bcd60e51b815260040161057e906156f9565b60005b818110156131b85760008482815181106129e8576129e8615718565b602002602001015190506000815111612a135760405162461bcd60e51b815260040161057e906156f9565b6000600460006003600085600081518110612a3057612a30615718565b6020908102919091018101518252818101929092526040908101600090812054845283830194909452918201832060039081015480855260068352838520845160e08101865281546001600160a01b03908116825260018301548116828701526002830154908116828801819052600160a01b90910463ffffffff166060830152938201546001600160801b038082166080840152600160801b9091041660a082015260049182015460c082015285516338d52e0f60e01b81529551929750959294929385936338d52e0f938184019390918290030181865afa158015612b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3f91906155a2565b8551909150600090815b81811015612f7257600060046000600360008c8681518110612b6d57612b6d615718565b60200260200101518152602001908152602001600020548152602001908152602001600020604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382015481525050905087816060015114612c025760405162461bcd60e51b8152602060048201526005602482015264455230333960d81b604482015260640161057e565b6000898381518110612c1657612c16615718565b602002602001015190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316336001600160a01b03161480612cee575060405162ac13a160e61b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632b04e84090612cab9033908690600401615854565b602060405180830381865afa158015612cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cec9190615627565b115b612d225760405162461bcd60e51b8152602060048201526005602482015264045523031360dc1b604482015260640161057e565b8151612d2f9060016157f4565b8114612d655760405162461bcd60e51b8152602060048201526005602482015264455230303960d81b604482015260640161057e565b815160405163f77ee79d60e01b81526000916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163f77ee79d91612db89160040190815260200190565b602060405180830381865afa158015612dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df99190615627565b905060008111612e335760405162461bcd60e51b815260206004820152600560248201526422a918189b60d91b604482015260640161057e565b6000818460200151612e4591906155bf565b90506000670de0b6b3a76400008a6001600160a01b0316630a28a477858e60c00151612e7191906155bf565b6040518263ffffffff1660e01b8152600401612e8f91815260200190565b602060405180830381865afa158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed09190615627565b612eda91906155bf565b9050808211612f135760405162461bcd60e51b8152602060048201526005602482015264045523034360dc1b604482015260640161057e565b6000612f1f828461558b565b9050612f2b818a6157f4565b9850612f3784836155f4565b600095865260036020908152604080882054885260049091529095206001019490945550612f6b935084925061586d915050565b9050612b49565b506000612f7e876145e4565b6001600160a01b03166351ffb74a876040015130670de0b6b3a764000087612fa691906155f4565b6040518463ffffffff1660e01b8152600401612fc493929190615886565b6020604051808303816000875af1158015612fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130079190615627565b9050600060646130186005846155bf565b61302291906155f4565b60405163a9059cbb60e01b81529091506001600160a01b0386169063a9059cbb90613073907f0000000000000000000000000000000000000000000000000000000000000000908590600401615854565b6020604051808303816000875af1158015613092573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130b6919061574d565b506001600160a01b03851663a9059cbb8d6130d1848661558b565b6040518363ffffffff1660e01b81526004016130ee929190615854565b6020604051808303816000875af115801561310d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613131919061574d565b5087600080516020615b2b8339815191528260405161315291815260200190565b60405180910390a28b6001600160a01b0316887f3134fce35f35f2822239b2965f832942dc96793933339e92831f94a8dcb7a6798b856040516131969291906158e5565b60405180910390a3505050505050505050806131b19061586d565b90506129cc565b505060016000555050565b6001546001600160a01b031633146131ed5760405162461bcd60e51b815260040161057e9061566e565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051632eab156760e21b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063baac559c906024015b6020604051808303816000875af11580156132aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ce91906155a2565b92915050565b61332a8363a9059cbb60e01b84846040516024016132f3929190615854565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614634565b505050565b6001600160a01b038083166000908152600a602090815260408083209385168352929052205460ff16610f11576133726001600160a01b03821683600019614706565b6001600160a01b038083166000908152600a60209081526040808320938516835292905220805460ff191660011790555050565b600033803b90811590321480156133ba5750805b806134485750604051631846d2f560e31b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c23697a890602401602060405180830381865afa158015613424573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613448919061574d565b9250505090565b6000828152600960209081526040808320815160808101835290546001600160401b038082168352600160401b8204811694830194909452600160801b8104841692820192909252600160c01b9091049091166060820152826134ce5780606001516001600160401b031681604001516001600160401b0316146134ec565b80602001516001600160401b031681600001516001600160401b0316145b949350505050565b6000811561352b5750600082815260076020908152604080832060098352818420546001600160401b0316845290915290206132ce565b505060009081526008602090815260408083206009835281842054600160801b90046001600160401b03168452909152902090565b6000828152600960209081526040808320600790925282209091908184613598578354600160801b90046001600160401b03166135a4565b83546001600160401b03165b6001600160401b03168152602001908152602001600020604051806060016040529081600082015481526020016001820154815260200160028201548152505090506000831561369957508154600085815260076020908152604080832067ffffffffffffffff19851660016001600160401b03968716818101909716919091178855858552925280832083815591820183905560029091019190915582015160601c6001600160a01b0316336001600160a01b0316867f86e5cb17b0ba1bee4c9cca987b80496efcb382e0959f3ae820067e694caeb2a3848660405161368c929190615907565b60405180910390a4613753565b508154600085815260086020908152604080832060016001600160401b03600160801b80880482168381019092160267ffffffffffffffff60801b1990971696909617885585855292528083208381559182018390556002909101919091558201516137059060601c90565b6001600160a01b0316336001600160a01b0316867f35648c84f0c9069a898adc4850c1d65547c943349fce1b1246d932ea9f4c6a51848660405161374a929190615907565b60405180910390a45b5050505050565b6000808260e0015190506000816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c891906155a2565b905060008460c0015160c0015185608001516137e491906155bf565b90506000856060015161382657670de0b6b3a76400008660c00151608001516001600160801b03168361381791906155bf565b61382191906155f4565b613878565b670de0b6b3a76400008660a00151670de0b6b3a76400008860c00151608001516001600160801b03168561385a91906155bf565b61386491906155f4565b61386e91906155bf565b61387891906155f4565b9050856040015115613b7b5785516040015160601c6000606461389c6005856155bf565b6138a691906155f4565b60c0890151519091506138e4906001600160a01b0316337f000000000000000000000000000000000000000000000000000000000000000084614809565b61390a33836138f3848761558b565b60c08c0151516001600160a01b0316929190614809565b610100880151604051828152600080516020615b2b8339815191529060200160405180910390a26139578860800151896101000151846139528c602001516040015160601c90565b61482a565b88516020015190975060009250159050613a875760008061397c896101000151614db4565b6001600160a01b03166371ec440386670de0b6b3a76400008c60000151602001518d608001516139ac91906155bf565b6139b691906155f4565b6139c48d6101000151614e1d565b7f00000000000000000000000000000000000000000000000000000000000000008e60e001516040518663ffffffff1660e01b8152600401613a0a959493929190615640565b60408051808303816000875af1158015613a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a4c9190615830565b91509150819250886101000151600080516020615b2b83398151915282604051613a7891815260200190565b60405180910390a25050613b1b565b613a95876101000151614db4565b6001600160a01b031663c15c00e6848960e00151613ab78b6101000151614e1d565b6040518463ffffffff1660e01b8152600401613ad593929190615608565b6020604051808303816000875af1158015613af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b189190615627565b90505b6080870151613b32670de0b6b3a7640000836155bf565b613b3c91906155f4565b60008781526004602052604090206001810182905560c089015160a00151919250906001600160801b031615613b7457600281018290555b5050613eff565b6000613b8f87602001516040015160601c90565b9050613ba66001600160a01b038516333086614809565b613bcc8760800151886101000151613bc68a600001516040015160601c90565b8461482a565b9550600060046000888152602001908152602001600020905060008860800151670de0b6b3a7640000886001600160a01b0316636e553f6588613c138e6101000151614e1d565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044016020604051808303816000875af1158015613c5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c839190615627565b613c8d91906155bf565b613c9791906155f4565b6001830181905560c08a015160a001519091506001600160801b031615613cc057600282018190555b50506000876020015160200151118015613cdc57508660600151155b15613e46576000613cf1886101000151614db4565b6001600160a01b0316634426269b84670de0b6b3a76400008b60200151602001518c60800151613d2191906155bf565b613d2b91906155f4565b6064613d386005896155bf565b613d4291906155f4565b60e08d8101516040519186901b6001600160e01b03191682526004820194909452602481019290925260448201523360648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116608483015290911660a482015260c4016020604051808303816000875af1158015613dd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613df59190615627565b610100890151909150600080516020615b2b833981519152826064613e1b6005886155bf565b613e2591906155f4565b613e2f91906157f4565b60405190815260200160405180910390a250613efd565b60006064613e556005856155bf565b613e5f91906155f4565b9050613e6f886101000151614db4565b60c089015151604051633d2e0f2d60e11b81526001600160a01b039290921691637a5c1e5a91613ec9918791869133907f000000000000000000000000000000000000000000000000000000000000000090600401615640565b600060405180830381600087803b158015613ee357600080fd5b505af1158015613ef7573d6000803e3d6000fd5b50505050505b505b848661010001517ffeb6f538855913739bacca40652cdb31cf49b44b9d417a17bf6440435b9a88ea8860800151604051613f3b91815260200190565b60405180910390a385516040015185906001600160a01b0385169060601c6001600160a01b03167f5bed1f834b92cc21cec09497afa47d36952b8a037e988eca6e9ecffeb497b22785604051613f91919061580c565b60405180910390a450505050919050565b841561408d57613fbd6001600160a01b038316333086614809565b8351670de0b6b3a76400006001600160a01b038316636e553f6586613fe18c614db4565b6040516001600160e01b031960e085901b16815260048101929092526001600160a01b031660248201526044016020604051808303816000875af115801561402d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140519190615627565b61405b91906155bf565b61406591906155f4565b602085018190526140885760405162461bcd60e51b815260040161057e906156f9565b6140ac565b6140ac3361409a89614db4565b6001600160a01b038516919086614809565b600087815260096020526040812090871561416c57508054600089815260076020908152604080832060016001600160401b03600160401b80880482168381019092160267ffffffffffffffff60401b19909716969096178755858552908352928190208951815591890151928201929092558188015160029091015551819033908b907fa448f9476a6ec741ce0aaa5d8c90e7d1deb1a899d01d27a7b3183661644dbc809061415f908c908c90615938565b60405180910390a461420e565b508054600089815260086020908152604080832060016001600160401b03600160c01b8088048216838101909216026001600160c01b03909716969096178755858552908352928190208951815591890151928201929092558188015160029091015551819033908b907f597c90d8289005e8053a51a5e6f00e0c92ee6c32b4564eea12cd09b04a85ee4c90614205908c908c90615938565b60405180910390a45b505050505050505050565b6001600160a01b0385811660009081526002602090815260408083205481516001600160601b031960608d811b8216838701528c811b8216603484015283901b1660488201526001600160801b031960808b811b8216605c8401528a811b909116606c8301526001600160e01b031960e08a901b16607c8301528082018890528351808303909101815260a09091019092528151919092012091921690600081815260066020526040902060020154909250600160a01b900463ffffffff161580156143045750600082815260066020526040902060030154600160801b90046001600160801b0316155b6143385760405162461bcd60e51b815260206004820152600560248201526422a918181960d91b604482015260640161057e565b604051806080016040528060016001600160401b0316815260200160016001600160401b0316815260200160016001600160401b0316815260200160016001600160401b03168152506009600084815260200190815260200160002060008201518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555060208201518160000160086101000a8154816001600160401b0302191690836001600160401b0316021790555060408201518160000160106101000a8154816001600160401b0302191690836001600160401b0316021790555060608201518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055509050506040518060e00160405280896001600160a01b03168152602001886001600160a01b03168152602001826001600160a01b031681526020018563ffffffff168152602001876001600160801b03168152602001866001600160801b03168152602001848152506006600084815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160020160146101000a81548163ffffffff021916908363ffffffff16021790555060808201518160030160006101000a8154816001600160801b0302191690836001600160801b0316021790555060a08201518160030160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c08201518160040155905050509695505050505050565b6040516311593d0160e31b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ac9e8089060240161328b565b6000614689826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614e6d9092919063ffffffff16565b80519091501561332a57808060200190518101906146a7919061574d565b61332a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161057e565b80158061477f5750604051636eb1769f60e11b81526001600160a01b0384169063dd62ed3e9061473c90309086906004016156df565b602060405180830381865afa158015614759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061477d9190615627565b155b6147ea5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161057e565b61332a8363095ea7b360e01b84846040516024016132f3929190615854565b611c58846323b872dd60e01b8585856040516024016132f393929190615886565b6000838152600660209081526040808320815160e0808201845282546001600160a01b039081168352600180850154821684880152600285015480831685880152600160a01b900463ffffffff1660608086019190915260038601546001600160801b03808216608080890191909152600160801b9092041660a08088019190915260049097015460c080880191909152885161012081018a528b8152808a018c90529283018b90529082018a905295810189905294850188905291840187905261010084018790527f00000000000000000000000000000000000000000000000000000000000000001683860152835181815280850190945290939192859290919082810190803683375050604080516001808252818301909252929350600092915060208083019080368337019050509050888160008151811061497257614972615718565b602002602001018181525050868260008151811061499257614992615718565b6001600160a01b039092166020928302919091019091015260a08401516001600160801b031615614a60576149c5614e86565b6001600160a01b03166302e236bc7f00000000000000000000000000000000000000000000000000000000000000008484876040518563ffffffff1660e01b8152600401614a169493929190615a10565b6020604051808303816000875af1158015614a35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a599190615627565b9450614af4565b614a68614e86565b6001600160a01b0316635a7c08f0856060015163ffffffff1642614a8c91906157f4565b8484876040518563ffffffff1660e01b8152600401614aae9493929190615a71565b6020604051808303816000875af1158015614acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614af19190615627565b94505b600181600081518110614b0957614b09615718565b6020026020010181815250508582600081518110614b2957614b29615718565b60200260200101906001600160a01b031690816001600160a01b03168152505060008460a001516001600160801b0316600014614c0357614b68614e86565b6001600160a01b03166302e236bc7f00000000000000000000000000000000000000000000000000000000000000008585886040518563ffffffff1660e01b8152600401614bb99493929190615a10565b6020604051808303816000875af1158015614bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bfc9190615627565b9050614c97565b614c0b614e86565b6001600160a01b0316635a7c08f0866060015163ffffffff1642614c2f91906157f4565b8585886040518563ffffffff1660e01b8152600401614c519493929190615a71565b6020604051808303816000875af1158015614c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c949190615627565b90505b604051806080016040528087815260200160018152602001600081526020018a815250600460008881526020019081526020016000206000820151816000015560208201518160010155604082015181600201556060820151816003015590505085600360008881526020019081526020016000208190555085600360008381526020019081526020016000208190555085600115158a7fd955721412694b0cc7fd96d7a467f33fd51553f6dfc07a1fda4c5be57853c5508d604051614d5f91815260200190565b60405180910390a480600015158a7fd955721412694b0cc7fd96d7a467f33fd51553f6dfc07a1fda4c5be57853c5506001604051614d9f91815260200190565b60405180910390a45050505050949350505050565b60405163a672ae0160e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a672ae01906024015b602060405180830381865afa1580156132aa573d6000803e3d6000fd5b60405163323c43e760e21b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c8f10f9c90602401614e00565b6060614e7c8484600085614f0f565b90505b9392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f97e7d746040518163ffffffff1660e01b8152600401602060405180830381865afa158015614ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614f0a91906155a2565b905090565b606082471015614f705760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161057e565b6001600160a01b0385163b614fc75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161057e565b600080866001600160a01b03168587604051614fe39190615adb565b60006040518083038185875af1925050503d8060008114615020576040519150601f19603f3d011682016040523d82523d6000602084013e615025565b606091505b5091509150615035828286615040565b979650505050505050565b6060831561504f575081614e7f565b82511561505f5782518084602001fd5b8160405162461bcd60e51b815260040161057e9190615af7565b801515811461508757600080fd5b50565b600080600080608085870312156150a057600080fd5b8435935060208501356001600160701b03811681146150be57600080fd5b925060408501356001600160401b03811681146150da57600080fd5b915060608501356150ea81615079565b939692955090935050565b6001600160a01b038116811461508757600080fd5b8035615115816150f5565b919050565b6000806040838503121561512d57600080fd5b8235615138816150f5565b91506020830135615148816150f5565b809150509250929050565b60006020828403121561516557600080fd5b5035919050565b60006020828403121561517e57600080fd5b8135614e7f816150f5565b60008060006060848603121561519e57600080fd5b833592506020840135915060408401356151b781615079565b809150509250925092565b600080604083850312156151d557600080fd5b823591506020830135615148816150f5565b80356001600160801b038116811461511557600080fd5b60008060008060008060008060e0898b03121561521a57600080fd5b8835615225816150f5565b97506020890135615235816150f5565b965061524360408a016151e7565b955061525160608a016151e7565b9450608089013563ffffffff8116811461526a57600080fd5b935060a0890135925060c08901356001600160401b038082111561528d57600080fd5b818b0191508b601f8301126152a157600080fd5b8135818111156152b057600080fd5b8c60208285010111156152c257600080fd5b6020830194508093505050509295985092959890939650565b600080604083850312156152ee57600080fd5b50508035926020909101359150565b6000806000806080858703121561531357600080fd5b843593506020850135615325816150f5565b92506040850135615335816150f5565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561538357615383615345565b604052919050565b60006001600160401b038211156153a4576153a4615345565b5060051b60200190565b60008060408084860312156153c257600080fd5b83356001600160401b03808211156153d957600080fd5b818601915086601f8301126153ed57600080fd5b813560206154026153fd8361538b565b61535b565b82815260059290921b8401810191818101908a84111561542157600080fd5b8286015b848110156154ad5780358681111561543d5760008081fd5b8701603f81018d1361544f5760008081fd5b8481013561545f6153fd8261538b565b81815260059190911b82018a0190868101908f83111561547f5760008081fd5b928b01925b8284101561549d57833582529287019290870190615484565b8652505050918301918301615425565b5097506154bd905088820161510a565b955050505050509250929050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160701b0393909316835290151560208301526001600160a01b0316604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681810361555e5761555e61552c565b6001019392505050565b60006001600160401b038216806155815761558161552c565b6000190192915050565b60008282101561559d5761559d61552c565b500390565b6000602082840312156155b457600080fd5b8151614e7f816150f5565b60008160001904831182151516156155d9576155d961552c565b500290565b634e487b7160e01b600052601260045260246000fd5b600082615603576156036155de565b500490565b9283526001600160a01b03918216602084015216604082015260600190565b60006020828403121561563957600080fd5b5051919050565b94855260208501939093526001600160a01b0391821660408501528116606084015216608082015260a00190565b60208082526005908201526411548c0c8d60da1b604082015260600190565b602080825260059082015264455230343360d81b604082015260600190565b60208082526005908201526411548c0ccd60da1b604082015260600190565b6000826156da576156da6155de565b500690565b6001600160a01b0392831681529116602082015260400190565b602080825260059082015264455230303360d81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b602080825260059082015264455230303160d81b604082015260600190565b60006020828403121561575f57600080fd5b8151614e7f81615079565b6001600160a01b038a1681526001600160801b0389811660208301528816604082015263ffffffff871660608201526080810186905284151560a082015261010060c082018190528101839052600061012084868285013760008584018201526001600160a01b03841660e0840152601f19601f86011683010190509a9950505050505050505050565b600082198211156158075761580761552c565b500190565b9081526040602082018190526003908201526203078360ec1b606082015260800190565b6000806040838503121561584357600080fd5b505080516020909101519092909150565b6001600160a01b03929092168252602082015260400190565b60006001820161587f5761587f61552c565b5060010190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600081518084526020808501945080840160005b838110156158da578151875295820195908201906001016158be565b509495945050505050565b6040815260006158f860408301856158aa565b90508260208301529392505050565b6001600160401b038316815260808101614e7f60208301848051825260208082015190830152604090810151910152565b821515815260808101614e7f60208301848051825260208082015190830152604090810151910152565b600081518084526020808501945080840160005b838110156158da5781516001600160a01b031687529582019590820190600101615976565b60018060a01b038082511683528060208301511660208401525060408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151151560c083015260e08101516159fc60e084018215159052565b506101008181015180151584830152611c58565b6001600160a01b03851681526101a06020820181905260009082018190526101c060408301819052615a4481840187615962565b90508281036060840152615a5881866158aa565b915050615a68608083018461599b565b95945050505050565b6000610180868352806020840152615a8b81840187615962565b90508281036040840152615a9f81866158aa565b915050615a68606083018461599b565b60005b83811015615aca578181015183820152602001615ab2565b83811115611c585750506000910152565b60008251615aed818460208701615aaf565b9190910192915050565b6020815260008251806020840152615b16816040850160208701615aaf565b601f01601f1916919091016040019291505056fede603541e7c7eacf6c7a107db6622218c199b0018b586772247fd9dd1909aa40a164736f6c634300080d000a000000000000000000000000d2c6eb7527ab1e188638b86f2c14bbad5a431d780000000000000000000000008f74c989252b94fd2d08a668884d303d57c91422000000000000000000000000bfacb56e0ab0dc99e80a95b0412c8dc9c035cd2d000000000000000000000000ebb1185f41a2347dd77b45e1f5e068f1e84f536a000000000000000000000000492cbb6217d34d68f0abb77a9d9781c8ccbfdfe80000000000000000000000000f89ba3f140ea9370ab05d434b8e32fdf41a609300000000000000000000000000fd2c29cf3aa4880a4c05e7ca1382bf987b3495