0 txs
1 call
constructor
No constructor.
functions
getEnabledMarket
viewfunction getEnabledMarket(DataStore dataStore, address marketAddress) view returns (tuple)
getMarketTokenPrice
viewfunction getMarketTokenPrice(DataStore dataStore, tuple market, tuple indexTokenPrice, tuple longTokenPrice, tuple shortTokenPrice, bytes32 pnlFactorType, bool maximize) view returns (int256, tuple)
getMarketTokenSupply
viewfunction getMarketTokenSupply(MarketToken marketToken) view returns (uint256)
getPoolValueInfo
viewfunction getPoolValueInfo(DataStore dataStore, tuple market, tuple indexTokenPrice, tuple longTokenPrice, tuple shortTokenPrice, bytes32 pnlFactorType, bool maximize) view returns (tuple)
getSwapPathMarkets
viewfunction getSwapPathMarkets(DataStore dataStore, address[] swapPath) view returns (tuple[])
validateEnabledMarket
viewfunction validateEnabledMarket(DataStore dataStore, tuple market) view
validateEnabledMarket
viewfunction validateEnabledMarket(DataStore dataStore, address marketAddress) view
validateMarketTokenBalance
viewfunction validateMarketTokenBalance(DataStore dataStore, tuple market) view
validateMarketTokenBalance
viewfunction validateMarketTokenBalance(DataStore dataStore, tuple[] markets) view
validateMarketTokenBalance
viewfunction validateMarketTokenBalance(DataStore dataStore, address _market) view
validateSwapPath
viewfunction validateSwapPath(DataStore dataStore, address[] swapPath) view
events
No events.
errors
DisabledMarket
error DisabledMarket(address market)
EmptyAddressInMarketTokenBalanceValidation
error EmptyAddressInMarketTokenBalanceValidation(address market, address token)
EmptyMarket
error EmptyMarket()
InvalidMarketTokenBalance
error InvalidMarketTokenBalance(address market, address token, uint256 balance, uint256 expectedMinBalance)
InvalidMarketTokenBalanceForClaimableFunding
error InvalidMarketTokenBalanceForClaimableFunding(address market, address token, uint256 balance, uint256 claimableFundingFeeAmount)
InvalidMarketTokenBalanceForCollateralAmount
error InvalidMarketTokenBalanceForCollateralAmount(address market, address token, uint256 balance, uint256 collateralAmount)
InvalidSwapMarket
error InvalidSwapMarket(address market)
MaxSwapPathLengthExceeded
error MaxSwapPathLengthExceeded(uint256 swapPathLengh, uint256 maxSwapPathLength)
PRBMath__MulDivFixedPointOverflow
error PRBMath__MulDivFixedPointOverflow(uint256 prod1)
PRBMathUD60x18__Exp2InputTooBig
error PRBMathUD60x18__Exp2InputTooBig(uint256 x)
PRBMathUD60x18__LogInputTooSmall
error PRBMathUD60x18__LogInputTooSmall(uint256 x)
UnableToGetBorrowingFactorEmptyPoolUsd
error UnableToGetBorrowingFactorEmptyPoolUsd()
UnableToGetFundingFactorEmptyOpenInterest
error UnableToGetFundingFactorEmptyOpenInterest()
creation bytecode
0x615d20610039600b82828239805160001a607314602c57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100cf5760003560e01c80630988a8f7146100d45780631450a879146100fd57806316ba20891461011f5780631ded168e1461014057806339b1348f146101535780635930015e146101665780635d95a47e1461017957806361a6d817146101995780637b3435fc146101ac5780637b672c9a146101bf5780637d494dc3146101d2578063b656ff7a146101f3578063c468d13514610213578063d2ab7dc014610233578063f2e2a4f514610253575b600080fd5b6100e76100e23660046153be565b610273565b6040516100f491906154a9565b60405180910390f35b81801561010957600080fd5b5061011d610118366004615621565b610330565b005b61013261012d366004615692565b610448565b6040519081526020016100f4565b61011d61014e3660046156af565b6104ac565b61011d6101613660046156e8565b61053a565b61011d6101743660046156af565b610581565b61018c6101873660046156af565b610599565b6040516100f4919061571e565b61011d6101a73660046156e8565b610631565b61011d6101ba3660046153be565b610703565b61011d6101cd36600461572c565b61082d565b6101e56101e03660046157d2565b610864565b6040516100f49291906158dd565b8180156101ff57600080fd5b5061011d61020e3660046158f2565b6108fd565b81801561021f57600080fd5b5061011d61022e366004615960565b610927565b81801561023f57600080fd5b5061011d61024e3660046159ab565b610a4c565b6102666102613660046157d2565b610c6c565b6040516100f49190615a06565b6060600082516001600160401b038111156102905761029061532d565b6040519080825280602002602001820160405280156102c957816020015b6102b66151c7565b8152602001906001900390816102ae5790505b50905060005b83518110156103265760008482815181106102ec576102ec615a15565b602002602001015190506103008682610ffb565b83838151811061031257610312615a15565b6020908102919091010152506001016102cf565b5090505b92915050565b60008061033f8786868661108c565b92509250506103558787876000015186866110f2565b866001600160a01b031663e2a4853a610372876000015186611202565b426040518363ffffffff1660e01b8152600401610390929190615a2b565b6020604051808303816000875af11580156103af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d39190615a39565b508451604051635375a20760e01b81527380c874e50017996106baf6d551ed9b0706e7587b91635375a2079161040f918a918690600401615a52565b60006040518083038186803b15801561042757600080fd5b505af415801561043b573d6000803e3d6000fd5b5050505050505050505050565b6000816001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610488573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a9190615a39565b60405163a8d8fff560e01b81526000907346ffa915d87bf915c2d01ac7d4c1c5338fa5acec9063a8d8fff5906104e89086908690600401615a76565b608060405180830381865af4158015610505573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105299190615a90565b90506105358382610631565b505050565b610549828283604001516112a8565b80606001516001600160a01b031681604001516001600160a01b03160361056e575050565b61057d828283606001516112a8565b5050565b600061058d8383610599565b9050610535838261053a565b6105a16151c7565b60405163a8d8fff560e01b81526000907346ffa915d87bf915c2d01ac7d4c1c5338fa5acec9063a8d8fff5906105dd9087908790600401615a76565b608060405180830381865af41580156105fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061e9190615a90565b905061062a8482610631565b9392505050565b80516001600160a01b0316610659576040516302fde0d760e11b815260040160405180910390fd5b6000826001600160a01b0316637ae1cfca61067784600001516114a6565b6040518263ffffffff1660e01b815260040161069591815260200190565b602060405180830381865afa1580156106b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d69190615af9565b905080156105355781516040516309f8c93760e01b81526106fa9190600401615b16565b60405180910390fd5b6000826001600160a01b031663bd02d0f560405160200161074c9060208082526014908201527309a82b0bea6ae82a0bea082a890be988a9c8ea8960631b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161078091815260200190565b602060405180830381865afa15801561079d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c19190615a39565b905080825111156107ea57815181604051639da3604360e01b81526004016106fa929190615a2b565b60005b825181101561082757600083828151811061080a5761080a615a15565b6020026020010151905061081e8582611528565b506001016107ed565b50505050565b60005b81518110156105355761085c8383838151811061084f5761084f615a15565b602002602001015161053a565b600101610830565b600061086e6151ee565b600061087d8960000151610448565b905060006108908b8b8b8b8b8b8b610c6c565b9050816000036108ba576108af68327cb2734119d3b7a9601e1b6115b1565b935091506108f19050565b80516000036108d0576000935091506108f19050565b60006108e9670de0b6b3a764000083600001518561161f565b945090925050505b97509795505050505050565b600061090e88888888888888611668565b905061091c888888846116af565b505050505050505050565b6000806109348584611736565b91509150816000146109cb5761095d85858561094f866115b1565b61095890615b40565b6118cc565b604051633a5d319360e21b81527380c874e50017996106baf6d551ed9b0706e7587b9063e974c64c9061099a908790879087908790600401615b5c565b60006040518083038186803b1580156109b257600080fd5b505af41580156109c6573d6000803e3d6000fd5b505050505b846001600160a01b031663e2a4853a6109e385611f67565b426040518363ffffffff1660e01b8152600401610a01929190615a2b565b6020604051808303816000875af1158015610a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a449190615a39565b505050505050565b6000610a59858484611fb6565b9050610a7e858585600001518660400151600186606001516000015160000151612359565b610aa1858585600001518660400151600086606001516020015160000151612359565b610ac4858585600001518660600151600186606001516000015160200151612359565b610ae7858585600001518660600151600086606001516020015160200151612359565b8251604084015160808301515151610b05928892889260019061241f565b610b2885858560000151866040015160008660800151602001516000015161241f565b610b4b85858560000151866060015160018660800151600001516020015161241f565b610b6e85858560000151866060015160008660800151602001516020015161241f565b610b8185846000015183604001516124e6565b50846001600160a01b031663e2a4853a610b9e8560000151612561565b426040518363ffffffff1660e01b8152600401610bbc929190615a2b565b6020604051808303816000875af1158015610bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bff9190615a39565b508251602082015160405163387a0f1360e01b81527380c874e50017996106baf6d551ed9b0706e7587b9263387a0f1392610c409289929190600401615a52565b60006040518083038186803b158015610c5857600080fd5b505af415801561091c573d6000803e3d6000fd5b610c746151ee565b610c7c6151ee565b610c8b89898a60400151612599565b60808201526060880151610ca2908a908a90612599565b60a0820152610cb18684612637565b8160800151610cc09190615b85565b60c0820152610ccf8584612637565b8160a00151610cde9190615b85565b60e0820181905260c0820151610cfc91610cf791615b9c565b6115b1565b81526040805160608101825288815260208101889052908101869052610d258a8a83600161264e565b610100830152610d388a8a83600061264e565b8261010001818151610d4a9190615b9c565b9052506040516001600160a01b038b169063bd02d0f590610d9f906020016020808252601d908201527f424f52524f57494e475f4645455f52454345495645525f464143544f52000000604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401610dd391815260200190565b602060405180830381865afa158015610df0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e149190615a39565b610e2a9068327cb2734119d3b7a9601e1b615baf565b6101208301819052610100830151610e4691610cf791906126a4565b82518390610e55908390615bc2565b905250610e678a8a8a600188156126bd565b60208301819052895160c0840151610e86928d9291600191908a612749565b6020830152610e9a8a8a8a600088156126bd565b60408301819052895160e0840151610eb9928d9291600091908a612749565b604083018190526020830151610ecf9190615bc2565b606083018190528251610ee29190615bea565b82528851610ef1908b90612799565b6101408301526000610f04898615612637565b836101400151610f149190615b85565b9050610f1f816115b1565b83518490610f2e908390615bea565b90525089516001600160a01b038c169063bd02d0f590610f4d906127a6565b6040518263ffffffff1660e01b8152600401610f6b91815260200190565b602060405180830381865afa158015610f88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fac9190615a39565b6101608401526000610fbe8a87612637565b846101600151610fce9190615b85565b9050610fd9816115b1565b84518590610fe8908390615bc2565b905250929b9a5050505050505050505050565b6110036151c7565b60405163a8d8fff560e01b81526000907346ffa915d87bf915c2d01ac7d4c1c5338fa5acec9063a8d8fff59061103f9087908790600401615a76565b608060405180830381865af415801561105c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110809190615a90565b905061062a84826127e7565b6000806000806110a18888600001518761282e565b905060006110b18989898961285a565b905060006110c48a8a6000015189612a7a565b905060006110d28385615b85565b905060006110e08284615b9c565b9c919b50929950975050505050505050565b6000856001600160a01b031663340dbab361110d8686612ad0565b846040518363ffffffff1660e01b815260040161112b929190615a2b565b6020604051808303816000875af115801561114a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116e9190615a39565b60405163d206b70560e01b81526001600160a01b03808816600483015286166024820152841515604482015260648101849052608481018290529091507380c874e50017996106baf6d551ed9b0706e7587b9063d206b7059060a40160006040518083038186803b1580156111e257600080fd5b505af41580156111f6573d6000803e3d6000fd5b50505050505050505050565b60006040516020016112549060208082526026908201527f43554d554c41544956455f424f52524f57494e475f464143544f525f5550444160408201526515115117d05560d21b606082015260800190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0385169082015282151560608201526080015b60405160208183030381529060405280519060200120905092915050565b81516001600160a01b031615806112c657506001600160a01b038116155b156112e957815160405163e474a42560e01b81526106fa91908390600401615a76565b81516040516370a0823160e01b81526000916001600160a01b038416916370a082319161131891600401615b16565b602060405180830381865afa158015611335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113599190615a39565b90506000611368858585612b11565b9050808210156113945783516040516333a1ea6b60e01b81526106fa9190859085908590600401615b5c565b60006113a886866000015186600180612e2b565b90506113bd8686600001518660006001612e2b565b6113c79082615b9c565b9050808310156113f357845160405163808c464f60e01b81526106fa9190869086908590600401615b5c565b6000866001600160a01b031663bd02d0f5611412886000015188612eb1565b6040518263ffffffff1660e01b815260040161143091815260200190565b602060405180830381865afa15801561144d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114719190615a39565b90508084101561149d578551604051639dd026db60e01b81526106fa9190879087908590600401615b5c565b50505050505050565b60006040516020016114de906020808252601290820152711254d7d3505492d15517d11254d05093115160721b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03841690820152606001604051602081830303815290604052805190602001209050919050565b60405163a8d8fff560e01b81526000907346ffa915d87bf915c2d01ac7d4c1c5338fa5acec9063a8d8fff5906115649086908690600401615a76565b608060405180830381865af4158015611581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a59190615a90565b905061053583826127e7565b60006001600160ff1b0382111561161b5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016106fa565b5090565b6000806116358561162f86612f2c565b85612f3f565b90506000841361165657611648816115b1565b61165190615b40565b61165f565b61165f816115b1565b95945050505050565b600080611676898989612f4c565b905061168286866126a4565b61168c9082615baf565b905061169884846126a4565b6116a29082615b9c565b9998505050505050505050565b6000846001600160a01b031663e2a4853a6116ca8686612f63565b846040518363ffffffff1660e01b81526004016116e8929190615a2b565b6020604051808303816000875af1158015611707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172b9190615a39565b90505b949350505050565b60008060006117458585612f98565b90508060000361175a576000925090506118c5565b6000856001600160a01b031663bd02d0f561177487613011565b6040518263ffffffff1660e01b815260040161179291815260200190565b602060405180830381865afa1580156117af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d39190615a39565b9050806000036117e957506000925090506118c5565b6000866001600160a01b031663bd02d0f561180388613063565b6040518263ffffffff1660e01b815260040161182191815260200190565b602060405180830381865afa15801561183e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118629190615a39565b905080831161187a57600083945094505050506118c5565b60006118868285615baf565b9050600061189489896130a6565b905060006118a282866126a4565b9050828111156118af5750815b806118ba8188615baf565b975097505050505050505b9250929050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915261190782612f2c565b60408201526000821215611c625761191e8361313e565b80825260405163bd02d0f560e01b815260048101919091526001600160a01b0386169063bd02d0f590602401602060405180830381865afa158015611967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198b9190615a39565b6060820181905260408201511115611bac57806060015181604001516119b19190615baf565b60808201528051604051637152429d60e11b81526001600160a01b0387169163e2a4853a916119e69190600090600401615a2b565b6020604051808303816000875af1158015611a05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a299190615a39565b507380c874e50017996106baf6d551ed9b0706e7587b63555a99798585611a5385606001516115b1565b60006040518563ffffffff1660e01b8152600401611a749493929190615b5c565b60006040518083038186803b158015611a8c57600080fd5b505af4158015611aa0573d6000803e3d6000fd5b50505050846001600160a01b031663340dbab3611abc856127a6565b83608001516040518363ffffffff1660e01b8152600401611ade929190615a2b565b6020604051808303816000875af1158015611afd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b219190615a39565b8160a00181815250507380c874e50017996106baf6d551ed9b0706e7587b634ddb3d818585611b5385608001516115b1565b8560a001516040518563ffffffff1660e01b8152600401611b779493929190615b5c565b60006040518083038186803b158015611b8f57600080fd5b505af4158015611ba3573d6000803e3d6000fd5b50505050611f60565b8051604080830151905163e98aabc160e01b81526001600160a01b0388169263e98aabc192611bdd92600401615a2b565b6020604051808303816000875af1158015611bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c209190615a39565b60a0820181905260405163555a997960e01b81527380c874e50017996106baf6d551ed9b0706e7587b9163555a997991611b7791889188918891600401615b5c565b611c6b836127a6565b6020820181905260405163bd02d0f560e01b815260048101919091526001600160a01b0386169063bd02d0f590602401602060405180830381865afa158015611cb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cdc9190615a39565b6060820181905260408201511115611ea75780606001518160400151611d029190615baf565b60808201526020810151604051637152429d60e11b81526001600160a01b0387169163e2a4853a91611d3a9190600090600401615a2b565b6020604051808303816000875af1158015611d59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7d9190615a39565b507380c874e50017996106baf6d551ed9b0706e7587b634ddb3d818585611da785606001516115b1565b60006040518563ffffffff1660e01b8152600401611dc89493929190615b5c565b60006040518083038186803b158015611de057600080fd5b505af4158015611df4573d6000803e3d6000fd5b50505050846001600160a01b031663340dbab3611e108561313e565b83608001516040518363ffffffff1660e01b8152600401611e32929190615a2b565b6020604051808303816000875af1158015611e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e759190615a39565b8160a00181815250507380c874e50017996106baf6d551ed9b0706e7587b63555a99798585611b5385608001516115b1565b6020810151604080830151905163e98aabc160e01b81526001600160a01b0388169263e98aabc192611edb92600401615a2b565b6020604051808303816000875af1158015611efa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1e9190615a39565b60a08201819052604051634ddb3d8160e01b81527380c874e50017996106baf6d551ed9b0706e7587b91634ddb3d8191610c4091889188918891600401615b5c565b5050505050565b60006040516020016114de9060208082526023908201527f504f534954494f4e5f494d504143545f504f4f4c5f444953545249425554454460408201526217d05560ea1b606082015260800190565b611fbe61524f565b611fc661524f565b611fce61528b565b6000611fe28660400151876060015161317f565b9050611ffa87876000015188604001516001856131ae565b82515152855160608701516120139189916001856131ae565b825151602001528551604087015161202f9189916000856131ae565b825160200151528551606087015161204b9189916000856131ae565b825160209081015181019190915282515190810151905161206c9190615b9c565b602080840191909152825181015190810151905161208a9190615b9c565b6040830152602082015115806120a257506040820151155b156120b25782935050505061062a565b6120c08787600001516131cb565b606083018190528651602084015160408501516120e1938b939291906131e6565b604086015215158085526020850191909152612101578160400151612107565b81602001515b608083018190526020840151606084015161212b929161212691615b85565b6126a4565b60a0830181905261213d908290615c27565b60a083015282511561218e5760a0820151825151516020840151612162929190612f3f565b60c083015260a082015182515160209081015190840151612184929190612f3f565b60e08301526121d4565b60a08201518251602001515160408401516121aa929190612f3f565b60c083015260a08201518251602090810151015160408401516121ce929190612f3f565b60e08301525b8251156122925760c08201518251515160208088015101516121f992919060016138ef565b6060840151515260e082015182515160209081015160408801519091015161222492919060016138ef565b83606001516000015160200181815250506122528260c00151836040015187602001516020015160006138ef565b83608001516020015160000181815250506122808260e00151836040015187604001516020015160006138ef565b6080840151602090810151015261234e565b6122b78260c001518360000151602001516000015187602001516020015160016138ef565b83606001516020015160000181815250506122ed8260e001518360000151602001516020015187604001516020015160016138ef565b836060015160200151602001818152505061231b8260c00151836020015187602001516020015160006138ef565b6080840151515260e082015160208084015160408801519091015161234392919060006138ef565b608084015151602001525b509095945050505050565b8015610a44576000866001600160a01b0316633dbacd1a61237b878787613957565b846040518363ffffffff1660e01b8152600401612399929190615a2b565b6020604051808303816000875af11580156123b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dc9190615a39565b6040516261034760e41b81529091507380c874e50017996106baf6d551ed9b0706e7587b9063061034709061040f90899089908990899089908990600401615c3b565b8015610a44576000866001600160a01b0316633dbacd1a6124418787876139f8565b846040518363ffffffff1660e01b815260040161245f929190615a2b565b6020604051808303816000875af115801561247e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a29190615a39565b604051636d6b205960e01b81529091507380c874e50017996106baf6d551ed9b0706e7587b90636d6b20599061040f90899089908990899089908990600401615c3b565b6000836001600160a01b0316633e49bed061250085613a45565b846040518363ffffffff1660e01b815260040161251e929190615a2b565b6020604051808303816000875af115801561253d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172e9190615a39565b60006040516020016114de9060208082526012908201527111955391125391d7d554111055115117d05560721b604082015260600190565b6000806125ae8460400151856060015161317f565b905080856001600160a01b031663bd02d0f56125ce876000015187613a88565b6040518263ffffffff1660e01b81526004016125ec91815260200190565b602060405180830381865afa158015612609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061262d9190615a39565b61165f9190615c27565b60008161264557825161062a565b50506020015190565b60008061265c868685613ab9565b9050600061266c8787878761108c565b50509050600061268188886000015187612f4c565b90508061268e84846126a4565b6126989190615baf565b98975050505050505050565b600061062a838368327cb2734119d3b7a9601e1b612f3f565b6000806126ce610cf7888887613ab9565b905060006126dd888887613b17565b90508115806126ea575080155b156126fa5760009250505061165f565b6000612707878787613b5e565b90506000612718610cf78385615b85565b90506000876127305761272b8286615bea565b61273a565b61273a8583615bea565b9b9a5050505050505050505050565b60008084121561275a57508261278f565b600061276888848989613b97565b90506000612779610cf786846126a4565b9050808613612788578561278a565b805b925050505b9695505050505050565b60008061165f8484611736565b60006040516020016114de906020808252818101527f4c454e545f504f534954494f4e5f494d504143545f504f4f4c5f414d4f554e54604082015260600190565b6127f18282610631565b80606001516001600160a01b031681604001516001600160a01b03160361057d5780516040516332e6f44d60e21b81526106fa9190600401615b16565b60008061283c858585613bee565b90508060000361285057600091505061062a565b61165f8142615baf565b60008061286986868686613c09565b90508060000361287d57600091505061172e565b6000866001600160a01b0316637ae1cfca6040516020016128db9060208082526023908201527f534b49505f424f52524f57494e475f4645455f464f525f534d414c4c45525f5360408201526249444560e81b606082015260800190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161290f91815260200190565b602060405180830381865afa15801561292c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129509190615af9565b905080156129b857600061296688886001613ab9565b9050600061297689896000613ab9565b905085801561298457508082105b1561299657600094505050505061172e565b851580156129a357508181105b156129b557600094505050505061172e565b50505b60006129c8888888886000613c45565b9050806000036129eb57604051630d5f5aef60e31b815260040160405180910390fd5b60006129fc89896000015188613cbe565b90508015612a1d57612a12898988878686613cd9565b94505050505061172e565b6000612a2e8a8a6000015189613e88565b90506000612a3c8683613ea3565b90506000612a4a8286613f02565b90506000612a5d8d8d600001518c613f10565b9050612a6982826126a4565b9d9c50505050505050505050505050565b6000836001600160a01b031663bd02d0f5612a958585612ad0565b6040518263ffffffff1660e01b8152600401612ab391815260200190565b602060405180830381865afa15801561253d573d6000803e3d6000fd5b6000604051602001611254906020808252601b908201527a21aaa6aaa620aa24ab22afa127a92927aba4a723afa320a1aa27a960291b604082015260600190565b6000612b4c6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b846001600160a01b031663bd02d0f5612b69866000015186613a88565b6040518263ffffffff1660e01b8152600401612b8791815260200190565b602060405180830381865afa158015612ba4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc89190615a39565b81528351612bd890869085613f2b565b602082015283516001600160a01b0386169063bd02d0f590612bfa9086613f46565b6040518263ffffffff1660e01b8152600401612c1891815260200190565b602060405180830381865afa158015612c35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c599190615a39565b604082015283516001600160a01b0386169063bd02d0f590612c7b9086613f87565b6040518263ffffffff1660e01b8152600401612c9991815260200190565b602060405180830381865afa158015612cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cda9190615a39565b606082015283516001600160a01b0386169063bd02d0f590612cfc9086613fc1565b6040518263ffffffff1660e01b8152600401612d1a91815260200190565b602060405180830381865afa158015612d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5b9190615a39565b608082015283516001600160a01b0386169063bd02d0f590612d7d9086613ffe565b6040518263ffffffff1660e01b8152600401612d9b91815260200190565b602060405180830381865afa158015612db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddc9190615a39565b60a0820181905260808201516060830151604084015160208501518551612e039190615b9c565b612e0d9190615b9c565b612e179190615b9c565b612e219190615b9c565b61165f9190615b9c565b600081866001600160a01b031663bd02d0f5612e48888888614034565b6040518263ffffffff1660e01b8152600401612e6691815260200190565b602060405180830381865afa158015612e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ea79190615a39565b61278f9190615c27565b6000604051602001612eef9060208082526018908201527710d31052535050931157d1955391125391d7d05353d5539560421b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b03808616918301919091528316606082015260800161128a565b60008082121561161b578160000361032a565b600061172e848484614068565b6000836001600160a01b031663bd02d0f5612a9585855b6000604051602001611254906020808252600f908201526e544f54414c5f424f52524f57494e4760881b604082015260600190565b6000826001600160a01b031663bd02d0f5612fb28461313e565b6040518263ffffffff1660e01b8152600401612fd091815260200190565b602060405180830381865afa158015612fed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190615a39565b60006040516020016114de9060208082526026908201527f504f534954494f4e5f494d504143545f504f4f4c5f444953545249425554494f6040820152654e5f5241544560d01b606082015260800190565b60006040516020016114de906020808252601f908201527f4d494e5f504f534954494f4e5f494d504143545f504f4f4c5f414d4f554e5400604082015260600190565b600080836001600160a01b031663bd02d0f56130c185611f67565b6040518263ffffffff1660e01b81526004016130df91815260200190565b602060405180830381865afa1580156130fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131209190615a39565b90508060000361313457600091505061032a565b61172e8142615baf565b60006040516020016114de906020808252601b908201527a1413d4d2551253d397d253541050d517d413d3d317d05353d55395602a1b604082015260600190565b6000816001600160a01b0316836001600160a01b0316146131a15760016131a4565b60025b60ff169392505050565b600081866001600160a01b031663bd02d0f5612e48888888614152565b600080836001600160a01b031663bd02d0f56130c185612561565b6000806000613241604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61324b8787614185565b81526132578688615b9c565b8160200181815250506132996040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b896001600160a01b031663bd02d0f56132b18b6141a7565b6040518263ffffffff1660e01b81526004016132cf91815260200190565b602060405180830381865afa1580156132ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133109190615a39565b6040820152815115801561332657506040810151155b1561333e5760006001600094509450945050506138e4565b8160200151600003613363576040516311423d9560e01b815260040160405180910390fd5b61336d8a8a6141f5565b60608301819052825161337f91613ea3565b6080830181905260208301516133959190613f02565b60a08301526040810151600003613465576133b08a8a61420f565b604083015260006001600160a01b038b1663bd02d0f56133cf8c614229565b6040518263ffffffff1660e01b81526004016133ed91815260200190565b602060405180830381865afa15801561340a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342e9190615a39565b905060006134448460a0015185604001516126a4565b9050818111156134515750805b955050508587119250600091506138e49050565b61346f8a8a61426c565b60c0830181905261347f90612f2c565b60e08301526001600160a01b038a1663bd02d0f561349c8b614286565b6040518263ffffffff1660e01b81526004016134ba91815260200190565b602060405180830381865afa1580156134d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fb9190615a39565b81526001600160a01b038a1663bd02d0f56135158b6142c8565b6040518263ffffffff1660e01b815260040161353391815260200190565b602060405180830381865afa158015613550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135749190615a39565b602082015260c082015161010083018190526000908190811280156135985750888a115b806135b1575060008460c001511280156135b157508989115b905080156135e957825160a085015111156135cf57600191506135ee565b82602001518460a0015110156135e457600291505b6135ee565b600191505b600182600281111561360257613602615c76565b0361365f576000613612896115b1565b613627610cf78760a0015187604001516126a4565b6136319190615c8c565b9050898b10156136475761364481615b40565b90505b808560c001516136579190615bc2565b610100860152505b600282600281111561367357613673615c76565b148015613683575060e084015115155b15613790578b6001600160a01b031663bd02d0f56136a08d61430b565b6040518263ffffffff1660e01b81526004016136be91815260200190565b602060405180830381865afa1580156136db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ff9190615a39565b60608401819052600090613714908a90615b85565b9050808560e00151116137485761372e8560e001516115b1565b8560c0015161373d9190615cbc565b61010086015261378e565b60006137578660e001516115b1565b8660c001516137669190615cbc565b90508061377c838860e00151610cf79190615baf565b6137869190615c8c565b610100870152505b505b8b6001600160a01b031663bd02d0f56137a88d614359565b6040518263ffffffff1660e01b81526004016137c691815260200190565b602060405180830381865afa1580156137e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138079190615a39565b60808401526001600160a01b038c1663bd02d0f56138248d614229565b6040518263ffffffff1660e01b815260040161384291815260200190565b602060405180830381865afa15801561385f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138839190615a39565b60a0840181905261010085015161389c9160009061439c565b6101008501819052608084015160a08501516138b992919061439c565b61012085018190526138ca90612f2c565b600085610120015113856101000151965096509650505050505b955095509592505050565b60008415806138fc575083155b156139095750600061172e565b60006139338661392c66038d7ea4c6800068327cb2734119d3b7a9601e1b615b85565b87866143fc565b9050821561394d576139458185614423565b91505061172e565b6139458482615c27565b6000604051602001613998906020808252601b908201527a46554e44494e475f4645455f414d4f554e545f5045525f53495a4560281b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a0015b6040516020818303038152906040528051906020012090509392505050565b60006040516020016139989060208082526021908201527f434c41494d41424c455f46554e44494e475f414d4f554e545f5045525f53495a6040820152604560f81b606082015260800190565b60006040516020016114de906020808252601f908201527f53415645445f46554e44494e475f464143544f525f5045525f5345434f4e4400604082015260600190565b6000604051602001612eef906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b600080613ace8460400151856060015161317f565b90506000613ae7868660000151876040015187866131ae565b90506000613b00878760000151886060015188876131ae565b9050613b0c8183615b9c565b979650505050505050565b600080613b2c8460400151856060015161317f565b90506000613b4586866000015187604001518786614446565b90506000613b0087876000015188606001518887614446565b60008215613b7f5781613b72578351613b78565b83602001515b905061062a565b81613b8e57836020015161172e565b50509051919050565b6000846001600160a01b031663bd02d0f5613bb3868686614463565b6040518263ffffffff1660e01b8152600401613bd191815260200190565b602060405180830381865afa158015611707573d6000803e3d6000fd5b6000836001600160a01b031663bd02d0f5612a958585611202565b6000808215613c3a576000613c1f878786613b17565b855160200151909150613c329082615b85565b91505061172b565b61278f868685613ab9565b60008083613c57578560600151613c5d565b85604001515b90506000613c6c888884612599565b905060008415613c9a5785613c8957866040015160200151613c93565b8660200151602001515b9050613cb4565b85613caa57604087015151613cb1565b6020870151515b90505b6116a28183615b85565b6000836001600160a01b031663bd02d0f5612a9585856144d7565b600080613ce98888888888614511565b90506000886001600160a01b031663bd02d0f5613d0a8a600001518a61453f565b6040518263ffffffff1660e01b8152600401613d2891815260200190565b602060405180830381865afa158015613d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d699190615a39565b90506000613d7783836126a4565b90508483118015613d9357508468327cb2734119d3b7a9601e1b115b1561278a576000613da48685615baf565b905060008b6001600160a01b031663bd02d0f5613dc58d600001518d61457a565b6040518263ffffffff1660e01b8152600401613de391815260200190565b602060405180830381865afa158015613e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e249190615a39565b9050600084821115613e3d57613e3a8583615baf565b90505b6000613e558968327cb2734119d3b7a9601e1b615baf565b905080613e628584615b85565b613e6c9190615c27565b613e769086615b9c565b9e9d5050505050505050505050505050565b6000836001600160a01b031663bd02d0f5612a9585856145ca565b600068327cb2734119d3b7a9601e1b831015613ec15750600061032a565b68327cb2734119d3b7a9601e1b8203613edb57508161032a565b6000613ef7613ee985614609565b613ef285614609565b61461a565b905061172e8161465c565b600061062a8383600061466d565b6000836001600160a01b031663bd02d0f5612a9585856146b5565b6000836001600160a01b031663bd02d0f5612a9585856146eb565b6000604051602001612eef906020808252601b908201527a10d31052535050931157d0d3d31310551154905317d05353d55395602a1b604082015260600190565b6000604051602001612eef9060208082526014908201527310d31052535050931157d1915157d05353d5539560621b604082015260600190565b6000604051602001612eef9060208082526017908201527610d31052535050931157d55257d1915157d05353d55395604a1b604082015260600190565b6000604051602001612eef9060208082526010908201526f10519192531250551157d49155d0549160821b604082015260600190565b6000604051602001613998906020808252600e908201526d434f4c4c41544552414c5f53554d60901b604082015260600190565b60008080600019858709858702925082811083820303915050806000036140a25783828161409857614098615c11565b049250505061062a565b8084116140e95760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b60448201526064016106fa565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000604051602001613998906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b600081831161419d576141988383615baf565b61062a565b61062a8284615baf565b60006040516020016114de9060208082526022908201527f46554e44494e475f494e4352454153455f464143544f525f5045525f5345434f604082015261139160f21b606082015260800190565b6000826001600160a01b031663bd02d0f5612fb284614728565b6000826001600160a01b031663bd02d0f5612fb284614765565b60006040516020016114de906020808252601d908201527f4d41585f46554e44494e475f464143544f525f5045525f5345434f4e44000000604082015260600190565b6000826001600160a01b031663dc97d962612fb284613a45565b60006040516020016114de906020808252601c908201527b5448524553484f4c445f464f525f535441424c455f46554e44494e4760201b604082015260600190565b60006040516020016114de906020808252601e908201527f5448524553484f4c445f464f525f44454352454153455f46554e44494e470000604082015260600190565b60006040516020016114de9060208082526022908201527f46554e44494e475f44454352454153455f464143544f525f5045525f5345434f604082015261139160f21b606082015260800190565b60006040516020016114de906020808252601d908201527f4d494e5f46554e44494e475f464143544f525f5045525f5345434f4e44000000604082015260600190565b6000806143a885612f2c565b9050838110156143b55750825b828111156143c05750815b600085156143e3576143d4610cf787612f2c565b6143de9087615cbc565b6143e6565b60015b9050806143f2836115b1565b61278f9190615c8c565b60008115614418576144118585856001614799565b905061172e565b61172b858585614068565b60008160016144328286615b9c565b61443c9190615baf565b61062a9190615c27565b600081866001600160a01b031663bd02d0f5612e488888886147ea565b6000604051602001614497906020808252600e908201526d26a0ac2fa827262fa320a1aa27a960911b604082015260600190565b60408051601f1981840301815282825280516020918201209083015281018590526001600160a01b0384166060820152821515608082015260a0016139d9565b60006040516020016112549060208082526014908201527327a82a24a6a0a62faaa9a0a3a2afa320a1aa27a960611b604082015260600190565b60008061452387876000015187614827565b9050600061453184836126a4565b905060006116a28683613f02565b6000604051602001611254906020808252601590820152742120a9a2afa127a92927aba4a723afa320a1aa27a960591b604082015260600190565b60006040516020016112549060208082526024908201527f41424f56455f4f5054494d414c5f55534147455f424f52524f57494e475f464160408201526321aa27a960e11b606082015260800190565b6000604051602001611254906020808252601990820152782127a92927aba4a723afa2ac2827a722a72a2fa320a1aa27a960391b604082015260600190565b600061032a64e8d4a5100083615c27565b60008260000361464257811561463157600061463b565b670de0b6b3a76400005b905061032a565b61062a61465761465185614842565b846148f8565b614904565b600061032a64e8d4a5100083615b85565b60008360000361467f5750600061062a565b811561469e57613b788468327cb2734119d3b7a9601e1b856001614799565b61172e8468327cb2734119d3b7a9601e1b85614068565b60006040516020016112549060208082526010908201526f2127a92927aba4a723afa320a1aa27a960811b604082015260600190565b6000604051602001612eef9060208082526017908201527614d5d05417d253541050d517d413d3d317d05353d55395604a1b604082015260600190565b60006040516020016114de90602080825260179082015276232aa72224a723afa2ac2827a722a72a2fa320a1aa27a960491b604082015260600190565b60006040516020016114de906020808252600e908201526d232aa72224a723afa320a1aa27a960911b604082015260600190565b6000806147a7868686614068565b905060018360028111156147bd576147bd615c76565b1480156147da5750600084806147d5576147d5615c11565b868809115b1561172b5761278f600182615b9c565b6000604051602001613998906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b6000836001600160a01b031663bd02d0f5612a95858561494a565b6000670de0b6b3a764000082101561487057604051633621413760e21b8152600481018390526024016106fa565b6000614885670de0b6b3a7640000840461498c565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff1981016148ae575050919050565b6706f05b59d3b200005b80156148f057670de0b6b3a7640000828002049150671bc16d674ec8000082106148e8579283019260019190911c905b60011c6148b8565b505050919050565b600061062a8383614a6f565b6000680a688906bd8b000000821061493257604051634a4f26f160e01b8152600481018390526024016106fa565b670de0b6b3a7640000604083901b0461062a81614b35565b6000604051602001611254906020808252601c908201527b27a822a72fa4a72a22a922a9aa2fa922a9a2a92b22afa320a1aa27a960211b604082015260600190565b6000600160801b82106149ac57608091821c916149a99082615b9c565b90505b600160401b82106149ca57604091821c916149c79082615b9c565b90505b600160201b82106149e857602091821c916149e59082615b9c565b90505b620100008210614a0557601091821c91614a029082615b9c565b90505b6101008210614a2157600891821c91614a1e9082615b9c565b90505b60108210614a3c57600491821c91614a399082615b9c565b90505b60048210614a5757600291821c91614a549082615b9c565b90505b60028210614a6a5761032a600182615b9c565b919050565b60008080600019848609848602925082811083820303915050670de0b6b3a76400008110614ab35760405163698d9a0160e11b8152600481018290526024016106fa565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003614af15780670de0b6b3a764000085040194505050505061032a565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b600160bf1b6001603f1b821615614b555768016a09e667f3bcc9090260401c5b6001603e1b821615614b70576801306fe0a31b7152df0260401c5b6001603d1b821615614b8b576801172b83c7d517adce0260401c5b6001603c1b821615614ba65768010b5586cf9890f62a0260401c5b6001603b1b821615614bc1576801059b0d31585743ae0260401c5b6001603a1b821615614bdc57680102c9a3e778060ee70260401c5b600160391b821615614bf75768010163da9fb33356d80260401c5b600160381b821615614c1257680100b1afa5abcbed610260401c5b600160371b821615614c2d5768010058c86da1c09ea20260401c5b600160361b821615614c48576801002c605e2e8cec500260401c5b600160351b821615614c6357680100162f3904051fa10260401c5b600160341b821615614c7e576801000b175effdc76ba0260401c5b600160331b821615614c9957680100058ba01fb9f96d0260401c5b600160321b821615614cb45768010002c5cc37da94920260401c5b600160311b821615614ccf576801000162e525ee05470260401c5b600160301b821615614cea5768010000b17255775c040260401c5b6001602f1b821615614d05576801000058b91b5bc9ae0260401c5b6001602e1b821615614d2057680100002c5c89d5ec6d0260401c5b6001602d1b821615614d3b5768010000162e43f4f8310260401c5b6001602c1b821615614d5657680100000b1721bcfc9a0260401c5b6001602b1b821615614d715768010000058b90cf1e6e0260401c5b6001602a1b821615614d8c576801000002c5c863b73f0260401c5b600160291b821615614da757680100000162e430e5a20260401c5b600160281b821615614dc2576801000000b1721835510260401c5b600160271b821615614ddd57680100000058b90c0b490260401c5b600160261b821615614df85768010000002c5c8601cc0260401c5b600160251b821615614e13576801000000162e42fff00260401c5b600160241b821615614e2e5768010000000b17217fbb0260401c5b600160231b821615614e49576801000000058b90bfce0260401c5b600160221b821615614e6457680100000002c5c85fe30260401c5b600160211b821615614e7f5768010000000162e42ff10260401c5b600160201b821615614e9a57680100000000b17217f80260401c5b6380000000821615614eb55768010000000058b90bfc0260401c5b6340000000821615614ed0576801000000002c5c85fe0260401c5b6320000000821615614eeb57680100000000162e42ff0260401c5b6310000000821615614f06576801000000000b17217f0260401c5b6308000000821615614f2157680100000000058b90c00260401c5b6304000000821615614f3c5768010000000002c5c8600260401c5b6302000000821615614f57576801000000000162e4300260401c5b6301000000821615614f725768010000000000b172180260401c5b62800000821615614f8c576801000000000058b90c0260401c5b62400000821615614fa657680100000000002c5c860260401c5b62200000821615614fc05768010000000000162e430260401c5b62100000821615614fda57680100000000000b17210260401c5b62080000821615614ff45768010000000000058b910260401c5b6204000082161561500e576801000000000002c5c80260401c5b6202000082161561502857680100000000000162e40260401c5b620100008216156150415761b172600160401b010260401c5b618000821615615059576158b9600160401b010260401c5b61400082161561507157612c5d600160401b010260401c5b6120008216156150895761162e600160401b010260401c5b6110008216156150a157610b17600160401b010260401c5b6108008216156150b95761058c600160401b010260401c5b6104008216156150d1576102c6600160401b010260401c5b6102008216156150e957610163600160401b010260401c5b6101008216156151005760b1600160401b010260401c5b6080821615615116576059600160401b010260401c5b604082161561512c57602c600160401b010260401c5b6020821615615142576016600160401b010260401c5b601082161561515857600b600160401b010260401c5b600882161561516e576006600160401b010260401c5b6004821615615184576003600160401b010260401c5b600282161561519a576001600160401b010260401c5b60018216156151b0576001600160401b010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6040518061018001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060001515815260200160008152602001600081526020016152796152d6565b81526020016152866152d6565b905290565b60405180610100016040528061529f6152d6565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051608081018252600091810182815260608201929092529081908152602001615286604051806040016040528060008152602001600081525090565b6001600160a01b038116811461532a57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156153655761536561532d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156153935761539361532d565b604052919050565b60006001600160401b038211156153b4576153b461532d565b5060051b60200190565b600080604083850312156153d157600080fd5b82356153dc81615315565b915060208301356001600160401b038111156153f757600080fd5b8301601f8101851361540857600080fd5b803561541b6154168261539b565b61536b565b8082825260208201915060208360051b85010192508783111561543d57600080fd5b6020840193505b8284101561546857833561545781615315565b825260209384019390910190615444565b809450505050509250929050565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b602080825282518282018190526000918401906040840190835b8181101561234e576154d6838551615476565b60209390930192608092909201916001016154c3565b6000608082840312156154fe57600080fd5b615506615343565b9050813561551381615315565b8152602082013561552381615315565b6020820152604082013561553681615315565b6040820152606082013561554981615315565b606082015292915050565b60006040828403121561556657600080fd5b604080519081016001600160401b03811182821017156155885761558861532d565b604052823581526020928301359281019290925250919050565b600060c082840312156155b457600080fd5b604051606081016001600160401b03811182821017156155d6576155d661532d565b6040529050806155e68484615554565b81526155f58460408501615554565b60208201526156078460808501615554565b60408201525092915050565b801515811461532a57600080fd5b60008060008060006101a0868803121561563a57600080fd5b853561564581615315565b9450602086013561565581615315565b935061566487604088016154ec565b92506156738760c088016155a2565b915061018086013561568481615613565b809150509295509295909350565b6000602082840312156156a457600080fd5b813561062a81615315565b600080604083850312156156c257600080fd5b82356156cd81615315565b915060208301356156dd81615315565b809150509250929050565b60008060a083850312156156fb57600080fd5b823561570681615315565b915061571584602085016154ec565b90509250929050565b6080810161032a8284615476565b6000806040838503121561573f57600080fd5b823561574a81615315565b915060208301356001600160401b0381111561576557600080fd5b8301601f8101851361577657600080fd5b80356157846154168261539b565b8082825260208201915060208360071b8501019250878311156157a657600080fd5b6020840193505b82841015615468576157bf88856154ec565b82526020820191506080840193506157ad565b60008060008060008060006101a0888a0312156157ee57600080fd5b87356157f981615315565b96506158088960208a016154ec565b95506158178960a08a01615554565b94506158268960e08a01615554565b9350615836896101208a01615554565b9250610160880135915061018088013561584f81615613565b8091505092959891949750929550565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008101516101008301526101208101516101208301526101408101516101408301526101608101516101608301525050565b8281526101a0810161062a602083018461585f565b600080600080600080600060e0888a03121561590d57600080fd5b873561591881615315565b9650602088013561592881615315565b9550604088013561593881615613565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060006060848603121561597557600080fd5b833561598081615315565b9250602084013561599081615315565b915060408401356159a081615315565b809150509250925092565b60008060008061018085870312156159c257600080fd5b84356159cd81615315565b935060208501356159dd81615315565b92506159ec86604087016154ec565b91506159fb8660c087016155a2565b905092959194509250565b610180810161032a828461585f565b634e487b7160e01b600052603260045260246000fd5b918252602082015260400190565b600060208284031215615a4b57600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0392831681529116602082015260400190565b60006080828403128015615aa357600080fd5b50615aac615343565b8251615ab781615315565b81526020830151615ac781615315565b60208201526040830151615ada81615315565b60408201526060830151615aed81615315565b60608201529392505050565b600060208284031215615b0b57600080fd5b815161062a81615613565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201615b5557615b55615b2a565b5060000390565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b808202811582820484141761032a5761032a615b2a565b8082018082111561032a5761032a615b2a565b8181038181111561032a5761032a615b2a565b8082018281126000831280158216821582161715615be257615be2615b2a565b505092915050565b8181036000831280158383131683831282161715615c0a57615c0a615b2a565b5092915050565b634e487b7160e01b600052601260045260246000fd5b600082615c3657615c36615c11565b500490565b6001600160a01b039687168152948616602086015292909416604084015215156060830152608082019290925260a081019190915260c00190565b634e487b7160e01b600052602160045260246000fd5b80820260008212600160ff1b84141615615ca857615ca8615b2a565b818105831482151761032a5761032a615b2a565b600082615ccb57615ccb615c11565b600160ff1b821460001984141615615ce557615ce5615b2a565b50059056fea264697066735822122075a47a3fe8e19fa18b0604c0cbf3e9894f5491432c4fe1ac373ed24ec573754064736f6c634300081c0033