0 txs
1 call
constructor
constructor()
functions
getAnnouncedOrder
viewfunction getAnnouncedOrder(address account) view returns (tuple order)
hasOrderExpired
viewfunction hasOrderExpired(address account) view returns (bool expired)
MIN_DEPOSIT
viewfunction MIN_DEPOSIT() view returns (uint256)
MODULE_KEY
viewfunction MODULE_KEY() view returns (bytes32)
vault
viewfunction vault() view returns (address)
announceLeverageAdjust
nonpayablefunction announceLeverageAdjust(uint256 tokenId, int256 marginAdjustment, int256 additionalSizeAdjustment, uint256 fillPrice, uint256 keeperFee)
announceLeverageClose
nonpayablefunction announceLeverageClose(uint256 tokenId, uint256 minFillPrice, uint256 keeperFee)
announceLeverageOpen
nonpayablefunction announceLeverageOpen(uint256 margin, uint256 additionalSize, uint256 maxFillPrice, uint256 keeperFee)
announceLeverageOpenFor
nonpayablefunction announceLeverageOpenFor(uint256 margin, uint256 additionalSize, uint256 maxFillPrice, uint256 keeperFee, address receiver)
announceStableDeposit
nonpayablefunction announceStableDeposit(uint256 depositAmount, uint256 minAmountOut, uint256 keeperFee)
announceStableDepositFor
nonpayablefunction announceStableDepositFor(uint256 depositAmount, uint256 minAmountOut, uint256 keeperFee, address receiver)
announceStableWithdraw
nonpayablefunction announceStableWithdraw(uint256 withdrawAmount, uint256 minAmountOut, uint256 keeperFee)
cancelExistingOrder
nonpayablefunction cancelExistingOrder(address account)
cancelOrderByModule
nonpayablefunction cancelOrderByModule(address account)
executeOrder
payablefunction executeOrder(address account, bytes[] priceUpdateData) payable
initialize
nonpayablefunction initialize(address _vault)
setVault
nonpayablefunction setVault(address _vault)
events
Initialized
event Initialized(uint64 version)
OrderAnnounced
event OrderAnnounced(address account, uint8 orderType, uint256 keeperFee)
OrderCancelled
event OrderCancelled(address account, uint8 orderType)
OrderExecuted
event OrderExecuted(address account, uint8 orderType, uint256 keeperFee)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
AmountTooSmall
error AmountTooSmall(uint256 amount, uint256 minAmount)
DelayedOrderInvalid
error DelayedOrderInvalid(address account)
ExecutableTimeNotReached
error ExecutableTimeNotReached(uint256 executableTime)
FailedInnerCall
error FailedInnerCall()
HighSlippage
error HighSlippage(uint256 supplied, uint256 accepted)
InvalidFee
error InvalidFee(uint256 fee)
InvalidInitialization
error InvalidInitialization()
InvariantViolation
error InvariantViolation(string variableName)
MaxFillPriceTooLow
error MaxFillPriceTooLow(uint256 maxFillPrice, uint256 currentPrice)
MinFillPriceTooHigh
error MinFillPriceTooHigh(uint256 minFillPrice, uint256 currentPrice)
ModuleKeyEmpty
error ModuleKeyEmpty()
NotEnoughBalanceForWithdraw
error NotEnoughBalanceForWithdraw(address account, uint256 totalBalance, uint256 withdrawAmount)
NotEnoughMarginForFees
error NotEnoughMarginForFees(int256 marginAmount, uint256 feeAmount)
NotInitializing
error NotInitializing()
NotTokenOwner
error NotTokenOwner(uint256 tokenId, address msgSender)
OnlyAuthorizedModule
error OnlyAuthorizedModule(address msgSender)
OnlyOwner
error OnlyOwner(address msgSender)
OrderHasExpired
error OrderHasExpired()
OrderHasNotExpired
error OrderHasNotExpired()
Paused
error Paused(bytes32 moduleKey)
PositionCreatesBadDebt
error PositionCreatesBadDebt()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ValueNotPositive
error ValueNotPositive(string variableName)
WithdrawalTooSmall
error WithdrawalTooSmall(uint256 withdrawAmount, uint256 keeperFee)
ZeroAddress
error ZeroAddress(string variableName)
ZeroValue
error ZeroValue(string variableName)
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b615a9880620000e66000396000f3fe6080604052600436106100fe5760003560e01c80637b6d834011610095578063e014396911610064578063e01439691461029e578063e1e158a5146102be578063ed46834f146102d5578063f2f6a2ce146102f5578063fbfa77cf1461031557600080fd5b80637b6d83401461021157806390f9644f1461023e578063b1c41fc31461025e578063c4d66de81461027e57600080fd5b8063360f699b116100d1578063360f699b1461019a5780633a7b1c21146101ba5780633d23b9ca146101cd5780636817031b146101f157600080fd5b806303bb4f69146101035780630fc9b8221461012557806326e7dfe9146101455780632cf3aadf1461017a575b600080fd5b34801561010f57600080fd5b5061012361011e36600461505a565b61034d565b005b34801561013157600080fd5b50610123610140366004615077565b6104f4565b34801561015157600080fd5b5061016561016036600461505a565b610f53565b60405190151581526020015b60405180910390f35b34801561018657600080fd5b506101236101953660046150b2565b61105d565b3480156101a657600080fd5b506101236101b53660046150b2565b61166a565b6101236101c83660046150de565b611af6565b3480156101d957600080fd5b506101e360005481565b604051908152602001610171565b3480156101fd57600080fd5b5061012361020c36600461505a565b6120a2565b34801561021d57600080fd5b5061023161022c36600461505a565b6121a6565b6040516101719190615225565b34801561024a57600080fd5b50610123610259366004615238565b6122d9565b34801561026a57600080fd5b506101236102793660046150b2565b6122ec565b34801561028a57600080fd5b5061012361029936600461505a565b6122f8565b3480156102aa57600080fd5b506101236102b936600461505a565b61242e565b3480156102ca57600080fd5b506101e3620f424081565b3480156102e157600080fd5b506101236102f036600461526a565b61261c565b34801561030157600080fd5b506101236103103660046152b7565b612c2b565b34801561032157600080fd5b50600154610335906001600160a01b031681565b6040516001600160a01b039091168152602001610171565b60015460405163399dd46360e01b81523360048201526001600160a01b039091169063399dd46390602401602060405180830381865afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b991906152f8565b15156000036103e257604051633b9e98fd60e11b81523360048201526024015b60405180910390fd5b6001600160a01b0381166000908152603260205260409081902081516080810190925280546104f19284929091829060ff16600681111561042557610425615165565b600681111561043657610436615165565b81526001820154602082015260028201546001600160401b0316604082015260038201805460609092019161046a9061531a565b80601f01602080910402602001604051908101604052809291908181526020018280546104969061531a565b80156104e35780601f106104b8576101008083540402835291602001916104e3565b820191906000526020600020905b8154815290600101906020018083116104c657829003601f168201915b505050505081525050612f97565b50565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916105299160040190815260200190565b602060405180830381865afa158015610546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056a91906152f8565b1561058e57600054604051630cb09dc760e01b81526004016103d991815260200190565b600061059a82336134bc565b9050841580156105a8575083155b156106085760405163046c82ad60e41b815260206004820152602960248201527f6d617267696e41646a7573746d656e747c6164646974696f6e616c53697a6541604482015268191a9d5cdd1b595b9d60ba1b60648201526084016103d9565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190615354565b6040516331a9108f60e11b81526004810189905290915033906001600160a01b03831690636352211e90602401602060405180830381865afa1580156106d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f49190615354565b6001600160a01b03161461072457604051630da7a30b60e31b8152600481018890523360248201526044016103d9565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b6004820152600091829182916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015610780573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a49190615354565b6001600160a01b03166398d5fdca6040518163ffffffff1660e01b81526004016040805180830381865afa1580156107e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108049190615371565b5090506000881261090c57604051634f599c3160e11b8152600481018990526001600160a01b03851690639eb3386290602401602060405180830381865afa158015610854573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108789190615395565b600154604051630ce8fe6160e01b8152600481018b9052602481018390529193506001600160a01b031690630ce8fe619060440160006040518083038186803b1580156108c457600080fd5b505afa1580156108d8573d6000803e3d6000fd5b50505050808710156109075760405163086aa6a360e41b815260048101889052602481018290526044016103d9565b6109b3565b6001600160a01b038416639eb338626109278a6000196153c4565b6040518263ffffffff1660e01b815260040161094591815260200190565b602060405180830381865afa158015610962573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109869190615395565b9150808711156109b35760405163117838d960e01b815260048101889052602481018290526044016103d9565b6109bd86836153f4565b60015460405163eb02c30160e01b8152600481018d9052919450600093508992506001600160a01b03169063eb02c30190602401608060405180830381865afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a329190615445565b60400151610a4091906154aa565b90506000808913610a5a57610a55838a6154d2565b610a5c565b885b604051633de9a8bb60e11b8152600481018c90526001600160a01b03861690637bd3517690602401606060405180830381865afa158015610aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac591906154f9565b60400151610ad391906154aa565b90506000811280610ae45750600082125b15610b4557604051634f686b7d60e01b815260206004820152602a60248201527f6e65774d617267696e4166746572536574746c656d656e747c6e65774164646960448201526974696f6e616c53697a6560b01b60648201526084016103d9565b600154604051630aa10e9f60e41b8152706c69717569646174696f6e4d6f64756c6560781b600482015282916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015610ba1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc59190615354565b6040516314a184e760e01b815260048101859052602481018a90526001600160a01b0391909116906314a184e790604401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c379190615395565b10610c5557604051632904a7fd60e11b815260040160405180910390fd5b604051630d46a8eb60e11b815260048101829052602481018390526001600160a01b03851690631a8d51d69060440160006040518083038186803b158015610c9c57600080fd5b505afa158015610cb0573d6000803e3d6000fd5b505050505050604051806080016040528060056006811115610cd457610cd4615165565b8152602001858152602001846001600160401b031681526020016040518060c001604052808b81526020018a81526020018981526020018881526020018785610d1d9190615535565b815260200184815250604051602001610d759190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b60408051601f19818403018152918152915233600090815260326020522081518154829060ff19166001836006811115610db157610db1615165565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b0390921691909117905560608201516003820190610dfb908261558e565b50506040516324b51b7960e11b8152600481018a90526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b038416915063496a36f290604401600060405180830381600087803b158015610e5557600080fd5b505af1158015610e69573d6000803e3d6000fd5b505050506000871315610f0d57610f0d3330610e85848b6153f4565b600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efc9190615354565b6001600160a01b031692919061370e565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c33600586604051610f419392919061564d565b60405180910390a15050505050505050565b6001600160a01b0381166000908152603260205260408120600201546001600160401b031680610fc65760405163046c82ad60e41b815260206004820152601060248201527f65786563757461626c65417454696d650000000000000000000000000000000060448201526064016103d9565b60015460408051631ab1532b60e01b8152905142926001600160a01b031691631ab1532b9160048083019260209291908290030181865afa15801561100f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110339190615678565b611046906001600160401b0316836153f4565b1015611053576001611056565b60005b9392505050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916110929160040190815260200190565b602060405180830381865afa1580156110af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d391906152f8565b156110f757600054604051630cb09dc760e01b81526004016103d991815260200190565b600061110382336134bc565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b600482015291925060009182916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015611162573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111869190615354565b6040516331a9108f60e11b81526004810188905290915033906001600160a01b03831690636352211e90602401602060405180830381865afa1580156111d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f49190615354565b6001600160a01b03161461122457604051630da7a30b60e31b8152600481018790523360248201526044016103d9565b60015460405163eb02c30160e01b8152600481018890526000916001600160a01b03169063eb02c30190602401608060405180830381865afa15801561126e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112929190615445565b604001519050816001600160a01b0316639eb33862826040518263ffffffff1660e01b81526004016112c691815260200190565b602060405180830381865afa1580156112e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113079190615395565b604051633de9a8bb60e11b8152600481018990529093506000906001600160a01b03841690637bd3517690602401606060405180830381865afa158015611352573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137691906154f9565b604001519050600061138887866153f4565b9050808212156113b557604051630c46115560e31b815260048101839052602481018290526044016103d9565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa15801561140d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114319190615354565b6001600160a01b03166398d5fdca6040518163ffffffff1660e01b81526004016040805180830381865afa15801561146d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114919190615371565b509050808911156114bf5760405163117838d960e01b8152600481018a9052602481018290526044016103d9565b505050506040518060800160405280600460068111156114e1576114e1615165565b815260208082018790526001600160401b0386166040808401919091528051606080820183528b82528184018b815291830188815283518086018e90529251838501525182820152825180830382018152608090920183529093019290925233600090815260329091522081518154829060ff1916600183600681111561156a5761156a615165565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b03909216919091179055606082015160038201906115b4908261558e565b50506040516324b51b7960e11b8152600481018890526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b038316915063496a36f290604401600060405180830381600087803b15801561160e57600080fd5b505af1158015611622573d6000803e3d6000fd5b505050507f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c3360048660405161165a9392919061564d565b60405180910390a1505050505050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b9161169f9160040190815260200190565b602060405180830381865afa1580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e091906152f8565b1561170457600054604051630cb09dc760e01b81526004016103d991815260200190565b600061171082336134bc565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117919190615354565b6040516370a0823160e01b81523360048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156117db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ff9190615395565b90508581101561183257604051637462f12160e01b815233600482015260248101829052604481018790526064016103d9565b60405163d24545a760e01b8152600481018790526000906001600160a01b0384169063d24545a790602401602060405180830381865afa15801561187a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189e9190615395565b6001549091506001600160a01b0316630ce8fe6160006118bd846156a1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260440160006040518083038186803b15801561191157600080fd5b505afa158015611925573d6000803e3d6000fd5b50505050808511156119545760405163666f986f60e11b815260048101829052602481018690526044016103d9565b61195e8582615535565b90508581101561198b5760405163437879d160e01b815260048101829052602481018790526044016103d9565b5060408051608081019091528060028152602001858152602001846001600160401b031681526020016040518060400160405280898152602001888152506040516020016119d991906156bd565b60408051601f19818403018152918152915233600090815260326020522081518154829060ff19166001836006811115611a1557611a15615165565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b0390921691909117905560608201516003820190611a5f908261558e565b505060405163282d3fdf60e01b8152336004820152602481018890526001600160a01b038416915063282d3fdf90604401600060405180830381600087803b158015611aaa57600080fd5b505af1158015611abe573d6000803e3d6000fd5b505050507f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c3360028660405161165a9392919061564d565b611afe61378a565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b91611b339160040190815260200190565b602060405180830381865afa158015611b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7491906152f8565b15611b9857600054604051630cb09dc760e01b81526004016103d991815260200190565b600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b60048201526001600160a01b0390911690339084908490849063aa10e9f090602401602060405180830381865afa158015611bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1b9190615354565b6001600160a01b03166308f9c88e348585856040518563ffffffff1660e01b8152600401611c4b939291906156fd565b6000604051808303818588803b158015611c6457600080fd5b505af1158015611c78573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526001600160a01b0390911693506000925083915063aa10e9f090602401602060405180830381865afa158015611cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cfd9190615354565b905060006040518060400160405280611d15856137d4565b8152602001836001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7c9190615395565b90526001600160a01b038b1660009081526032602052604081205491925060ff90911690816006811115611db257611db2615165565b03611ddb5760405163f84a80a760e01b81526001600160a01b038c1660048201526024016103d9565b600160009054906101000a90046001600160a01b03166001600160a01b031663146a89cc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611e2b57600080fd5b505af1158015611e3f573d6000803e3d6000fd5b50505050600160009054906101000a90046001600160a01b03166001600160a01b03166360435c306040518163ffffffff1660e01b815260040160006040518083038186803b158015611e9157600080fd5b505afa158015611ea5573d6000803e3d6000fd5b5060019250611eb2915050565b816006811115611ec457611ec4615165565b03611ed757611ed28b6139e0565b611f5f565b6002816006811115611eeb57611eeb615165565b03611ef957611ed28b613d38565b6003816006811115611f0d57611f0d615165565b03611f1b57611ed28b61414c565b6004816006811115611f2f57611f2f615165565b03611f3d57611ed28b6143bf565b6005816006811115611f5157611f51615165565b03611f5f57611f5f8b614693565b5060006040518060400160405280611f76866137d4565b8152602001846001600160a01b03166367f77e546040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdd9190615395565b905282518151919250611fef91614a74565b612063836001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612030573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120549190615395565b83602001518360200151614adb565b61206c84614b42565b505050505050505061209d60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b505050565b60015460408051638da5cb5b60e01b8152905133926001600160a01b031691638da5cb5b9160048083019260209291908290030181865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f9190615354565b6001600160a01b03161461213857604051630543601560e11b81523360048201526024016103d9565b6001600160a01b0381166121775760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b60448201526064016103d9565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6121d060408051608081019091528060008152600060208201819052604082015260609081015290565b6001600160a01b038216600090815260326020526040908190208151608081019092528054829060ff16600681111561220b5761220b615165565b600681111561221c5761221c615165565b81526001820154602082015260028201546001600160401b031660408201526003820180546060909201916122509061531a565b80601f016020809104026020016040519081016040528092919081815260200182805461227c9061531a565b80156122c95780601f1061229e576101008083540402835291602001916122c9565b820191906000526020600020905b8154815290600101906020018083116122ac57829003601f168201915b5050505050815250509050919050565b6122e6848484843361261c565b50505050565b61209d83838333612c2b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff1615906001600160401b03166000811580156123425750825b90506000826001600160401b0316600114801561235e5750303b155b90508115801561236c575080155b1561238a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156123be57845468ff00000000000000001916680100000000000000001785555b6123d76b3232b630bcb2b227b93232b960a11b87614c1f565b6123df614cb0565b831561242657845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161165a565b505050505050565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff16600681111561246857612468615165565b600681111561247957612479615165565b81526001820154602082015260028201546001600160401b031660408201526003820180546060909201916124ad9061531a565b80601f01602080910402602001604051908101604052809291908181526020018280546124d99061531a565b80156125265780601f106124fb57610100808354040283529160200191612526565b820191906000526020600020905b81548152906001019060200180831161250957829003601f168201915b50505050508152505090506000600681111561254457612544615165565b8151600681111561255757612557615165565b03612560575050565b600160009054906101000a90046001600160a01b03166001600160a01b0316631ab1532b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d79190615678565b81604001516125e691906157ad565b6001600160401b0316421161260e5760405163f31e62b160e01b815260040160405180910390fd5b6126188282612f97565b5050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b916126519160040190815260200190565b602060405180830381865afa15801561266e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269291906152f8565b156126b657600054604051630cb09dc760e01b81526004016103d991815260200190565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127349190615354565b9050600061274284846134bc565b604051634f599c3160e11b8152600481018890529091506000906001600160a01b03841690639eb3386290602401602060405180830381865afa15801561278d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b19190615395565b600154604051630ce8fe6160e01b8152600481018a9052602481018390529192506001600160a01b031690630ce8fe619060440160006040518083038186803b1580156127fd57600080fd5b505afa158015612811573d6000803e3d6000fd5b5050604051630d46a8eb60e11b8152600481018b9052602481018a90526001600160a01b0386169250631a8d51d6915060440160006040518083038186803b15801561285c57600080fd5b505afa158015612870573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b81526b6f7261636c654d6f64756c6560a01b6004820152600093506001600160a01b03909116915063aa10e9f090602401602060405180830381865afa1580156128ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f29190615354565b6001600160a01b03166398d5fdca6040518163ffffffff1660e01b81526004016040805180830381865afa15801561292e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129529190615371565b509050808710156129805760405163086aa6a360e41b815260048101889052602481018290526044016103d9565b600154604051630aa10e9f60e41b8152706c69717569646174696f6e4d6f64756c6560781b60048201528a916001600160a01b03169063aa10e9f090602401602060405180830381865afa1580156129dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a009190615354565b6040516314a184e760e01b8152600481018b9052602481018a90526001600160a01b0391909116906314a184e790604401602060405180830381865afa158015612a4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a729190615395565b10612a9057604051632904a7fd60e11b815260040160405180910390fd5b60408051608081019091528060038152602001878152602001846001600160401b031681526020016040518060a001604052808c81526020018b81526020018a8152602001858152602001336001600160a01b0316815250604051602001612b369190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526001600160a01b03608084015116608083015292915050565b60408051601f1981840301815291815291526001600160a01b038716600090815260326020522081518154829060ff19166001836006811115612b7b57612b7b615165565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b0390921691909117905560608201516003820190612bc5908261558e565b50612be491503390503084612bda8a8e6153f4565b610e8591906153f4565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c85600388604051612c189392919061564d565b60405180910390a1505050505050505050565b600154600054604051632b47fe9b60e01b81526001600160a01b0390921691632b47fe9b91612c609160040190815260200190565b602060405180830381865afa158015612c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca191906152f8565b15612cc557600054604051630cb09dc760e01b81526004016103d991815260200190565b6000612cd183836134bc565b600154604051630b85d2d960e11b8152600481018890529192506001600160a01b03169063170ba5b29060240160006040518083038186803b158015612d1657600080fd5b505afa158015612d2a573d6000803e3d6000fd5b50505050620f4240851015612d5d57604051625a5b2760e31b815260048101869052620f424060248201526044016103d9565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526000916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015612db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd99190615354565b6001600160a01b03166336758550876040518263ffffffff1660e01b8152600401612e0691815260200190565b602060405180830381865afa158015612e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e479190615395565b905084811015612e745760405163437879d160e01b815260048101829052602481018690526044016103d9565b604080516080810182526001815260208082018790526001600160401b038516828401528251606081810185528a82528183018a9052338286015293519293840192612ec092016157cd565b60408051601f1981840301815291815291526001600160a01b038516600090815260326020522081518154829060ff19166001836006811115612f0557612f05615165565b021790555060208201516001820155604082015160028201805467ffffffffffffffff19166001600160401b0390921691909117905560608201516003820190612f4f908261558e565b50612f63915033905030610e85878a6153f4565b7f0aaed4f1864bd4663319a4a0ceb0b5f0766e7e58ee27cf50c48232258d5f582c8360018660405161165a9392919061564d565b6001600160a01b0382166000908152603260205260408120805460ff191681556001810182905560028101805467ffffffffffffffff1916905590612fdf6003830182614ff7565b506001905081516006811115612ff757612ff7615165565b036130bd576000816060015180602001905181019061301691906157f7565b90506130b7838360200151836000015161303091906153f4565b600160009054906101000a90046001600160a01b03166001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015613083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a79190615354565b6001600160a01b03169190614cc2565b5061347d565b6002815160068111156130d2576130d2615165565b036131d957600081606001518060200190518101906130f19190615839565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201529192506001600160a01b03169063aa10e9f090602401602060405180830381865afa158015613149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061316d9190615354565b8151604051637eee288d60e01b81526001600160a01b0386811660048301526024820192909252911690637eee288d906044015b600060405180830381600087803b1580156131bb57600080fd5b505af11580156131cf573d6000803e3d6000fd5b505050505061347d565b6003815160068111156131ee576131ee615165565b03613236576000816060015180602001905181019061320d9190615887565b90506130b78382606001518360000151856020015161322c91906153f4565b61303091906153f4565b60048151600681111561324b5761324b615165565b0361332f576000816060015180602001905181019061326a91906154f9565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506001600160a01b03169063aa10e9f090602401602060405180830381865afa1580156132c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e89190615354565b81516040516393b0719d60e01b815260048101919091526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b0391909116906393b0719d906044016131a1565b60058151600681111561334457613344615165565b0361347d576000816060015180602001905181019061336391906158fc565b905060008160200151131561338a5761338a838260a00151836020015161303091906153f4565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa1580156133e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134079190615354565b81516040516393b0719d60e01b815260048101919091526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b0391909116906393b0719d90604401600060405180830381600087803b15801561346357600080fd5b505af1158015613477573d6000803e3d6000fd5b50505050505b80516040517f4a6b5a554fec07280a14030b5fe290efc3254f7a1448f2e4d1a687ad5e4904fd916134b091859190615975565b60405180910390a15050565b6001546040805163051aa27360e21b815290516000926001600160a01b03169163146a89cc916004808301928692919082900301818387803b15801561350157600080fd5b505af1158015613515573d6000803e3d6000fd5b50505050600160009054906101000a90046001600160a01b03166001600160a01b03166360435c306040518163ffffffff1660e01b815260040160006040518083038186803b15801561356757600080fd5b505afa15801561357b573d6000803e3d6000fd5b5050600154604051630aa10e9f60e41b8152686b656570657246656560b81b60048201526001600160a01b03909116925063aa10e9f09150602401602060405180830381865afa1580156135d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f79190615354565b6001600160a01b031663354662e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136589190615395565b83101561367b5760405163179c637760e11b8152600481018490526024016103d9565b6136848261242e565b600160009054906101000a90046001600160a01b03166001600160a01b031663027566a96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136fb9190615678565b611056906001600160401b0316426153f4565b6040516001600160a01b0384811660248301528381166044830152606482018390526122e69186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614cf3565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f008054600119016137ce57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600080826001600160a01b031663d8dfeb456040518163ffffffff1660e01b8152600401602060405180830381865afa158015613815573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138399190615354565b6040516370a0823160e01b81526001600160a01b03858116600483015291909116906370a0823190602401602060405180830381865afa158015613881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138a59190615395565b90506000836001600160a01b0316631cc5b7766040518163ffffffff1660e01b8152600401606060405180830381865afa1580156138e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390b91906154f9565b60000151846001600160a01b03166385820ba36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561394d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139719190615395565b61397b91906154aa565b9050808212156139ce5760405163015cf55b60e31b815260206004820152600e60248201527f636f6c6c61746572616c4e65743100000000000000000000000000000000000060448201526064016103d9565b6139d881836154d2565b949350505050565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff166006811115613a1a57613a1a615165565b6006811115613a2b57613a2b615165565b81526001820154602082015260028201546001600160401b03166040820152600382018054606090920191613a5f9061531a565b80601f0160208091040260200160405190810160405280929190818152602001828054613a8b9061531a565b8015613ad85780601f10613aad57610100808354040283529160200191613ad8565b820191906000526020600020905b815481529060010190602001808311613abb57829003601f168201915b505050505081525050905060008160600151806020019051810190613afd91906157f7565b6001548151604051630b85d2d960e11b815260048101919091529192506001600160a01b03169063170ba5b29060240160006040518083038186803b158015613b4557600080fd5b505afa158015613b59573d6000803e3d6000fd5b50505050613b748383604001516001600160401b0316614d56565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015613bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bef9190615354565b6001600160a01b031663c149e6ae848460400151846040518463ffffffff1660e01b8152600401613c2293929190615992565b600060405180830381600087803b158015613c3c57600080fd5b505af1158015613c50573d6000803e3d6000fd5b505050506020828101516001546040805163d8dfeb4560e01b81529051613ca4943394936001600160a01b03169263d8dfeb4592600480830193928290030181865afa158015613083573d6000803e3d6000fd5b60015481516040805163d8dfeb4560e01b81529051613cf5936001600160a01b03169291839163d8dfeb45916004808201926020929091908290030181865afa158015613083573d6000803e3d6000fd5b815160208301516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce3792613d2b92879261564d565b60405180910390a1505050565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff166006811115613d7257613d72615165565b6006811115613d8357613d83615165565b81526001820154602082015260028201546001600160401b03166040820152600382018054606090920191613db79061531a565b80601f0160208091040260200160405190810160405280929190818152602001828054613de39061531a565b8015613e305780601f10613e0557610100808354040283529160200191613e30565b820191906000526020600020905b815481529060010190602001808311613e1357829003601f168201915b5050505050815250509050613e528282604001516001600160401b0316614d56565b60008160600151806020019051810190613e6c9190615839565b600154604051630aa10e9f60e41b81526b737461626c654d6f64756c6560a01b600482015291925060009182916001600160a01b03169063aa10e9f090602401602060405180830381865afa158015613ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eed9190615354565b6001600160a01b031663c1105875868660400151866040518463ffffffff1660e01b8152600401613f20939291906159db565b60408051808303816000875af1158015613f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f629190615371565b915091506000818560200151613f7891906153f4565b905080831015613fa557604051630c46115560e31b815260048101849052602481018290526044016103d9565b613faf8184615535565b92508360200151831015613fe657602084015160405163437879d160e01b81526103d9918591600401918252602082015260400190565b600154604051631bf9f06960e11b8152600481018490526001600160a01b03909116906337f3e0d290602401600060405180830381600087803b15801561402c57600080fd5b505af1158015614040573d6000803e3d6000fd5b50506001546020880151604051636250216960e01b815233600482015260248101919091526001600160a01b03909116925063625021699150604401600060405180830381600087803b15801561409657600080fd5b505af11580156140aa573d6000803e3d6000fd5b5050600154604051636250216960e01b81526001600160a01b038a8116600483015260248201889052909116925063625021699150604401600060405180830381600087803b1580156140fc57600080fd5b505af1158015614110573d6000803e3d6000fd5b5050865160208801516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce37945061165a93508a92919061564d565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff16600681111561418657614186615165565b600681111561419757614197615165565b81526001820154602082015260028201546001600160401b031660408201526003820180546060909201916141cb9061531a565b80601f01602080910402602001604051908101604052809291908181526020018280546141f79061531a565b80156142445780601f1061421957610100808354040283529160200191614244565b820191906000526020600020905b81548152906001019060200180831161422757829003601f168201915b5050505050815250509050600081606001518060200190518101906142699190615887565b90506142828383604001516001600160401b0316614d56565b6001546020830151606083015183516142a9936001600160a01b0316929161322c916153f4565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015614302573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143269190615354565b6001600160a01b03166306dcdd048433856040518463ffffffff1660e01b815260040161435593929190615a11565b600060405180830381600087803b15801561436f57600080fd5b505af1158015614383573d6000803e3d6000fd5b5050835160208501516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce379450613d2b93508792919061564d565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff1660068111156143f9576143f9615165565b600681111561440a5761440a615165565b81526001820154602082015260028201546001600160401b0316604082015260038201805460609092019161443e9061531a565b80601f016020809104026020016040519081016040528092919081815260200182805461446a9061531a565b80156144b75780601f1061448c576101008083540402835291602001916144b7565b820191906000526020600020905b81548152906001019060200180831161449a57829003601f168201915b5050505050815250509050600081606001518060200190518101906144dc91906154f9565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561453b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061455f9190615354565b82516040516331a9108f60e11b81529192506001600160a01b03831691636352211e916145929160040190815260200190565b602060405180830381865afa1580156145af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145d39190615354565b506145eb8484604001516001600160401b0316614d56565b60405163070a9a7560e41b81526001600160a01b038216906370a9a7509061461b90879033908890600401615a11565b600060405180830381600087803b15801561463557600080fd5b505af1158015614649573d6000803e3d6000fd5b5050845160208601516040517e33bce9199bd52d311031877abb23eb96f48c0233bcff63a4e4acb31896ce37945061468593508892919061564d565b60405180910390a150505050565b6001600160a01b0381166000908152603260205260408082208151608081019092528054829060ff1660068111156146cd576146cd615165565b60068111156146de576146de615165565b81526001820154602082015260028201546001600160401b031660408201526003820180546060909201916147129061531a565b80601f016020809104026020016040519081016040528092919081815260200182805461473e9061531a565b801561478b5780601f106147605761010080835404028352916020019161478b565b820191906000526020600020905b81548152906001019060200180831161476e57829003601f168201915b5050505050815250509050600081606001518060200190518101906147b091906158fc565b600154604051630aa10e9f60e41b81526d6c657665726167654d6f64756c6560901b60048201529192506000916001600160a01b039091169063aa10e9f090602401602060405180830381865afa15801561480f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148339190615354565b82516040516331a9108f60e11b81529192506001600160a01b03831691636352211e916148669160040190815260200190565b602060405180830381865afa158015614883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148a79190615354565b506148bf8484604001516001600160401b0316614d56565b600154604051630aa10e9f60e41b8152693634b6b4ba27b93232b960b11b60048201526001600160a01b039091169063aa10e9f090602401602060405180830381865afa158015614914573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149389190615354565b825160405163018dc31960e41b81526001600160a01b0392909216916318dc31909161496a9160040190815260200190565b600060405180830381600087803b15801561498457600080fd5b505af1158015614998573d6000803e3d6000fd5b505050506000826020015113156149d2576001546020808501516080850151918501516149d2936001600160a01b03169261322c916153f4565b81516040516393b0719d60e01b815260048101919091526b3232b630bcb2b227b93232b960a11b60248201526001600160a01b038216906393b0719d90604401600060405180830381600087803b158015614a2c57600080fd5b505af1158015614a40573d6000803e3d6000fd5b50506040516352643c6160e11b81526001600160a01b038416925063a4c878c2915061461b90879033908890600401615a11565b80821380614a8d5750614a8a82620f42406154aa565b81135b156126185760405163015cf55b60e31b815260206004820152600e60248201527f636f6c6c61746572616c4e65743200000000000000000000000000000000000060448201526064016103d9565b600083118015614af4575081614af28260016153f4565b105b1561209d5760405163015cf55b60e31b815260206004820152601860248201527f737461626c65436f6c6c61746572616c5065725368617265000000000000000060448201526064016103d9565b6000816001600160a01b0316631cc5b7766040518163ffffffff1660e01b8152600401606060405180830381865afa158015614b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ba691906154f9565b6020015110156104f15760405163015cf55b60e31b815260206004820152601f60248201527f676c6f62616c41766572616765507269636549734e6f744e656761746976650060448201526064016103d9565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b81614c3d5760405163673791e360e11b815260040160405180910390fd5b6001600160a01b038116614c7c5760405163eac0d38960e01b81526020600482015260056024820152641d985d5b1d60da1b60448201526064016103d9565b6000919091556001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b614cb8614e6b565b614cc0614eb9565b565b6040516001600160a01b0383811660248301526044820183905261209d91859182169063a9059cbb90606401613743565b6000614d086001600160a01b03841683614ec1565b90508051600014158015614d2d575080806020019051810190614d2b91906152f8565b155b1561209d57604051635274afe760e01b81526001600160a01b03841660048201526024016103d9565b600160009054906101000a90046001600160a01b03166001600160a01b0316631ab1532b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614da9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dcd9190615678565b614de0906001600160401b0316826153f4565b421115614dff5760405162bcf1ab60e61b815260040160405180910390fd5b80421015614e235760405163d0878a9360e01b8152600481018290526024016103d9565b6001600160a01b0382166000908152603260205260408120805460ff191681556001810182905560028101805467ffffffffffffffff19169055906122e66003830182614ff7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16614cc057604051631afcd79f60e31b815260040160405180910390fd5b614bf9614e6b565b606061105683836000614ed5565b92915050565b606081471015614efa5760405163cd78605960e01b81523060048201526024016103d9565b600080856001600160a01b03168486604051614f169190615a46565b60006040518083038185875af1925050503d8060008114614f53576040519150601f19603f3d011682016040523d82523d6000602084013e614f58565b606091505b5091509150614f68868383614f72565b9695505050505050565b606082614f8757614f8282614fce565b611056565b8151158015614f9e57506001600160a01b0384163b155b15614fc757604051639996b31560e01b81526001600160a01b03851660048201526024016103d9565b5080611056565b805115614fde5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546150039061531a565b6000825580601f10615013575050565b601f0160209004906000526020600020908101906104f191905b80821115615041576000815560010161502d565b5090565b6001600160a01b03811681146104f157600080fd5b60006020828403121561506c57600080fd5b813561105681615045565b600080600080600060a0868803121561508f57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806000606084860312156150c757600080fd5b505081359360208301359350604090920135919050565b6000806000604084860312156150f357600080fd5b83356150fe81615045565b925060208401356001600160401b038082111561511a57600080fd5b818601915086601f83011261512e57600080fd5b81358181111561513d57600080fd5b8760208260051b850101111561515257600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052602160045260246000fd5b6007811061519957634e487b7160e01b600052602160045260246000fd5b9052565b60005b838110156151b85781810151838201526020016151a0565b50506000910152565b6151cc82825161517b565b602081015160208301526001600160401b036040820151166040830152600060608201516080606085015280518060808601526152108160a087016020850161519d565b601f01601f19169390930160a0019392505050565b60208152600061105660208301846151c1565b6000806000806080858703121561524e57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600080600060a0868803121561528257600080fd5b8535945060208601359350604086013592506060860135915060808601356152a981615045565b809150509295509295909350565b600080600080608085870312156152cd57600080fd5b84359350602085013592506040850135915060608501356152ed81615045565b939692955090935050565b60006020828403121561530a57600080fd5b8151801515811461105657600080fd5b600181811c9082168061532e57607f821691505b60208210810361534e57634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561536657600080fd5b815161105681615045565b6000806040838503121561538457600080fd5b505080516020909101519092909150565b6000602082840312156153a757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820260008212600160ff1b841416156153e0576153e06153ae565b8181058314821517614ecf57614ecf6153ae565b80820180821115614ecf57614ecf6153ae565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561543f5761543f615407565b60405290565b60006080828403121561545757600080fd5b604051608081018181106001600160401b038211171561547957615479615407565b8060405250825181526020830151602082015260408301516040820152606083015160608201528091505092915050565b80820182811260008312801582168215821617156154ca576154ca6153ae565b505092915050565b81810360008312801583831316838312821617156154f2576154f26153ae565b5092915050565b60006060828403121561550b57600080fd5b61551361541d565b8251815260208301516020820152604083015160408201528091505092915050565b81810381811115614ecf57614ecf6153ae565b601f82111561209d57600081815260208120601f850160051c8101602086101561556f5750805b601f850160051c820191505b818110156124265782815560010161557b565b81516001600160401b038111156155a7576155a7615407565b6155bb816155b5845461531a565b84615548565b602080601f8311600181146155f057600084156155d85750858301515b600019600386901b1c1916600185901b178555612426565b600085815260208120601f198616915b8281101561561f57888601518255948401946001909101908401615600565b508582101561563d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03841681526060810161566a602083018561517b565b826040830152949350505050565b60006020828403121561568a57600080fd5b81516001600160401b038116811461105657600080fd5b6000600160ff1b82016156b6576156b66153ae565b5060000390565b815181526020808301519082015260408101614ecf565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000604082016001600160a01b038616835260206040818501528185835260608501905060608660051b86010192508660005b8781101561579f57868503605f190183528135368a9003601e1901811261575657600080fd5b890184810190356001600160401b0381111561577157600080fd5b80360382131561578057600080fd5b61578b8782846156d4565b965050509183019190830190600101615730565b509298975050505050505050565b6001600160401b038181168382160190808211156154f2576154f26153ae565b81518152602080830151908201526040808301516001600160a01b03169082015260608101614ecf565b60006060828403121561580957600080fd5b61581161541d565b8251815260208301516020820152604083015161582d81615045565b60408201529392505050565b60006040828403121561584b57600080fd5b604051604081018181106001600160401b038211171561586d5761586d615407565b604052825181526020928301519281019290925250919050565b600060a0828403121561589957600080fd5b60405160a081018181106001600160401b03821117156158bb576158bb615407565b80604052508251815260208301516020820152604083015160408201526060830151606082015260808301516158f081615045565b60808201529392505050565b600060c0828403121561590e57600080fd5b60405160c081018181106001600160401b038211171561593057615930615407565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6001600160a01b038316815260408101611056602083018461517b565b6001600160a01b03841681526001600160401b038316602082015260a081016139d8604083018480518252602080820151908301526040908101516001600160a01b0316910152565b6001600160a01b03841681526001600160401b0383166020820152608081016139d8604083018480518252602090810151910152565b60006001600160a01b03808616835280851660208401525060606040830152615a3d60608301846151c1565b95945050505050565b60008251615a5881846020870161519d565b919091019291505056fea26469706673582212201f355857f2ca73a0ded5ad2c251d2ba5780ba18994bc101af2c440683b300b1064736f6c63430008140033