0 txs
150 calls
constructor
No constructor.
functions
addresses
viewfunction addresses() view returns (address, address, address, address)
balances
viewfunction balances(address user) view returns (uint256, uint256, uint256)
commissionfee
viewfunction commissionfee() view returns (uint256)
countUnsettledFilledOrders
viewfunction countUnsettledFilledOrders(uint256 epoch) view returns (uint256)
currentEpoch
viewfunction currentEpoch() view returns (uint256)
filledOrders
viewfunction filledOrders(uint256 epoch) view returns (tuple[])
filledOrdersWithResult
viewfunction filledOrdersWithResult(uint256 epoch, uint256 chunkSize, uint256 offset) view returns (tuple[], tuple[])
lastFilledOrderId
viewfunction lastFilledOrderId() view returns (uint256)
lastSettledFilledOrderId
viewfunction lastSettledFilledOrderId() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
rounds
viewfunction rounds(uint256 epoch, uint256 productId) view returns (tuple)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
userFilledOrders
viewfunction userFilledOrders(uint256 epoch, address user) view returns (tuple[])
executeRound
payablefunction executeRound(tuple priceLazerData, uint64 initDate, bool skipSettlement) payable
fillSettlementResult
nonpayablefunction fillSettlementResult(uint256[] epochList)
initialize
nonpayablefunction initialize(address _usdcAddress, address _adminAddress, address _operatorAddress, uint256 _commissionfee, address _clearingHouseAddress)
pause
nonpayablefunction pause()
releaseEpochEscrow
nonpayablefunction releaseEpochEscrow(uint256 epoch)
renounceOwnership
nonpayablefunction renounceOwnership()
retrieveMisplacedETH
nonpayablefunction retrieveMisplacedETH()
retrieveMisplacedTokens
nonpayablefunction retrieveMisplacedTokens(address _token)
setAdmin
nonpayablefunction setAdmin(address _adminAddress)
setCommissionfee
nonpayablefunction setCommissionfee(uint256 _commissionfee)
setLastFilledOrderId
nonpayablefunction setLastFilledOrderId(uint256 _lastFilledOrderId)
setManualRoundEndPrices
nonpayablefunction setManualRoundEndPrices(tuple[] priceData, uint64 initDate, bool skipSettlement)
setOperator
nonpayablefunction setOperator(address _operatorAddress)
setPythLazer
nonpayablefunction setPythLazer(address _pythLazer)
settleFilledOrders
nonpayablefunction settleFilledOrders(uint256 epoch, uint256 size) returns (uint256)
setToken
nonpayablefunction setToken(address _token)
submitFilledOrders
nonpayablefunction submitFilledOrders(tuple[] transactions)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
EndRound
event EndRound(uint256 indexed epoch, uint256 productId, uint256 price, uint256 timestamp)
Initialized
event Initialized(uint64 version)
OrderSettled
event OrderSettled(address indexed user, uint256 indexed idx, uint256 epoch, uint256 prevBalance, uint256 newBalance, uint256 usedCouponAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PriceIdAdded
event PriceIdAdded(uint256 indexed productId, bytes32 priceId, string symbol)
RoundSettled
event RoundSettled(uint256 indexed epoch, uint256 orderCount, uint256 collectedFee)
StartRound
event StartRound(uint256 indexed epoch, uint256 productId, uint256 price, uint256 timestamp)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AlreadySettled
error AlreadySettled()
EnforcedPause
error EnforcedPause()
EpochHasNotStartedYet
error EpochHasNotStartedYet()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance()
InsufficientEscrowBalance
error InsufficientEscrowBalance(address user, uint256 available, uint256 required)
InsufficientVerificationFee
error InsufficientVerificationFee(uint256 required, uint256 provided)
InvalidAddress
error InvalidAddress()
InvalidAmount
error InvalidAmount()
InvalidChannel
error InvalidChannel()
InvalidCommissionFee
error InvalidCommissionFee()
InvalidEpoch
error InvalidEpoch()
InvalidId
error InvalidId()
InvalidIndex
error InvalidIndex()
InvalidInitDate
error InvalidInitDate()
InvalidInitialization
error InvalidInitialization()
InvalidPriceId
error InvalidPriceId()
InvalidProductId
error InvalidProductId()
InvalidRound
error InvalidRound()
InvalidRoundPrice
error InvalidRoundPrice()
InvalidStrike
error InvalidStrike()
InvalidSymbol
error InvalidSymbol()
InvalidTime
error InvalidTime()
InvalidTokenAddress
error InvalidTokenAddress()
NotInitializing
error NotInitializing()
OnlyAdmin
error OnlyAdmin()
OnlyOperator
error OnlyOperator()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
PriceIdAlreadyExists
error PriceIdAlreadyExists()
PriceLengthMismatch
error PriceLengthMismatch()
ProductIdAlreadyExists
error ProductIdAlreadyExists()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Unauthorized
error Unauthorized()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
VaultCannotDeposit
error VaultCannotDeposit()
creation bytecode
0x60a08060405234620000d157306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c16620000c257506001600160401b036002600160401b0319828216016200007c575b6040516152619081620000d78239608051818181611d8b0152611e330152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880806200005c565b63f92ee8a960e01b8152600490fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c908163061f23e914612894575080630c220305146125b757806310cbdcd314612541578063144fa6d7146124d15780631642a5d71461245757806316eea7d5146123c657806327e235e3146122b95780632dca6b53146121835780632f7e2624146121305780632f84de01146120eb5780633f4ba83a146120685780634c92b255146120125780634f1ef28614611df557806352d1902d14611d78578063530b97a414611ac95780635474552b1461176b5780635c975abb1461173b5780635d44f79514611668578063704b6c021461160a578063715018a6146115a057806375f763cd14610ba15780637667180814610b7d5780637b6c0e1214610b525780638456cb5914610acc5780638da5cb5b14610a96578063930767de146109565780639cc9029c146108af578063ad3cb1cc14610865578063b3ab15fb146107f6578063c178d7a5146107b9578063cfe9d1211461078e578063da0321cd14610712578063e5a0106914610232578063e6da9213146101d05763f2fde38b146101a057600080fd5b346101cb5760203660031901126101cb576101c96101bc612a36565b6101c4614e59565b613241565b005b600080fd5b346101cb5760e06101e96101e3366129fb565b906130f7565b60c0604051918051835260208101516020840152604081015160408401526060810151151560608401526080810151608084015260a081015160a08401520151151560c0820152f35b346101cb5760203660031901126101cb576004356001600160401b038082116101cb57366023830112156101cb578160040135116101cb57366024610180836004013502830101116101cb57600260008051602061520c833981519152541461070057600260008051602061520c8339815191525560008051602061514c833981519152546001600160a01b031633036106ee5760008051602061518c833981519152546001810180911161036f578160040135156106d8576024820135106106c65760005b8160040135811061038557506004810135600019810190811161036f57816024610327936004013591016130d2565b3560008051602061518c83398151915255427f627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b40a55600160008051602061520c83398151915255005b634e487b7160e01b600052601160045260246000fd5b610397818360040135602485016130d2565b906103ab61010083013560c0840135612e74565b620f4240818181020481148215171561036f576103d161010085013560e0860135612e74565b91828281020482148315171561036f576000805160206151ac833981519152546001600160a01b031690610407608087016130e3565b823b156101cb5760405163649a9dab60e11b81523060048201526001600160a01b0391909116602482015290830260448201526020860135606482015285356084820152600160a482015290600090829060c490829084905af180156106ab576106b7575b506000805160206151ac833981519152546001600160a01b03169161049360a086016130e3565b92803b156101cb5760405163649a9dab60e11b81523060048201526001600160a01b03949094166024850152910260448301526020840135606483015283356084830152600160a4830152600090829060c490829084905af180156106ab5761069c575b5060208201356000526000805160206151cc8339815191526020526040600020918254680100000000000000008110156106865780600161053b9201855584612c8e565b6106705781358155602082013560018201556040820135600282015560608201356003820155600481016001600160a01b03610579608085016130e3565b16906bffffffffffffffffffffffff60a01b9182825416179055600582019060018060a01b036105ab60a086016130e3565b169082541617905560c0820135600682015560e0820135600782015561010082013560088201556101208201359182151583036101cb5760209160ff1960098201541660ff8095151516176009820155610140820135600a820155600b61016083013591015501356000526000805160206150ec833981519152602052604060002090600382015416610644575b5060019150016102f8565b825460001981019190821161036f5761066261066992600195612c8e565b50906132b5565b5083610639565b634e487b7160e01b600052600060045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6106a590612b1e565b836104f7565b6040513d6000823e3d90fd5b6106c090612b1e565b8561046c565b604051631bf4348160e31b8152600490fd5b634e487b7160e01b600052603260045260246000fd5b60405163e6c4247b60e01b8152600490fd5b604051633ee5aeb560e01b8152600490fd5b346101cb5760003660031901126101cb57608060018060a01b038060008051602061510c8339815191525416908060008051602061514c833981519152541690806000805160206151ac8339815191525416906000805160206150cc833981519152541691604051938452602084015260408301526060820152f35b346101cb5760003660031901126101cb57602060008051602061518c83398151915254604051908152f35b346101cb5760003660031901126101cb5760207f627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b40b54604051908152f35b346101cb5760203660031901126101cb5761080f612a36565b60008051602061510c833981519152546001600160a01b0390811633036106ee578116156106ee5760008051602061514c83398151915280546001600160a01b0319166001600160a01b03909216919091179055005b346101cb5760003660031901126101cb576108ab60405161088581612b4c565b60058152640352e302e360dc1b6020820152604051918291602083526020830190612c69565b0390f35b346101cb576060806003193601126101cb576108d2604435602435600435612ec0565b6108e760405192604084526040840190612a62565b6020908381038285015281808451928381520193019160005b82811061090d5785850386f35b909192938260a06001928751805182528381015161092a81612c3c565b82850152604081810151908301528a8101518b8301526080908101519082015201950193929101610900565b346101cb576020806003193601126101cb57610970612a36565b9060018060a01b038060008051602061510c8339815191525416908133036106ee57806000805160206150cc83398151915254169316809314610a84576040516370a0823160e01b8152306004820152908282602481875afa9182156106ab57600092610a55575b50604051918383019163a9059cbb60e01b8352602484015260448301526044825260808201918083106001600160401b0384111761068657600092604052519082855af1156106ab576000513d610a4c5750803b155b610a3457005b60249060405190635274afe760e01b82526004820152fd5b60011415610a2e565b9091508281813d8311610a7d575b610a6d8183612bb9565b810103126101cb575190846109d8565b503d610a63565b604051630f58058360e11b8152600490fd5b346101cb5760003660031901126101cb5760008051602061512c833981519152546040516001600160a01b039091168152602090f35b346101cb5760003660031901126101cb57610ae5614e92565b60008051602061510c833981519152546001600160a01b031633036106ee57610b0c614e92565b6000805160206151ec833981519152600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346101cb5760003660031901126101cb57602060008051602061516c83398151915254604051908152f35b346101cb5760003660031901126101cb576020610b9942614925565b604051908152f35b6003196060368201126101cb57600435906001600160401b0382116101cb5760409082360301126101cb57610bd4612a11565b610bdc612a27565b90610be5614e92565b60008051602061514c833981519152546001600160a01b039390841633036106ee57610e10610c1c6001600160401b038416612cd5565b0661158e5760405190610c2e82612b4c565b80600401356001600160401b0381116101cb57610c519060043691840101612bf5565b82526024810135906001600160401b0382116101cb5701366023820112156101cb576004810135610c8181612d08565b91610c8f6040519384612bb9565b8183526024602084019260061b820101903682116101cb57602401915b81831061155d575050506020820152837f627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b40354166040519063bac12f8760e01b8252602082600481845afa9182156106ab57600092611529575b5081341061150a576000610d3a83928551604051948580948193630cbf0d2d60e11b8352602060048401526024830190612c69565b03925af19586156106ab5760009661147f575b5050803411611451575b506040516307bdfb3160e21b81526020600482015260808180610d7d6024820189612c69565b038173b6ecc33c7322aba4fcbd6dee93b27a643f848c545af49182156106ab576000926000926000916113e7575b5060019093610db981612c3c565b036113d557610dca60ff8316614eee565b9560009360005b60ff851660ff8216106110a9575050505050610dec81614eee565b9360005b82811061107f57505050610e0c6001600160401b038216614925565b90610e1642614925565b90826000526000805160206150ec833981519152602052604060002091831480611070575b611033575b60005b8551811015610ee4578084610e5a60019389612e60565b51602081019081516000526004870160205260406000205415610e81575b50505001610e43565b8051825160009081526040908190206001600160401b039283169055925191518351928352811660208301528616918101919091527fa0710752d6e9448c257348e94170ab990b11947ce7a33bda46ef363b2e3ed40490606090a2848880610e78565b50929050600019820191821161036f57816000526000805160206150ec8339815191526020526040600020928284541480611026575b80611018575b80611009575b610fe6575b909260058101919060005b8651811015610fd4578085610f4d6001938a612e60565b51602081019081516000528760205260406000205415610f71575b50505001610f36565b8051825160009081526040908190206001600160401b039283169055925191518351928352811660208301528716918101919091527fa235c93d1b2f697aad8778fa4900285a0ee92e32ec1b0bc7e9bb0515ccf488e090606090a2858980610f68565b508415610fdd57005b6101c990614959565b6001600160401b038116600285015560038401805460ff19166001179055610f2b565b5060ff60038501541615610f26565b5060ff600685015416610f20565b5060018401541515610f1a565b8282556001600160401b03811660018301556110576001600160401b038216612cb9565b600283015560068201805460ff19166001179055610e40565b5060ff60068301541615610e3b565b8061108c60019284612e60565b516110978289612e60565b526110a28188612e60565b5001610df0565b60606110ca9260405180948192633edc80ed60e21b83528760048401614f51565b038173b6ecc33c7322aba4fcbd6dee93b27a643f848c545af49182156106ab57600092600091600091611378575b509260009160009060005b60ff821660ff82161061120a575050806111f8575b61112a575b505060010160ff16610dd1565b9398919790949996956000199960005b60208d015180518210156111e6578161115291612e60565b515163ffffffff8816146111685760010161113a565b899c97929899939a949b5060209196506111859082890151612e60565b5101515b60018101611198575b5061111d565b886111d660ff959a86956001956111dc956001600160401b03604051926111be84612b4c565b16825260208201526111d08383612e60565b52612e60565b50612caa565b97928b9250611192565b50509450959699948a91989299611189565b506001600160401b0382161515611118565b604080516353677f7f60e01b8152978890819061122b908c60048401614f51565b038173b6ecc33c7322aba4fcbd6dee93b27a643f848c545af480156106ab5760009760009161132e575b50809760058110156113185715611273575b5060010160ff16611103565b604080516367974a5f60e11b815298509295509092508690819061129b908a60048401614f51565b038173b6ecc33c7322aba4fcbd6dee93b27a643f848c545af480156106ab576000956000916112d1575b50949260019182611267565b9550506040853d604011611310575b816112ed60409383612bb9565b810103126101cb5761130a602061130387614ebd565b9601614edf565b8d6112c5565b3d91506112e0565b634e487b7160e01b600052602160045260246000fd5b9750506040873d604011611370575b8161134a60409383612bb9565b810103126101cb5786519660058810156101cb57602061136a9101614edf565b8f611255565b3d915061133d565b935050506060823d6060116113cd575b8161139560609383612bb9565b810103126101cb57815163ffffffff811681036101cb576113c460406113bd60208601614ed1565b9401614edf565b9092908b6110f8565b3d9150611388565b60405163ea3a9a3960e01b8152600490fd5b93505090506080823d608011611449575b8161140560809383612bb9565b810103126101cb5761141682614ebd565b5060208201519060048210156101cb576001611440606061143960408701614ed1565b9501614edf565b92939290610dab565b3d91506113f8565b60008080611460819434612ce7565b818115611476575b3390f1156106ab5784610d57565b506108fc611468565b909195503d806000843e6114938184612bb9565b8201916040818403126101cb5780516001600160401b0381116101cb5781019083601f830112156101cb578151916114ca83612bda565b946114d86040519687612bb9565b838652602084830101116101cb576020926114f891848088019101612c46565b0151908116036101cb57938580610d4d565b60405163477f725360e01b815260048101839052346024820152604490fd5b9091506020813d602011611555575b8161154560209383612bb9565b810103126101cb57519086610d05565b3d9150611538565b6040833603126101cb576020604091825161157781612b4c565b853581528286013583820152815201920191610cac565b6040516317446e4b60e11b8152600490fd5b346101cb5760003660031901126101cb576115b9614e59565b60008051602061512c83398151915280546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101cb5760203660031901126101cb57611623612a36565b61162b614e59565b6001600160a01b038116156106ee5760008051602061510c83398151915280546001600160a01b0319166001600160a01b03909216919091179055005b346101cb576020806003193601126101cb57600435906001600160401b03908183116101cb57366023840112156101cb5782600401359182116101cb5760246005933660248560051b830101116101cb579291846000935b8085106116c957005b8385831b870101356000526000805160206151cc83398151915283526040600020926000805160206150ec833981519152815260406000209460005b855481101561172b578061172561171e60019389612c8e565b5089614a41565b01611705565b50600190960195945092506116c0565b346101cb5760003660031901126101cb57602060ff6000805160206151ec83398151915254166040519015158152f35b346101cb5760203660031901126101cb5760008051602061514c833981519152546001600160a01b031633036106ee576004356000526000805160206150ec83398151915260205260406000206000805160206151cc833981519152602052604060002060005b8154811015611ab8576117ee6117e88284612c8e565b50612d1f565b9061012082015115611805575b60019150016117d2565b60808201805160a08401519193916001600160a01b03918216911681036118d157506000805160206151ac83398151915254925160208201518251610100909301516064808202966001600160a01b039485169594169291908704810361036f576305f5e1000295808704620f4240149015171561036f57813b156101cb57600080946118a960405198899687958694631b47f29b60e01b86523060048701612e87565b03925af19182156106ab576001926118c2575b506117fb565b6118cb90612b1e565b846118bc565b6000805160206151ac833981519152546020830151835160c0850151610100860151959750909491926001600160a01b03169161190d91612e74565b80620f4240810204620f4240148115171561036f57813b156101cb576000620f424091611955829660405198899788968795631b47f29b60e01b875202923060048701612e87565b03925af180156106ab57611aa9575b506000805160206151ac8339815191525460a08301516020840151845160e08601516101008701519196946001600160a01b039485169416916119a691612e74565b80620f4240810204620f4240148115171561036f57813b156101cb576000620f4240916119ee82966040519a8b9788968795631b47f29b60e01b875202923060048701612e87565b03925af19283156106ab57600193611a9a575b50600483918261012082015280519260405193611a1d85612b31565b84526020840190600391828152604086019060008252606087019260008452608088019560008752516000526000805160206150ac83398151915260205260406000209751885587019051611a7181612c3c565b611a7a81612c3c565b60ff801983541691161790555160028601555190840155519101556117fb565b611aa390612b1e565b85611a01565b611ab290612b1e565b84611964565b60038301805460ff19166001179055005b346101cb5760a03660031901126101cb57611ae2612a36565b611aea612a4c565b906001600160a01b03906044359082821682036101cb5760643591608435938085168095036101cb577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009586549560ff8760401c1615966001600160401b03811680159081611d70575b6001149081611d66575b159081611d5d575b50611d4b5767ffffffffffffffff198116600117895587611d2c575b50611b8b615007565b611b93615007565b611b9b615007565b611ba433613241565b611bac615007565b611bb4615007565b611bbc615007565b600160008051602061520c833981519152556113888611611d1a57611c13611c9993611cc796166000805160206150cc8339815191529060018060a01b03166bffffffffffffffffffffffff60a01b825416179055565b6000805160206151ac83398151915280546001600160a01b031990811690921790557f627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b4038054821673acea761c27a909d4d3895128ebe6370fde2df48117905560008051602061510c83398151915280549091166001600160a01b03909216919091179055565b60008051602061514c83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60008051602061516c83398151915255611cdd57005b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b60405163115dada760e21b8152600490fd5b68ffffffffffffffffff19166801000000000000000117885588611b82565b60405163f92ee8a960e01b8152600490fd5b9050158a611b66565b303b159150611b5e565b899150611b54565b346101cb5760003660031901126101cb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611de35760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b60403660031901126101cb57611e09612a36565b6024356001600160401b0381116101cb57611e28903690600401612bf5565b906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115611fe4575b50611de357611e6c614e59565b6040516352d1902d60e01b8152908216916020918281600481875afa60009181611fb5575b50611eaf57604051634c9c8ce360e01b815260048101859052602490fd5b9284937f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90818103611f9d5750823b15611f845780546001600160a01b03191682179055604051907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2835115611f6a575060008084846101c996519101845af4903d15611f61573d611f4481612bda565b90611f526040519283612bb9565b8152600081943d92013e615048565b60609250615048565b9250505034611f7557005b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091508381813d8311611fdd575b611fcd8183612bb9565b810103126101cb57519086611e91565b503d611fc3565b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141584611e5f565b346101cb5760203660031901126101cb5760043561202e614a15565b60008051602061510c833981519152546001600160a01b031633036106ee576113888111611d1a5760008051602061516c83398151915255005b346101cb5760003660031901126101cb57612081614a15565b60008051602061510c833981519152546001600160a01b031633036106ee576120a8614a15565b6000805160206151ec83398151915260ff1981541690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b346101cb5760203660031901126101cb5760008051602061514c833981519152546001600160a01b031633036106ee5760043560008051602061518c83398151915255005b346101cb5760003660031901126101cb5760008051602061510c833981519152546001600160a01b0316338190036106ee57600080808093479082821561217a575bf1156106ab57005b506108fc612172565b346101cb5760403660031901126101cb5761219c612a4c565b60043560009081526000805160206151cc8339815191526020526040812080546001600160a01b039390929084169190805b84811061226757506121df90612db6565b9360009160005b85811061220357604051602080825281906108ab9082018a612a62565b61220d8183612c8e565b508584600483015416148015612258575b61222c575b506001016121e6565b6001919461223c61225192612d1f565b612246828b612e60565b526111d6818a612e60565b9390612223565b5085846005830154161461221e565b6122718184612c8e565b5084878181600485015416149283156122a9575b505050612295575b6001016121ce565b906122a1600191612caa565b91905061228d565b6005015416149050848789612285565b346101cb576020806003193601126101cb576122d3612a36565b6000805160206151ac83398151915254604051630988931960e21b81526001600160a01b03928316600482018190529190921692908183602481875afa9283156106ab57600093612397575b5081906024604051809681936325a5fb8960e11b835260048301525afa80156106ab57600090612369575b606093506123588184612cc8565b916040519384528301526040820152f35b508083813d8311612390575b61237f8183612bb9565b810103126101cb576060925161234a565b503d612375565b9092508181813d83116123bf575b6123af8183612bb9565b810103126101cb5751918161231f565b503d6123a5565b346101cb576020806003193601126101cb576004356000526000805160206151cc8339815191528152604060002090815461240081612d08565b9261240e6040519485612bb9565b8184526000908152828120838086015b84841061243857604051828152806108ab8185018a612a62565b600191600c9161244785612d1f565b815201920192019190849061241e565b346101cb5760203660031901126101cb5760043560009081526000805160206151cc83398151915260205260408120805490825b82811061249d57602084604051908152f35b60ff60096124ab8385612c8e565b50015416156124bd575b60010161248b565b926124c9600191612caa565b9390506124b5565b346101cb5760203660031901126101cb576124ea612a36565b60008051602061510c833981519152546001600160a01b039190821633036106ee571680156106ee576000805160206150cc83398151915280546001600160a01b0319166001600160a01b03909216919091179055005b346101cb5760203660031901126101cb5761255a612a36565b60008051602061510c833981519152546001600160a01b039190821633036106ee571680156106ee577f627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b40380546001600160a01b0319169091179055005b346101cb5760603660031901126101cb576001600160401b03600435116101cb573660236004350112156101cb576001600160401b0360043560040135116101cb573660246004356004013560061b6004350101116101cb57612618612a11565b612620612a27565b60008051602061514c833981519152546001600160a01b031633036106ee57610e106126546001600160401b038416612cd5565b0661158e5761266b6001600160401b038316614925565b61267442614925565b908181101561288257806000526000805160206150ec83398151915260205260406000209360018201821161036f57600182016000526000805160206150ec83398151915260205260406000206006810180549060ff82161561283b575b5050828654148061282e575b80612820575b6126f4575b5050505015610fdd57005b6127066001600160401b038316612cb9565b600287015560005b600435600401358110612738575050505060038301805460ff1916600117905550828080806126e9565b80847fa235c93d1b2f697aad8778fa4900285a0ee92e32ec1b0bc7e9bb0515ccf488e0604460019460061b600435016001600160401b0361277b60248301612cf4565b168282013560005260058d0160205260406000205589875411158061280c575b6127e5575b6127dc886127b060248401612cf4565b604051948594013584916040919493606084019584526001600160401b03809216602085015216910152565b0390a20161270e565b6001600160401b036127f960248301612cf4565b16600488016020526040600020556127a0565b50600487016020526040600020541561279b565b5060ff6006870154166126e4565b50600186015415156126de565b6001850183556128616128566001600160401b038616612cb9565b806001860155612cb9565b6002840155600160ff198093161790556003820190815416905586806126d2565b60405163d5b25b6360e01b8152600490fd5b346101cb576128a2366129fb565b60008051602061514c83398151915254919290916001600160a01b031633036129ec5750816000526000805160206150ec83398151915260205260406000209182541580156129e0575b80156129d4575b6129c25760008052600483016020526040600020541580156129ae575b61299c576000526000805160206151cc833981519152602052604060002090815492600080926000915b86831061294f575b6020610b99888854612ce7565b61296361295c8488612c8e565b50856132b5565b908161298c575b828610156129865760019161297e91612cc8565b92019161293a565b50612942565b9461299690612caa565b9461296a565b604051635aa4fb5d60e11b8152600490fd5b506005830160205260406000205415612910565b6040516328ad4a9560e21b8152600490fd5b506002830154156128f3565b506001830154156128ec565b63e6c4247b60e01b8152600490fd5b60409060031901126101cb576004359060243590565b602435906001600160401b03821682036101cb57565b6044359081151582036101cb57565b600435906001600160a01b03821682036101cb57565b602435906001600160a01b03821682036101cb57565b90815180825260208080930193019160005b828110612a82575050505090565b835180518652808301518684015260408082015190870152606080820151908701526080808201516001600160a01b039081169188019190915260a0808301519091169087015260c0808201519087015260e08082015190870152610100808201519087015261012080820151151590870152610140808201519087015261016090810151908601526101809094019392810192600101612a74565b6001600160401b03811161068657604052565b60a081019081106001600160401b0382111761068657604052565b604081019081106001600160401b0382111761068657604052565b61018081019081106001600160401b0382111761068657604052565b60e081019081106001600160401b0382111761068657604052565b602081019081106001600160401b0382111761068657604052565b90601f801991011681019081106001600160401b0382111761068657604052565b6001600160401b03811161068657601f01601f191660200190565b81601f820112156101cb57803590612c0c82612bda565b92612c1a6040519485612bb9565b828452602083830101116101cb57816000926020809301838601378301015290565b6004111561131857565b60005b838110612c595750506000910152565b8181015183820152602001612c49565b90602091612c8281518092818552858086019101612c46565b601f01601f1916010190565b80548210156106d857600052600c602060002091020190600090565b600019811461036f5760010190565b90610e10820180921161036f57565b9190820180921161036f57565b63685898ff1981019190821161036f57565b9190820391821161036f57565b356001600160401b03811681036101cb5790565b6001600160401b0381116106865760051b60200190565b90604051612d2c81612b67565b8254815260018301546020820152600283015460408201526003830154606082015260048301546001600160a01b03908116608083015260058401541660a0820152600683015460c0820152600783015460e08201526008830154610100820152600983015460ff161515610120820152600a830154610140820152600b90920154610160830152565b90612dc082612d08565b604090612dd06040519182612bb9565b8381528093612de1601f1991612d08565b019160005b838110612df35750505050565b6020908251612e0181612b67565b60008152826000818301526000858301526000606083015260006080830152600060a0830152600060c0830152600060e08301526000610100830152600061012083015260006101408301526000610160830152828601015201612de6565b80518210156106d85760209160051b010190565b8181029291811591840414171561036f57565b6001600160a01b03918216815291166020820152604081019190915260608101919091526080810191909152600060a082015260c00190565b909291600091825260206000805160206151cc8339815191528152604090818420958654612eed81612d08565b97612efa8551998a612bb9565b8189528652828620869084808b015b8484106130b3575050505050865184101561308d57612f289084612cc8565b928651808511613085575b50612f46612f418286612ce7565b612db6565b94612f518286612ce7565b97612f5b89612d08565b98612f6886519a8b612bb9565b808a52612f77601f1991612d08565b0184835b82811061305357505050825b868110612f9957505050505050509190565b80612fc6612fa960019385612e60565b51612fb48784612ce7565b90612fbf828d612e60565b528a612e60565b50612fd18184612e60565b515184526000805160206150ac833981519152865261304c8b876130458a808920936004612fff8c89612ce7565b95838794519661300e88612b31565b8254885260ff8c840154169061302382612c3c565b8801526002820154908701526003810154606087015201546080850152612e60565b528c612e60565b5001612f87565b875182828e61306184612b31565b8884528883850152888c850152886060850152886080850152010152018590612f7b565b935038612f33565b50509193505080519061309f82612b9e565b83825251926130ad84612b9e565b83529190565b600191600c916130c285612d1f565b8152019201920191908590612f09565b91908110156106d857610180020190565b356001600160a01b03811681036101cb5790565b90604080519061310682612b83565b6000928383528360c0602094828682015282858201528260608201528260808201528260a082015201528484526000805160206150ec83398151915283528184209182549586156131b557506001830154906002840154918160ff6006870154169760ff600388015416958152600487018852600582822054970188522054958251986131928a612b83565b895288015286015215156060850152608084015260a0830152151560c082015290565b9550915050610e1080850290858204148515171561322d5763685899009080820180921161321957636858a7100192838211613219578251956131f787612b83565b86528501528301528060608301528060808301528060a083015260c082015290565b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b84526011600452602484fd5b6001600160a01b0390811690811561329c5760008051602061512c83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b6009820154600093929060ff16614921576005600282015492838652600481016020526127106132ee6040882054600386015490612e74565b04938652016020526040842054849260068301546064613312600786015483612cc8565b1461379f57505050600481015460058201546001600160a01b03918216911681146136ca57506000805160206151ac833981519152546004820154600183015483546006850154600886015491946001600160a01b0394851694169161337791612e74565b80620f4240810204620f424014811517156136a257908894939291813b1561369e5785620f4240916133c4829660405198899788968795631b47f29b60e01b875202923060048701612e87565b03925af18015613693576136b6575b50506000805160206151ac833981519152546005820154600183015483546007850154600886015491946001600160a01b0394851694169161341491612e74565b80620f4240810204620f424014811517156136a257908894939291813b1561369e5785620f424091613461829660405198899788968795631b47f29b60e01b875202923060048701612e87565b03925af180156136935761367b575b50508054600182015460058301546000805160206151ac83398151915254604051630988931960e21b8082526001600160a01b03938416600483018190529290931694929391602082602481895afa9182156135f7578a92613647575b50604051918583528160048401526020836024818a5afa91821561363c578b92613602575b6134fe93508486614f73565b60018060a01b036004860154169160405193808552836004860152602085602481895afa9485156135f7578a956135be575b5060209060246040518098819382528760048301525afa9485156135b3578995613574575b506135639596979850614f73565b600901805460ff1916600117905590565b9094506020813d6020116135ab575b8161359060209383612bb9565b810103126135a75751969750879693613563613555565b8880fd5b3d9150613583565b6040513d8b823e3d90fd5b9094506020813d6020116135ef575b816135da60209383612bb9565b810103126135eb5751936020613530565b8980fd5b3d91506135cd565b6040513d8c823e3d90fd5b91506020833d602011613634575b8161361d60209383612bb9565b81010312613630576134fe9251916134f2565b8a80fd5b3d9150613610565b6040513d8d823e3d90fd5b9091506020813d602011613673575b8161366360209383612bb9565b810103126135eb575190386134cd565b3d9150613656565b61368490612b1e565b61368f578338613470565b8380fd5b6040513d84823e3d90fd5b8580fd5b634e487b7160e01b89526011600452602489fd5b6136bf90612b1e565b61368f5783386133d3565b60018060a096939495961b036000805160206151ac8339815191525416600184015490845491600886015493846064029460648604810361378b576305f5e1000294808604620f4240149015171561377757823b1561369e5790858094939261374a60405197889687958694631b47f29b60e01b86523060048701612e87565b03925af1801561369357613760575b5050613563565b61376a8291612b1e565b6137745780613759565b80fd5b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526011600452602487fd5b6004840154600585015496979596949593949293926001600160a01b0391821691168103613b8c57505082821015613b72576007840154925b6137e760088601548095612e74565b9283620f4240810204620f42401484151715613b5e5781811015613b4857505080915b61271061382b60008051602061516c83398151915254620f42408402612e74565b6000805160206151ac8339815191525460018801546004808a01548a5460405163644fec3b60e11b81523093810193909352602483018490526001600160a01b039182166044840181905260648401829052929a9690950498959293919291169060208a608481855afa998a15613a9c57889a613b14575b50806064026064810482036136a257806305f5e100830204620f42401490151715613b0057813b15613a9057918760c4926305f5e1008296956040519889978896631b47f29b60e01b88523060048901526024880152604487015260648601520260848401528a60a48401525af18015613af557908491613add575b5050855460018701546004808901546000805160206151ac83398151915254604051630988931960e21b8082526001600160a01b03938416948201859052959a959190921693909291602081602481885afa9081156135b357908a918a91613aa7575b5060209161398f91612cc8565b9360246040518097819382528660048301525afa938415613a9c578894613a63575b50916139c6939160049998979695938b614fbe565b604060008051602061516c83398151915254938151976139e589612b31565b80895260208901936139f681612c3c565b8452620f4240838a0195028552606089019586526080890196875281526000805160206150ac8339815191526020522095518655600186019051613a3981612c3c565b613a4281612c3c565b60ff8019835416911617905551600285015551600384015551910155613563565b9093506020813d602011613a94575b81613a7f60209383612bb9565b81010312613a9057519260046139b1565b8780fd5b3d9150613a72565b6040513d8a823e3d90fd5b9150506020813d602011613ad5575b81613ac360209383612bb9565b810103126135a7575189906020613982565b3d9150613ab6565b613ae690612b1e565b613af157823861391f565b8280fd5b6040513d86823e3d90fd5b634e487b7160e01b88526011600452602488fd5b9099506020813d602011613b40575b81613b3060209383612bb9565b81010312613a90575198386138a3565b3d9150613b23565b1115613b575760015b9161380a565b6002613b51565b634e487b7160e01b83526011600452602483fd5b82821115613b865760068401545b926137d8565b80613b80565b959695919390928181101561409e575050505060048201546005830154600684015460088501546001600160a01b03928316979194919391929091839116613bd48387612e74565b95620f424093878581020485148815171561322d57828b0361407357613bf991612e74565b8084810204841481151715613b5e579083613c939202935b612710613c2d60008051602061516c8339815191525487612e74565b049760018060a01b036000805160206151ac833981519152541660018b0154908d60208d548092604051998a92839263644fec3b60e11b845288306004860190606092959493608083019660018060a01b03809316845260208401521660408201520152565b0381855afa968715613a9c57889761403f575b50813b15613a90579160e48f8980948f8d97604051988997889663875ab05360e01b885230600489015260248801528d60448801526064870152608486015260a485015260c48401525af180156140215761402c575b5060018060a01b036000805160206151ac833981519152541660018b0154928b5492823b156135eb57908980949392613d4f60405197889687958694631b47f29b60e01b865202918b3060048701612e87565b03925af180156140215790869161400d575b505087549960018901549060018060a01b036000805160206151ac833981519152541693604051630988931960e21b8152826004820152602081602481895afa80156135b35788908a90613fd3575b613dba9250612cc8565b604051630988931960e21b81526004810184905292906020846024818a5afa9182156135f7578f86908c94613f94575b613df49650614fbe565b604051630988931960e21b815260048101839052602081602481875afa908115613f52578791613f5d575b506020613e38602492613e328c8a612ce7565b90612ce7565b9460405192838092630988931960e21b82528760048301525afa948515613f52578795613f19575b50509260049492613e78928c95613f139b9c9d614f73565b60008051602061516c833981519152549060405194613e9686612b31565b83865260406020870191613ea981612c3c565b8083528188019384526060880194855260808801958a875281526000805160206150ac8339815191526020522095518655600186019051613ee981612c3c565b613ef281612c3c565b60ff8019835416911617905551600285015551600384015551910155612cc8565b90613563565b909194506020823d602011613f4a575b81613f3660209383612bb9565b810103126137745750519282613e78613e60565b3d9150613f29565b6040513d89823e3d90fd5b90506020813d602011613f8c575b81613f7860209383612bb9565b81010312613f8857516020613e1f565b8480fd5b3d9150613f6b565b5050915091926020813d602011613fcb575b81613fb360209383612bb9565b81010312613a9057918e9185613df495945193613dea565b3d9150613fa6565b50506020813d602011614005575b81613fee60209383612bb9565b810103126140015787613dba9151613db0565b8680fd5b3d9150613fe1565b61401690612b1e565b613f88578438613d61565b6040513d88823e3d90fd5b614037919750612b1e565b839538613cfc565b9096506020813d60201161406b575b8161405b60209383612bb9565b81010312613a9057519538613ca6565b3d915061404e565b61408291506007890154612e74565b8084810204841481151715613b5e579083613c93920293613c11565b95969511156145a757505060058201546004830154929350909182916001600160a01b039182169116818103614579576140e16006860154600887015490612e74565b620f42409081810291818304149015171561321957935b61410b6006870154600888015490612e74565b90620f4240928284810204841483151715614565576141a89061271061414260008051602061516c83398151915254878702612e74565b6000805160206151ac8339815191525460018c01548c5460405163644fec3b60e11b8152306004820152602481018390526001600160a01b038c8116604483015260648201839052959094049c9396939491939290911691602090879081906084820190565b0381855afa958615613f52578796614531575b50813b15614001579160e48a8880948f8c978e604051998a98899763875ab05360e01b89523060048a015260248901528d6044890152606488015202608486015260a485015260c48401525af1801561452657614513575b5060018060a01b036000805160206151ac833981519152541660018b01548b5490823b15613630579161426393918b809460405196879586948593631b47f29b60e01b85528b3060048701612e87565b03925af18015613a9c579088916144ff575b505088549560018a01549060018060a01b036000805160206151ac833981519152541693604051630988931960e21b8152826004820152602081602481895afa801561363c578b906144cb575b6142d0915089890290612cc8565b604051630988931960e21b81526004810184905292906020846024818a5afa9182156144c0578c92614484575b6143099450858c614fbe565b604051630988931960e21b815260048101839052602081602481875afa9081156135b3578991614451575b506020614349602492613e328d8b8b02612ce7565b9460405192838092630988931960e21b82528760048301525afa9485156135b3578995614419575b505091869594939161438593600498614f73565b60008051602061516c833981519152549160408051966143a488612b31565b8588526020880192600184528289019402845260608801948552608088019589875281526000805160206150ac83398151915260205220955186556001860190516143ee81612c3c565b6143f781612c3c565b60ff801983541691161790555160028501555160038401555191015590613563565b909194506020823d602011614449575b8161443660209383612bb9565b8101031261377457505192816004614371565b3d9150614429565b90506020813d60201161447c575b8161446c60209383612bb9565b81010312613f8857516020614334565b3d915061445f565b92939091506020813d6020116144b8575b816144a260209383612bb9565b81010312613a90579061430993929151916142fd565b3d9150614495565b6040513d8e823e3d90fd5b506020813d6020116144f7575b816144e560209383612bb9565b81010312614001576142d090516142c2565b3d91506144d8565b61450890612b1e565b614001578638614275565b61451e919850612b1e565b829638614213565b6040513d87823e3d90fd5b9095506020813d60201161455d575b8161454d60209383612bb9565b81010312614001575194386141bb565b3d9150614540565b634e487b7160e01b82526011600452602482fd5b61458c6007860154600887015490612e74565b620f42409081810291818304149015171561321957936140f8565b60018060a01b036000805160206151ac83398151915254166001850154916145d6865494600888015490612e74565b9081620f4240810204620f4240148215171561377757823b1561369e57604051631b47f29b60e01b815294869486949385938793859361462093620f424002923060048701612e87565b03925af1801561369357614912575b506000805160206151ac8339815191525460058301546001840154845460078601546008870154919492936001600160a01b0393841693169161467191612e74565b9081620f4240810204620f4240148215171561377757823b1561369e57604051631b47f29b60e01b81529486948694938593879385936146bb93620f424002923060048701612e87565b03925af18015613693579082916148fe575b5050815460018301546004808501546000805160206151ac83398151915254604051630988931960e21b8082526001600160a01b039384169482018590529290911693919290602081602481885afa908115613f525787916148cc575b5060405190848252826004830152602082602481895afa918215613a9c578892614896575b5061475b928488614f73565b60018060a01b036005870154169060405192808452826004850152602084602481885afa938415613f52578794614861575b5060209060246040518097819382528660048301525afa93841561402157869461482b575b50918493916147c393600496614f73565b60008051602061516c83398151915254604051936147e085612b31565b828552602085016002815260408087019280845260608801948552608088019581875281526000805160206150ac8339815191526020522095518655600186019051613a3981612c3c565b9093506020813d602011614859575b8161484760209383612bb9565b8101031261369e5751926147c36147b2565b3d915061483a565b9093506020813d60201161488e575b8161487d60209383612bb9565b81010312614001575192602061478d565b3d9150614870565b9091506020813d6020116148c4575b816148b260209383612bb9565b81010312613a9057519061475b61474f565b3d91506148a5565b90506020813d6020116148f6575b816148e760209383612bb9565b8101031261400157513861472a565b3d91506148da565b61490790612b1e565b6137745780386146cd565b61491b90612b1e565b3861462f565b5050565b636858990081106149475763685898ff19810190811161036f57610e10900490565b60405163cec504ff60e01b8152600490fd5b9081549182158015614a09575b80156149fd575b6149f85760009283526000805160206151cc83398151915260205260408320835b81548510156149bf576149b76001916149b16149aa8886612c8e565b50866132b5565b90612cc8565b94019361498e565b6040919394507f866f813a2289b14a1e94be9b6a7db4b5ad759df3fb1466245f650642f3cc7a56925493549082519182526020820152a2565b509050565b5060028101541561496d565b50600181015415614966565b60ff6000805160206151ec833981519152541615614a2f57565b604051638dfc202b60e01b8152600490fd5b9060049081830192600291828101549260009184835260209487865260409788852054158015614e48575b614e3d578652878420549460056127109182614a8e6003998a88015490612e74565b049387520187528885205480831092116006840180546064614ab66007880192835490612cc8565b14614b4a575050505050549360008051602061516c8339815191525492875197614adf89612b31565b868952828901918683526000805160206150ac833981519152828b019482865260608c0197885260808c0199838b528352522097518855600188019051614b2581612c3c565b614b2e81612c3c565b60ff801983541691161790555190860155519084015551910155565b8a8601546005870154959c969a9498939694956001600160a01b03908116911603614c7f578b15614c6457614b879150545b60088a015490612e74565b93620f424094858102958187041490151715614c515760008051602061516c8339815191525496614bb88887612e74565b0498549a600014614c1f57506000805160206150ac83398151915281935b83519b614be28d612b31565b808d52818d0195614bf281612c3c565b8652848d0196875260608d0198895260808d019a8b528352522097518855600188019051614b2581612c3c565b15614c3c576000805160206150ac83398151915260015b93614bd6565b6000805160206150ac83398151915285614c36565b634e487b7160e01b825260118a52602482fd5b508415614c7557614b879054614b7c565b50614b8781614b7c565b92949a9091939a600014614d385750614c9f915054600888015490612e74565b91620f424092838102938185041490151715614d255760008051602061516c8339815191525494614cd08685612e74565b049654916000805160206150ac83398151915282519a614cef8c612b31565b848c52808c019460018652848d0196875260608d0198895260808d019a8b528352522097518855600188019051614b2581612c3c565b634e487b7160e01b825260118852602482fd5b159050614dd357546008870154614d4e91612e74565b91620f424092838102938185041490151715614d255760008051602061516c8339815191525494614d7f8685612e74565b049654916000805160206150ac83398151915282519a614d9e8c612b31565b848c52808c0194838652848d0196875260608d0198895260808d019a8b528352522097518855600188019051614b2581612c3c565b5092509593549360008051602061516c8339815191525492875197614df789612b31565b868952828901918483526000805160206150ac833981519152828b019482865260608c0197885260808c0199838b528352522097518855600188019051614b2581612c3c565b505050505050505050565b506005860187528885205415614a6c565b60008051602061512c833981519152546001600160a01b03163303614e7a57565b60405163118cdaa760e01b8152336004820152602490fd5b60ff6000805160206151ec8339815191525416614eab57565b60405163d93c066560e01b8152600490fd5b51906001600160401b03821682036101cb57565b519060ff821682036101cb57565b519061ffff821682036101cb57565b90614ef882612d08565b604090614f086040519182612bb9565b8381528093614f19601f1991612d08565b019160009060005b848110614f2f575050505050565b6020908251614f3d81612b4c565b848152828581830152828701015201614f21565b9061ffff614f6c602092959495604085526040850190612c69565b9416910152565b93917fa15779a7b66856c8539d52d6e89beef2a2229d642158ec7a873b24067daa1bd79260809294604051958652602086015260408501526000606085015260018060a01b031692a3565b9460809291947fa15779a7b66856c8539d52d6e89beef2a2229d642158ec7a873b24067daa1bd79460405196875260208701526040860152606085015260018060a01b031692a3565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561503657565b604051631afcd79f60e31b8152600490fd5b9061506f575080511561505d57805190602001fd5b60405163d6bda27560e01b8152600490fd5b815115806150a2575b615080575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561507856fe627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b40d627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b400627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b407627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b4049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b405627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b406627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b409627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b402627bc893d5f4048695eb6f1d0f7e17f469d944fd83ca2c18162d4bfe5e67b408cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212205a97244a187548723d59f7023536594e52ccd60b0f20940aa6ff6e46a275cefe64736f6c63430008160033