0 txs
129 calls
constructor
constructor()
functions
_validateMarketPrice
viewfunction _validateMarketPrice(address _expectedToken) view returns (uint256 _marketPrice)
controller
viewfunction controller() view returns (address)
DEFAULT_SLIPPAGE
viewfunction DEFAULT_SLIPPAGE() view returns (uint256)
disabled
viewfunction disabled() view returns (bool)
getPrice
viewfunction getPrice(address _expectedToken) view returns (uint256)
implementation
viewfunction implementation() view returns (address)
lastOfferID
viewfunction lastOfferID() view returns (uint256)
merkleRoot
viewfunction merkleRoot() view returns (bytes32)
offers
viewfunction offers(uint256) view returns (uint256 id, address creator, uint256 amount, uint256 remainingAmount, address offeredToken, uint256 expectedPrice, address expectedToken, uint256 createdAt)
paired
viewfunction paired() view returns (address)
pool
viewfunction pool() view returns (address)
premium
viewfunction premium() view returns (uint256)
token
viewfunction token() view returns (address)
version
viewfunction version() view returns (uint8)
whitelistEnabled
viewfunction whitelistEnabled() view returns (bool)
wrapped
viewfunction wrapped() view returns (address)
cancelOffer
nonpayablefunction cancelOffer(uint256 _offerID)
contribute
payablefunction contribute(uint256[] offerIDs, uint256 amount, uint256 expectedPrice, uint256 slippage, bytes32[] proof) payable
createOffer
payablefunction createOffer(uint256 _amount, address _expectedToken, uint256 _expectedPrice, uint256 _slippage, bytes32[] proof) payable
disable
nonpayablefunction disable()
disableWhitelist
nonpayablefunction disableWhitelist()
initialize
nonpayablefunction initialize(address _controller, address _wrappedNative, address _pool, address _token, address _paired, uint8 _version, bytes32 _merkleRoot, uint256 _premium)
setPremium
nonpayablefunction setPremium(uint256 _premium)
updateWhitelist
nonpayablefunction updateWhitelist(bytes32 _merkleRoot, string _ipfsHash)
events
ContributionEvent
event ContributionEvent(uint256 id, address contributor, uint256 amountIn, address contributedToken, uint256 amountOut, uint256 premium, uint256 contributorFee, uint256 creatorFee, address receivedToken, uint256 timestamp, string eventType)
Disabled
event Disabled()
Initialized
event Initialized(uint64 version)
OfferEvent
event OfferEvent(uint256 id, address creator, uint256 amount, address offeredToken, uint256 expectedPrice, address expectedToken, uint256 timestamp, string eventType)
PremiumUpdated
event PremiumUpdated(uint256 newPremium)
PrivateSwitchInitialized
event PrivateSwitchInitialized(address controller, address wrappedNative, address pool, address token, address paired, uint8 version, bytes32 merkleRoot, uint256 premium, bool whitelistEnabled, uint256 defaultSlippage)
WhitelistDisabled
event WhitelistDisabled()
WhitelistUpdated
event WhitelistUpdated(bytes32 newMerkleRoot, string ipfsHash)
errors
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x608060405234801562000010575f80fd5b506200001b62000021565b620000d5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000725760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d25780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613db180620000e35f395ff3fe608060405260043610610147575f3560e01c80639030ab40116100b3578063e0a73a931161006d578063e0a73a9314610412578063e96fa66d14610427578063ee0708051461043a578063ef706adf14610453578063f77c479114610472578063fc0c546a14610490575f80fd5b80639030ab4014610383578063a8798510146103a2578063ab2f21a9146103b7578063cf880331146103cc578063d6b0f484146103eb578063def2d738146103ff575f80fd5b80634f74ab67116101045780634f74ab671461021d57806350e70d481461023c57806351fb012d1461025b57806354fd4d50146102895780635c60da1b146102bb5780638a72ea6a146102cf575f80fd5b806310ec214f1461014b57806316f0115b1461016c5780632925df83146101a85780632eb4a7ab146101c75780632f2770db146101ea57806341976e09146101fe575b5f80fd5b348015610156575f80fd5b5061016a6101653660046135af565b6104af565b005b348015610177575f80fd5b5060065461018b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101b3575f80fd5b5061016a6101c23660046135e8565b61059e565b3480156101d2575f80fd5b506101dc60095481565b60405190815260200161019f565b3480156101f5575f80fd5b5061016a610936565b348015610209575f80fd5b506101dc610218366004613678565b610a23565b348015610228575f80fd5b5061016a6102373660046136d8565b610a33565b348015610247575f80fd5b5060055461018b906001600160a01b031681565b348015610266575f80fd5b50600a5461027990610100900460ff1681565b604051901515815260200161019f565b348015610294575f80fd5b506008546102a990600160a01b900460ff1681565b60405160ff909116815260200161019f565b3480156102c6575f80fd5b5061018b610b18565b3480156102da575f80fd5b5061033b6102e93660046135af565b600160208190525f9182526040909120805491810154600282015460038301546004840154600585015460068601546007909601546001600160a01b0395861696949593949284169391929091169088565b604080519889526001600160a01b0397881660208a01528801959095526060870193909352908416608086015260a085015290911660c083015260e08201526101000161019f565b34801561038e575f80fd5b506101dc61039d366004613678565b610bba565b3480156103ad575f80fd5b506101dc60025481565b3480156103c2575f80fd5b506101dc60045481565b3480156103d7575f80fd5b5060085461018b906001600160a01b031681565b3480156103f6575f80fd5b5061016a610e2a565b61016a61040d3660046137ee565b610f06565b34801561041d575f80fd5b506101dc60035481565b61016a610435366004613856565b61157d565b348015610445575f80fd5b50600a546102799060ff1681565b34801561045e575f80fd5b5061016a61046d3660046135af565b6119d4565b34801561047d575f80fd5b505f5461018b906001600160a01b031681565b34801561049b575f80fd5b5060075461018b906001600160a01b031681565b5f8054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105219190613900565b6001600160a01b0316336001600160a01b03161461055a5760405162461bcd60e51b81526004016105519061391b565b60405180910390fd5b61056381611ccd565b60038190556040518181527f0b6bb76339f9f2471be7cc41c6d0b2f8ae50afbc0f32e5e5ecadb3a95d788fad9060200160405180910390a150565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156105e35750825b90505f8267ffffffffffffffff1660011480156105ff5750303b155b90508115801561060d575080155b1561062b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561065557845460ff60401b1916600160401b1785555b6001600160a01b038d1661067b5760405162461bcd60e51b815260040161055190613952565b6001600160a01b038c166106a15760405162461bcd60e51b815260040161055190613952565b6001600160a01b038b166106c75760405162461bcd60e51b815260040161055190613952565b6001600160a01b038a166106ed5760405162461bcd60e51b815260040161055190613952565b6001600160a01b0389166107135760405162461bcd60e51b815260040161055190613952565b61071b611d1e565b8c5f806101000a8154816001600160a01b0302191690836001600160a01b031602179055508b60055f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508a60065f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508960075f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508860085f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555087600860146101000a81548160ff021916908360ff1602179055508660098190555061080386611ccd565b856003819055506001600a60016101000a81548160ff02191690831515021790555060c86002819055507f63acbc78bfb8c951f24cdbfcc487496a1b0e9c1188fdfd37b5b2f6265976a2188d8d8d8d8d8d8d8d600a60019054906101000a900460ff166002546040516108d99a999897969594939291906001600160a01b039a8b168152988a1660208a01529689166040890152948816606088015292909616608086015260ff1660a085015260c084019490945260e08301939093529115156101008201526101208101919091526101400190565b60405180910390a1831561092757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f546001600160a01b03163314806109d057505f8054906101000a90046001600160a01b03166001600160a01b0316635f17669f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610997573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bb9190613900565b6001600160a01b0316336001600160a01b0316145b6109ec5760405162461bcd60e51b81526004016105519061391b565b600a805460ff191660011790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e1905f90a1565b5f610a2d82610bba565b92915050565b5f8054906101000a90046001600160a01b03166001600160a01b031663aaa46ddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa59190613900565b6001600160a01b0316336001600160a01b031614610ad55760405162461bcd60e51b81526004016105519061391b565b60098290556040517f75078ba3468553e61a92ecd8e7ad522e4341db903a24a4d4e3cd266a5c9811ba90610b0c90849084906139cc565b60405180910390a15050565b5f80610b4560017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d51613a00565b5f1b90505f815490505f819050806001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb29190613900565b935050505090565b6005546008545f9182916001600160a01b03908116911614610ca0575f54600854604051636028be4d60e11b81526001600160a01b039283169263c0517c9a92610c16928892821691600160a01b900460ff1690600401613a13565b602060405180830381865afa158015610c31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c559190613900565b600854909150600160a01b900460ff16600303610c7d57610c768184611d30565b9150610e24565b600854600160a01b900460ff16600203610c9b57610c768184611e25565b610e24565b6007546001600160a01b0384811691161480610cc957506005546001600160a01b038481169116145b15610d5d575f54600754600554600854604051636028be4d60e11b81526001600160a01b039485169463c0517c9a94610d179490821693911691600160a01b90910460ff1690600401613a13565b602060405180830381865afa158015610d32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d569190613900565b9050610de5565b5f54600554600854604051636028be4d60e11b81526001600160a01b039384169363c0517c9a93610da3938993919092169160ff600160a01b9091041690600401613a13565b602060405180830381865afa158015610dbe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de29190613900565b90505b600854600160a01b900460ff16600303610e0357610c768184611d30565b600854600160a01b900460ff16600203610e2457610e218184611e25565b91505b50919050565b5f8054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e9c9190613900565b6001600160a01b0316336001600160a01b031614610ecc5760405162461bcd60e51b81526004016105519061391b565b600a805461ff00191690555f60038190556040517f212c6e1d3045c9581ef0adf2504dbb1d137f52f38162ccf77a16c69d14eba5c39190a1565b610f103382611f54565b612710821115610f625760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a20496e76616c696420736c697070616765006044820152606401610551565b600a5460ff16158015610f7d57505f851180610f7d57505f34115b8015610f9157506001600160a01b03841615155b8015610f9c57505f83115b610fe85760405162461bcd60e51b815260206004820152601c60248201527f507269766174655377697463683a20496e76616c696420696e707574000000006044820152606401610551565b3415611021576005546001600160a01b039081169085160361101c5760405162461bcd60e51b815260040161055190613a39565b61104f565b6007546001600160a01b039081169085160361104f5760405162461bcd60e51b815260040161055190613a39565b6005546001600160a01b03858116911614611204575f8054906101000a90046001600160a01b03166001600160a01b031663e7f92e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d69190613a7e565b5f54604051633ac295ff60e11b81526001600160a01b038781166004830152909116906375852bfe90602401602060405180830381865afa15801561111d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111419190613a7e565b111580156111b857505f8054604051633ac295ff60e11b81526001600160a01b038781166004830152909116906375852bfe90602401602060405180830381865afa158015611192573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b69190613a7e565b115b6112045760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a20537769746368206e6f7420666f756e64006044820152606401610551565b5f80341161121d576007546001600160a01b031661122a565b6005546001600160a01b03165b90505f80341161123a578661123c565b345b90505f61124887610bba565b90505f6112588787612710611ff7565b90506112648188613a00565b8210156112835760405162461bcd60e51b815260040161055190613a95565b6007546001600160a01b03908116908516036113a0576007546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa1580156112df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113039190613a7e565b905061132860075f9054906101000a90046001600160a01b031633308d6002546120a2565b6007546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa15801561136e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113929190613a7e565b61139c9190613a00565b9350505b60048054905f6113af83613acc565b91905055506040518061010001604052806004548152602001336001600160a01b03168152602001848152602001848152602001856001600160a01b03168152602001838152602001896001600160a01b031681526020014281525060015f60045481526020019081526020015f205f820151815f01556020820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a0820151816005015560c0820151816006015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e082015181600701559050507f10501261b12a42e5acd224d150a1c2a0ecde5df58a569b56de13df8e385c71f7600454338587868d4260405161156a97969594939291909687526001600160a01b03958616602088015260408701949094529184166060860152608085015290911660a083015260c082015261010060e082018190526007908201526610dc99585d195960ca1b6101208201526101400190565b60405180910390a1505050505050505050565b611585612215565b61158f3382611f54565b600a5460ff161580156115a157508415155b80156115b557505f8411806115b557505f34115b6116015760405162461bcd60e51b815260206004820152601c60248201527f507269766174655377697463683a20496e76616c696420696e707574000000006044820152606401610551565b3415155f61160d613591565b5f8361163c576116378a8a5f81811061162857611628613ae4565b9050602002013589888a61224c565b611660565b6116608a8a5f81811061165157611651613ae4565b9050602002013534888a612525565b945090925090506116728a8a85612657565b5f8061168e8c8c88611684578c611686565b345b86888b6126fc565b5f8054604051631711922960e31b81523360048201529395509193509161170f9185916001600160a01b039091169063b88c9148906024015b602060405180830381865afa1580156116e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117069190613a7e565b620f42406129f9565b9050861561183957600754611746906001600160a01b0316336117328487613a00565b8c1561173e578c612a35565b600254612a35565b6007545f546040805163011a412160e61b815290516117c2936001600160a01b0390811693169163469048409160048083019260209291908290030181865afa158015611795573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b99190613900565b83600254612a35565b5f546040805163011a412160e61b81529051611834926001600160a01b03169163469048409160048083019260209291908290030181865afa15801561180a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182e9190613900565b83612b9e565b6119af565b60055485516001600160a01b039182169116036118da576118633361185e8386613a00565b612b9e565b5f546040805163011a412160e61b815290516118d5926001600160a01b03169163469048409160048083019260209291908290030181865afa1580156118ab573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118cf9190613900565b82612b9e565b611936565b84516118eb90336117328487613a00565b84515f546040805163011a412160e61b8152905161193693926001600160a01b03169163469048409160048083019260209291908290030181865afa158015611795573d5f803e3d5ffd5b6020808601515f546040805163011a412160e61b815290516119af9433936001600160a01b031692634690484092600480830193928290030181865afa158015611982573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119a69190613900565b856002546120a2565b505050505050506119cc60015f80516020613d5c83398151915255565b505050505050565b6119dc612215565b5f811180156119ed57506004548111155b611a395760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a20496e76616c6964206f66666572204944006044820152606401610551565b5f818152600160205260409020805415801590611a62575060018101546001600160a01b031633145b611ac25760405162461bcd60e51b815260206004820152602b60248201527f507269766174655377697463683a20496e76616c6964206f66666572206f722060448201526a3737ba1031b932b0ba37b960a91b6064820152608401610551565b60055460048201546001600160a01b03918216911603611b9657600181015460038201546040515f926001600160a01b031691908381818185875af1925050503d805f8114611b2c576040519150601f19603f3d011682016040523d82523d5f602084013e611b31565b606091505b5050905080611b905760405162461bcd60e51b815260206004820152602560248201527f507269766174655377697463683a204e6174697665207472616e736665722066604482015264185a5b195960da1b6064820152608401610551565b50611bbc565b600481015460018201546003830154611bbc926001600160a01b03908116921690612c4e565b60018101546002820154600483015460058401546006850154604080518881526001600160a01b03968716602082015290810194909452918416606084015260808301529190911660a08201524260c082015261010060e082018190526008908201526710d85b98d95b195960c21b6101208201527f10501261b12a42e5acd224d150a1c2a0ecde5df58a569b56de13df8e385c71f7906101400160405180910390a1505f818152600160208190526040822082815590810180546001600160a01b031990811690915560028201839055600382018390556004820180548216905560058201839055600682018054909116905560070155611cca60015f80516020613d5c83398151915255565b50565b601e811115611cca5760405162461bcd60e51b815260206004820152601e60248201527f507269766174655377697463683a20496e76616c6964207072656d69756d00006044820152606401610551565b611d26612cad565b611d2e612cf6565b565b5f80836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015611d6e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d929190613b0e565b50505050505090505f836001600160a01b0316856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e059190613900565b6001600160a01b031614159050611e1c8282612cfe565b95945050505050565b5f808390505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8c9190613bbb565b506001600160701b031691506001600160701b03169150846001600160a01b0316836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ee9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0d9190613900565b6001600160a01b031614611f3557611f2e81670de0b6b3a764000084611ff7565b9350611f4b565b611f4882670de0b6b3a764000083611ff7565b93505b50505092915050565b600a54610100900460ff1615611ff3576009546040516bffffffffffffffffffffffff19606085901b166020820152611fa791839160340160405160208183030381529060405280519060200120612d12565b611ff35760405162461bcd60e51b815260206004820152601e60248201527f507269766174655377697463683a204e6f742077686974656c697374656400006044820152606401610551565b5050565b5f80805f19858709858702925082811083820303915050805f0361202b575f8411612020575f80fd5b50829004905061209b565b808411612036575f80fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b6040516370a0823160e01b81526001600160a01b0384811660048301525f91908716906370a0823190602401602060405180830381865afa1580156120e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061210d9190613a7e565b905061211b86868686612d27565b6040516370a0823160e01b81526001600160a01b0385811660048301525f9183918916906370a0823190602401602060405180830381865afa158015612163573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121879190613a7e565b6121919190613a00565b90508381101561220c576121a7836103e8613a00565b846121b4836103e8613c07565b6121be9190613c32565b101561220c5760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a2042616c616e636520736c697070616765006044820152606401610551565b50505050505050565b5f80516020613d5c83398151915280546001190161224657604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b612254613591565b5f858152600160205260408120805482919015801590612287575060055460068201546001600160a01b03908116911614155b6122d35760405162461bcd60e51b815260206004820152601c60248201527f507269766174655377697463683a20496e76616c6964206f66666572000000006044820152606401610551565b6006810154604051636eb1769f60e11b815233600482015230602482015288916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015612321573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123459190613a7e565b10156123a15760405162461bcd60e51b815260206004820152602560248201527f507269766174655377697463683a20496e73756666696369656e7420616c6c6f60448201526477616e636560d81b6064820152608401610551565b60068101546123b8906001600160a01b0316610bba565b91505f6123c88688612710611ff7565b90506123d48187613c51565b8311156123f35760405162461bcd60e51b815260040161055190613a95565b60048201546001600160a01b039081168087526006840154821660208801526005549091161461242c576124278289612d60565b6124b3565b5f80546006840154600854604051630f5b58d760e41b81526001600160a01b039384169463f5b58d7094612474948f94911692600160a01b90910460ff169190600401613c64565b602060405180830381865afa15801561248f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b39190613a7e565b93505f84116125195760405162461bcd60e51b815260206004820152602c60248201527f507269766174655377697463683a20496e73756666696369656e74207377617060448201526b1031b0b631bab630ba34b7b760a11b6064820152608401610551565b50509450945094915050565b61252d613591565b5f85815260016020526040812080548291901580159061255f575060055460068201546001600160a01b039081169116145b6125ab5760405162461bcd60e51b815260206004820152601c60248201527f507269766174655377697463683a20496e76616c6964206f66666572000000006044820152606401610551565b60068101546125c2906001600160a01b0316610bba565b91505f6125d28688612710611ff7565b90506125de8187613c51565b8311156125fd5760405162461bcd60e51b815260040161055190613a95565b6004828101546001600160a01b039081168752600554811660208801525f54600754600854604051630f5b58d760e41b81529284169463f5b58d7094612474948f9490911692600160a01b900460ff169160019101613c64565b5f5b828110156126f6575f60015f86868581811061267757612677613ae4565b9050602002013581526020019081526020015f20905080600501548310156126ed5760405162461bcd60e51b815260206004820152602360248201527f507269766174655377697463683a204d61726b657420507269636520746f6f206044820152626c6f7760e81b6064820152608401610551565b50600101612659565b50505050565b5f805f805b88811015612837575f60015f8c8c8581811061271f5761271f613ae4565b9050602002013581526020019081526020015f209050805f01545f036127875760405162461bcd60e51b815260206004820152601e60248201527f507269766174655377697463683a204f66666572206e6f7420666f756e6400006044820152606401610551565b811561281d57865160048201546001600160a01b0391821691161480156127c25750602087015160068201546001600160a01b039182169116145b61281d5760405162461bcd60e51b815260206004820152602660248201527f507269766174655377697463683a20496e636f6e73697374656e74206f66666560448201526539103830b4b960d11b6064820152608401610551565b600381015461282c9084613c51565b925050600101612701565b50865f5b898110156129d0575f60015f8d8d8581811061285957612859613ae4565b9050602002013581526020019081526020015f2090505f61287f8b836003015487611ff7565b90505f6128918b846003015488611ff7565b90505f805f6128a28686868f6130d5565b9250925092508a838c0110156129055760405162461bcd60e51b815260206004820152602260248201527f507269766174655377697463683a204f766572666c6f773a20616d6f756e744f6044820152611d5d60f21b6064820152608401610551565b828b019a5089818b0110156129535760405162461bcd60e51b81526020600482015260146024820152734f766572666c6f773a2063726561746f7246656560601b6044820152606401610551565b98890198818810156129bb5760405162461bcd60e51b815260206004820152602b60248201527f507269766174655377697463683a20556e646572666c6f773a2072656d61696e60448201526a34b733a0b6b7bab73a24b760a91b6064820152608401610551565b509095039450506001909201915061283b9050565b508480156129dd57505f81115b156129ec576129ec3382612b9e565b5050965096945050505050565b5f612a05848484611ff7565b90505f8280612a1657612a16613c1e565b848609111561209b575f198110612a2b575f80fd5b6001019392505050565b6040516370a0823160e01b81526001600160a01b0384811660048301525f91908616906370a0823190602401602060405180830381865afa158015612a7c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612aa09190613a7e565b9050612aad858585612c4e565b6040516370a0823160e01b81526001600160a01b0385811660048301525f9183918816906370a0823190602401602060405180830381865afa158015612af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b199190613a7e565b612b239190613a00565b9050838110156119cc57612b39836103e8613a00565b84612b46836103e8613c07565b612b509190613c32565b10156119cc5760405162461bcd60e51b815260206004820152601f60248201527f507269766174655377697463683a2042616c616e636520736c697070616765006044820152606401610551565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114612be7576040519150601f19603f3d011682016040523d82523d5f602084013e612bec565b606091505b5050905080612c365760405162461bcd60e51b815260206004820152601660248201527513985d1a5d99481d1c985b9cd9995c8819985a5b195960521b6044820152606401610551565b505050565b60015f80516020613d5c83398151915255565b6040516001600160a01b03838116602483015260448201839052612c3691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506132a4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611d2e57604051631afcd79f60e31b815260040160405180910390fd5b612c3b612cad565b5f61209b83670de0b6b3a764000084613310565b5f82612d1e85846133d7565b14949350505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526126f69186918216906323b872dd90608401612c7b565b5f805460068401546008546040516351e8602d60e01b81526001600160a01b03928316600482015290821660248201528392839283929116906351e8602d90604401602060405180830381865afa158015612dbd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612de19190613a7e565b5f8054604051631d9fe28360e31b8152600481018490529293509091829182916001600160a01b039091169063ecff141890602401608060405180830381865afa158015612e31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e559190613c8d565b6008549396509094509250506001600160a01b03808416911603612f97575f5460068a0154604051637d8577e160e11b8152600481018b90526001600160a01b039182166024820152858216604482015260ff8416606482015291169063fb0aefc290608401602060405180830381865afa158015612ed6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612efa9190613a7e565b5f5460048b810154600654600854604051637d8577e160e11b81529384018e90526001600160a01b0392831660248501529082166044840152600160a01b900460ff16606483015292985091169063fb0aefc290608401602060405180830381865afa158015612f6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f909190613a7e565b94506130bd565b5f805460068b0154604051630f5b58d760e41b81526001600160a01b039283169363f5b58d7093612fd1938e939116918791600401613c64565b602060405180830381865afa158015612fec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130109190613a7e565b95505f8054906101000a90046001600160a01b03166001600160a01b031663f5b58d70898b6004015f9054906101000a90046001600160a01b0316600860149054906101000a900460ff165f6040518563ffffffff1660e01b815260040161307b9493929190613c64565b602060405180830381865afa158015613096573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130ba9190613a7e565b94505b6130c8868987611ff7565b9998505050505050505050565b5f805f6130e6876003015486613419565b92505f8088600301541180156130fd57505f600354115b1561315b57613110846003546064611ff7565b60038901549091506131228286613c51565b111561315b576131468860030154606460035460646131419190613c51565b611ff7565b93508388600301546131589190613a00565b90505b613166878588611ff7565b5f5460018a0154604051631711922960e31b81526001600160a01b0391821660048201529295506131a6928692919091169063b88c9148906024016116c7565b9150846131e157600688015460018901546131dc916001600160a01b03908116913391166131d48688613a00565b6002546120a2565b6131fd565b60018801546131fd906001600160a01b031661185e8486613a00565b6132078185613c51565b886003015f8282546132199190613a00565b9091555061322b905088848684613428565b87600301545f0361328d5787545f908152600160208190526040822082815590810180546001600160a01b0319908116909155600282018390556003820183905560048201805482169055600582018390556006820180549091169055600701555b6132978185613c51565b9350509450945094915050565b5f8060205f8451602086015f885af1806132c3576040513d5f823e3d81fd5b50505f513d915081156132da5780600114156132e7565b6001600160a01b0384163b155b156126f657604051635274afe760e01b81526001600160a01b0385166004820152602401610551565b5f6001600160801b036001600160a01b03851611613381575f61333c6001600160a01b03861680613c07565b905082156133615761335c600160c01b856001600160801b031683611ff7565b613379565b61337981856001600160801b0316600160c01b611ff7565b91505061209b565b5f61339a6001600160a01b03861680600160401b611ff7565b905082156133bf576133ba600160801b856001600160801b031683611ff7565b611e1c565b611e1c81856001600160801b0316600160801b611ff7565b5f81815b845181101561341157613407828683815181106133fa576133fa613ae4565b6020026020010151613565565b91506001016133db565b509392505050565b5f82821882841002821861209b565b835460068501547f7b1b1ba164ace98683b510c9ef5ca6066b2f02cfceaeda9c52455cf4c12b83b79190339086906001600160a01b0316868661349d61346e8284613c51565b5f54604051631711922960e31b81523360048201526001600160a01b039091169063b88c9148906024016116c7565b5f5460018d0154604051631711922960e31b81526001600160a01b0391821660048201526134d7928e92169063b88c9148906024016116c7565b60048d015460038e01546001600160a01b039091169042901561351d576040518060400160405280600b81526020016a10dbdb9d1c9a589d5d195960aa1b815250613540565b60405180604001604052806009815260200168119d5b199a5b1b195960ba1b8152505b6040516135579b9a99989796959493929190613ce9565b60405180910390a150505050565b5f81831061357f575f82815260208490526040902061209b565b5f83815260208390526040902061209b565b60405180604001604052806002906020820280368337509192915050565b5f602082840312156135bf575f80fd5b5035919050565b6001600160a01b0381168114611cca575f80fd5b60ff81168114611cca575f80fd5b5f805f805f805f80610100898b031215613600575f80fd5b883561360b816135c6565b9750602089013561361b816135c6565b9650604089013561362b816135c6565b9550606089013561363b816135c6565b9450608089013561364b816135c6565b935060a089013561365b816135da565b979a969950949793969295929450505060c08201359160e0013590565b5f60208284031215613688575f80fd5b813561209b816135c6565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156136d0576136d0613693565b604052919050565b5f80604083850312156136e9575f80fd5b8235915060208084013567ffffffffffffffff80821115613708575f80fd5b818601915086601f83011261371b575f80fd5b81358181111561372d5761372d613693565b61373f601f8201601f191685016136a7565b91508082528784828501011115613754575f80fd5b80848401858401375f848284010152508093505050509250929050565b5f82601f830112613780575f80fd5b8135602067ffffffffffffffff82111561379c5761379c613693565b8160051b6137ab8282016136a7565b92835284810182019282810190878511156137c4575f80fd5b83870192505b848310156137e3578235825291830191908301906137ca565b979650505050505050565b5f805f805f60a08688031215613802575f80fd5b853594506020860135613814816135c6565b93506040860135925060608601359150608086013567ffffffffffffffff81111561383d575f80fd5b61384988828901613771565b9150509295509295909350565b5f805f805f8060a0878903121561386b575f80fd5b863567ffffffffffffffff80821115613882575f80fd5b818901915089601f830112613895575f80fd5b8135818111156138a3575f80fd5b8a60208260051b85010111156138b7575f80fd5b6020928301985096509088013594506040880135935060608801359250608088013590808211156138e6575f80fd5b506138f389828a01613771565b9150509295509295509295565b5f60208284031215613910575f80fd5b815161209b816135c6565b6020808252601d908201527f507269766174655377697463683a204e6f7420617574686f72697a6564000000604082015260600190565b6020808252601b908201527f507269766174655377697463683a2041646472657373205a65726f0000000000604082015260600190565b5f81518084525f5b818110156139ad57602081850181015186830182015201613991565b505f602082860101526020601f19601f83011685010191505092915050565b828152604060208201525f6139e46040830184613989565b949350505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a2d57610a2d6139ec565b6001600160a01b03938416815291909216602082015260ff909116604082015260600190565b60208082526025908201527f507269766174655377697463683a20496e76616c6964206578706563746564206040820152643a37b5b2b760d91b606082015260800190565b5f60208284031215613a8e575f80fd5b5051919050565b60208082526017908201527f507269766174655377697463683a20536c697070616765000000000000000000604082015260600190565b5f60018201613add57613add6139ec565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b805161ffff81168114613b09575f80fd5b919050565b5f805f805f805f60e0888a031215613b24575f80fd5b8751613b2f816135c6565b8097505060208801518060020b8114613b46575f80fd5b9550613b5460408901613af8565b9450613b6260608901613af8565b9350613b7060808901613af8565b925060a0880151613b80816135da565b60c08901519092508015158114613b95575f80fd5b8091505092959891949750929550565b80516001600160701b0381168114613b09575f80fd5b5f805f60608486031215613bcd575f80fd5b613bd684613ba5565b9250613be460208501613ba5565b9150604084015163ffffffff81168114613bfc575f80fd5b809150509250925092565b8082028115828204841417610a2d57610a2d6139ec565b634e487b7160e01b5f52601260045260245ffd5b5f82613c4c57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a2d57610a2d6139ec565b9384526001600160a01b0392909216602084015260ff1660408301521515606082015260800190565b5f805f8060808587031215613ca0575f80fd5b8451613cab816135c6565b6020860151909450613cbc816135c6565b6040860151909350613ccd816135c6565b6060860151909250613cde816135da565b939692955090935050565b5f6101608d835260018060a01b03808e1660208501528c6040850152808c1660608501528a60808501528960a08501528860c08501528760e0850152808716610100850152508461012084015280610140840152613d4981840185613989565b9e9d505050505050505050505050505056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122052f8a21c2f517562d4193e5d7b7c5d5122c212c191586c7944363bbddc9fde5064736f6c63430008170033