0 txs
10.9k calls
constructor
constructor(address _gmxExchangeRouter)
functions
addAssetCheck
viewfunction addAssetCheck(address _poolLogic, tuple _asset) view
convert32toAddress
purefunction convert32toAddress(bytes32 data) pure returns (address o)
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)
getBalance
viewfunction getBalance(address _pool, address _asset) view returns (uint256 balance)
getBytes
purefunction getBytes(bytes data, uint8 inputNum, uint256 offset) pure returns (bytes)
getDecimals
purefunction getDecimals(address) pure returns (uint256 decimals)
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)
gmxExchangeRouter
viewfunction gmxExchangeRouter() view returns (address)
isAddAssetCheckGuard
viewfunction isAddAssetCheckGuard() view returns (bool)
read32
purefunction read32(bytes data, uint256 offset, uint256 length) pure returns (bytes32 o)
read4left
purefunction read4left(bytes data, uint256 offset) pure returns (bytes4 o)
removeAssetCheck
viewfunction removeAssetCheck(address pool, address asset) view
txGuard
viewfunction txGuard(address poolManagerLogic, address, bytes data) view returns (uint16 txType, bool)
withdrawProcessing
viewfunction withdrawProcessing(address _pool, address _asset, uint256 _withdrawPortion, address) view returns (address withdrawAsset, uint256 withdrawBalance, tuple[] transactions)
events
No events.
errors
No errors.
creation bytecode
0x60a06040526000805460ff191660011790553480156200001e57600080fd5b5060405162005fdd38038062005fdd833981016040819052620000419162000057565b60601b6001600160601b03191660805262000087565b60006020828403121562000069578081fd5b81516001600160a01b038116811462000080578182fd5b9392505050565b60805160601c615f33620000aa60003980610f305280611ee65250615f336000f3fe608060405234801561001057600080fd5b50600436106100e65760003560e01c806309ff5c7d146100eb5780631053f952146101145780631eba307714610134578063293d80631461015457806341dc16c3146101745780636179309d1461018757806368901513146101a85780636d5fae54146101bb5780636f8ae202146101d057806382f86acc146101f257806385fdb1241461020557806396e026bf14610218578063998546e31461022d578063c3c6279f14610240578063cf54aaa014610253578063d1018a2814610266578063d4fac45d1461026e578063db896b5714610281575b600080fd5b6100fe6100f9366004615063565b610294565b60405161010b919061578e565b60405180910390f35b6101276101223660046150a7565b610327565b60405161010b9190615814565b610147610142366004614f8c565b6103c1565b60405161010b9190615687565b610167610162366004614fd6565b6103c8565b60405161010b91906157ff565b6100fe6101823660046150fe565b61042a565b61019a610195366004614aea565b610508565b60405161010b929190615dc0565b6101276101b6366004614fa4565b6106fe565b6101ce6101c9366004614ab2565b610719565b005b6101e36101de366004614b76565b610c8c565b60405161010b939291906156f5565b6100fe610200366004615063565b610da9565b6101ce610213366004614bc8565b610dc0565b610220610ee1565b60405161010b9190615783565b6100fe61023b366004615063565b610eea565b61016761024e366004614fa4565b610f1b565b6100fe610261366004614a7a565b610f28565b610147610f2e565b6100fe61027c366004614ab2565b610f52565b6100fe61028f366004615018565b611cef565b6000806102ac848460200260040160ff166020611cef565b905060006102bf85600484016020611cef565b905080610308576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b61031c856020808402850160040190611cef565b925050505b92915050565b60606014821061036f576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081bd9999cd95d60921b604482015290519081900360640190fd5b816020029150600061038e85848660200260040160ff16016020611cef565b905060006103a3868584016004016020611cef565b90506103b58660248487010183611d6e565b925050505b9392505050565b805b919050565b60008160040183511015610421576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b50016020015190565b600080610442858560200260040160ff166020611cef565b9050600061045586600484016020611cef565b90508061049e576040805162461bcd60e51b8152602060048201526012602482015271696e707574206973206e6f7420617272617960701b604482015290519081900360640190fd5b60ff841681116104ee576040805162461bcd60e51b815260206004820152601660248201527534b73b30b634b21030b93930bc903837b9b4ba34b7b760511b604482015290519081900360640190fd5b6103b5866020600160ff8816018102850160040190611cef565b600080600061054c85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f1b92505050565b90506001600160e01b0319811663095ea7b360e01b14156106f05760006105ab61014287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250610da9915050565b90506000886001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e857600080fd5b505afa1580156105fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106209190614a96565b90506000816001600160a01b0316634f8419b9846040518263ffffffff1660e01b81526004016106509190615687565b60206040518083038186803b15801561066857600080fd5b505afa15801561067c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a09190614a96565b90506001600160a01b038116158015906106c357506001600160a01b0381163014155b6106e85760405162461bcd60e51b81526004016106df90615c94565b60405180910390fd5b600195505050505b506000905094509492505050565b606061032160048084510384611d6e9092919063ffffffff16565b6107238282610f52565b156107405760405162461bcd60e51b81526004016106df90615a8e565b6000826001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561077b57600080fd5b505afa15801561078f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b39190614a96565b90506000816001600160a01b031663795053d36040518163ffffffff1660e01b815260040160206040518083038186803b1580156107f057600080fd5b505afa158015610804573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108289190614a96565b90506000816001600160a01b031663a950c30060086040518263ffffffff1660e01b815260040161085991906159c7565b60206040518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190614a96565b90506001600160a01b0381166108c157505050610c88565b6000816001600160a01b031663e9d337b86040518163ffffffff1660e01b815260040160206040518083038186803b1580156108fc57600080fd5b505afa158015610910573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109349190614a96565b9050856001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561096f57600080fd5b505afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190614a96565b6001600160a01b0316639be918e6826040518263ffffffff1660e01b81526004016109d29190615687565b60206040518083038186803b1580156109ea57600080fd5b505afa1580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a229190614f70565b610a2f5750505050610c88565b6040516301b2848560e51b81526000906001600160a01b0383169063365090a090610a5e908990600401615687565b60206040518083038186803b158015610a7657600080fd5b505afa158015610a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aae9190614a96565b90506001600160a01b03811615610b58576040516370a0823160e01b81526001600160a01b038216906370a0823190610aeb908a90600401615687565b60206040518083038186803b158015610b0357600080fd5b505afa158015610b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3b919061559d565b15610b585760405162461bcd60e51b81526004016106df90615cfc565b60405163cff027d960e01b81526000906001600160a01b0384169063cff027d990610b87908a90600401615687565b60206040518083038186803b158015610b9f57600080fd5b505afa158015610bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd79190614a96565b90506001600160a01b03811615610c81576040516370a0823160e01b81526001600160a01b038216906370a0823190610c14908b90600401615687565b60206040518083038186803b158015610c2c57600080fd5b505afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c64919061559d565b15610c815760405162461bcd60e51b81526004016106df90615c5d565b5050505050505b5050565b60008060606000610d0c886001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ccf57600080fd5b505afa158015610ce3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d079190614a96565b611ebf565b6001600160a01b0316635464c40e896040518263ffffffff1660e01b8152600401610d379190615687565b604080518083038186803b158015610d4e57600080fd5b505afa158015610d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d86919061521e565b9050610d988888888460200151611f5e565b919a90995090975095505050505050565b60006103ba838360200260040160ff166020611cef565b610dd06040820160208301614f54565b15610ded5760405162461bcd60e51b81526004016106df90615bf8565b6000610e2b836001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ccf57600080fd5b6001600160a01b0316635464c40e846040518263ffffffff1660e01b8152600401610e569190615687565b604080518083038186803b158015610e6d57600080fd5b505afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea5919061521e565b9050826001600160a01b031681600001516001600160a01b031614610edc5760405162461bcd60e51b81526004016106df90615a2a565b505050565b60005460ff1681565b600080610f02848460200260040160ff166020611cef565b9050610f1384600483016020611cef565b949350505050565b60006103218260006103c8565b50601290565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080836001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f8e57600080fd5b505afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614a96565b90506000846001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b15801561100357600080fd5b505afa158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b9190614a96565b9050611045613d7e565b61104d613db3565b600061105885611ebf565b90506040518060c00160405280826001600160a01b031663660d0d676040518163ffffffff1660e01b815260040160206040518083038186803b15801561109e57600080fd5b505afa1580156110b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d69190614a96565b6001600160a01b03168152602001826001600160a01b031663d4fc42c66040518163ffffffff1660e01b815260040160206040518083038186803b15801561111d57600080fd5b505afa158015611131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111559190614a96565b6001600160a01b03168152602001866001600160a01b03166309ed48936040518163ffffffff1660e01b815260040160206040518083038186803b15801561119c57600080fd5b505afa1580156111b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d49190614a96565b6001600160a01b03168152602001826001600160a01b031663b3f006746040518163ffffffff1660e01b815260040160206040518083038186803b15801561121b57600080fd5b505afa15801561122f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112539190614a96565b6001600160a01b03168152602001826001600160a01b03166352dac6566040518163ffffffff1660e01b815260040160206040518083038186803b15801561129a57600080fd5b505afa1580156112ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d29190614a96565b6001600160a01b03168152602001826001600160a01b0316626cc35e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561131857600080fd5b505afa15801561132c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113509190614a96565b6001600160a01b03168152509250604051806080016040528084602001516001600160a01b0316815260200184600001516001600160a01b0316815260200184604001516001600160a01b03168152602001826001600160a01b0316815250915050600082602001516001600160a01b031663714af34b8460000151896040518363ffffffff1660e01b81526004016113ea929190615827565b60806040518083038186803b15801561140257600080fd5b505afa158015611416573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143a91906153d7565b9050600061145289856020015186600001518b612323565b80519091501561172e57600081516001600160401b038111801561147557600080fd5b5060405190808252806020026020018201604052801561149f578160200160208202803683370190505b509050600060405180606001604052806114bd8787602001516124ca565b81526020016114d08787604001516124ca565b81526020016114e38787606001516124ca565b8152509050600083516001600160401b038111801561150157600080fd5b5060405190808252806020026020018201604052801561153b57816020015b611528613dda565b8152602001906001900390816115205790505b50905060005b84518110156115c3578282828151811061155757fe5b60200260200101819052506115a48d8d87848151811061157357fe5b6020026020010151600001516040015188858151811061158f57fe5b602002602001015160400151600001516125a2565b8482815181106115b057fe5b6020908102919091010152600101611541565b506020870151875160a089015160608a0151604051635fdfa28d60e11b81526000946001600160a01b03169363bfbf451a9361160a93919290918a9189919060040161586a565b60006040518083038186803b15801561162257600080fd5b505afa158015611636573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261165e9190810190614daa565b905060005b815181101561172857600082828151811061167a57fe5b60200260200101519050600061168f826125ef565b905080156116bb576116b86116b18d84602001516000015160400151846127a1565b8f90612822565b9d505b604080830151015160200151156116ed576116ea6116b18d8b60400151856040015160400151602001516127a1565b9d505b60408083015181015101511561171e5761171b6116b18d8b60600151856040015160400151604001516127a1565b9d505b5050600101611663565b50505050505b602084015184516040516342a6f8d360e01b81526000926001600160a01b0316916342a6f8d39161176a91908e90869060001990600401615841565b60006040518083038186803b15801561178257600080fd5b505afa158015611796573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117be9190810190614c39565b905060005b81518110156119645760008282815181106117da57fe5b6020026020010151602001519050600260088111156117f557fe5b602082015151600881111561180657fe5b14801561182c57508a6001600160a01b0316816000015160a001516001600160a01b0316145b8061187f57506000602082015151600881111561184557fe5b14801561187f57508a6001600160a01b0316816000015160e0015160008151811061186c57fe5b60200260200101516001600160a01b0316145b156118ac576118a96118a289836000015160c001518460200151606001516127a1565b8b90612822565b99505b6000816020015160c001511180156118dd57508a6001600160a01b0316816000015160a001516001600160a01b0316145b8061192857506000816020015160c0015111801561192857508a6001600160a01b0316816000015160e0015160008151811061191557fe5b60200260200101516001600160a01b0316145b1561195b576119586118a28961194a8a600001516001600160a01b031661287a565b846020015160c001516127a1565b99505b506001016117c3565b50600061197f86600001518c8660000151876040015161292f565b905080156119a3576119a0611999888660400151846127a1565b8a90612822565b98505b83606001516001600160a01b031684604001516001600160a01b0316146119fd5760006119de87600001518d8760000151886060015161292f565b905080156119fb576119f86118a2898760600151846127a1565b99505b505b600086600001516001600160a01b031663f069052a604051602001611a2190615b93565b604051602081830303815290604052805190602001208e604051602001611a49929190615797565b6040516020818303038152906040528051906020012060006000196040518463ffffffff1660e01b8152600401611a82939291906157d5565b60006040518083038186803b158015611a9a57600080fd5b505afa158015611aae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ad69190810190614c07565b905060005b8151811015611c0257600088602001516001600160a01b0316631485d2978a60000151858581518110611b0a57fe5b60200260200101516040518363ffffffff1660e01b8152600401611b2f9291906156dc565b60006040518083038186803b158015611b4757600080fd5b505afa158015611b5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b839190810190615315565b9050611bb7611bb08b611ba28c600001516001600160a01b031661287a565b8460200151608001516127a1565b8d90612822565b9b50611bd7611bb08b836000015160a001518460200151600001516127a1565b9b50611bf7611bb08b836000015160c001518460200151602001516127a1565b9b5050600101611adb565b5060008b6001600160a01b03166370a082318e6040518263ffffffff1660e01b8152600401611c319190615687565b60206040518083038186803b158015611c4957600080fd5b505afa158015611c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c81919061559d565b90508015611cbe57611cbb611cb4670de0b6b3a7640000611cae84611ca88c8c6000612a06565b90612b10565b90612b69565b8c90612822565b9a505b611ccd611cb48e8b898b612bcd565b9a50611cde611cb48e8b898c612db8565b9d9c50505050505050505050505050565b600081830184511015611d47576040805162461bcd60e51b815260206004820152601b60248201527a52656164696e67206279746573206f7574206f6620626f756e647360281b604482015290519081900360640190fd5b826020018401519050816020038015611d66576008810260020a820491505b509392505050565b60608182601f011015611db9576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611e01576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015611e4d576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015611e6c5760405191506000825260208201604052611eb6565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611ea5578051835260209283019201611e8d565b5050858452601f01601f1916604052505b50949350505050565b604051634f8419b960e01b81526000906001600160a01b03831690634f8419b990611f0e907f000000000000000000000000000000000000000000000000000000000000000090600401615687565b60206040518083038186803b158015611f2657600080fd5b505afa158015611f3a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103219190614a96565b60008060606000611f7f670de0b6b3a7640000611cae88611ca88c8c610f52565b905080611f8c5750612319565b8493506000886001600160a01b0316631e50a4a66040518163ffffffff1660e01b815260040160206040518083038186803b158015611fca57600080fd5b505afa158015611fde573d6000803e3d6000fd5b505050506040513d6020811015611ff457600080fd5b505160408051634df48c7360e11b81526001600160a01b038881166004830152915192935090831691639be918e691602480820192602092909190829003018186803b15801561204357600080fd5b505afa158015612057573d6000803e3d6000fd5b505050506040513d602081101561206d57600080fd5b50516120bf576040805162461bcd60e51b815260206004820152601c60248201527b1dda5d1a191c985dd85b08185cdcd95d081b9bdd08195b98589b195960221b604482015290519081900360640190fd5b6000856001600160a01b03166370a082318b6040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561210e57600080fd5b505afa158015612122573d6000803e3d6000fd5b505050506040513d602081101561213857600080fd5b5051604080516314e03fdd60e11b81526001600160a01b038981166004830152602482018490529151929350600092918516916329c07fba91604480820192602092909190829003018186803b15801561219157600080fd5b505afa1580156121a5573d6000803e3d6000fd5b505050506040513d60208110156121bb57600080fd5b5051905080612211576040805162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f75676820617661696c61626c652062616c616e63655f300000604482015290519081900360640190fd5b670de0b6b3a76400008910612268576040805162461bcd60e51b815260206004820152601860248201527734b73b30b634b2103bb4ba34323930bb903837b93a34b7b760411b604482015290519081900360640190fd5b61227681611cae8487612b10565b955060006122a461228f670de0b6b3a76400008c612f20565b6a0c097ce7bc90715b34b9f160241b90612b69565b90506122bc670de0b6b3a7640000611cae8984612b10565b965086831015612313576040805162461bcd60e51b815260206004820152601e60248201527f6e6f7420656e6f75676820617661696c61626c652062616c616e63655f310000604482015290519081900360640190fd5b50505050505b9450945094915050565b60606000846001600160a01b03166377cfb162858860006000196040518563ffffffff1660e01b815260040161235c9493929190615841565b60006040518083038186803b15801561237457600080fd5b505afa158015612388573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123b09190810190614ec4565b905080516001600160401b03811180156123c957600080fd5b5060405190808252806020026020018201604052801561240357816020015b6123f0613e0c565b8152602001906001900390816123e85790505b5091506000805b82518110156124a957600083828151811061242157fe5b6020026020010151602001516040015111801561246a5750846001600160a01b031683828151811061244f57fe5b602002602001015160000151602001516001600160a01b0316145b156124a15782818151811061247b57fe5b602002602001015184838151811061248f57fe5b60209081029190910101526001909101905b60010161240a565b5081516000906124b99083612f20565b845103845250919695505050505050565b6124d2613e39565b6060830151604051638d0cec5760e01b81526000916001600160a01b031690638d0cec5790612505908690600401615687565b6101206040518083038186803b15801561251e57600080fd5b505afa158015612532573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255691906154c1565b90506000612565858386612f7d565b90506040518060400160405280612582878585600001518961330f565b8152602001612597878585602001518961330f565b905295945050505050565b604080516001600160a01b039586166020808301919091529486168183015292909416606083015215156080808301919091528351808303909101815260a0909101909252815191012090565b60208082015101516040015160808201516000908112156126345761262d612622846040015160c001516020015161334b565b608085015190613393565b9050612683565b6000836080015112156126835761268060001961267a612675612666600019886080015161344b90919063ffffffff16565b604088015160c00151516134f4565b61334b565b9061344b565b90505b60008084606001516080015113156126c3576126bc6126ad856040015160c001516020015161334b565b60608601516080015190613393565b905061270f565b6000846060015160800151121561270f5761270c60001961267a6126756126fd60001989606001516080015161344b90919063ffffffff16565b604089015160c00151516134f4565b90505b600061271b8284613523565b90506000811315612737576127308482612822565b9350612767565b60006127458260001961344b565b905084811015612760576127598582612f20565b9450612765565b600094505b505b8385604001516101e0015110156127945760408501516101e0015161278d908590612f20565b9350612799565b600093505b505050919050565b6040516314e03fdd60e11b81526000906001600160a01b038516906329c07fba906127d290869086906004016156dc565b60206040518083038186803b1580156127ea57600080fd5b505afa1580156127fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f13919061559d565b6000828201838110156103ba576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b6000816001600160a01b03166321f8a7216040516020018080602001828103825260038152602001806215d39560ea1b815250602001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156128fd57600080fd5b505afa158015612911573d6000803e3d6000fd5b505050506040513d602081101561292757600080fd5b505192915050565b6000846001600160a01b031663bd02d0f560405160200161294f90615cca565b6040516020818303038152906040528051906020012085858860405160200161297b94939291906157ae565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016129ad919061578e565b60206040518083038186803b1580156129c557600080fd5b505afa1580156129d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129fd919061559d565b95945050505050565b60008084600001516001600160a01b031663095ce6c5866020015186612a308989602001516124ca565b612a3e8a8a604001516124ca565b612a4c8b8b606001516124ca565b604051602001612a5b90615d89565b604051602081830303815290604052805190602001208a6040518863ffffffff1660e01b8152600401612a949796959493929190615940565b6101a06040518083038186803b158015612aad57600080fd5b505afa158015612ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae5919061515f565b5090506000811315612b0557612b008164e8d4a51000612b69565b6129fd565b600095945050505050565b600082612b1f57506000610321565b82820282848281612b2c57fe5b04146103ba5760405162461bcd60e51b8152600401808060200182810382526021815260200180615e8e6021913960400191505060405180910390fd5b6000808211612bbc576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b818381612bc557fe5b049392505050565b60008082602001516001600160a01b031663f069052a604051602001612bf290615d2b565b6040516020818303038152906040528051906020012088604051602001612c1a929190615797565b6040516020818303038152906040528051906020012060006000196040518463ffffffff1660e01b8152600401612c53939291906157d5565b60006040518083038186803b158015612c6b57600080fd5b505afa158015612c7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612ca79190810190614c07565b905060005b8151811015612dae57600084600001516001600160a01b031663ceeea3bf8660200151858581518110612cdb57fe5b60200260200101516040518363ffffffff1660e01b8152600401612d009291906156dc565b60006040518083038186803b158015612d1857600080fd5b505afa158015612d2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612d549190810190615454565b9050612d7a612d7388611ba288602001516001600160a01b031661287a565b8590612822565b9350612da3612d73670de0b6b3a7640000611cae846020015160000151611ca88a8c6000612a06565b935050600101612cac565b5050949350505050565b6040808301805160808401518451845160608101865287516001600160a01b03908116825294518516602082015293891684860152935162eb654b60e41b8152600094612e819489949373c4c9baa81cdfa2d3b3e6d3f63f3effb1ba9af1fa93630eb654b093612e2c93909160040161569b565b60206040518083038186803b158015612e4457600080fd5b505af4158015612e58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e7c919061559d565b6127a1565b905082606001516001600160a01b031683604001516001600160a01b031614610f1357606080840180516080850151855160408051958601815288516001600160a01b039081168752945185166020870152938a1685850152925162eb654b60e41b81526129fd94612f19948a949373c4c9baa81cdfa2d3b3e6d3f63f3effb1ba9af1fa93630eb654b093612e2c939160040161569b565b8290612822565b600082821115612f77576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b612f85613e39565b600183604001516002811115612f9757fe5b14156130685760008360600151600001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015612fe057600080fd5b505afa158015612ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130189190615604565b9050613060600085608001516040518060400160405280886060015181526020018860a001518152506130588560ff166012612f2090919063ffffffff16565b600a0a613588565b9150506103ba565b60028360400151600281111561307a57fe5b141561309b57613094600084608001518560a0015161362f565b90506103ba565b600084604001516001600160a01b031663b4fb1279846040518263ffffffff1660e01b81526004016130cd9190615687565b60206040518083038186803b1580156130e557600080fd5b505afa1580156130f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061311d9190614a96565b604051631536292360e21b81529091506001600160a01b038216906354d8a48c9061314d90600090600401615783565b604080518083038186803b15801561316457600080fd5b505afa925050508015613194575060408051601f3d908101601f1916820190925261319191810190615275565b60015b61324f576000816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156131d357600080fd5b505afa1580156131e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061320b91906155b5565b505050915050600081136132315760405162461bcd60e51b81526004016106df90615a57565b604051806040016040528082815260200182815250925050506103ba565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561328857600080fd5b505afa9250505080156132b8575060408051601f3d908101601f191682019092526132b591810190614a96565b60015b6132d45760405162461bcd60e51b81526004016106df906159d6565b806001600160a01b0316856001600160a01b0316146133055760405162461bcd60e51b81526004016106df90615a03565b5091506103ba9050565b602083015180613334576020850151613331906001600160a01b0316836136be565b90505b6129fd838268327cb2734119d3b7a9601e1b6137f5565b6000600160ff1b821061338f5760405162461bcd60e51b8152600401808060200182810382526028815260200180615ed66028913960400191505060405180910390fd5b5090565b6000816133e7576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156133fb5750600160ff1b83145b156134375760405162461bcd60e51b8152600401808060200182810382526021815260200180615e6d6021913960400191505060405180910390fd5b600082848161344257fe5b05949350505050565b60008261345a57506000610321565b8260001914801561346e5750600160ff1b82145b156134aa5760405162461bcd60e51b8152600401808060200182810382526027815260200180615eaf6027913960400191505060405180910390fd5b828202828482816134b757fe5b05146103ba5760405162461bcd60e51b8152600401808060200182810382526027815260200180615eaf6027913960400191505060405180910390fd5b6000821561351a57613515600161350f84611cae8784612f20565b90612822565b6103ba565b50600092915050565b60008282018183128015906135385750838112155b8061354d575060008312801561354d57508381125b6103ba5760405162461bcd60e51b8152600401808060200182810382526021815260200180615e4c6021913960400191505060405180910390fd5b613590613e39565b60008061359e8587866138a4565b9250509150600082116135c35760405162461bcd60e51b81526004016106df90615d5c565b86156135fe5760408051808201909152806135e286611cae8686612f20565b81526020016135f586611cae8686612822565b90529250612dae565b60408051808201909152806136138487612b69565b81526020016136228487612b69565b9052979650505050505050565b613637613e39565b6000806136448585613916565b9250509150806000141561366a5760405162461bcd60e51b81526004016106df90615b63565b851561369d5760408051808201909152806136858484612f20565b81526020016136948484612822565b905292506136b5565b60405180604001604052808381526020018381525092505b50509392505050565b60408051602080820181905260158284015274282924a1a2afa322a2a22fa6aaa62a24a82624a2a960591b6060808401919091528351808403909101815260808301845280519082012060a08301526001600160a01b0384811660c0808501919091528451808503909101815260e0840180865281519184019190912063bd02d0f560e01b90915260e4840152925160009384939087169263bd02d0f59261010480840193829003018186803b15801561377757600080fd5b505afa15801561378b573d6000803e3d6000fd5b505050506040513d60208110156137a157600080fd5b50519050806103ba576040805162461bcd60e51b815260206004820152601b60248201527a32b6b83a3c90383934b1b2903332b2b21036bab63a34b83634b2b960291b604482015290519081900360640190fd5b600080806000198587098686029250828110908390030390508061382b576000841161382057600080fd5b5082900490506103ba565b80841161383757600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60008060008060006138b68887613a93565b915091506000806000806138ca8c8c613bb5565b9950919550935091508690506000826138ff578584106138f357849950839850600190506138fa565b8699508598505b613906565b8699508598505b5050505050505093509350939050565b600080806001600160a01b0385166139405760405162461bcd60e51b81526004016106df90615c27565b8351602085015160405163052571af60e51b81526000926001600160a01b0389169263a4ae35e0926139769291906004016157eb565b60806040518083038186803b15801561398e57600080fd5b505afa1580156139a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c69190615290565b90506000816000015160070b1380156139ec5750600081602001516001600160401b0316115b8015613a0757506008613a05826040015160030b613d6b565b145b613a235760405162461bcd60e51b81526004016106df90615b31565b846040015160030b613a4c826020015160070b836000015160070b61339390919063ffffffff16565b1215613a6a5760405162461bcd60e51b81526004016106df90615bc1565b80606001519250806000015160070b935080602001516001600160401b03169150509250925092565b81515160009081906001600160a01b038116613ac15760405162461bcd60e51b81526004016106df90615afc565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015613afd57600080fd5b505afa158015613b11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3591906155b5565b50935050925050809350613b6087600001516020015163ffffffff168561282290919063ffffffff16565b421115613b7f5760405162461bcd60e51b81526004016106df90615ac5565b60008213613b9f5760405162461bcd60e51b81526004016106df90615a57565b613ba98287612b10565b94505050509250929050565b60008080806001600160a01b038516613be05760405162461bcd60e51b81526004016106df90615c27565b602080870151805191015160405163052571af60e51b81526001600160a01b0388169263a4ae35e092613c15926004016157eb565b60806040518083038186803b158015613c2d57600080fd5b505afa925050508015613c5d575060408051601f3d908101601f19168201909252613c5a91810190615290565b60015b613c6a5760019150613d62565b806060015193506000816000015160070b138015613c955750600081602001516001600160401b0316115b8015613ca857506000816040015160030b125b8015613cbc5750601219816040015160030b135b15613d5b57613ce8816040015160120160030b600a0a826000015160070b612b1090919063ffffffff16565b945086602001516040015160030b613d17826020015160070b836000015160070b61339390919063ffffffff16565b1215613d265760019250613d56565b613d53816040015160120160030b600a0a82602001516001600160401b0316612b1090919063ffffffff16565b91505b613d60565b600192505b505b92959194509250565b60008082121561338f5781600003610321565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040518060600160405280613ded613e39565b8152602001613dfa613e39565b8152602001613e07613e39565b905290565b6040518060600160405280613e1f613e53565b8152602001613e2c613e73565b8152602001613e07613ec6565b604051806040016040528060008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051602081019091526000815290565b80516103c381615e16565b600082601f830112613ef3578081fd5b81516020613f08613f0383615df9565b615dd6565b8281528181019085830183850287018401881015613f24578586fd5b855b85811015613f4b578151613f3981615e16565b84529284019290840190600101613f26565b5090979650505050505050565b600082601f830112613f68578081fd5b81516020613f78613f0383615df9565b8281528181019085830183850287018401881015613f94578586fd5b855b85811015613f4b57815184529284019290840190600101613f96565b600082601f830112613fc2578081fd5b81356001600160401b03811115613fd557fe5b613fe8601f8201601f1916602001615dd6565b818152846020838601011115613ffc578283fd5b816020850160208301379081016020019190915292915050565b8051600381106103c357600080fd5b8051600981106103c357600080fd5b8051600381900b81146103c357600080fd5b6000610120808385031215614059578182fd5b61406281615dd6565b91505061406e82613ed8565b815261407c60208301613ed8565b602082015261408d60408301613ed8565b604082015261409e60608301613ed8565b60608201526140af60808301613ed8565b60808201526140c060a08301613ed8565b60a08201526140d160c08301613ed8565b60c082015260e08201516001600160401b03808211156140f057600080fd5b6140fc85838601613ee3565b60e08401526101009150818401518181111561411757600080fd5b61412386828701613ee3565b8385015250505092915050565b6000610100808385031215614143578182fd5b61414c81615dd6565b91505061415882613ed8565b815261416660208301613ed8565b602082015261417760408301613ed8565b604082015261418860608301613ed8565b606082015261419960808301613ed8565b60808201526141aa60a08301613ed8565b60a08201526141bb60c08301613ed8565b60c082015260e08201516001600160401b038111156141d957600080fd5b6141e584828501613ee3565b60e08301525092915050565b600060e08284031215614202578081fd5b61420c60e0615dd6565b905061421782613ed8565b815261422560208301613ed8565b602082015261423660408301613ed8565b604082015261424760608301613ed8565b606082015261425860808301613ed8565b608082015260a08201516001600160401b038082111561427757600080fd5b61428385838601613ee3565b60a084015260c084015191508082111561429c57600080fd5b506142a984828501613ee3565b60c08301525092915050565b600060c082840312156142c6578081fd5b60405160c081018181106001600160401b03821117156142e257fe5b80604052508091508251815260208301516020820152604083015161430681615e2e565b80604083015250606083015160608201526080830151608082015260a083015160a08201525092915050565b600060208284031215614343578081fd5b604051602081018181106001600160401b038211171561435f57fe5b8060405250809150825161437281615e2e565b905292915050565b60006080828403121561438b578081fd5b604051608081018181106001600160401b03821117156143a757fe5b806040525080915082516143ba81615e2e565b815260208301516143ca81615e2e565b602082015260408301516143dd81615e2e565b604082015260608301516143f081615e2e565b6060919091015292915050565b600060e0828403121561440e578081fd5b60405160e081018181106001600160401b038211171561442a57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c08201525092915050565b600061018080838503121561448c578182fd5b61449581615dd6565b9150506144a182614025565b81526144af60208301614016565b602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525061016080830151818301525092915050565b6000610140808385031215614539578182fd5b61454281615dd6565b915050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b6000606082840312156145be578081fd5b604051606081018181106001600160401b03821117156145da57fe5b604052825181529050806145f060208401614a4f565b602082015261460160408401614a4f565b60408201525092915050565b60006080828403121561461e578081fd5b604051608081018181106001600160401b038211171561463a57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201525092915050565b6000610540828403121561467d578081fd5b614688610220615dd6565b9050614694838361484b565b81526101406146a5848285016147f7565b60208301526101a06146b985828601614785565b60408401526146cc85610260860161460d565b60608401526146df856102e086016148e0565b60808401526146f285610340860161460d565b60a0840152614705856103c0860161493f565b60c084015261040084015160e0840152610420840151610100840152610440840151610120840152610460840151828401526104808401516101608401526104a08401516101808401526104c08401518184015250506104e08201516101c08201526105008201516101e082015261052082015161020082015292915050565b600060c08284031215614796578081fd5b60405160c081018181106001600160401b03821117156147b257fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b600060608284031215614808578081fd5b604051606081018181106001600160401b038211171561482457fe5b80604052508091508251815260208301516020820152604083015160408201525092915050565b600061014080838503121561485e578182fd5b61486781615dd6565b9150508151815261487a60208301613ed8565b602082015261488b60408301613ed8565b6040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b6000606082840312156148f1578081fd5b604051606081018181106001600160401b038211171561490d57fe5b8060405250809150825161492081615e16565b8082525060208301516020820152604083015160408201525092915050565b600060408284031215614950578081fd5b604051604081018181106001600160401b038211171561496c57fe5b604052825181526020928301519281019290925250919050565b60008183036101c0811215614999578182fd5b604051606081016001600160401b0382821081831117156149b657fe5b8160405282945060608412156149cb57600080fd5b60c08301935081841081851117156149df57fe5b5082604052845192506149f183615e16565b918252602084015191614a0383615e16565b82608083015260408501519250614a1983615e16565b60a082018390528152614a2f8560608601614526565b6020820152614a42856101a08601614332565b6040820152505092915050565b805163ffffffff811681146103c357600080fd5b80516001600160501b03811681146103c357600080fd5b600060208284031215614a8b578081fd5b81356103ba81615e16565b600060208284031215614aa7578081fd5b81516103ba81615e16565b60008060408385031215614ac4578081fd5b8235614acf81615e16565b91506020830135614adf81615e16565b809150509250929050565b60008060008060608587031215614aff578182fd5b8435614b0a81615e16565b93506020850135614b1a81615e16565b925060408501356001600160401b0380821115614b35578384fd5b818701915087601f830112614b48578384fd5b813581811115614b56578485fd5b886020828501011115614b67578485fd5b95989497505060200194505050565b60008060008060808587031215614b8b578182fd5b8435614b9681615e16565b93506020850135614ba681615e16565b9250604085013591506060850135614bbd81615e16565b939692955090935050565b6000808284036060811215614bdb578283fd5b8335614be681615e16565b92506040601f1982011215614bf9578182fd5b506020830190509250929050565b600060208284031215614c18578081fd5b81516001600160401b03811115614c2d578182fd5b610f1384828501613f58565b600060208284031215614c4a578081fd5b81516001600160401b0380821115614c60578283fd5b818401915084601f830112614c73578283fd5b8151614c81613f0382615df9565b818152602080820191908501865b84811015614d9c5781518701601f196040828d0382011215614caf57898afd5b604051604081018181108a82111715614cc457fe5b60409081526020840151825283015189811115614cdf578b8cfd5b9290920191610240838e0383011215614cf6578a8bfd5b6040519150608082018281108a82111715614d0d57fe5b604052602083015189811115614d21578b8cfd5b614d308e602083870101614130565b835250614d408d60408501614479565b6020830152614d538d6101c0850161437a565b604083015261024083015189811115614d6a578b8cfd5b614d798e602083870101613f58565b606084015250602081810192909252865294850194929092019150600101614c8f565b509098975050505050505050565b60006020808385031215614dbc578182fd5b82516001600160401b0380821115614dd2578384fd5b818501915085601f830112614de5578384fd5b8151614df3613f0382615df9565b81815284810190848601610840808502870188018b1015614e12578889fd5b8896505b84871015614eb55780828c031215614e2c578889fd5b6040805160e081018181108982111715614e4257fe5b825283518152614e548d8b8601614986565b8a820152614e668d6101e0860161466b565b82820152614e788d61072086016142b5565b60608201526107e0840151608082015261080084015160a082015261082084015160c0820152855250600196909601959287019290810190614e16565b50909998505050505050505050565b60006020808385031215614ed6578182fd5b82516001600160401b03811115614eeb578283fd5b8301601f81018513614efb578283fd5b8051614f09613f0382615df9565b818152838101908385016101c0808502860187018a1015614f28578788fd5b8795505b84861015614d9c57614f3e8a83614986565b8452600195909501949286019290810190614f2c565b600060208284031215614f65578081fd5b81356103ba81615e2e565b600060208284031215614f81578081fd5b81516103ba81615e2e565b600060208284031215614f9d578081fd5b5035919050565b600060208284031215614fb5578081fd5b81356001600160401b03811115614fca578182fd5b610f1384828501613fb2565b60008060408385031215614fe8578182fd5b82356001600160401b03811115614ffd578283fd5b61500985828601613fb2565b95602094909401359450505050565b60008060006060848603121561502c578081fd5b83356001600160401b03811115615041578182fd5b61504d86828701613fb2565b9660208601359650604090950135949350505050565b60008060408385031215615075578182fd5b82356001600160401b0381111561508a578283fd5b61509685828601613fb2565b9250506020830135614adf81615e3c565b6000806000606084860312156150bb578081fd5b83356001600160401b038111156150d0578182fd5b6150dc86828701613fb2565b93505060208401356150ed81615e3c565b929592945050506040919091013590565b600080600060608486031215615112578081fd5b83356001600160401b03811115615127578182fd5b61513386828701613fb2565b935050602084013561514481615e3c565b9150604084013561515481615e3c565b809150509250925092565b6000808284036101a0811215615173578283fd5b8351925061018080601f198301121561518a578283fd5b61519381615dd6565b91506020850151825260408501516020830152606085015160408301526080850151606083015260a0850151608083015260c085015160a083015260e085015160c08301526101008086015160e08401526101208087015182850152610140915081870151818501525061016080870151828501528287015181850152505050809150509250929050565b60006040828403121561522f578081fd5b604051604081018181106001600160401b038211171561524b57fe5b604052825161525981615e16565b8152602083015161526981615e16565b60208201529392505050565b600060408284031215615286578081fd5b6103ba838361493f565b6000608082840312156152a1578081fd5b604051608081016001600160401b0382821081831117156152be57fe5b81604052845191508160070b82146152d4578384fd5b90825260208401519080821682146152ea578384fd5b5060208201526152fc60408401614034565b6040820152606083015160608201528091505092915050565b600060208284031215615326578081fd5b81516001600160401b038082111561533c578283fd5b908301906101408286031215615350578283fd5b60405160808101818110838211171561536557fe5b604052825182811115615376578485fd5b61538287828601614046565b82525061539286602085016143fd565b60208201526153a5866101008501614332565b6040820152610120830151828111156153bc578485fd5b6153c887828601613f58565b60608301525095945050505050565b6000608082840312156153e8578081fd5b604051608081018181106001600160401b038211171561540457fe5b604052825161541281615e16565b8152602083015161542281615e16565b6020820152604083015161543581615e16565b6040820152606083015161544881615e16565b60608201529392505050565b600060208284031215615465578081fd5b81516001600160401b038082111561547b578283fd5b90830190610140828603121561548f578283fd5b6040516080810181811083821117156154a457fe5b6040528251828111156154b5578485fd5b615382878286016141f1565b60008183036101208112156154d4578182fd5b6040805160c081016001600160401b0382821081831117156154f257fe5b90835285519061550182615e16565b81835260208701516020840152615519848801614016565b8484015283605f198601121561552d578586fd5b835194508385019150848210818311171561554457fe5b5090915260608401519061555782615e16565b81835261556660808601614a4f565b602084015282606082015261557d60a08601613ed8565b608082015261558f8660c087016145ad565b60a082015295945050505050565b6000602082840312156155ae578081fd5b5051919050565b600080600080600060a086880312156155cc578283fd5b6155d586614a63565b94506020860151935060408601519250606086015191506155f860808701614a63565b90509295509295909350565b600060208284031215615615578081fd5b81516103ba81615e3c565b6001600160a01b03169052565b60008151808452815b8181101561565257602081850181015186830182015201615636565b818111156156635782602083870101525b50601f01601f19169290920160200192915050565b80518252602090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0393841681529183166020808401919091528151841660408085019190915290820151841660608401520151909116608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60006060820160018060a01b03808716845260208681860152604060608187015283875180865260808801915060808482028901019550838901875b8281101561577257898803607f19018452815180518816895286015186890186905261575f868a018261562d565b9850509285019290850190600101615731565b50959b9a5050505050505050505050565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b9384526001600160a01b039283166020850152908216604084015216606082015260800190565b9283526020830191909152604082015260600190565b91825263ffffffff16602082015260400190565b6001600160e01b031991909116815260200190565b6000602082526103ba602083018461562d565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b038681168252851660208083019190915260a06040808401829052865191840182905260009260c09283860190898301865b828110156158bf578151845292840192908401906001016158a3565b5050508581036060870152875180825282890191830190865b8181101561591f5783516158ed848251615678565b858101516158fd88860182615678565b5086015161590e6080850182615678565b5092840192918601916001016158d8565b505080955050505050506159366080830184615620565b9695505050505050565b60006101a08201905060018060a01b03808a1683528089511660208401528060208a01511660408401528060408a01511660608401528060608a01511660808401525061599060a0830188615678565b61599d60e0830187615678565b6159ab610120830186615678565b8361016083015282151561018083015298975050505050505050565b61ffff91909116815260200190565b60208082526013908201527219985a5b1959081d1bc819d95d08185cdcd95d606a1b604082015260600190565b6020808252600d908201526c1a5b9d985b1a5908185cdcd95d609a1b604082015260600190565b6020808252601390820152721b9bdd0819db5e081dda1a5d195b1a5cdd1959606a1b604082015260600190565b6020808252601f908201527f4f6e636861696e206f7261636c6520707269636520697320696e76616c696400604082015260600190565b6020808252601d908201527f63616e6e6f742072656d6f7665206e6f6e2d656d707479206173736574000000604082015260600190565b6020808252601d908201527f4f6e636861696e206f7261636c65207072696365206973207374616c65000000604082015260600190565b6020808252601b908201527a4f6e636861696e206f7261636c65207a65726f206164647265737360281b604082015260600190565b602080825260189082015277496e76616c69642050797468206f7261636c65206461746160401b604082015260600190565b60208082526016908201527513d99998da185a5b881c1c9a58d9481a5b9d985b1a5960521b604082015260600190565b6020808252601490820152731050d0d3d5539517d1115413d4d25517d31254d560621b604082015260600190565b6020808252601d908201527f5079746820707269636520636f6e666964656e636520746f6f206c6f77000000604082015260600190565b60208082526015908201527419195c1bdcda5d081b9bdd081cdd5c1c1bdc9d1959605a1b604082015260600190565b6020808252601c908201527b4f6666636861696e206f7261636c65207a65726f206164647265737360201b604082015260600190565b6020808252601e908201527f7769746864726177204161766520636f6c6c61746572616c2066697273740000604082015260600190565b6020808252601c908201527b1d5b9cdd5c1c1bdc9d1959081cdc195b99195c88185c1c1c9bdd985b60221b604082015260600190565b60208082526018908201527710d31052535050931157d1955391125391d7d05353d5539560421b604082015260600190565b6020808252601590820152741c995c185e4810585d99481919589d08199a5c9cdd605a1b604082015260600190565b6020808252601790820152761050d0d3d5539517d5d2551211149055d05317d31254d5604a1b604082015260600190565b6020808252601390820152720d2dcecc2d8d2c840e0e4d2c6ca9ad2dc9ac2f606b1b604082015260600190565b6020808252601e908201527f4d41585f504e4c5f464143544f525f464f525f5749544844524157414c530000604082015260600190565b61ffff9290921682521515602082015260400190565b6040518181016001600160401b0381118282101715615df157fe5b604052919050565b60006001600160401b03821115615e0c57fe5b5060209081020190565b6001600160a01b0381168114615e2b57600080fd5b50565b8015158114615e2b57600080fd5b60ff81168114615e2b57600080fdfe5369676e6564536166654d6174683a206164646974696f6e206f766572666c6f775369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536a26469706673582212200a6ed7e5c5ad5675bd989fd174766feef783248e95384f35e75e94a51347e1ff64736f6c6343000706003300000000000000000000000087d66368cd08a7ca42252f5ab44b2fb6d1fb8d15