0 txs
13.8k calls
constructor
constructor((address gmxExchangeRouter, address feeReceiver, address dataStore, address reader, address referralStorage) _config, (address poolLogic, address withdrawalAsset)[] _whitelisteddHedgePools, (address virtualToken, address underlyingToken)[] _virtualTokenOracleSettings, address _slippageAccumulator, address _nftTracker)
functions
convert32toAddress
purefunction convert32toAddress(bytes32 data) pure returns (address o)
dataStore
viewfunction dataStore() view returns (address)
dHedgePoolsWhitelist
viewfunction dHedgePoolsWhitelist(address poolLogic) view returns (tuple)
feeReceiver
viewfunction feeReceiver() view returns (address)
getArrayIndex
purefunction getArrayIndex(bytes data, uint8 inputNum, uint8 arrayIndex) pure returns (bytes32)
getArrayLast
purefunction getArrayLast(bytes data, uint8 inputNum) pure returns (bytes32)
getArrayLength
purefunction getArrayLength(bytes data, uint8 inputNum) pure returns (uint256)
getBytes
purefunction getBytes(bytes data, uint8 inputNum, uint256 offset) pure returns (bytes)
getInput
purefunction getInput(bytes data, uint8 inputNum) pure returns (bytes32)
getMethod
purefunction getMethod(bytes data) pure returns (bytes4)
getParams
purefunction getParams(bytes data) pure returns (bytes)
getUnderlyingToken
viewfunction getUnderlyingToken(address virtualToken) view returns (address underlyingToken)
gmxExchangeRouter
viewfunction gmxExchangeRouter() view returns (address)
isTxTrackingGuard
viewfunction isTxTrackingGuard() view returns (bool)
nftTracker
viewfunction nftTracker() view returns (address)
read32
purefunction read32(bytes data, uint256 offset, uint256 length) pure returns (bytes32 o)
read4left
purefunction read4left(bytes data, uint256 offset) pure returns (bytes4 o)
reader
viewfunction reader() view returns (address)
referralStorage
viewfunction referralStorage() view returns (address)
slippageAccumulator
viewfunction slippageAccumulator() view returns (address)
txGuard
viewfunction txGuard(address _poolManagerLogic, address _to, bytes _data) view returns (uint16 txType, bool)
virtualToUnderlyingToken
viewfunction virtualToUnderlyingToken(address) view returns (address)
afterDepositExecution
nonpayablefunction afterDepositExecution(bytes32, tuple deposit, tuple eventData)
afterOrderExecution
nonpayablefunction afterOrderExecution(bytes32, tuple order, tuple eventData)
afterTxGuard
nonpayablefunction afterTxGuard(address _poolManagerLogic, address _to, bytes _data)
afterWithdrawalExecution
nonpayablefunction afterWithdrawalExecution(bytes32, tuple withdrawal, tuple eventData)
events
No events.
errors
No errors.
creation bytecode
0x6101606040526000805460ff191660011790553480156200001f57600080fd5b50604051620064893803806200648983398101604081905262000042916200043a565b84516001600160601b0319606091821b811660809081526020880151831b821660a0526040880151831b821660c05282880151831b821660e052870151821b81166101005282821b8116610140529083901b166101205260005b845181101562000257576000858281518110620000b557fe5b60200260200101519050600081600001516001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ff57600080fd5b505afa15801562000114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013a9190620003f4565b60208301519091506001600160a01b031615801590620001db5750602082015160405163cc435bf360e01b81526001600160a01b0383169163cc435bf39162000187919060040162000555565b60206040518083038186803b158015620001a057600080fd5b505afa158015620001b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001db919062000418565b620002035760405162461bcd60e51b8152600401620001fa9062000569565b60405180910390fd5b5080516001600160a01b039081166000908152600160208181526040909220845181549085166001600160a01b0319918216178255929094015193810180549490931693909116929092179055016200009c565b5060005b8351811015620002d5578381815181106200027257fe5b602002602001015160200151600260008684815181106200028f57fe5b602090810291909101810151516001600160a01b0390811683529082019290925260400160002080546001600160a01b031916929091169190911790556001016200025b565b505050505050620005a0565b80516001600160a01b0381168114620002f957600080fd5b919050565b600082601f8301126200030f578081fd5b815160206001600160401b03808311156200032657fe5b604080518384860282010181811084821117156200034057fe5b825284815283810192508684018583028801850189101562000360578687fd5b865b868110156200038a57620003778a8362000398565b8552938501939083019060010162000362565b509098975050505050505050565b600060408284031215620003aa578081fd5b604080519081016001600160401b0381118282101715620003c757fe5b604052905080620003d883620002e1565b8152620003e860208401620002e1565b60208201525092915050565b60006020828403121562000406578081fd5b6200041182620002e1565b9392505050565b6000602082840312156200042a578081fd5b8151801515811462000411578182fd5b600080600080600085870361012081121562000454578182fd5b60a081121562000462578182fd5b5060405160a081016001600160401b0380821183831017156200048157fe5b816040526200049089620002e1565b8352620004a060208a01620002e1565b6020840152620004b360408a01620002e1565b6040840152620004c660608a01620002e1565b6060840152620004d960808a01620002e1565b608084015260a089015192975080831115620004f3578384fd5b620005018a848b01620002fe565b965060c089015192508083111562000517578384fd5b50506200052788828901620002fe565b9350506200053860e08701620002e1565b9150620005496101008701620002e1565b90509295509295909350565b6001600160a01b0391909116815260200190565b60208082526018908201527f696e76616c6964207769746864726177616c2061737365740000000000000000604082015260600190565b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6101205160601c6101405160601c615e3062000659600039806105f95250806104f7525080610341525080610e7c5280611bff5280611e6b528061248f525080610b375280610bfe52806110d352806113f052806116af5280611c2c5280611e9852806124bc525080610e27528061138c52806115cd52806120fc525080610cbf5280610d815280610dde5280610e585250615e306000f3fe608060405234801561001057600080fd5b506004361061013d5760003560e01c80626cc35e1461014257806309ff5c7d146101605780631053f952146101805780631eba3077146101a0578063293d8063146101b357806333a518b8146101d357806341dc16c3146101db57806352dac656146101ee5780635464c40e146101f65780636179309d14610216578063660d0d6714610237578063689015131461023f578063691bcc88146102525780637bf981191461026557806382f86acc1461027a5780638b9e55dc1461028d578063998546e3146102a2578063a02ba64d146102b5578063a224323b146102c8578063b27e5d3b146102db578063b3f00674146102ee578063c3c6279f146102f6578063d1018a2814610309578063d4fc42c614610311578063db896b5714610319578063f66c9dd21461032c575b600080fd5b61014a61033f565b6040516101579190615498565b60405180910390f35b61017361016e3660046146a6565b610363565b6040516101579190615584565b61019361018e3660046146f1565b6103f4565b60405161015791906155a2565b61014a6101ae366004614095565b61048c565b6101c66101c13660046145ba565b610493565b604051610157919061558d565b61014a6104f5565b6101736101e9366004614745565b610519565b61014a6105f7565b610209610204366004613dc2565b61061b565b6040516101579190615a1f565b610229610224366004613e33565b610660565b604051610157929190615d17565b61014a610bfc565b61019361024d366004614588565b610c20565b61014a610260366004613dc2565b610c41565b61026d610c67565b6040516101579190615579565b6101736102883660046146a6565b610c70565b6102a061029b366004614232565b610c8e565b005b6101736102b03660046146a6565b610d20565b6102a06102c33660046140ad565b610d51565b6102a06102d6366004614387565b610dad565b61014a6102e9366004613dc2565b610e0a565b61014a610e25565b6101c6610304366004614588565b610e49565b61014a610e56565b61014a610e7a565b61017361032736600461465b565b610e9e565b6102a061033a366004613e33565b610f1d565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061037b848460200260040160ff166020610e9e565b9050600061038e85600484016020610e9e565b9050806103d7576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b6103eb856020808402850160040190610e9e565b95945050505050565b60606014821061043c576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081bd9999cd95d60921b604482015290519081900360640190fd5b816020029150600061045b85848660200260040160ff16016020610e9e565b90506000610470868584016004016020610e9e565b90506104828660248487010183610f5a565b9695505050505050565b805b919050565b600081600401835110156104ec576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b50016020015190565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610531858560200260040160ff166020610e9e565b9050600061054486600484016020610e9e565b90508061058d576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b60ff841681116105dd576040805162461bcd60e51b815260206004820152601660248201527534b73b30b634b21030b93930bc903837b9b4ba34b7b760511b604482015290519081900360640190fd5b610482866020600160ff8816018102850160040190610e9e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6106236126cb565b506001600160a01b039081166000908152600160208181526040928390208351808501909452805485168452909101549092169181019190915290565b6000806000806000807355f454db6f3f8a341fa65ea9fd1e1b31c2624a2d63f5e086af308b8a6040518463ffffffff1660e01b81526004016106a493929190615529565b60006040518083038186803b1580156106bc57600080fd5b505af41580156106d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106f891908101906144c2565b929650909450925090506001600160e01b03198416631592ca1b60e31b1415610824576000838060200190518101906107319190613ff1565b9050600081511161075d5760405162461bcd60e51b8152600401610754906159c4565b60405180910390fd5b60008160018351038151811061076f57fe5b6020026020010151905061078281610e49565b95506001600160e01b03198616635b4e956160e01b14156107b2576107a98b848c856110ab565b6065975061081d565b6001600160e01b0319861663ad23c5a160e01b14156107d7576107a98b848c856113c8565b6001600160e01b03198616636996807b60e01b141561081d576107fc8b848c856115ff565b6108185760405162461bcd60e51b8152600401610754906156ba565b606597505b5050610bec565b6001600160e01b0319841663c41b1ab360e01b1415610907576000806000858060200190518101906108569190613e92565b92509250925073027aefaf16099faae0edd024923a64fb0b7158ce630e6c8f40308e85876040518563ffffffff1660e01b815260040161089994939291906154e0565b60006040518083038186803b1580156108b157600080fd5b505af41580156108c5573d6000803e3d6000fd5b50505050846001600160a01b0316816001600160a01b0316146108fa5760405162461bcd60e51b81526004016107549061579b565b60665b9850505050610bec565b6001600160e01b0319841663e9249b5760e01b14156109e5576000806000858060200190518101906109399190613f06565b9350509250925073027aefaf16099faae0edd024923a64fb0b7158ce630e6c8f40308e85876040518563ffffffff1660e01b815260040161097d94939291906154e0565b60006040518083038186803b15801561099557600080fd5b505af41580156109a9573d6000803e3d6000fd5b50505050846001600160a01b0316816001600160a01b0316146109de5760405162461bcd60e51b81526004016107549061579b565b60676108fd565b6001600160e01b03198416637489ec2360e01b1415610a7957604051637317128160e11b815273027aefaf16099faae0edd024923a64fb0b7158ce9063e62e250290610a399030908d908890600401615529565b60006040518083038186803b158015610a5157600080fd5b505af4158015610a65573d6000803e3d6000fd5b5060689250610a72915050565b9550610bec565b6001600160e01b03198416630c50112160e21b1415610b0657604051638651a63560e01b815273027aefaf16099faae0edd024923a64fb0b7158ce90638651a63590610acd9030908d908890600401615529565b60006040518083038186803b158015610ae557600080fd5b505af4158015610af9573d6000803e3d6000fd5b5060699250610a72915050565b6001600160e01b031984166303909e2d60e51b1415610bec57606a9550886001600160a01b0316639be918e6610b647f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118cf565b6040518263ffffffff1660e01b8152600401610b809190615498565b60206040518083038186803b158015610b9857600080fd5b505afa158015610bac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd09190614079565b610bec5760405162461bcd60e51b8152600401610754906159f6565b5060009350505050935093915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060610c3b60048084510384610f5a9092919063ffffffff16565b92915050565b6001600160a01b03808216600090815260026020526040902054168061048e5781610c3b565b60005460ff1681565b6000610c87838360200260040160ff166020610e9e565b9392505050565b604051631903e56560e21b81527364d6fb033089002e125b86dd01693c287eaf5bcb9063640f959490610ceb9085907f00000000000000000000000000000000000000000000000000000000000000009086903090600401615b6f565b60006040518083038186803b158015610d0357600080fd5b505af4158015610d17573d6000803e3d6000fd5b50505050505050565b600080610d38848460200260040160ff166020610e9e565b9050610d4984600483016020610e9e565b949350505050565b60405162e3377960e21b81527364d6fb033089002e125b86dd01693c287eaf5bcb9063038cdde490610ceb9085907f00000000000000000000000000000000000000000000000000000000000000009086903090600401615a42565b604051630e55429d60e41b81527364d6fb033089002e125b86dd01693c287eaf5bcb9063e55429d090610ceb9085907f00000000000000000000000000000000000000000000000000000000000000009086903090600401615c5b565b6002602052600090815260409020546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c3b826000610493565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081830184511015610ef6576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b826020018401519050816020038015610f15576008810260020a820491505b509392505050565b604051637d10bf1960e11b81527355f454db6f3f8a341fa65ea9fd1e1b31c2624a2d9063fa217e3290610ceb9030908790879087906004016154ac565b60608182601f011015610fa5576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610fed576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015611039576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b60608215801561105857604051915060008252602082016040526110a2565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611091578051835260209283019201611079565b5050858452601f01601f1916604052505b50949350505050565b80516004146110cc5760405162461bcd60e51b8152600401610754906157cc565b60006111007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118cf565b90506000836001600160a01b0316639c8b2cfb6040518163ffffffff1660e01b815260040160206040518083038186803b15801561113d57600080fd5b505afa158015611151573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111759190613dde565b6001600160a01b031663d7cd39496040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ad57600080fd5b505afa1580156111c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e59190613dde565b90506000611206846003815181106111f957fe5b6020026020010151610c20565b80602001905181019061121991906147a0565b905061123b878560008151811061122c57fe5b60200260200101518585611984565b61125f878560018151811061124c57fe5b6020026020010151836080015185611984565b611283878560028151811061127057fe5b60200260200101518360a0015185611984565b6060810151604051634df48c7360e11b81526001600160a01b03891691639be918e6916112b39190600401615498565b60206040518083038186803b1580156112cb57600080fd5b505afa1580156112df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113039190614079565b61131f5760405162461bcd60e51b81526004016107549061573e565b6113b06040518060c0016040528083600001516001600160a01b0316815260200183602001516001600160a01b031681526020018360c0015181526020018360e0015181526020018361012001511515815260200183604001516001600160a01b031681525087600001517f0000000000000000000000000000000000000000000000000000000000000000611ae2565b610d1787826060015183608001518460a00151611be5565b80516003146113e95760405162461bcd60e51b8152600401610754906157cc565b600061141d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118cf565b90506000836001600160a01b0316632c2f3c076040518163ffffffff1660e01b815260040160206040518083038186803b15801561145a57600080fd5b505afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114929190613dde565b6001600160a01b03166369d421486040518163ffffffff1660e01b815260040160206040518083038186803b1580156114ca57600080fd5b505afa1580156114de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115029190613dde565b90506000611516846002815181106111f957fe5b8060200190518101906115299190614902565b905061153c878560008151811061122c57fe5b611560878560018151811061154d57fe5b6020026020010151836060015185611984565b6115f16040518060c0016040528083600001516001600160a01b0316815260200183602001516001600160a01b03168152602001836080015181526020018360a0015181526020018361010001511515815260200183604001516001600160a01b031681525087600001517f0000000000000000000000000000000000000000000000000000000000000000611ae2565b610d17878260600151611e51565b60006116096126e2565b600060607355f454db6f3f8a341fa65ea9fd1e1b31c2624a2d63b397a75130876040518363ffffffff1660e01b8152600401611646929190615555565b60006040518083038186803b15801561165e57600080fd5b505af4158015611672573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261169a91908101906145fc565b94509250905060006116d46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166118cf565b90506000876001600160a01b031663b58483056040518163ffffffff1660e01b815260040160206040518083038186803b15801561171157600080fd5b505afa158015611725573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117499190613dde565b6001600160a01b03166393845e466040518163ffffffff1660e01b815260040160206040518083038186803b15801561178157600080fd5b505afa158015611795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b99190613dde565b90506004856040015160088111156117cd57fe5b141561182757836002146117f35760405162461bcd60e51b8152600401610754906157cc565b6118138a8860008151811061180457fe5b60200260200101518484611984565b61181e8a8a8561204c565b600195506118c2565b60028560400151600881111561183957fe5b1480611854575060008560400151600881111561185257fe5b145b156118c257836003146118795760405162461bcd60e51b8152600401610754906157cc565b61188a8a8860008151811061180457fe5b6118b28a8860018151811061189b57fe5b6020026020010151876000015160a0015184611984565b6118bd8a8a8561204c565b600195505b5050505050949350505050565b6000816001600160a01b03166321f8a7216040516020018080602001828103825260038152602001806215d39560ea1b815250602001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561195257600080fd5b505afa158015611966573d6000803e3d6000fd5b505050506040513d602081101561197c57600080fd5b505192915050565b631cdacd5960e31b61199584610e49565b6001600160e01b031916146119bc5760405162461bcd60e51b81526004016107549061568b565b6000806119c885610c20565b8060200190518101906119db9190613dfa565b604051634df48c7360e11b815291935091506001600160a01b03871690639be918e690611a0c908590600401615498565b60206040518083038186803b158015611a2457600080fd5b505afa158015611a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5c9190614079565b611a785760405162461bcd60e51b8152600401610754906155cf565b836001600160a01b0316826001600160a01b031614611aa95760405162461bcd60e51b81526004016107549061568b565b826001600160a01b0316816001600160a01b031614611ada5760405162461bcd60e51b815260040161075490615639565b505050505050565b816001600160a01b031683600001516001600160a01b031614611b175760405162461bcd60e51b81526004016107549061579b565b60208301516001600160a01b03163014611b435760405162461bcd60e51b81526004016107549061595f565b806001600160a01b03168360a001516001600160a01b031614611b785760405162461bcd60e51b8152600401610754906156e5565b608083015115611b9a5760405162461bcd60e51b81526004016107549061582e565b60408301515115611bbd5760405162461bcd60e51b81526004016107549061576a565b60608301515115611be05760405162461bcd60e51b81526004016107549061576a565b505050565b60405163714af34b60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063714af34b90611c56907f00000000000000000000000000000000000000000000000000000000000000009088906004016155b5565b60806040518083038186803b158015611c6e57600080fd5b505afa158015611c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca69190614a19565b6040808201519051634df48c7360e11b81529192506001600160a01b03871691639be918e691611cd891600401615498565b60206040518083038186803b158015611cf057600080fd5b505afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d289190614079565b611d445760405162461bcd60e51b815260040161075490615900565b6060810151604051634df48c7360e11b81526001600160a01b03871691639be918e691611d749190600401615498565b60206040518083038186803b158015611d8c57600080fd5b505afa158015611da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc49190614079565b611de05760405162461bcd60e51b8152600401610754906158d0565b80604001516001600160a01b0316836001600160a01b031614611e155760405162461bcd60e51b815260040161075490615992565b80606001516001600160a01b0316826001600160a01b031614611e4a5760405162461bcd60e51b815260040161075490615606565b5050505050565b60405163714af34b60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063714af34b90611ec2907f00000000000000000000000000000000000000000000000000000000000000009086906004016155b5565b60806040518083038186803b158015611eda57600080fd5b505afa158015611eee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f129190614a19565b6040808201519051634df48c7360e11b81529192506001600160a01b03851691639be918e691611f4491600401615498565b60206040518083038186803b158015611f5c57600080fd5b505afa158015611f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f949190614079565b611fb05760405162461bcd60e51b815260040161075490615900565b6060810151604051634df48c7360e11b81526001600160a01b03851691639be918e691611fe09190600401615498565b60206040518083038186803b158015611ff857600080fd5b505afa15801561200c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120309190614079565b611be05760405162461bcd60e51b8152600401610754906158d0565b600061205782610c20565b905060008180602001905181019061206f91906148d0565b84518151519192506001600160a01b039182169116146120a15760405162461bcd60e51b81526004016107549061579b565b8051602001516001600160a01b0316156120cd5760405162461bcd60e51b815260040161075490615862565b8051604001516001600160a01b031630146120fa5760405162461bcd60e51b81526004016107549061595f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168160000151606001516001600160a01b0316146121535760405162461bcd60e51b8152600401610754906156e5565b805160a00151604051634df48c7360e11b81526001600160a01b03871691639be918e6916121849190600401615498565b60206040518083038186803b15801561219c57600080fd5b505afa1580156121b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121d49190614079565b6121f05760405162461bcd60e51b81526004016107549061592f565b60008160600151600281111561220257fe5b1461221f5760405162461bcd60e51b815260040161075490615713565b60a0810151156122415760405162461bcd60e51b81526004016107549061582e565b60008160400151600881111561225357fe5b14156122cb578051608001516001600160a01b0316156122855760405162461bcd60e51b815260040161075490615663565b61229785826000015160c001516123a4565b6122c685826000015160c001516000815181106122b057fe5b6020026020010151836000015160a00151612475565b611e4a565b805160800151604051634df48c7360e11b81526001600160a01b03871691639be918e6916122fc9190600401615498565b60206040518083038186803b15801561231457600080fd5b505afa158015612328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234c9190614079565b6123685760405162461bcd60e51b81526004016107549061573e565b805160c00151511561238c5760405162461bcd60e51b81526004016107549061576a565b8051608081015160a090910151611e4a918791612475565b80516001146123c55760405162461bcd60e51b815260040161075490615803565b816001600160a01b0316639be918e6826000815181106123e157fe5b60200260200101516040518263ffffffff1660e01b81526004016124059190615498565b60206040518083038186803b15801561241d57600080fd5b505afa158015612431573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124559190614079565b6124715760405162461bcd60e51b81526004016107549061573e565b5050565b60405163714af34b60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063714af34b906124e6907f00000000000000000000000000000000000000000000000000000000000000009087906004016155b5565b60806040518083038186803b1580156124fe57600080fd5b505afa158015612512573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125369190614a19565b6040808201519051634df48c7360e11b81529192506001600160a01b03861691639be918e69161256891600401615498565b60206040518083038186803b15801561258057600080fd5b505afa158015612594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b89190614079565b6125d45760405162461bcd60e51b815260040161075490615900565b6060810151604051634df48c7360e11b81526001600160a01b03861691639be918e6916126049190600401615498565b60206040518083038186803b15801561261c57600080fd5b505afa158015612630573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126549190614079565b6126705760405162461bcd60e51b8152600401610754906158d0565b80604001516001600160a01b0316826001600160a01b031614806126a9575080606001516001600160a01b0316826001600160a01b0316145b6126c55760405162461bcd60e51b815260040161075490615899565b50505050565b604080518082019091526000808252602082015290565b6040518061010001604052806126f6612733565b8152602001612703612771565b81526020016000815260200160008152600060208201819052604082018190526060820181905260809091015290565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b803561048e81615dba565b805161048e81615dba565b600082601f8301126127dc578081fd5b813560206127f16127ec83615d50565b615d2d565b828152818101908583018385028701840188101561280d578586fd5b855b8581101561283457813561282281615dba565b8452928401929084019060010161280f565b5090979650505050505050565b600082601f830112612851578081fd5b815160206128616127ec83615d50565b828152818101908583018385028701840188101561287d578586fd5b855b8581101561283457815161289281615dba565b8452928401929084019060010161287f565b600082601f8301126128b4578081fd5b813560206128c46127ec83615d50565b82815281810190858301855b858110156128345781358801604080601f19838d030112156128f0578889fd5b80518181016001600160401b03828210818311171561290b57fe5b90835283890135908082111561291f578b8cfd5b61292d8e8b84880101613031565b8352928401359280841115612940578b8cfd5b50506129508c89848601016127cc565b818901528652505092840192908401906001016128d0565b600082601f830112612978578081fd5b813560206129886127ec83615d50565b82815281810190858301855b858110156128345781358801604080601f19838d030112156129b4578889fd5b80518181016001600160401b0382821081831117156129cf57fe5b9083528389013590808211156129e3578b8cfd5b6129f18e8b84880101613031565b835283850135915080821115612a05578b8cfd5b508084019350508b603f840112612a1a57898afd5b87830135612a2a6127ec82615d50565b808282528a820191508486018f868d86028901011115612a48578d8efd5b8d96505b83871015612a765780359550612a6186615dd2565b85835260019690960195918b01918b01612a4c565b50838b01525050865250509284019290840190600101612994565b600082601f830112612aa1578081fd5b81356020612ab16127ec83615d50565b82815281810190858301855b858110156128345781358801604080601f19838d03011215612add578889fd5b80518181016001600160401b038282108183111715612af857fe5b908352838901359080821115612b0c578b8cfd5b612b1a8e8b84880101613031565b835283850135915080821115612b2e578b8cfd5b508084019350508b603f840112612b4357898afd5b87830135612b536127ec82615d50565b808282528a820191508486018f868d86028901011115612b71578d8efd5b8d96505b83871015612b93578035835260019690960195918b01918b01612b75565b50838b01525050865250509284019290840190600101612abd565b600082601f830112612bbe578081fd5b6020612bcd6127ec8435615d50565b8335815281810190828501845b8635811015612cc757813587016040818a03601f19011215612bfa578687fd5b604051604081016001600160401b038282108183111715612c1757fe5b8160405288840135915080821115612c2d57898afd5b612c3b8c8a84870101613031565b83526040840135915080821115612c5057898afd5b5080830192505089603f830112612c65578788fd5b86820135612c756127ec82615d50565b81815288810190604085018b5b84811015612cac57612c9a8f604084358a0101613031565b8452928b0192908b0190600101612c82565b5050838a015250508552509284019290840190600101612bda565b50909695505050505050565b600082601f830112612ce3578081fd5b81356020612cf36127ec83615d50565b82815281810190858301855b858110156128345781358801604080601f19838d03011215612d1f578889fd5b80518181016001600160401b038282108183111715612d3a57fe5b908352838901359080821115612d4e578b8cfd5b612d5c8e8b84880101613031565b835283850135915080821115612d70578b8cfd5b508084019350508b603f840112612d8557898afd5b87830135612d956127ec82615d50565b808282528a820191508486018f868d86028901011115612db3578d8efd5b8d96505b83871015612dd5578035835260019690960195918b01918b01612db7565b50838b01525050865250509284019290840190600101612cff565b600082601f830112612e00578081fd5b6020612e0f6127ec8435615d50565b8335815281810190828501845b8635811015612cc757813587016040818a03601f19011215612e3c578687fd5b604051604081016001600160401b038282108183111715612e5957fe5b8160405288840135915080821115612e6f57898afd5b612e7d8c8a84870101613031565b83526040840135915080821115612e9257898afd5b5080830192505089603f830112612ea7578788fd5b86820135612eb76127ec82615d50565b81815288810190604085018b5b84811015612eee57612edc8f604084358a0101613031565b8452928b0192908b0190600101612ec4565b5050838a015250508552509284019290840190600101612e1c565b600082601f830112612f19578081fd5b81356020612f296127ec83615d50565b82815281810190858301855b858110156128345781358801604080601f19838d03011215612f55578889fd5b80518181016001600160401b038282108183111715612f7057fe5b908352838901359080821115612f84578b8cfd5b612f928e8b84880101613031565b835283850135915080821115612fa6578b8cfd5b508084019350508b603f840112612fbb57898afd5b87830135612fcb6127ec82615d50565b808282528a820191508486018f868d86028901011115612fe9578d8efd5b8d96505b8387101561300b578035835260019690960195918b01918b01612fed565b50838b01525050865250509284019290840190600101612f35565b805161048e81615dd2565b600082601f830112613041578081fd5b813561304f6127ec82615d6d565b818152846020838601011115613063578283fd5b816020850160208301379081016020019190915292915050565b600082601f83011261308d578081fd5b815161309b6127ec82615d6d565b8181528460208386010111156130af578283fd5b610d49826020830160208701615d8e565b803561048e81615de0565b805161048e81615de0565b803561048e81615ded565b805161048e81615ded565b6000604082840312156130fd578081fd5b604051604081016001600160401b03828210818311171561311a57fe5b81604052829350808535111561312f57600080fd5b84358501915085601f83011261314457600080fd5b813560206131546127ec83615d50565b8281528181019085830160005b858110156131e457813588016040818e03601f1901121561318157600080fd5b604051604081018181108a8211171561319657fe5b60405281870135898111156131aa57600080fd5b6131b88f8983860101613031565b825250604082013591506131cb82615dba565b8087019190915284529284019290840190600101613161565b5050865250868101359350828411156131fc57600080fd5b613208888589016128a4565b81860152505050505092915050565b60006040808385031215613229578182fd5b80518181016001600160401b03828210818311171561324457fe5b818452829450808635111561325857600080fd5b85358601915086601f83011261326d57600080fd5b813561327b6127ec82615d50565b81815260208082019190850160005b8481101561330c578135870189601f19828f030112156132a957600080fd5b89518a810181811089821117156132bc57fe5b8b526020820135888111156132d057600080fd5b6132df8f602083860101613031565b825250908a0135906132f082615dd2565b602081810192909252855293840193919091019060010161328a565b505085525050602086013593508084111561332657600080fd5b505061333485838601612968565b6020820152505092915050565b60006040808385031215613353578182fd5b80518181016001600160401b03828210818311171561336e57fe5b818452829450808635111561338257600080fd5b85358601915086601f83011261339757600080fd5b60206133a66127ec8435615d50565b833581528181019082850160005b8635811015613425578135870189601f19828f030112156133d457600080fd5b89518a810181811089821117156133e757fe5b8b5281870135888111156133fa57600080fd5b6134088f8983860101613031565b825250908a013586820152845292840192908401906001016133b4565b50508552508681013594508185111561343d57600080fd5b61344988868901612a91565b81850152505050505092915050565b6000604080838503121561346a578182fd5b80518181016001600160401b03828210818311171561348557fe5b818452829450808635111561349957600080fd5b85358601915086601f8301126134ae57600080fd5b60206134bd6127ec8435615d50565b833581528181019082850160005b8635811015613559578135870189601f19828f030112156134eb57600080fd5b89518a810181811089821117156134fe57fe5b8b52818701358881111561351157600080fd5b61351f8f8983860101613031565b8252508a8201358881111561353357600080fd5b6135418f8983860101613031565b828901525085525092840192908401906001016134cb565b50508552508681013594508185111561357157600080fd5b61344988868901612bae565b600060e0828403121561358e578081fd5b61359860e0615d2d565b90506135a3826127c1565b81526135b1602083016127c1565b60208201526135c2604083016127c1565b60408201526135d3606083016127c1565b60608201526135e4608083016127c1565b60808201526135f560a083016127c1565b60a082015260c08201516001600160401b0381111561361357600080fd5b61361f84828501612841565b60c08301525092915050565b600061010080838503121561363e578182fd5b604051908101906001600160401b038211818310171561365a57fe5b81604052809250835181526020840151602082015260408401516040820152606084015160608201526080840151608082015260a084015160a082015260c084015160c082015260e084015160e0820152505092915050565b60006101e082840312156136c5578081fd5b6136d0610100615d2d565b905081516001600160401b038111156136e857600080fd5b6136f48482850161357d565b825250613704836020840161362b565b602082015261371661012083016130e1565b604082015261372861014083016130cb565b606082015261373a6101608301613026565b608082015261374c6101808301613026565b60a082015261375e6101a08301613026565b60c08201526101c082015160e082015292915050565b600060e08284031215613785578081fd5b61378f60e0615d2d565b905081356001600160401b03808211156137a857600080fd5b6137b4858386016130ec565b835260208401359150808211156137ca57600080fd5b6137d685838601613c9d565b602084015260408401359150808211156137ef57600080fd5b6137fb85838601613957565b6040840152606084013591508082111561381457600080fd5b61382085838601613217565b6060840152608084013591508082111561383957600080fd5b61384585838601613341565b608084015260a084013591508082111561385e57600080fd5b61386a85838601613458565b60a084015260c084013591508082111561388357600080fd5b5061361f84828501613b72565b6000602082840312156138a1578081fd5b604051602081018181106001600160401b03821117156138bd57fe5b60405290508082356138ce81615dd2565b905292915050565b6000608082840312156138e7578081fd5b604051608081018181106001600160401b038211171561390357fe5b604052905080823561391481615dd2565b8152602083013561392481615dd2565b6020820152604083013561393781615dd2565b6040820152606083013561394a81615dd2565b6060919091015292915050565b60006040808385031215613969578182fd5b80518181016001600160401b03828210818311171561398457fe5b818452829450808635111561399857600080fd5b85358601915086601f8301126139ad57600080fd5b60206139bc6127ec8435615d50565b833581528181019082850160005b8635811015613a3b578135870189601f19828f030112156139ea57600080fd5b89518a810181811089821117156139fd57fe5b8b528187013588811115613a1057600080fd5b613a1e8f8983860101613031565b825250908a013586820152845292840192908401906001016139ca565b505085525086810135945081851115613a5357600080fd5b61344988868901612cd3565b600060c08284031215613a70578081fd5b60405160c081018181106001600160401b0382111715613a8c57fe5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000610160808385031215613ae4578182fd5b613aed81615d2d565b915050613af9826130d6565b8152613b07602083016130c0565b602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b600060408284031215613b83578081fd5b604051604081016001600160401b038282108183111715613ba057fe5b816040528293508085351115613bb557600080fd5b84358501915085601f830112613bca57600080fd5b81356020613bda6127ec83615d50565b8281528181019085830160005b85811015613c7957813588016040818e03601f19011215613c0757600080fd5b604051604081018181108a82111715613c1c57fe5b6040528187013589811115613c3057600080fd5b613c3e8f8983860101613031565b825250604082013589811115613c5357600080fd5b613c618f8983860101613031565b82890152508552509284019290840190600101613be7565b505086525086810135935082841115613c9157600080fd5b61320888858901612df0565b60006040808385031215613caf578182fd5b80518181016001600160401b038282108183111715613cca57fe5b8184528294508086351115613cde57600080fd5b85358601915086601f830112613cf357600080fd5b8135613d016127ec82615d50565b81815260208082019190850160005b84811015613d89578135870189601f19828f03011215613d2f57600080fd5b89518a81018181108982111715613d4257fe5b8b52602082013588811115613d5657600080fd5b613d658f602083860101613031565b825250908a0135602080830191909152908552938401939190910190600101613d10565b5050855250506020860135935080841115613da357600080fd5b505061333485838601612f09565b803560ff8116811461048e57600080fd5b600060208284031215613dd3578081fd5b8135610c8781615dba565b600060208284031215613def578081fd5b8151610c8781615dba565b60008060408385031215613e0c578081fd5b8251613e1781615dba565b6020840151909250613e2881615dba565b809150509250929050565b600080600060608486031215613e47578081fd5b8335613e5281615dba565b92506020840135613e6281615dba565b915060408401356001600160401b03811115613e7c578182fd5b613e8886828701613031565b9150509250925092565b600080600060608486031215613ea6578081fd5b83516001600160401b0380821115613ebc578283fd5b613ec887838801612841565b94506020860151915080821115613edd578283fd5b50613eea86828701612841565b9250506040840151613efb81615dba565b809150509250925092565b60008060008060808587031215613f1b578182fd5b84516001600160401b0380821115613f31578384fd5b613f3d88838901612841565b9550602091508187015181811115613f53578485fd5b613f5f89828a01612841565b955050604087015181811115613f73578485fd5b87019050601f81018813613f85578384fd5b8051613f936127ec82615d50565b81815283810190838501858402850186018c1015613faf578788fd5b8794505b83851015613fd1578051835260019490940193918501918501613fb3565b508096505050505050613fe6606086016127c1565b905092959194509250565b60006020808385031215614003578182fd5b82516001600160401b03811115614018578283fd5b8301601f81018513614028578283fd5b80516140366127ec82615d50565b81815283810190838501865b8481101561406b576140598a88845189010161307d565b84529286019290860190600101614042565b509098975050505050505050565b60006020828403121561408a578081fd5b8151610c8781615dd2565b6000602082840312156140a6578081fd5b5035919050565b6000806000606084860312156140c1578081fd5b8335925060208401356001600160401b03808211156140de578283fd5b81860191506101008083890312156140f4578384fd5b6040805160608101818110858211171561410a57fe5b825284358481111561411a578687fd5b8501610120818c0381131561412d578788fd5b61413681615d2d565b9050614141826127b6565b815261414f602083016127b6565b602082015261415f8483016127b6565b8482015261416f606083016127b6565b6060820152614180608083016127b6565b608082015261419160a083016127b6565b60a08201526141a260c083016127b6565b60c082015260e0820135868111156141b8578889fd5b6141c48d8285016127cc565b60e08301525084820135868111156141da578889fd5b6141e68d8285016127cc565b82870152508252506141fb8a60208701613a5f565b602082015261420d8a60e08701613890565b81830152955087013592505080821115614225578283fd5b50613e8886828701613774565b600080600060608486031215614246578081fd5b8335925060208401356001600160401b0380821115614263578283fd5b908501906102008288031215614277578283fd5b6040805160608101818110848211171561428d57fe5b825283358381111561429d578586fd5b8401610100818b038113156142b0578687fd5b6142b981615d2d565b90506142c4826127b6565b81526142d2602083016127b6565b60208201526142e28483016127b6565b848201526142f2606083016127b6565b6060820152614303608083016127b6565b608082015261431460a083016127b6565b60a082015261432560c083016127b6565b60c082015260e08201358581111561433b578788fd5b6143478c8285016127cc565b60e08301525082525061435d8960208601613ad1565b60208201526143708961018086016138d6565b818301529450860135915080821115614225578283fd5b60008060006060848603121561439b578081fd5b8335925060208401356001600160401b03808211156143b8578283fd5b9085019061010082880312156143cc578283fd5b604080516060810181811084821117156143e257fe5b82528335838111156143f2578586fd5b840160e0818b031215614403578586fd5b61440d60e0615d2d565b614416826127b6565b8152614424602083016127b6565b60208201526144348483016127b6565b84820152614444606083016127b6565b6060820152614455608083016127b6565b608082015260a08201358581111561446b578788fd5b6144778c8285016127cc565b60a08301525060c08201358581111561448e578788fd5b61449a8c8285016127cc565b60c0830152508252506144b08960208601613a5f565b60208201526143708960e08601613890565b60008060008084860360a08112156144d8578283fd5b85516001600160e01b0319811681146144ef578384fd5b60208701519095506001600160401b038082111561450b578485fd5b61451789838a0161307d565b95506040880151915061452982615dba565b8194506040605f198401121561453d578384fd5b6040519250604083019150828210818311171561455657fe5b50604052606086015161456881615dba565b8152608086015161457881615dba565b6020820152939692955090935050565b600060208284031215614599578081fd5b81356001600160401b038111156145ae578182fd5b610d4984828501613031565b600080604083850312156145cc578182fd5b82356001600160401b038111156145e1578283fd5b6145ed85828601613031565b95602094909401359450505050565b600080600060608486031215614610578081fd5b83516001600160401b0380821115614626578283fd5b6146328783880161307d565b945060208601519350604086015191508082111561464e578283fd5b50613e88868287016136b3565b60008060006060848603121561466f578081fd5b83356001600160401b03811115614684578182fd5b61469086828701613031565b9660208601359650604090950135949350505050565b600080604083850312156146b8578182fd5b82356001600160401b038111156146cd578283fd5b6146d985828601613031565b9250506146e860208401613db1565b90509250929050565b600080600060608486031215614705578081fd5b83356001600160401b0381111561471a578182fd5b61472686828701613031565b93505061473560208501613db1565b9150604084013590509250925092565b600080600060608486031215614759578081fd5b83356001600160401b0381111561476e578182fd5b61477a86828701613031565b93505061478960208501613db1565b915061479760408501613db1565b90509250925092565b6000602082840312156147b1578081fd5b81516001600160401b03808211156147c7578283fd5b81840191506101808083870312156147dd578384fd5b6147e681615d2d565b90506147f1836127c1565b81526147ff602084016127c1565b6020820152614810604084016127c1565b6040820152614821606084016127c1565b6060820152614832608084016127c1565b608082015261484360a084016127c1565b60a082015260c083015182811115614859578485fd5b61486587828601612841565b60c08301525060e08301518281111561487c578485fd5b61488887828601612841565b60e083015250610100838101519082015261012091506148a9828401613026565b91810191909152610140828101519082015261016091820151918101919091529392505050565b6000602082840312156148e1578081fd5b81516001600160401b038111156148f6578182fd5b610d49848285016136b3565b600060208284031215614913578081fd5b81516001600160401b0380821115614929578283fd5b818401915061016080838703121561493f578384fd5b61494881615d2d565b9050614953836127c1565b8152614961602084016127c1565b6020820152614972604084016127c1565b6040820152614983606084016127c1565b6060820152608083015182811115614999578485fd5b6149a587828601612841565b60808301525060a0830151828111156149bc578485fd5b6149c887828601612841565b60a08301525060c083015160c082015260e083015160e082015261010091506149f2828401613026565b91810191909152610120828101519082015261014091820151918101919091529392505050565b600060808284031215614a2a578081fd5b604051608081018181106001600160401b0382111715614a4657fe5b6040528251614a5481615dba565b81526020830151614a6481615dba565b60208201526040830151614a7781615dba565b60408201526060830151614a8a81615dba565b60608201529392505050565b6001600160a01b03169052565b6000815180845260208085019450808401835b83811015614adb5781516001600160a01b031687529582019590820190600101614ab6565b509495945050505050565b6000815180845260208085018081965082840281019150828601855b85811015614b2c578284038952614b1a848351614ef6565b98850198935090840190600101614b02565b5091979650505050505050565b6000815180845260208085018081965082840281019150828601855b85811015614b2c578284038952815160408151818752614b7782880182614ef6565b91505086820151915085810387870152614b918183614aa3565b9a87019a9550505090840190600101614b55565b6000815180845260208085018081965082840281019150828601855b85811015614b2c578284038952815160408151818752614be382880182614ef6565b92880151878403888a01528051808552908901938b9350890191505b80831015614c2157835115158252928801926001929092019190880190614bff565b509a87019a9550505090840190600101614bc1565b6000815180845260208085018081965082840281019150828601855b85811015614b2c578284038952815160408151818752614c7482880182614ef6565b92880151878403888a01528051808552908901938b9350890191505b80831015614cb05783518252928801926001929092019190880190614c90565b509a87019a9550505090840190600101614c52565b6000815180845260208085018081965082840281019150828601855b85811015614b2c578284038952815160408151818752614d0382880182614ef6565b91505086820151915085810387870152614d1d8183614ae6565b9a87019a9550505090840190600101614ce1565b6000815180845260208085018081965082840281019150828601855b85811015614b2c578284038952815160408151818752614d6f82880182614ef6565b92880151878403888a01528051808552908901938b9350890191505b80831015614dab5783518252928801926001929092019190880190614d8b565b509a87019a9550505090840190600101614d4d565b6000815180845260208085018081965082840281019150828601855b85811015614b2c578284038952815160408151818752614dfe82880182614ef6565b92880151878403888a015280518085529089019392508883019150808902830189018b5b82811015614e5057601f19858303018452614e3e828751614ef6565b958b0195938b01939150600101614e22565b509c89019c97505050928601925050600101614ddc565b6000815180845260208085018081965082840281019150828601855b85811015614b2c578284038952815160408151818752614ea582880182614ef6565b92880151878403888a01528051808552908901938b9350890191505b80831015614ee15783518252928801926001929092019190880190614ec1565b509a87019a9550505090840190600101614e83565b60008151808452614f0e816020860160208601615d8e565b601f01601f19169290920160200192915050565b60038110614f2c57fe5b9052565b60098110614f2c57fe5b8051604080845281518482018190526000926020919082019060608088019190848202890101865b82811015614fac57898203605f1901845284518051888452614f8689850182614ef6565b918801516001600160a01b03169388019390935294860194938601939150600101614f62565b50848801519550888103858a0152614fc48187614b39565b9998505050505050505050565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b8281101561503c57898203605f190184528451805188845261501d89850182614ef6565b9188015115159388019390935294860194938601939150600101614ff9565b50848801519550888103858a0152614fc48187614ba5565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b828110156150bd57898203605f19018452845180518884526150a089850182614ef6565b91880151938801939093529486019493860193915060010161507c565b50848801519550888103858a0152614fc48187614c36565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b8281101561514d57898203605f190184528451805188845261512189850182614ef6565b91880151848303858a01529190506151398183614ef6565b9688019695880195935050506001016150fd565b50848801519550888103858a0152614fc48187614cc5565b6000815160e0845261517a60e0850182614f3a565b9050602083015184820360208601526151938282615417565b915050604083015184820360408601526151ad828261524a565b915050606083015184820360608601526151c78282614fd1565b915050608083015184820360808601526151e18282615054565b91505060a083015184820360a08601526151fb82826150d5565b91505060c083015184820360c08601526103eb8282615387565b5115159052565b8051151582526020810151151560208301526040810151151560408301526060810151151560608301525050565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b828110156152b357898203605f190184528451805188845261529689850182614ef6565b918801519388019390935294860194938601939150600101615272565b50848801519550888103858a0152614fc48187614d31565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b615310828251614f30565b60208101516153226020840182614f22565b5060408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152506101408082015181840152505050565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b828110156153ff57898203605f19018452845180518884526153d389850182614ef6565b91880151848303858a01529190506153eb8183614ef6565b9688019695880195935050506001016153af565b50848801519550888103858a0152614fc48187614dc0565b8051604080845281518482018190526000926020919082019060608088019190848202890101865b8281101561548057898203605f190184528451805188845261546389850182614ef6565b91880151938801939093529486019493860193915060010161543f565b50848801519550888103858a0152614fc48187614e67565b6001600160a01b0391909116815260200190565b6001600160a01b03858116825284811660208301528316604082015260806060820181905260009061048290830184614ef6565b6001600160a01b0385811682528416602082015260806040820181905260009061550c90830185614aa3565b828103606084015261551e8185614aa3565b979650505050505050565b6001600160a01b038481168252831660208201526060604082018190526000906103eb90830184614ef6565b6001600160a01b0383168152604060208201819052600090610d4990830184614ae6565b901515815260200190565b90815260200190565b6001600160e01b031991909116815260200190565b600060208252610c876020830184614ef6565b6001600160a01b0392831681529116602082015260400190565b6020808252601f908201527f756e737570706f7274656420746f6b656e20696e2073656e64546f6b656e7300604082015260600190565b60208082526019908201527834b73b30b634b21034b734ba34b0b629b437b93a2a37b5b2b760391b604082015260600190565b60208082526010908201526f34b73b30b634b2103932b1b2b4bb32b960811b604082015260600190565b6020808252600e908201526d1a5b9d985b1a59081b585c9ad95d60921b604082015260600190565b6020808252601590820152740d2dcecc2d8d2c840e6cadcc8a8ded6cadce640e8f605b1b604082015260600190565b6020808252601190820152701a5b9d985b1a59081b5d5b1d1a58d85b1b607a1b604082015260600190565b60208082526014908201527334b73b30b634b2103332b2903932b1b2b4bb32b960611b604082015260600190565b602080825260119082015270696e76616c69642073776170207479706560781b604082015260600190565b6020808252601290820152711d5b9cdd5c1c1bdc9d1959081b585c9ad95d60721b604082015260600190565b6020808252601790820152761cddd85c081c185d1a081b9bdd081cdd5c1c1bdc9d1959604a1b604082015260600190565b6020808252601790820152767265636569766572206e6f7420706f6f6c206c6f67696360481b604082015260600190565b6020808252601f908201527f696e76616c6964206d756c746963616c6c20706172616d73206c656e67746800604082015260600190565b6020808252601190820152700d2dcecc2d8d2c840e6eec2e040e0c2e8d607b1b604082015260600190565b6020808252601a908201527931b0b73737ba103ab73bb930b8103730ba34bb32903a37b5b2b760311b604082015260600190565b6020808252601d908201527f696e76616c69642063616e63656c6c6174696f6e207265636569766572000000604082015260600190565b6020808252601e908201527f696e76616c696420696e697469616c436f6c6c61746572616c546f6b656e0000604082015260600190565b6020808252601690820152753ab739bab83837b93a32b21039b437b93a2a37b5b2b760511b604082015260600190565b6020808252601590820152743ab739bab83837b93a32b2103637b733aa37b5b2b760591b604082015260600190565b6020808252601690820152751d5b9cdd5c1c1bdc9d19590818dbdb1b185d195c985b60521b604082015260600190565b6020808252601990820152781a5b9d985b1a590818d85b1b189858dac818dbdb9d1c9858dd603a1b604082015260600190565b60208082526018908201527734b73b30b634b21034b734ba34b0b62637b733aa37b5b2b760411b604082015260600190565b602080825260189082015277696e76616c6964206d756c746963616c6c20706172616d7360401b604082015260600190565b6020808252600f908201526e1d5b9cdd5c1c1bdc9d1959081ddb9d608a1b604082015260600190565b81516001600160a01b039081168252602092830151169181019190915260400190565b6000608082528551610100806080850152615a6261018085018351614a96565b6020820151615a756101a0860182614a96565b506040820151615a896101c0860182614a96565b506060820151615a9d6101e0860182614a96565b506080820151615ab1610200860182614a96565b5060a0820151615ac5610220860182614a96565b5060c0820151615ad9610240860182614a96565b5060e0820151610120610260860152615af66102a0860182614aa3565b9282015185840361017f1901610280870152929050615b158184614aa3565b925050506020870151615b2b60a08501826152cb565b506040870151615b3f610160850182615215565b50615b4d6020840187614a96565b8281036040840152615b5f8186615165565b9150506103eb6060830184614a96565b600060808252855161020080608085015260018060a01b038251166102808501526020820151615ba36102a0860182614a96565b506040820151615bb76102c0860182614a96565b506060820151615bcb6102e0860182614a96565b506080820151615bdf610300860182614a96565b5060a0820151615bf3610320860182614a96565b5060c0820151615c07610340860182614a96565b5060e08201519150610100610360850152615c26610380850183614aa3565b91506020880151615c3a60a0860182615305565b506040880151615c4c8286018261521c565b5050615b4d6020840187614a96565b6000608082528551610100608084015260018060a01b0380825116610180850152806020830151166101a0850152506040810151615c9d6101c0850182614a96565b506060810151615cb16101e0850182614a96565b506080810151615cc5610200850182614a96565b5060a081015160e0610220850152615ce1610260850182614aa3565b905060c0820151915061017f1984820301610240850152615d028183614aa3565b9150506020870151615b2b60a08501826152cb565b61ffff9290921682521515602082015260400190565b6040518181016001600160401b0381118282101715615d4857fe5b604052919050565b60006001600160401b03821115615d6357fe5b5060209081020190565b60006001600160401b03821115615d8057fe5b50601f01601f191660200190565b60005b83811015615da9578181015183820152602001615d91565b838111156126c55750506000910152565b6001600160a01b0381168114615dcf57600080fd5b50565b8015158114615dcf57600080fd5b60038110615dcf57600080fd5b60098110615dcf57600080fdfea264697066735822122009e899f89cda02f5f524ec3b016d32c2916e6c57a21cb33d5d734fa4d3ee8fac64736f6c63430007060033000000000000000000000000900173a66dbd345006c51fa35fa3ab760fcd843b00000000000000000000000026f7cbd49a4dc3321780ae8e7e0cb460f55a7511000000000000000000000000fd70de6b91282d8017aa4e741e9ae325cab992d80000000000000000000000000537c767cdac0726c76bb89e92904fe28fd02fe1000000000000000000000000e6fab3f0c7199b0d34d7fbe83394fc0e0d06e99d000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000004c0000000000000000000000000d145573ebd7c015e5c869960377e541ee469357c000000000000000000000000d40ef0ebe8c024cc31c2325b01649a7c024f45a4000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000319fd1d1d74607b7a224eb4e31a4aa75837d7d010000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f000000000000000000000000e24f85a5a5c8a9417537d82dfaa3e14efa8fb3220000000000000000000000006c84a8f1c29108f47a79964b5fe888d4f4d0de400000000000000000000000007862f74aa0a1db091be314709248ec24f5f7a967000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000bf30ffe47111ae5d0a5a9f9a187ead0170ba4d8f00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000002b1d9fbbeadad547a8053119e0b8cb290c487e9d00000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000008a948d8d843593bf8c50eeda5f1140846b40a95e0000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f000000000000000000000000a457b8a4c1a8478f0d38af3adc1dd803131bef03000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e583100000000000000000000000043da9b0ab53242c55a9ff9c722ffc2a373d639c700000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000009a916e55f5b67226734cd7b465d51bce1d11a89a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000cfec7a15726d4b5d183783c9033b921ba3a5090a000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000e9a71f5230a41aa09f4099a41d24450e85462fe1000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000da6d2144faec116b53715f76ca4a79925a3bb1fb000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000bf4ab4224b2ac26667cd4b8a0e5134d55cb0b29300000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000d49d22f2a2f05b2088fd42503409e430a8a7d8270000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000047904963fc8b2340414262125af798b9655e58cd0000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f