0 txs
2.1k calls
constructor
constructor()
functions
assetFee
viewfunction assetFee(address) view returns (uint24)
chainlinkOracle
viewfunction chainlinkOracle(address) view returns (address)
closeSwapRequests
viewfunction closeSwapRequests(bytes32) view returns (bytes32 key, uint256 longAmountFromGMX, uint256 shortAmountFromGMX, uint256 longAmountAvailableToSwap, uint256 shortAmountAvailableToSwap, uint256 leftOver, address longToken, address gmMarketToken, bool done)
eighteenDecimalAsset
viewfunction eighteenDecimalAsset(address) view returns (bool)
estimatePositionProfit
viewfunction estimatePositionProfit(bytes32 key, uint256 _returnedLongToken, uint256 _returnedShortToken) view returns (uint256)
getDepositRecord
viewfunction getDepositRecord(bytes32 key) view returns (tuple)
getEstimatedMarketTokenPrice
viewfunction getEstimatedMarketTokenPrice(address longToken) view returns (int256)
getLatestData
viewfunction getLatestData(address _token, bool _inDecimal) view returns (uint256)
getMarketTokenPrice
viewfunction getMarketTokenPrice(address longToken, bytes32 pnlFactorType, bool maximize) view returns (int256)
getPositionDebt
viewfunction getPositionDebt(address _user, uint256 _positionID) view returns (tuple)
getWithdrawRecord
viewfunction getWithdrawRecord(bytes32 key) view returns (tuple)
isOrderCreatedForKey
viewfunction isOrderCreatedForKey(bytes32) view returns (bool)
isOrderForMultipleSwap
viewfunction isOrderForMultipleSwap(bytes32) view returns (bool)
manualWithdraw
viewfunction manualWithdraw(address) view returns (bool)
nineDecimalsAsset
viewfunction nineDecimalsAsset(address) view returns (bool)
orderRefunded
viewfunction orderRefunded(bytes32) view returns (uint256 feesRefunded, uint256 amountRefunded, uint256 longTokenAmountReturned, uint256 shortTokenAmountReturned, uint256 gmTokensRefunded, uint256 depositOrWithdrawal, bool cancelled)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
RoleStore
viewfunction RoleStore() view returns (address)
sixDecimalAsset
viewfunction sixDecimalAsset(address) view returns (bool)
strategyAddresses
viewfunction strategyAddresses() view returns (address USDC, address WaterContract, address VodkaV2, address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
tempPayableAddress
viewfunction tempPayableAddress() view returns (address)
userRefunds
viewfunction userRefunds(address, uint256) view returns (bytes32)
userToRefund
viewfunction userToRefund(bytes32) view returns (address)
VodkaV2Swapper
viewfunction VodkaV2Swapper() view returns (address)
WETH
viewfunction WETH() view returns (address)
WrappedBTC
viewfunction WrappedBTC() view returns (address)
afterDepositCancellation
nonpayablefunction afterDepositCancellation(bytes32 key, tuple deposit, tuple eventData)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32 key, tuple deposit, tuple eventData)
afterWithdrawalCancellation
nonpayablefunction afterWithdrawalCancellation(bytes32 key, tuple withdrawal, tuple eventData)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32 key, tuple withdrawal, tuple eventData)
executeSwap
nonpayablefunction executeSwap(uint256 _amount, address _tokenIn, address _tokenOut, address _recipient) returns (uint256)
finalizeClosePosition
nonpayablefunction finalizeClosePosition(bytes32 key, uint256 _received)
fixWithdrawalExecution
nonpayablefunction fixWithdrawalExecution(bytes32 key, uint256 _longAmount, uint256 _shortAmount)
fixWithdrawalManual
nonpayablefunction fixWithdrawalManual(bytes32 key, uint256 _receivedLongAmount, uint256 _receivedShortAmount)
initialize
nonpayablefunction initialize(address _USDC, address _VodkaV2)
refundExecutionFee
payablefunction refundExecutionFee(bytes32 key, tuple eventData) payable
renounceOwnership
nonpayablefunction renounceOwnership()
requestGMXV2Swap
payablefunction requestGMXV2Swap(bytes32 _key) payable
setChainlinkOracleForAsset
nonpayablefunction setChainlinkOracleForAsset(address _token, address _oracle)
setEighteenDecimalAsset
nonpayablefunction setEighteenDecimalAsset(address _asset, bool _eighteenDecimal)
setManualWithdraw
nonpayablefunction setManualWithdraw(address _token, bool _manual)
setNineDecimalAsset
nonpayablefunction setNineDecimalAsset(address _asset, bool _nineDecimal)
setSixDecimalAsset
nonpayablefunction setSixDecimalAsset(address _asset, bool _sixDecimal)
setStrategyParams
nonpayablefunction setStrategyParams(address _univ3Router, address _dataStore, address _oracle, address _reader, address _depositHandler, address _withdrawalHandler)
setUniv3Fee
nonpayablefunction setUniv3Fee(uint24 _univ3Fee, address _asset)
takeAll
nonpayablefunction takeAll(address _inputAsset)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ChainlinkOracleSet
event ChainlinkOracleSet(address token, address oracle)
CloseFinalized
event CloseFinalized(bytes32 key, uint256 shortTokenAmount, uint256 longTokenAmount)
Initialized
event Initialized(uint8 version)
KeysPendingSwap
event KeysPendingSwap(bytes32 key, uint256 longAmount, uint256 shortAmount, bool isOrderForMultipleSwap, uint256 longAmountAvailableToSwap, uint256 shortAmountAvailableToSwap)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RepayDepositFailure
event RepayDepositFailure(address user, uint256 amount, string errorMessage, string stackTrace)
SecondSwapRequest
event SecondSwapRequest(bytes32 key, uint256 leftOver)
StrategyParamsSet
event StrategyParamsSet(address univ3Router, address dataStore, address oracle, address reader, address depositHandler, address withdrawalHandler)
Unpaused
event Unpaused(address account)
errors
No errors.
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615eca80620000f36000396000f3fe6080604052600436106102275760003560e01c80630afda351146102335780630fa63fe414610255578063100e196d146102a15780631774e1cb1461034c57806319c2d37e1461038d57806321d41b32146103ba5780632b70b891146103eb5780632f2708a21461040b5780633201ab4d1461042b578063395aef8e1461044b5780633a2cb99f1461048e5780633c372240146104bc5780634152313b146104cf578063485cc955146104ef578063542059431461050f5780635c975abb1461052f5780635f82eba814610547578063715018a61461056757806372ccfa601461057c578063753672d51461059c57806376f1ef10146105bd5780637db2bd3e146105dd5780638c4d0d601461060e5780638da5cb5b1461063f57806394fce92b1461065457806396e1ae10146106815780639a4a1a9a146106b25780639f093871146106d25780639f17af9914610764578063a5ab05ab14610784578063a5efb24d146107a4578063a7c49f5a146107c4578063a8f098d2146107fb578063ad5c46481461081c578063b2fd94951461083d578063b63d535414610850578063ba871dcd14610870578063bf3810a914610890578063c4b2b980146108b0578063c9888ec1146108cb578063c9ac221a146108eb578063cc6624661461090b578063ceb0c4451461092b578063e88c356114610958578063f2fde38b14610a22578063f5faa89214610a42578063fd77d17514610a73578063ff06f7b214610a9357600080fd5b3661022e57005b600080fd5b34801561023f57600080fd5b5061025361024e366004613cdf565b610ab3565b005b34801561026157600080fd5b50610288610270366004613d18565b61010c6020526000908152604090205462ffffff1681565b60405162ffffff90911681526020015b60405180910390f35b3480156102ad57600080fd5b5060c95460ca5460cb5460cc5460cd5460ce5460cf5460d05460d1546102f2986001600160a01b03908116988116978116968116958116948116938116928116911689565b604080516001600160a01b039a8b168152988a1660208a01529689169688019690965293871660608701529186166080860152851660a0850152841660c0840152831660e083015290911661010082015261012001610298565b34801561035857600080fd5b5061037d610367366004613d18565b6101156020526000908152604090205460ff1681565b6040519015158152602001610298565b34801561039957600080fd5b506103ad6103a8366004613d49565b610ae7565b6040516102989190613d84565b3480156103c657600080fd5b5061037d6103d5366004613d18565b6101146020526000908152604090205460ff1681565b3480156103f757600080fd5b50610253610406366004613d92565b610b74565b34801561041757600080fd5b50610253610426366004613cdf565b610d05565b34801561043757600080fd5b50610253610446366004613dbe565b610d39565b34801561045757600080fd5b50610481610466366004613d18565b60d4602052600090815260409020546001600160a01b031681565b6040516102989190613de0565b34801561049a57600080fd5b506104ae6104a9366004613d18565b61105d565b604051908152602001610298565b6102536104ca366004614ffa565b6112d8565b3480156104db57600080fd5b506102536104ea366004613d92565b61159d565b3480156104fb57600080fd5b5061025361050a366004615040565b61186f565b34801561051b57600080fd5b5061025361052a366004613cdf565b6119c9565b34801561053b57600080fd5b5060975460ff1661037d565b34801561055357600080fd5b5060d554610481906001600160a01b031681565b34801561057357600080fd5b506102536119fd565b34801561058857600080fd5b5061025361059736600461511d565b611a11565b3480156105a857600080fd5b5061011354610481906001600160a01b031681565b3480156105c957600080fd5b506104ae6105d8366004615284565b611ac7565b3480156105e957600080fd5b5061037d6105f8366004613d18565b61010d6020526000908152604090205460ff1681565b34801561061a57600080fd5b5061037d6106293660046152d7565b6101126020526000908152604090205460ff1681565b34801561064b57600080fd5b50610481611b29565b34801561066057600080fd5b5061067461066f3660046152d7565b611b38565b60405161029891906152f0565b34801561068d57600080fd5b5061037d61069c3660046152d7565b6101116020526000908152604090205460ff1681565b3480156106be57600080fd5b506104ae6106cd366004615362565b611be3565b3480156106de57600080fd5b5061072d6106ed3660046152d7565b60d2602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919060ff1687565b604080519788526020880196909652948601939093526060850191909152608084015260a0830152151560c082015260e001610298565b34801561077057600080fd5b5061025361077f366004613cdf565b611ec1565b34801561079057600080fd5b5061025361079f366004613d18565b611ef5565b3480156107b057600080fd5b506102536107bf3660046153a4565b611fe1565b3480156107d057600080fd5b506104816107df3660046152d7565b610110602052600090815260409020546001600160a01b031681565b34801561080757600080fd5b5061010a54610481906001600160a01b031681565b34801561082857600080fd5b5061010b54610481906001600160a01b031681565b61025361084b3660046152d7565b612085565b34801561085c57600080fd5b5060d654610481906001600160a01b031681565b34801561087c57600080fd5b506104ae61088b366004613d92565b6125b0565b34801561089c57600080fd5b506104ae6108ab366004613cdf565b6127ba565b3480156108bc57600080fd5b506102536105973660046153ca565b3480156108d757600080fd5b506104ae6108e6366004613d49565b612a7f565b3480156108f757600080fd5b5061025361090636600461511d565b612ab0565b34801561091757600080fd5b50610253610926366004615040565b612f55565b34801561093757600080fd5b5061094b6109463660046152d7565b612fb1565b6040516102989190615541565b34801561096457600080fd5b506109d06109733660046152d7565b61010f60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007909701549596949593949293919290916001600160a01b0391821691811690600160a01b900460ff1689565b60408051998a5260208a0198909852968801959095526060870193909352608086019190915260a08501526001600160a01b0390811660c08501521660e0830152151561010082015261012001610298565b348015610a2e57600080fd5b50610253610a3d366004613d18565b613086565b348015610a4e57600080fd5b5061037d610a5d366004613d18565b61010e6020526000908152604090205460ff1681565b348015610a7f57600080fd5b50610253610a8e3660046153ca565b6130fc565b348015610a9f57600080fd5b50610253610aae3660046155c5565b61328b565b610abb613359565b6001600160a01b0391909116600090815261011460205260409020805460ff1916911515919091179055565b6040805180820182526000808252602082015260cb5491516301e73a5f60e61b815290916001600160a01b0316906379ce97c090610b2b9086908690600401615647565b6040805180830381865afa158015610b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6b9190615690565b90505b92915050565b610b7c613359565b6000610b8784611b38565b60c954909150610ba2906001600160a01b03163330856133b8565b60a0810151610bbc906001600160a01b03163330866133b8565b60cb5460c954610bd9916001600160a01b03918216911684613423565b60cb5460a0820151610bf8916001600160a01b03918216911685613423565b8060800151610c875760cb546001600160a01b0316639137be7a858585610c208383836125b0565b6040518563ffffffff1660e01b8152600401610c3f94939291906156ac565b6020604051808303816000875af1158015610c5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8291906156d2565b610cfe565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610cbb908790879087906004016156ef565b6020604051808303816000875af1158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906156d2565b5050505050565b610d0d613359565b6001600160a01b0391909116600090815261010d60205260409020805460ff1916911515919091179055565b610d41613442565b610113546001600160a01b0316331480610d735750610d5e611b29565b6001600160a01b0316336001600160a01b0316145b610db25760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064015b60405180910390fd5b6000610dbd83611b38565b600084815261010f602052604080822083519184015193945092610de19190610ae7565b6000868152610111602052604090205490915060ff168015610e1357506000858152610112602052604090205460ff16155b15610e9e5780516001830154610e2a90869061571b565b610e34919061572e565b600383019081556000868152610112602052604090819020805460ff191660011790558354915490517f9bb3f265562ad4d42fe6bc8ec0cc15e82e766e4e3ba72c75c66d2fb3fdd6f1ab92610e9192908252602082015260400190565b60405180910390a161104c565b80516005830154600090610eb390879061571b565b60cb5460c954919250610ed3916001600160a01b03908116911683613423565b60cb5460a0860151610ef2916001600160a01b03918216911684613423565b60078401805460ff60a01b1916600160a01b1790556080850151610f965760cb546001600160a01b0316639137be7a888484610f2f8383836125b0565b6040518563ffffffff1660e01b8152600401610f4e94939291906156ac565b6020604051808303816000875af1158015610f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9191906156d2565b61100d565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90610fca908a90869086906004016156ef565b6020604051808303816000875af1158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d91906156d2565b507f9c341c91384ec36b9d393c98615da5bf201c12f801111ca44b299c61a6b3730b878284604051611041939291906156ef565b60405180910390a150505b5050506110596001606555565b5050565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611092908690600401613de0565b60c060405180830381865afa1580156110af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d3919061574c565b90506000604051806080016040528083604001516001600160a01b0316815260200183606001516001600160a01b0316815260200183600001516001600160a01b0316815260200183602001516001600160a01b031681525090506000604051806040016040528061114a856060015160016127ba565b815260200161115e856060015160016127ba565b81525090506000604051806040016040528061117b8860016127ba565b815260200161118b8860016127ba565b90526040805180820190915260c95491925060009181906111b6906001600160a01b031660016127ba565b815260c9546020909101906111d5906001600160a01b031660016127ba565b905260cf5460cd546040519293506000926001600160a01b039283169263095ce6c5921690889088908890889061123e906020016020808252601b908201527a4d41585f504e4c5f464143544f525f464f525f4445504f5349545360281b604082015260600190565b6040516020818303038152906040528051906020012060006040518863ffffffff1660e01b815260040161127897969594939291906157f6565b61018060405180830381865afa158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba919061587d565b5090506112cc64e8d4a5100082615947565b98975050505050505050565b60d6546040516001600160a01b039091169063ac4ab3fb9033906112fe90602001615975565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401611331929190615647565b602060405180830381865afa15801561134e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137291906156d2565b61138e5760405162461bcd60e51b8152600401610da990615999565b600061139983612fb1565b905060006113a684611b38565b82519091506001600160a01b03166115165760cb54604051631f6f85f960e11b8152600481018690526001600160a01b0390911690633edf0bf290602401602060405180830381865afa158015611401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142591906156d2565b156114bd5760cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa158015611474573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149891906159c2565b60d580546001600160a01b0319166001600160a01b0392909216919091179055611564565b8060800151156114f05760e081015160d580546001600160a01b0319166001600160a01b03909216919091179055611564565b805160d580546001600160a01b0319166001600160a01b03909216919091179055611564565b806080015161154157815160d580546001600160a01b0319166001600160a01b038316179055611562565b60e081015160d580546001600160a01b0319166001600160a01b0383161790555b505b60d5546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610cfe573d6000803e3d6000fd5b6115a5613359565b60006115b084611b38565b905060006115c682600001518360400151610ae7565b825160d580546001600160a01b0319166001600160a01b0390921691909117905590506115f1613c62565b8151859085906000908190841115611658578551600090611612908661572e565b905061161e818661572e565b60a089015160c95491945061163f918391906001600160a01b0316306134a2565b60808701819052611650908561571b565b9150506116ee565b600086602001518461166a919061572e565b60c95460a08a015191925061168b9183916001600160a01b031690306134a2565b60a0870181905287516000916116a290889061571b565b6116ac919061572e565b60a08a015160c9549192506000916116cf9184916001600160a01b0316306134a2565b9050886000015194508089602001516116e8919061571b565b93505050505b670de0b6b3a7640000826117078960a0015160016127ba565b61171191906159df565b61171b91906159f6565b60c086015260cb5460c95461173d916001600160a01b03918216911683613423565b60cb5460a088015161175c916001600160a01b03918216911684613423565b86608001516117eb5760cb546001600160a01b0316639137be7a8b84846117848383836125b0565b6040518563ffffffff1660e01b81526004016117a394939291906156ac565b6020604051808303816000875af11580156117c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e691906156d2565b611862565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e9061181f908d90869086906004016156ef565b6020604051808303816000875af115801561183e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186291906156d2565b5050505050505050505050565b600054610100900460ff161580801561188f5750600054600160ff909116105b806118b0575061189e3061378e565b1580156118b0575060005460ff166001145b6119135760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610da9565b6000805460ff191660011790558015611936576000805461ff0019166101001790555b60cb80546001600160a01b038085166001600160a01b03199283161790925560c980549286169290911691909117905561196e61379d565b6119766137cc565b61197e6137fb565b80156119c4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6119d1613359565b6001600160a01b0391909116600090815261011560205260409020805460ff1916911515919091179055565b611a05613359565b611a0f600061382a565b565b60d6546040516001600160a01b039091169063ac4ab3fb903390611a3790602001615975565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401611a6a929190615647565b602060405180830381865afa158015611a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aab91906156d2565b6119c45760405162461bcd60e51b8152600401610da990615999565b60cb546000906001600160a01b03163314611b125760405162461bcd60e51b815260206004820152600b60248201526a2737ba102b37b235b0ab1960a91b6044820152606401610da9565b611b1e858585856134a2565b90505b949350505050565b6033546001600160a01b031690565b6040805161010081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e082015260cb54915163191618a160e21b81526004810184905290916001600160a01b03169063645862849060240161010060405180830381865afa158015611bbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190615a0a565b60cb54604051639c735fbb60e01b815260009182916001600160a01b0390911690639c735fbb90611c18908890600401613de0565b60c060405180830381865afa158015611c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c59919061574c565b9050611c63613c62565b60408051608081018252838201516001600160a01b0390811682526060808601805183166020808601919091528751841685870152808801518416928501929092529085018990528715158585015260ce5490519351631773dc6560e21b815292936000939190921691635dcf719491611ce09190600401613de0565b6040805180830381865afa158015611cfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d209190615690565b60ce548551604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611d5691600401613de0565b6040805180830381865afa158015611d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d969190615690565b60ce546020870151604051631773dc6560e21b81529293506000926001600160a01b0390921691635dcf719491611dcf91600401613de0565b6040805180830381865afa158015611deb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0f9190615690565b60cf5460cd5460208801516040808a0151905163095ce6c560e01b81529495506001600160a01b039384169463095ce6c594611e599416928a928a928a928a9290916004016157f6565b61018060405180830381865afa158015611e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9b919061587d565b50808652611eaf9064e8d4a5100090615947565b94859052509298975050505050505050565b611ec9613359565b6001600160a01b0391909116600090815261010e60205260409020805460ff1916911515919091179055565b611efd613359565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190611f2c903090600401613de0565b602060405180830381865afa158015611f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6d9190615abe565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb90611f9e9033908590600401615647565b6020604051808303816000875af1158015611fbd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c491906156d2565b611fe9613359565b6001600160a01b03811661200f5760405162461bcd60e51b8152600401610da990615ad7565b6113888262ffffff1611156120555760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b6044820152606401610da9565b6001600160a01b0316600090815261010c60205260409020805462ffffff191662ffffff92909216919091179055565b61208d613442565b60cb546040805163aced166160e01b815290516001600160a01b039092169163aced1661916004808201926020929091908290030181865afa1580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fb91906159c2565b6001600160a01b0316336001600160a01b0316146121485760405162461bcd60e51b815260206004820152600a6024820152692737ba1035b2b2b832b960b11b6044820152606401610da9565b600061215382611b38565b600083815261010f602052604090206006810154919250906001600160a01b03166121ad5760405162461bcd60e51b815260206004820152600a602482015269139bc81c995c5d595cdd60b21b6044820152606401610da9565b6007810154600160a01b900460ff16156121f25760405162461bcd60e51b8152600401610da990602080825260049082015263646f6e6560e01b604082015260600190565b60068101546007820154600085815261011160205260409020546001600160a01b03928316929091169060ff16801561223b57506000858152610112602052604090205460ff16155b1561236e5760008360040154116122645760405162461bcd60e51b8152600401610da990615afd565b60c9546101135460048086015460405163095ea7b360e01b81526001600160a01b039485169463095ea7b39461229e949116929101615647565b6020604051808303816000875af11580156122bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e191906156d2565b506101135460c95460048581015460008981526101106020526040908190205490516341c70b0160e11b81526001600160a01b039586169563838e160295349561233795918316948a948f949091169101615b20565b6000604051808303818588803b15801561235057600080fd5b505af1158015612364573d6000803e3d6000fd5b505050505061259f565b60008581526101116020526040902054661550f7dca700009060ff166123d757662aa1efb94e00003410156123d75760405162461bcd60e51b815260206004820152600f60248201526e4e6f7420656e6f756768206665657360881b6044820152606401610da9565b60008460030154116123fb5760405162461bcd60e51b8152600401610da990615afd565b61011354600385015460405163095ea7b360e01b81526001600160a01b038681169363095ea7b393612434939290911691600401615647565b6020604051808303816000875af1158015612453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247791906156d2565b5061011354600385015460008881526101106020526040908190205490516341c70b0160e11b81526001600160a01b039384169363838e16029386936124ca938a938a938f939092911690600401615b20565b6000604051808303818588803b1580156124e357600080fd5b505af11580156124f7573d6000803e3d6000fd5b5050506000888152610111602052604090205460ff16915061259d905057846080015115612562578460e001516001600160a01b03166108fc829081150290604051600060405180830381858888f1935050505015801561255c573d6000803e3d6000fd5b5061259d565b84516040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561259b573d6000803e3d6000fd5b505b505b505050506125ad6001606555565b50565b6000806125bc85611b38565b60cb548151604080840151905163de91a5e560e01b81529394506000936001600160a01b039093169263de91a5e5926125f9929091600401615647565b61018060405180830381865afa158015612617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263b9190615b76565b9050600061265183600001518460400151610ae7565b905060006126648460a0015160006127ba565b61010a5460a086015191925060009182916001600160a01b039081169116036126d25768056bc75e2d6310000061269b848b6159df565b6126a591906159f6565b915068056bc75e2d631000008385600001516126c191906159df565b6126cb91906159f6565b905061271f565b68327cb2734119d3b7a9601e1b6126e9848b6159df565b6126f391906159f6565b915068327cb2734119d3b7a9601e1b83856000015161271291906159df565b61271c91906159f6565b90505b60c954600090612739906001600160a01b031660016127ba565b9050600069d3c21bcecceda1000000612752838c6159df565b61275c91906159f6565b9050600061276a828661571b565b88516020890151919250600091612781908761571b565b61278b919061571b565b9050600081831161279d5760006127a7565b6127a7828461572e565b9f9e505050505050505050505050505050565b600080600061010960009054906101000a90046001600160a01b03166001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015612813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128379190615c56565b5091945092505082159050600061284e834261572e565b9050610e1081116128995760405162461bcd60e51b815260206004820152601560248201527423b930b1b2903832b934b7b2103737ba1037bb32b960591b6044820152606401610da9565b816128da5760405162461bcd60e51b815260206004820152601160248201527029b2b8bab2b731b2b91034b9903237bbb760791b6044820152606401610da9565b6001600160a01b03808816600090815260d46020526040808220548151633fabe5a360e21b815291519293169163feaf968c9160048082019260a0929091908290030181865afa158015612932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129569190615c56565b5050506001600160a01b038a16600090815261010d6020526040812054919350915060ff16156129a35761298f826402540be4006159df565b61299c90620f42406159df565b90506112cc565b61010a546001600160a01b03908116908a16036129d5576129c9826402540be4006159df565b61299c906127106159df565b6001600160a01b0389166000908152610114602052604090205460ff1615612a1857662386f26fc10000612a0e836402540be4006159df565b61299c91906159f6565b6001600160a01b0389166000908152610115602052604090205460ff1615612a5557612a49826402540be4006159df565b61299c906103e86159df565b620f4240612a68836402540be4006159df565b612a7291906159f6565b9998505050505050505050565b60d36020528160005260406000208181548110612a9b57600080fd5b90600052602060002001600091509150505481565b60cb548251516001600160a01b03908116911614612ae05760405162461bcd60e51b8152600401610da990615ca6565b60d6546040516001600160a01b039091169063ac4ab3fb903390612b0690602001615975565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401612b39929190615647565b602060405180830381865afa158015612b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b7a91906156d2565b612b965760405162461bcd60e51b8152600401610da990615999565b6000612ba184611b38565b90506000612bb782600001518360400151610ae7565b9050612bc1613c62565b6000846020015160000151600081518110612bde57612bde615cd4565b60200260200101516020015190506000856020015160000151600181518110612c0957612c09615cd4565b60209081029190910181015181015160a08701516001600160a01b0316600090815261010e90925260409091205490915060ff16612eb7576000808560000151841115612ca5578551600090612c5f908661572e565b9050612c6b818661572e565b60a089015160c954919450612c8c918391906001600160a01b0316306134a2565b60808701819052612c9d908561571b565b915050612d3b565b6000866020015184612cb7919061572e565b60c95460a08a0151919250612cd89183916001600160a01b031690306134a2565b60a087018190528751600091612cef90889061571b565b612cf9919061572e565b60a08a015160c954919250600091612d1c9184916001600160a01b0316306134a2565b905088600001519450808960200151612d35919061571b565b93505050505b670de0b6b3a764000082612d548960a0015160016127ba565b612d5e91906159df565b612d6891906159f6565b60c086015260cb5460c954612d8a916001600160a01b03918216911683613423565b60cb5460a0880151612da9916001600160a01b03918216911684613423565b8660800151612e385760cb546001600160a01b0316639137be7a8b8484612dd18383836125b0565b6040518563ffffffff1660e01b8152600401612df094939291906156ac565b6020604051808303816000875af1158015612e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3391906156d2565b612eaf565b60cb54604051635f4e6fb760e11b81526001600160a01b039091169063be9cdf6e90612e6c908d90869086906004016156ef565b6020604051808303816000875af1158015612e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eaf91906156d2565b505050612f4b565b60cb5460a0860151604051639c735fbb60e01b81526000926001600160a01b031691639c735fbb91612eec9190600401613de0565b60c060405180830381865afa158015612f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f2d919061574c565b9050612f4989848488600001518960200151866040015161387c565b505b5050505050505050565b612f5d613359565b6001600160a01b038216612f835760405162461bcd60e51b8152600401610da990615ad7565b6001600160a01b03918216600090815260d46020526040902080546001600160a01b03191691909216179055565b61301860405180610120016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600061ffff16815260200160006001600160a01b031681525090565b60cb5460405163546fcf3960e01b8152600481018490526001600160a01b039091169063546fcf399060240161012060405180830381865afa158015613062573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e9190615cea565b61308e613359565b6001600160a01b0381166130f35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610da9565b6125ad8161382a565b60cb548251516001600160a01b0390811691161461312c5760405162461bcd60e51b8152600401610da990615ca6565b60d6546040516001600160a01b039091169063ac4ab3fb90339061315290602001615975565b604051602081830303815290604052805190602001206040518363ffffffff1660e01b8152600401613185929190615647565b602060405180830381865afa1580156131a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c691906156d2565b6131e25760405162461bcd60e51b8152600401610da990615999565b60cb5460208201515180516001600160a01b039092169163862a820891869160009061321057613210615cd4565b6020026020010151602001516040518363ffffffff1660e01b8152600401613242929190918252602082015260400190565b6020604051808303816000875af1158015613261573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328591906156d2565b50505050565b613293613359565b60cc80546001600160a01b038881166001600160a01b0319928316811790935560cd8054898316908416811790915560ce8054898416908516811790915560cf8054898516908616811790915560d08054898616908716811790915560d18054958916959096168517909555604080519687526020870193909352918501526060840152608083019190915260a08201527f03f1afd7ce30865f51a6e0b71bd812eb2a48c45e187b710c8e67eaaa53c15c579060c00160405180910390a1505050505050565b33613362611b29565b6001600160a01b031614611a0f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610da9565b6040516001600160a01b03808516602483015283166044820152606481018290526132859085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526139f2565b6119c48363a9059cbb60e01b84846040516024016133ec929190615647565b6002606554036134945760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610da9565b6002606555565b6001606555565b6000846000036134b457506000611b21565b60cc5460405163095ea7b360e01b81526000916001600160a01b038088169263095ea7b3926134e99216908a90600401615647565b6020604051808303816000875af1158015613508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061352c91906156d2565b5061010b546001600160a01b0386811691161480159061355b575061010b546001600160a01b03858116911614155b1561367c576040805160a0810182526001600160a01b03878116600090815261010c60209081528482205461010b5480851684528684205460608d811b6001600160601b031990811660c08a015260e894851b6001600160e81b031990811660d48b015293821b811660d78a01529190931b90911660eb8701528a821b1660ee860152855160e281870301815261010286018752855288841691850191909152428486015283018a9052608083015260cc54925163c04b8d5960e01b81529192169063c04b8d5990613631908490600401615dc2565b6020604051808303816000875af1158015613650573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136749190615abe565b915050611b1e565b60408051610100810182526001600160a01b038781168083528782166020808501918252600092835261010c90528482205462ffffff90811685870190815289851660608701908152426080880190815260a088018f815260c0890187815260e08a0197885260cc549a5163414bf38960e01b81528a518a16600482015296518916602488015293519094166044860152905186166064850152516084840152905160a48301525160c48201529051821660e48201529192169063414bf38990610104016020604051808303816000875af115801561375f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137839190615abe565b979650505050505050565b6001600160a01b03163b151590565b600054610100900460ff166137c45760405162461bcd60e51b8152600401610da990615e1a565b611a0f613ac7565b600054610100900460ff166137f35760405162461bcd60e51b8152600401610da990615e1a565b611a0f613af7565b600054610100900460ff166138225760405162461bcd60e51b8152600401610da990615e1a565b611a0f613b2a565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600086815261010f602052604081209061389588611b38565b888355600183018890556002830187905590508487116138b65760006138c0565b6138c0858861572e565b6003830190815560a08201516006840180546001600160a01b039283166001600160a01b031991821617909155600785018054878416908316179055835160008c81526101106020526040902080549190931691161790555415801561392557508386115b1561395f57613934848761572e565b600483015560058201849055600088815261011160205260409020805460ff19166001179055613967565b600582018690555b6001820154600283015460008a81526101116020908152604091829020546003870154600488015484518f8152938401969096529282019390935260ff90921615156060830152608082015260a08101919091527f41aa0b642d7539321de3afda61eeb8c6bbf79ab4ea7a567e420c9663a846a7599060c00160405180910390a15050505050505050565b6000613a47826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613b519092919063ffffffff16565b9050805160001480613a68575080806020019051810190613a6891906156d2565b6119c45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610da9565b600054610100900460ff16613aee5760405162461bcd60e51b8152600401610da990615e1a565b611a0f3361382a565b600054610100900460ff16613b1e5760405162461bcd60e51b8152600401610da990615e1a565b6097805460ff19169055565b600054610100900460ff1661349b5760405162461bcd60e51b8152600401610da990615e1a565b6060611b21848460008585600080866001600160a01b03168587604051613b789190615e65565b60006040518083038185875af1925050503d8060008114613bb5576040519150601f19603f3d011682016040523d82523d6000602084013e613bba565b606091505b50915091506137838783838760608315613c33578251600003613c2c57613be08561378e565b613c2c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610da9565b5081611b21565b611b218383815115613c485781518083602001fd5b8060405162461bcd60e51b8152600401610da99190615e81565b604051806101000160405280600081526020016000801916815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b03811681146125ad57600080fd5b8035613ccc81613cac565b919050565b80151581146125ad57600080fd5b60008060408385031215613cf257600080fd5b8235613cfd81613cac565b91506020830135613d0d81613cd1565b809150509250929050565b600060208284031215613d2a57600080fd5b8135613d3581613cac565b9392505050565b6001600160a01b03169052565b60008060408385031215613d5c57600080fd5b8235613d6781613cac565b946020939093013593505050565b80518252602090810151910152565b60408101610b6e8284613d75565b600080600060608486031215613da757600080fd5b505081359360208301359350604090920135919050565b60008060408385031215613dd157600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613e2c57613e2c613df4565b60405290565b60405160e081016001600160401b0381118282101715613e2c57613e2c613df4565b604051606081016001600160401b0381118282101715613e2c57613e2c613df4565b60405161012081016001600160401b0381118282101715613e2c57613e2c613df4565b60405161016081016001600160401b0381118282101715613e2c57613e2c613df4565b60405161018081016001600160401b0381118282101715613e2c57613e2c613df4565b604051601f8201601f191681016001600160401b0381118282101715613f0757613f07613df4565b604052919050565b60006001600160401b03821115613f2857613f28613df4565b5060051b60200190565b600082601f830112613f4357600080fd5b81356001600160401b03811115613f5c57613f5c613df4565b613f6f601f8201601f1916602001613edf565b818152846020838601011115613f8457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112613fb257600080fd5b81356020613fc7613fc283613f0f565b613edf565b82815260059290921b84018101918181019086841115613fe657600080fd5b8286015b8481101561400a578035613ffd81613cac565b8352918301918301613fea565b509695505050505050565b600082601f83011261402657600080fd5b81356020614036613fc283613f0f565b82815260059290921b8401810191818101908684111561405557600080fd5b8286015b8481101561400a5780356001600160401b03808211156140795760008081fd5b908801906040828b03601f19018113156140935760008081fd5b61409b613e0a565b87840135838111156140ad5760008081fd5b6140bb8d8a83880101613f32565b8252509083013590828211156140d15760008081fd5b6140df8c8984870101613fa1565b818901528652505050918301918301614059565b6000604080838503121561410657600080fd5b61410e613e0a565b915082356001600160401b038082111561412757600080fd5b818501915085601f83011261413b57600080fd5b8135602061414b613fc283613f0f565b82815260059290921b8401810191818101908984111561416a57600080fd5b8286015b848110156141e9578035868111156141865760008081fd5b8701808c03601f190189131561419c5760008081fd5b6141a4613e0a565b85820135888111156141b65760008081fd5b6141c48e8883860101613f32565b82525090890135906141d582613cac565b80860191909152835291830191830161416e565b508752508681013594508285111561420057600080fd5b61420c88868901614015565b81870152505050505092915050565b600082601f83011261422c57600080fd5b8135602061423c613fc283613f0f565b828152600592831b850182019282820191908785111561425b57600080fd5b8387015b858110156143505780356001600160401b038082111561427f5760008081fd5b908901906040828c03601f19018113156142995760008081fd5b6142a1613e0a565b88840135838111156142b35760008081fd5b6142c18e8b83880101613f32565b82525081840135838111156142d65760008081fd5b8085019450508c603f8501126142ee57600092508283fd5b888401359250614300613fc284613f0f565b83815292861b8401820192898101908e85111561431d5760008081fd5b948301945b8486101561433b5785358252948a0194908a0190614322565b828b015250875250505092840192840161425f565b5090979650505050505050565b6000604080838503121561437057600080fd5b614378613e0a565b915082356001600160401b038082111561439157600080fd5b818501915085601f8301126143a557600080fd5b813560206143b5613fc283613f0f565b82815260059290921b840181019181810190898411156143d457600080fd5b8286015b84811015614446578035868111156143f05760008081fd5b8701808c03601f19018913156144065760008081fd5b61440e613e0a565b85820135888111156144205760008081fd5b61442e8e8883860101613f32565b825250908901358582015283529183019183016143d8565b508752508681013594508285111561445d57600080fd5b61420c8886890161421b565b600082601f83011261447a57600080fd5b8135602061448a613fc283613f0f565b828152600592831b85018201928282019190878511156144a957600080fd5b8387015b858110156143505780356001600160401b03808211156144cd5760008081fd5b908901906040828c03601f19018113156144e75760008081fd5b6144ef613e0a565b88840135838111156145015760008081fd5b61450f8e8b83880101613f32565b82525081840135838111156145245760008081fd5b8085019450508c603f85011261453c57600092508283fd5b88840135925061454e613fc284613f0f565b83815292861b8401820192898101908e85111561456b5760008081fd5b948301945b848610156145895785358252948a0194908a0190614570565b828b01525087525050509284019284016144ad565b600060408083850312156145b157600080fd5b6145b9613e0a565b915082356001600160401b03808211156145d257600080fd5b818501915085601f8301126145e657600080fd5b813560206145f6613fc283613f0f565b82815260059290921b8401810191818101908984111561461557600080fd5b8286015b84811015614687578035868111156146315760008081fd5b8701808c03601f19018913156146475760008081fd5b61464f613e0a565b85820135888111156146615760008081fd5b61466f8e8883860101613f32565b82525090890135858201528352918301918301614619565b508752508681013594508285111561469e57600080fd5b61420c88868901614469565b600082601f8301126146bb57600080fd5b813560206146cb613fc283613f0f565b828152600592831b85018201928282019190878511156146ea57600080fd5b8387015b858110156143505780356001600160401b038082111561470e5760008081fd5b908901906040828c03601f19018113156147285760008081fd5b614730613e0a565b88840135838111156147425760008081fd5b6147508e8b83880101613f32565b82525081840135838111156147655760008081fd5b8085019450508c603f85011261477d57600092508283fd5b88840135925061478f613fc284613f0f565b83815292861b8401820192898101908e8511156147ac5760008081fd5b948301945b848610156147d657853593506147c684613cd1565b838252948a0194908a01906147b1565b828b01525087525050509284019284016146ee565b600060408083850312156147fe57600080fd5b614806613e0a565b915082356001600160401b038082111561481f57600080fd5b818501915085601f83011261483357600080fd5b81356020614843613fc283613f0f565b82815260059290921b8401810191818101908984111561486257600080fd5b8286015b848110156148e15780358681111561487e5760008081fd5b8701808c03601f19018913156148945760008081fd5b61489c613e0a565b85820135888111156148ae5760008081fd5b6148bc8e8883860101613f32565b82525090890135906148cd82613cd1565b808601919091528352918301918301614866565b50875250868101359450828511156148f857600080fd5b61420c888689016146aa565b6000604080838503121561491757600080fd5b61491f613e0a565b915082356001600160401b038082111561493857600080fd5b818501915085601f83011261494c57600080fd5b8135602061495c613fc283613f0f565b82815260059290921b8401810191818101908984111561497b57600080fd5b8286015b84811015614687578035868111156149975760008081fd5b8701808c03601f19018913156149ad5760008081fd5b6149b5613e0a565b85820135888111156149c75760008081fd5b6149d58e8883860101613f32565b8252509089013585820152835291830191830161497f565b600082601f8301126149fe57600080fd5b81356020614a0e613fc283613f0f565b82815260059290921b84018101918181019086841115614a2d57600080fd5b8286015b8481101561400a576001600160401b038135811015614a4f57600080fd5b813588016040818b03601f19011215614a6757600080fd5b614a6f613e0a565b8682013583811115614a8057600080fd5b614a8e8c8983860101613f32565b825250604082013583811115614aa357600080fd5b8083019250508a603f830112614ab857600080fd5b86820135614ac8613fc282613f0f565b81815260059190911b830160400190888101908d831115614ae857600080fd5b604085015b83811015614b20578681351115614b0357600080fd5b614b138f60408335890101613f32565b8352918a01918a01614aed565b50838a0152505085525050918301918301614a31565b60006040808385031215614b4957600080fd5b614b51613e0a565b915082356001600160401b0380821115614b6a57600080fd5b818501915085601f830112614b7e57600080fd5b81356020614b8e613fc283613f0f565b82815260059290921b84018101918181019089841115614bad57600080fd5b8286015b84811015614c3d57803586811115614bc95760008081fd5b8701808c03601f1901891315614bdf5760008081fd5b614be7613e0a565b8582013588811115614bf95760008081fd5b614c078e8883860101613f32565b8252508982013588811115614c1c5760008081fd5b614c2a8e8883860101613f32565b8288015250845250918301918301614bb1565b5087525086810135945082851115614c5457600080fd5b61420c888689016149ed565b600082601f830112614c7157600080fd5b81356020614c81613fc283613f0f565b82815260059290921b84018101918181019086841115614ca057600080fd5b8286015b8481101561400a576001600160401b038135811015614cc257600080fd5b813588016040818b03601f19011215614cda57600080fd5b614ce2613e0a565b8682013583811115614cf357600080fd5b614d018c8983860101613f32565b825250604082013583811115614d1657600080fd5b8083019250508a603f830112614d2b57600080fd5b86820135614d3b613fc282613f0f565b81815260059190911b830160400190888101908d831115614d5b57600080fd5b604085015b83811015614d93578681351115614d7657600080fd5b614d868f60408335890101613f32565b8352918a01918a01614d60565b50838a0152505085525050918301918301614ca4565b60006040808385031215614dbc57600080fd5b614dc4613e0a565b915082356001600160401b0380821115614ddd57600080fd5b818501915085601f830112614df157600080fd5b81356020614e01613fc283613f0f565b82815260059290921b84018101918181019089841115614e2057600080fd5b8286015b84811015614eb057803586811115614e3c5760008081fd5b8701808c03601f1901891315614e525760008081fd5b614e5a613e0a565b8582013588811115614e6c5760008081fd5b614e7a8e8883860101613f32565b8252508982013588811115614e8f5760008081fd5b614e9d8e8883860101613f32565b8288015250845250918301918301614e24565b5087525086810135945082851115614ec757600080fd5b61420c88868901614c60565b600060e08284031215614ee557600080fd5b614eed613e32565b905081356001600160401b0380821115614f0657600080fd5b614f12858386016140f3565b83526020840135915080821115614f2857600080fd5b614f348583860161435d565b60208401526040840135915080821115614f4d57600080fd5b614f598583860161459e565b60408401526060840135915080821115614f7257600080fd5b614f7e858386016147eb565b60608401526080840135915080821115614f9757600080fd5b614fa385838601614904565b608084015260a0840135915080821115614fbc57600080fd5b614fc885838601614b36565b60a084015260c0840135915080821115614fe157600080fd5b50614fee84828501614da9565b60c08301525092915050565b6000806040838503121561500d57600080fd5b8235915060208301356001600160401b0381111561502a57600080fd5b61503685828601614ed3565b9150509250929050565b6000806040838503121561505357600080fd5b823561505e81613cac565b91506020830135613d0d81613cac565b600060e0828403121561508057600080fd5b615088613e32565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015292915050565b6000602082840312156150e257600080fd5b604051602081016001600160401b038111828210171561510457615104613df4565b604052905080823561511581613cd1565b905292915050565b60008060006060848603121561513257600080fd5b8335925060208401356001600160401b038082111561515057600080fd5b90850190610120828803121561516557600080fd5b61516d613e54565b82358281111561517c57600080fd5b830160e0818a03121561518e57600080fd5b615196613e32565b61519f82613cc1565b81526151ad60208301613cc1565b60208201526151be60408301613cc1565b60408201526151cf60608301613cc1565b60608201526151e060808301613cc1565b608082015260a0820135848111156151f757600080fd5b6152038b828501613fa1565b60a08301525060c08201358481111561521b57600080fd5b6152278b828501613fa1565b60c08301525082525061523d886020850161506e565b60208201526152508861010085016150d0565b604082015280945050604086013591508082111561526d57600080fd5b5061527a86828701614ed3565b9150509250925092565b6000806000806080858703121561529a57600080fd5b8435935060208501356152ac81613cac565b925060408501356152bc81613cac565b915060608501356152cc81613cac565b939692955090935050565b6000602082840312156152e957600080fd5b5035919050565b60006101008201905060018060a01b0380845116835260208401516020840152604084015160408401526060840151151560608401526080840151151560808401528060a08501511660a08401525060c083015160c083015260e083015161535b60e0840182613d3c565b5092915050565b60008060006060848603121561537757600080fd5b833561538281613cac565b925060208401359150604084013561539981613cd1565b809150509250925092565b600080604083850312156153b757600080fd5b823562ffffff8116811461505e57600080fd5b6000806000606084860312156153df57600080fd5b8335925060208401356001600160401b03808211156153fd57600080fd5b818601915061012080838903121561541457600080fd5b61541c613e54565b83358381111561542b57600080fd5b8401808a0383131561543c57600080fd5b615444613e76565b925061544f81613cc1565b835261545d60208201613cc1565b602084015261546e60408201613cc1565b604084015261547f60608201613cc1565b606084015261549060808201613cc1565b60808401526154a160a08201613cc1565b60a08401526154b260c08201613cc1565b60c084015260e0810135848111156154c957600080fd5b6154d58b828401613fa1565b60e08501525061010080820135858111156154ef57600080fd5b6154fb8c828501613fa1565b82860152508383526155108b6020880161506e565b60208401526155218b8288016150d0565b604084015250508095505050604086013591508082111561526d57600080fd5b60006101208201905060018060a01b0383511682526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c0830151151560c083015260e08301516155a960e084018261ffff169052565b50610100808401516155bd82850182613d3c565b505092915050565b60008060008060008060c087890312156155de57600080fd5b86356155e981613cac565b955060208701356155f981613cac565b9450604087013561560981613cac565b9350606087013561561981613cac565b9250608087013561562981613cac565b915060a087013561563981613cac565b809150509295509295509295565b6001600160a01b03929092168252602082015260400190565b60006040828403121561567257600080fd5b61567a613e0a565b9050815181526020820151602082015292915050565b6000604082840312156156a257600080fd5b610b6b8383615660565b93845260208401929092526040830152606082015260800190565b8051613ccc81613cd1565b6000602082840312156156e457600080fd5b8151613d3581613cd1565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610b6e57610b6e615705565b81810381811115610b6e57610b6e615705565b8051613ccc81613cac565b600060c0828403121561575e57600080fd5b60405160c081016001600160401b038111828210171561578057615780613df4565b604052825161578e81613cac565b8152602083015161579e81613cac565b602082015260408301516157b181613cac565b604082015260608301516157c481613cac565b606082015260808301516157d781613cac565b608082015260a08301516157ea81613cac565b60a08201529392505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a01511660808401525061584660a0830188613d75565b61585360e0830187613d75565b615861610120830186613d75565b8361016083015282151561018083015298975050505050505050565b60008082840361018081121561589257600080fd5b8351925061016080601f19830112156158aa57600080fd5b6158b2613e99565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525081860151818401525050809150509250929050565b634e487b7160e01b600052601260045260246000fd5b60008261595657615956615931565b600160ff1b82146000198414161561597057615970615705565b500590565b6020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b6020808252600f908201526e4e6f742070726f70657220726f6c6560881b604082015260600190565b6000602082840312156159d457600080fd5b8151613d3581613cac565b8082028115828204841417610b6e57610b6e615705565b600082615a0557615a05615931565b500490565b6000610100808385031215615a1e57600080fd5b604051908101906001600160401b0382118183101715615a4057615a40613df4565b8160405283519150615a5182613cac565b8181526020840151602082015260408401516040820152615a74606085016156c7565b6060820152615a85608085016156c7565b6080820152615a9660a08501615741565b60a082015260c084015160c0820152615ab160e08501615741565b60e0820152949350505050565b600060208284031215615ad057600080fd5b5051919050565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b60208082526009908201526804e6f203020737761760bc1b604082015260600190565b6001600160a01b039586168152938516602085015260408401929092526060830152909116608082015260a00190565b805163ffffffff81168114613ccc57600080fd5b805161ffff81168114613ccc57600080fd5b60006101808284031215615b8957600080fd5b615b91613ebc565b8251815260208301516020820152604083015160408201526060830151606082015260808301516080820152615bc960a08401615741565b60a0820152615bda60c08401615b50565b60c0820152615beb60e08401615741565b60e0820152610100615bfe818501615b64565b90820152610120615c108482016156c7565b90820152610140615c228482016156c7565b90820152610160615c34848201615741565b908201529392505050565b80516001600160501b0381168114613ccc57600080fd5b600080600080600060a08688031215615c6e57600080fd5b615c7786615c3f565b9450602086015193506040860151925060608601519150615c9a60808701615c3f565b90509295509295909350565b60208082526014908201527320b1b1b7bab73a1034b9b73a102b37b235b0ab1960611b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006101208284031215615cfd57600080fd5b615d05613e76565b615d0e83615741565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a0820152615d4e60c084016156c7565b60c0820152615d5f60e08401615b64565b60e0820152610100615c34818501615741565b60005b83811015615d8d578181015183820152602001615d75565b50506000910152565b60008151808452615dae816020860160208601615d72565b601f01601f19169290920160200192915050565b602081526000825160a06020840152615dde60c0840182615d96565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251615e77818460208701615d72565b9190910192915050565b602081526000610b6b6020830184615d9656fea2646970667358221220919196ca3ae087f513dd1215c10b4240a4c77410bb64ec37b85467756aa3937964736f6c63430008130033