[ { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "address", "name": "_weth", "type": "address" }, { "internalType": "address", "name": "_gameConfigurationManager", "type": "address" }, { "internalType": "address", "name": "_liquidityPoolRouter", "type": "address" }, { "internalType": "address", "name": "_blast", "type": "address" }, { "internalType": "address", "name": "_blastPoints", "type": "address" }, { "internalType": "address", "name": "_blastPointsOperator", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxDeposit", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxMint", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxRedeem", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "uint256", "name": "max", "type": "uint256" } ], "name": "ERC4626ExceededMaxWithdraw", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "IsPaused", "type": "error" }, { "inputs": [], "name": "LiquidityPool__NotAuthorized", "type": "error" }, { "inputs": [], "name": "LiquidityPool__UnsupportedOperation", "type": "error" }, { "inputs": [], "name": "MathOverflowedMulDiv", "type": "error" }, { "inputs": [], "name": "NoOngoingTransferInProgress", "type": "error" }, { "inputs": [], "name": "NotOwner", "type": "error" }, { "inputs": [], "name": "NotPaused", "type": "error" }, { "inputs": [], "name": "ReentrancyFail", "type": "error" }, { "inputs": [], "name": "RenouncementNotInProgress", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [], "name": "TransferAlreadyInProgress", "type": "error" }, { "inputs": [], "name": "TransferNotInProgress", "type": "error" }, { "inputs": [], "name": "WrongPotentialOwner", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [], "name": "CancelOwnershipTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [], "name": "InitiateOwnershipRenouncement", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": false, "internalType": "address", "name": "potentialOwner", "type": "address" } ], "name": "InitiateOwnershipTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "game", "type": "address" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "address", "name": "currency", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "shortfall", "type": "uint256" } ], "name": "InsufficientFundsForPayout", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "NewOwner", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "game", "type": "address" }, { "indexed": false, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "address", "name": "currency", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "PayoutTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "game", "type": "address" }, { "indexed": false, "internalType": "address", "name": "protocolFeeRecipient", "type": "address" }, { "indexed": false, "internalType": "address", "name": "currency", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ProtocolFeeTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "GAME_CONFIGURATION_MANAGER", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "LIQUIDITY_POOL_ROUTER", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "cancelOwnershipTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "claimYield", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "confirmOwnershipRenouncement", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "confirmOwnershipTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "initiateOwnershipRenouncement", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newPotentialOwner", "type": "address" } ], "name": "initiateOwnershipTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ownershipStatus", "outputs": [ { "internalType": "enum IOwnableTwoSteps.Status", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "potentialOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "togglePaused", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "game", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "transferPayoutToPlayer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "game", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "protocolFeeRecipient", "type": "address" } ], "name": "transferProtocolFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
61010080604052346200039a57600060e082620032928038038091620000268285620006c1565b83398101031262000678576200003c82620006e5565b916200004b60208201620006e5565b906200005a60408201620006e5565b906200006960608201620006e5565b916200007860808301620006e5565b6200009460c06200008c60a08601620006e5565b9401620006e5565b9360405197620000a489620006a5565b600e89526d0b29e989e408ec2dacae6408aa8960931b60208a015260405198620000ce8a620006a5565b60048a52630f28aa8960e31b60208b01528051906001600160401b0382116200066457600354600181811c9116801562000659575b602082101462000645579081601f849311620005d4575b50602090601f831160011462000547578b926200053b575b50508160011b916000199060031b1c1916176003555b88516001600160401b0381116200052757600454600181811c911680156200051c575b60208210146200050857601f8111620004a4575b506020601f8211600114620004195781908a9b8b926200040d575b50508160011b916000199060031b1c1916176004555b620001c46001600160a01b038816620006fa565b901562000404575b60a0526001600160a01b03878116608052600580546001600160a01b0319169290911691821790556040518181529093907f3edd90e7770f06fafde38004653b33870066c33bfc923ff6102acd601f85dfbc90602090a1600160075560c05260e0526001600160a01b0316803b15620004005760648692604051988993849263c8992e6160e01b8452600260048501526001602485015260448401525af18015620003f557620003de575b92935083926001600160a01b031690813b15620003d9576040516336b91f2b60e01b81526001600160a01b0390911660048201529083908290602490829084905af1908115620003ce578391620003b3575b5050604051631a33757d60e01b8152600260048201529260209184916024918391906001600160a01b03165af1908115620003a7575062000371575b604051612abb9081620007d78239608051818181610aea01528181610dab015281816110f001528181611487015281816117fc01528181611ef10152611fbe015260a05181610948015260c0518181816111d201526123ca015260e051818181610b5901526125970152f35b602090813d83116200039f575b6200038a8183620006c1565b810103126200039a573862000305565b600080fd5b503d6200037e565b604051903d90823e3d90fd5b620003be906200067b565b620003cb578138620002c9565b50fd5b6040513d85823e3d90fd5b505050fd5b929093620003ec906200067b565b91839062000277565b6040513d86823e3d90fd5b8580fd5b506012620001cc565b0151905038806200019a565b60048a527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b9a8a5b601f19841681106200048b57509a82918b9c600194601f1981161062000471575b505050811b01600455620001b0565b015160001960f88460031b161c1916905538808062000462565b828201518d556001909c019b6020928301920162000441565b60048a527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81016020841062000500575b601f830160051c82018110620004f45750506200017f565b8b8155600101620004dc565b5080620004dc565b634e487b7160e01b8a52602260045260248afd5b90607f16906200016b565b634e487b7160e01b89526041600452602489fd5b01519050388062000132565b60038c528b93507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b91905b601f1984168510620005b8576001945083601f198116106200059e575b505050811b0160035562000148565b015160001960f88460031b161c191690553880806200058f565b8181015183556020948501946001909301929091019062000572565b60038c529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c8101602085106200063d575b90849392915b8d601f840160051c830182106200062f575050506200011a565b815585945060010162000615565b50806200060f565b634e487b7160e01b8b52602260045260248bfd5b90607f169062000103565b634e487b7160e01b8a52604160045260248afd5b80fd5b6001600160401b0381116200068f57604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176200068f57604052565b601f909101601f19168101906001600160401b038211908210176200068f57604052565b51906001600160a01b03821682036200039a57565b906040516020908181019063313ce56760e01b8252600481526200071e81620006a5565b5160009485928392916001600160a01b03165afa3d15620007cd573d906001600160401b038211620007b9576040519162000763601f8201601f1916850184620006c1565b82523d858484013e5b80620007ad575b6200077f575b50508190565b8181805181010312620007a957015160ff8111156200079f578062000779565b6001925060ff1690565b8380fd5b50818151101562000773565b634e487b7160e01b85526041600452602485fd5b6060906200076c56fe60806040526004361015610023575b361561001957600080fd5b610021611fa7565b005b60003560e01c806301e1d1141461029057806306fdde031461028b57806307a2d13a1461024a578063095ea7b3146102865780630a28a4771461028157806318160ddd1461027c57806323452b9c1461027757806323b872dd146102725780632bb5a9e61461026d578063313ce5671461026857806336566f061461026357806338d52e0f1461025e5780633e041d0f146102595780633e56753914610254578063402d267d146101f55780634376d26c1461024f5780634cdad5061461024a5780635b6ac011146102455780635c975abb146102405780636e553f651461023b5780636f64c4c41461023657806370a08231146101eb5780637200b829146102315780637762df251461022c5780637d1d27f2146102275780638da5cb5b1461022257806394bf804d1461021d57806395d89b4114610218578063999927df14610213578063a9059cbb1461020e578063b3d7f6b914610209578063b460af9414610204578063ba087652146101ff578063c0b6f561146101fa578063c63d75b6146101f5578063c6e6f592146101e1578063ce96cb77146101f0578063d905777e146101eb578063dd62ed3e146101e65763ef8b30f70361000e575b611cb2565b611d53565b6111f6565b611cee565b610c80565b611b98565b6119f0565b6119da565b611918565b6118d4565b611779565b611695565b611658565b611606565b61141c565b6113ca565b61125b565b611187565b611054565b611013565b610f37565b6104b0565b610d41565b610b7d565b610b0e565b610a9f565b61097f565b610913565b6108c8565b61082e565b610721565b6106e5565b61067e565b610532565b61034c565b6102a5565b60009103126102a057565b600080fd5b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05760206102de611ea8565b604051908152f35b60208082528251818301819052939260005b858110610338575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8460006040809697860101520116010190565b8181018301518482016040015282016102f8565b346102a0576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104ad576040519080600354906001918060011c92600182169283156104a3575b60209260208610851461047657858852602088019490811561043757506001146103de575b6103da876103ce81890382611e4c565b604051918291826102e6565b0390f35b600360005294509192917fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b83861061042657505050910190506103ce826103da38806103be565b80548587015294820194810161040a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685525050505090151560051b0190506103ce826103da38806103be565b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526022600452fd5b93607f1693610399565b80fd5b346102a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05760206102de60043561203a565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036102a057565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036102a057565b346102a05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a0576105696104ec565b602435331561064d5773ffffffffffffffffffffffffffffffffffffffff821691821561061c576105e482916105bf3373ffffffffffffffffffffffffffffffffffffffff166000526001602052604060002090565b9073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b60246040517f94280d6200000000000000000000000000000000000000000000000000000000815260006004820152fd5b60246040517fe602df0500000000000000000000000000000000000000000000000000000000815260006004820152fd5b346102a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057600254620f424081018091116106e0576106c5611ea8565b90600182018092116106e0576020916102de916004356125ee565b611f41565b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a0576020600254604051908152f35b346102a0576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104ad57610759612094565b60065460ff8160a01c1660038110156108295780156107ff578061077e6001926108be565b146107d4575b507fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff600654166006557f8eca980489e87f7dba4f26917aa4bfc906eb3f2b4f7b4b9fd0ff2b8bb3e21ae38180a180f35b7fffffffffffffffffffffffff00000000000000000000000000000000000000001660065538610784565b60046040517fccf69db7000000000000000000000000000000000000000000000000000000008152fd5b61088f565b346102a05760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a0576108846108686104ec565b61087061050f565b6044359161087f8333836120df565b612207565b602060405160018152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6003111561082957565b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05760ff60065460a01c166040516003821015610829576020918152f35b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057600660ff7f0000000000000000000000000000000000000000000000000000000000000000160160ff81116106e05760209060ff60405191168152f35b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a0576109b6612094565b60085460ff811615610a4a575060085460ff811615610a20577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166008557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60046040517f6cd60201000000000000000000000000000000000000000000000000000000008152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0060019116176008557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057610bb4612094565b60ff60065460a01c16600381101561082957600203610c56577fffffffffffffffffffffffff000000000000000000000000000000000000000060055416600555610c227fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff60065416600655565b604051600081527f3edd90e7770f06fafde38004653b33870066c33bfc923ff6102acd601f85dfbc9080602081015b0390a1005b60046040517f045c5122000000000000000000000000000000000000000000000000000000008152fd5b346102a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057610cb76104ec565b5060206040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126102a05773ffffffffffffffffffffffffffffffffffffffff60043581811681036102a057916024359160443590811681036102a05790565b346102a057610d4f36610ce2565b9091600260075414610f0d576002600755610d686123b3565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169390602081602481885afa8015610ed9578291600091610ede575b501015610df8575b6100216001600755565b833b156102a0576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018290529060008260248183895af18015610ed9577ff8fc30d85ebfc230c2dfde535651c7e8dc50da2c47247cfd3852d2ff96854dc895610eb493610e7692610ec0575b5082865a9261256b565b6040519384938460609194939294608082019573ffffffffffffffffffffffffffffffffffffffff8092168352166020820152600060408201520152565b0390a138808080610dee565b80610ecd610ed392611e17565b80610295565b38610e6c565b611e9c565b610f00915060203d602011610f06575b610ef88183611e4c565b810190611e8d565b38610de6565b503d610eee565b60046040517f1bbee726000000000000000000000000000000000000000000000000000000008152fd5b346102a0576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104ad57610f6f612094565b60065460ff8160a01c16600381101561082957610fe9577fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000176006557f3ff05a45e46337fa1cbf20996d2eeb927280bce099f37252bcca1040609604ec8180a180f35b60046040517f74ed79ae000000000000000000000000000000000000000000000000000000008152fd5b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057602060ff600854166040519015158152f35b346102a05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a0576103da60043561109161050f565b611099612580565b6110a282612067565b916111146040517f23b872dd000000000000000000000000000000000000000000000000000000006020820152336024820152306044820152826064820152606481526110ee81611e30565b7f00000000000000000000000000000000000000000000000000000000000000006128d2565b61111e8383612842565b7fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d773ffffffffffffffffffffffffffffffffffffffff604051931692806111748633958360209093929193604081019481520152565b0390a36040519081529081906020820190565b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05773ffffffffffffffffffffffffffffffffffffffff6112426104ec565b1660005260006020526020604060002054604051908152f35b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057600654600160ff8260a01c1661129f816108be565b036113a05773ffffffffffffffffffffffffffffffffffffffff16330361137657600580547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790556113177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff60065416600655565b6113447fffffffffffffffffffffffff000000000000000000000000000000000000000060065416600655565b6040513381527f3edd90e7770f06fafde38004653b33870066c33bfc923ff6102acd601f85dfbc908060208101610c51565b60046040517fafdcfb92000000000000000000000000000000000000000000000000000000008152fd5b60046040517f5e4f2826000000000000000000000000000000000000000000000000000000008152fd5b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057602073ffffffffffffffffffffffffffffffffffffffff60065416604051908152f35b346102a05761142a36610ce2565b9091600260075414610f0d576002600755826114446123b3565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691602082602481865afa918215610ed9576000926115e5575b50808210611568575b5050803b156102a0576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018590529360008560248183865af1918215610ed9578185610e76927fc69765d394a369eebb97df20af29181da47538cf51cdc4e0823c7d189cbd7c059861154896611555575b50612434565b0390a16100216001600755565b80610ecd61156292611e17565b38611542565b8192955061159a7f7a69ec69b9f80d7ff60df9f6bd4a822bf3b0d184899c683f04717cc2131d3789926115da92611f70565b60405191829187878460609194939294608082019573ffffffffffffffffffffffffffffffffffffffff8092168352166020820152600060408201520152565b0390a19238806114c9565b6115ff91925060203d602011610f0657610ef88183611e4c565b90386114c0565b346102a05760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057602073ffffffffffffffffffffffffffffffffffffffff60055416604051908152f35b346102a05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05761168f61050f565b50611f7d565b346102a0576000807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104ad576040519080600454906001918060011c926001821692831561176f575b6020926020861085146104765785885260208801949081156104375750600114611716576103da876103ce81890382611e4c565b600460005294509192917f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b83861061175e57505050910190506103ce826103da38806103be565b805485870152948201948101611742565b93607f16936116e2565b346102a0576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a0576117b16104ec565b6117b9612094565b6040517fe12f3a6100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691908381602481865afa908115610ed9576000916118b7575b508061183d57005b6040517faad3ec9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9290921660048301526024820152908290829060449082906000905af18015610ed9576118a157005b8161002192903d10610f0657610ef88183611e4c565b6118ce9150843d8611610f0657610ef88183611e4c565b38611835565b346102a05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05761088461190e6104ec565b6024359033612207565b346102a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05761194f611ea8565b600181018091116106e05760025490620f424082018092116106e0576020916102de916004356125ee565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126102a0576004359073ffffffffffffffffffffffffffffffffffffffff9060243582811681036102a0579160443590811681036102a05790565b346102a0576119e83661197a565b505050611f7d565b346102a0576119fe3661197a565b9091611a08612580565b73ffffffffffffffffffffffffffffffffffffffff92838316908160005260006020526040928360002054808211611b455750611a448161203a565b94833303611b35575b8315611b05576103da96611a82837ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db9361261d565b85517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff8516602482015260448082018990528152611adf906110ee606482611e4c565b8551878152602081019390935292909216913391604090a4519081529081906020820190565b602485517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152fd5b611b408233836120df565b611a4d565b84517fb94abeec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716600482015260248101929092526044820152606490fd5b346102a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a057611bcf6104ec565b611bd7612094565b60ff60065460a01c16600381101561082957610fe957610c517fb86c75c9bffca616b2d314cc914f7c3f1d174255b16b941c3f3ededee276d5ef91611c56740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff6006541617600655565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216918217905560408051338152602081019290925290918291820190565b346102a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05760206102de600435612067565b346102a05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a05773ffffffffffffffffffffffffffffffffffffffff611d3a6104ec565b16600052600060205260206102de60406000205461203a565b346102a05760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102a0576020611ddf611d8f6104ec565b73ffffffffffffffffffffffffffffffffffffffff611dac61050f565b91166000526001835260406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54604051908152f35b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b67ffffffffffffffff8111611e2b57604052565b611de8565b60a0810190811067ffffffffffffffff821117611e2b57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611e2b57604052565b908160209103126102a0575190565b6040513d6000823e3d90fd5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610ed957600091611f25575090565b611f3e915060203d602011610f0657610ef88183611e4c565b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b919082039182116106e057565b60046040517ffacc2376000000000000000000000000000000000000000000000000000000008152fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803303611fe85750565b803b156102a0576000600491604051928380927fd0e30db000000000000000000000000000000000000000000000000000000000825234905af18015610ed95761202f5750565b61203890611e17565b565b612042611ea8565b600181018091116106e05760025490620f424082018092116106e057611f3e92612777565b600254620f424081018091116106e05761207f611ea8565b90600182018092116106e057611f3e92612777565b73ffffffffffffffffffffffffffffffffffffffff6005541633036120b557565b60046040517f30cd7471000000000000000000000000000000000000000000000000000000008152fd5b919073ffffffffffffffffffffffffffffffffffffffff808416908160005260016020526121318360406000209073ffffffffffffffffffffffffffffffffffffffff16600052602052604060002090565b54917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8303612163575b505050505050565b8483106121b2571561064d5782161561061c576121a6926105bf91039373ffffffffffffffffffffffffffffffffffffffff166000526001602052604060002090565b5538808080808061215b565b6040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024810184905260448101869052606490fd5b9173ffffffffffffffffffffffffffffffffffffffff918284169283156123825781169384156123515761225b8173ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b548381106122fc576122f79284926122ba7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef966122e194039173ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b5573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b8054820190556040519081529081906020820190565b0390a3565b6040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092166004830152602482015260448101839052606490fd5b60246040517fec442f0500000000000000000000000000000000000000000000000000000000815260006004820152fd5b60246040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260006004820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036123f257565b60046040517fb85310d1000000000000000000000000000000000000000000000000000000008152fd5b908160209103126102a0575180151581036102a05790565b909160009161244a8380808086896108fcf11590565b612455575b50505050565b73ffffffffffffffffffffffffffffffffffffffff16803b1561256757604051937fd0e30db0000000000000000000000000000000000000000000000000000000008552838560048186865af1938415610ed95761250e95602095612554575b506040518096819582947fa9059cbb000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af18015610ed957612525575b80808061244f565b6125469060203d60201161254d575b61253e8183611e4c565b81019061241c565b503861251d565b503d612534565b80610ecd61256192611e17565b386124b5565b8280fd5b61244a82849395600080809781948294f11590565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036123f257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b91906125fb828285612777565b928215612618570961260a5790565b600181018091116106e05790565b6125bf565b73ffffffffffffffffffffffffffffffffffffffff811690816126855750600254918083018093116106e05760207fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916000946002555b8060025403600255604051908152a3565b92916126b18473ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b5493818510612715578160209161270f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9460009798039173ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b55612674565b6040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602481018590526044810191909152606490fd5b8115612618570490565b9091828202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84820993838086109503948086039514612835578483111561280b5782910981600003821680920460028082600302188083028203028083028203028083028203028083028203028083028203028092029003029360018380600003040190848311900302920304170290565b60046040517f227bc153000000000000000000000000000000000000000000000000000000008152fd5b505090611f3e925061276d565b9073ffffffffffffffffffffffffffffffffffffffff821691821561235157600254908282018092116106e0576000926128c36020927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9460025573ffffffffffffffffffffffffffffffffffffffff166000526000602052604060002090565b818154019055604051908152a3565b600073ffffffffffffffffffffffffffffffffffffffff8192169260208151910182855af13d156129d9573d67ffffffffffffffff8111611e2b57612958916040519161294760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184611e4c565b82523d6000602084013e5b836129e5565b80519081151591826129b7575b505061296e5750565b6040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff919091166004820152602490fd5b6129d29250906020806129ce93830101910161241c565b1590565b3880612965565b61295890606090612952565b90612a2457508051156129fa57805190602001fd5b60046040517f1425ea42000000000000000000000000000000000000000000000000000000008152fd5b81511580612a7c575b612a35575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b15612a2d56fea2646970667358221220896c3a85738914994be9dbfa6e529094e1c3883d269ef8af085a43ef3465398264736f6c634300081800330000000000000000000000002c64e6ee1dd9fc2a0db6a6b1aa2c3f163c7a2c780000000000000000000000004300000000000000000000000000000000000004000000000000000000000000572a1fa9e45c2ec681aba11b9fdb829a5ba9e50d0000000000000000000000004d90cc30b9e75679d3cf89b011053946dfe8763b00000000000000000000000043000000000000000000000000000000000000020000000000000000000000002536fe9ab3f511540f2f9e2ec2a805005c3dd8000000000000000000000000004066b9bd584b5fa88897194dabe3a37883ac35f7