@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 123 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_poolManager","type":"address","internalType":"contract IPoolManager"},{"name":"_wstETH","type":"address","internalType":"contract IWstETH"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterAddLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterDonate","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterInitialize","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"tick","type":"int24","internalType":"int24"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterRemoveLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"afterSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"delta","type":"int256","internalType":"BalanceDelta"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int128","internalType":"int128"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeAddLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeDonate","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeInitialize","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeRemoveLiquidity","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"beforeSwap","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"},{"name":"","type":"int256","internalType":"BeforeSwapDelta"},{"name":"","type":"uint24","internalType":"uint24"}],"stateMutability":"nonpayable"},{"type":"function","name":"getHookPermissions","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct Hooks.Permissions","components":[{"name":"beforeInitialize","type":"bool","internalType":"bool"},{"name":"afterInitialize","type":"bool","internalType":"bool"},{"name":"beforeAddLiquidity","type":"bool","internalType":"bool"},{"name":"afterAddLiquidity","type":"bool","internalType":"bool"},{"name":"beforeRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidity","type":"bool","internalType":"bool"},{"name":"beforeSwap","type":"bool","internalType":"bool"},{"name":"afterSwap","type":"bool","internalType":"bool"},{"name":"beforeDonate","type":"bool","internalType":"bool"},{"name":"afterDonate","type":"bool","internalType":"bool"},{"name":"beforeSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterSwapReturnDelta","type":"bool","internalType":"bool"},{"name":"afterAddLiquidityReturnDelta","type":"bool","internalType":"bool"},{"name":"afterRemoveLiquidityReturnDelta","type":"bool","internalType":"bool"}]}],"stateMutability":"pure"},{"type":"function","name":"poolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"underlyingCurrency","inputs":[],"outputs":[{"name":"","type":"address","internalType":"Currency"}],"stateMutability":"view"},{"type":"function","name":"wrapZeroForOne","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"wrapperCurrency","inputs":[],"outputs":[{"name":"","type":"address","internalType":"Currency"}],"stateMutability":"view"},{"type":"function","name":"wstETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWstETH"}],"stateMutability":"view"},{"type":"error","name":"DeltaNotNegative","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"DeltaNotPositive","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"ExactInputNotSupported","inputs":[]},{"type":"error","name":"ExactOutputNotSupported","inputs":[]},{"type":"error","name":"HookNotImplemented","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"InvalidPoolFee","inputs":[]},{"type":"error","name":"InvalidPoolToken","inputs":[]},{"type":"error","name":"LiquidityNotAllowed","inputs":[]},{"type":"error","name":"NotPoolManager","inputs":[]}],"bytecode":{"object":"0x610120806040523461040d57604081611f6780380380916100208285610454565b83398101031261040d578051906001600160a01b038216820361040d57602001516001600160a01b0381169182820361040d5760405163183fc7c960e31b8152602081600481875afa908115610419575f916103d3575b5060018060a01b0316906080525f6101a060405161009481610424565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a06040516100f681610424565b60018152826020820152600160408201528260608201528260808201528260a0820152600160c08201528260e08201528261010082015282610120820152600161014082015282610160820152826101808201520152612000301615156001148015906103c6575b80156103b5575b80156103a8575b801561039b575b801561038e575b801561037e575b8015610372575b8015610366575b801561035a575b801561034a575b801561033e575b8015610332575b8015610326575b61031357825f604492819460209660a0528160c05283821060e052610100526040519263095ea7b360e01b84526004840152811960248401525af13d15601f3d1160015f5114161716156102dd57604051611aef9081610478823960805181818160f7015281816101f301528181610440015281816107200152818161079a01528181610877015281816109e601528181611253015281816112cb0152818161179e015261185e015260a05181818161033c01528181610384015281816104ae0152610e11015260c05181818161025f015281816103ce01528181610a8801528181610eb20152611361015260e05181818161021b015281816108fa0152610a3b015261010051818181610b7b01528181610d4e01528181610e7f015281816110f301526112050152f35b60405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606490fd5b630732d7b560e51b5f523060045260245ffd5b506001301615156101b2565b506002301615156101ab565b506004301615156101a4565b506008301615156001141561019d565b50601030161515610196565b5060203016151561018f565b50604030161515610188565b5060803016151560011415610181565b506101003016151561017a565b5061020030161515610173565b506104003016151561016c565b506108003016151560011415610165565b506110003016151561015e565b90506020813d602011610411575b816103ee60209383610454565b8101031261040d57516001600160a01b038116810361040d575f610077565b5f80fd5b3d91506103e1565b6040513d5f823e3d90fd5b6101c081019081106001600160401b0382111761044057604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176104405760405256fe6080806040526004361015610012575f80fd5b5f3560e01c9081630bc6bffc146113195750806321d0ee70146112a1578063259982e5146112295780634aa07e64146111bb578063575e24b41461091f5780635d5711a5146108c55780636c2bbe7e1461076e5780636fe7e6eb146107e85780639f063efc1461076e578063b47b2fb114610659578063b6a8b0fa146100cc578063c4e833ce146104d2578063d52f63cf14610464578063dc4c90d3146103f6578063dc98354e146101715763e1b4af69146100cc575f80fd5b3461016d576100da36611595565b50505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461016d5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576101a8611385565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d576101db611572565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0000000000000000000000000000000000000000000000000000000000000000156103645761024761171c565b73ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169116148061031b575b156102f35760643562ffffff811680910361016d576102cb5760206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b7f1213a0ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdcdedda9000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061032461173f565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614610288565b61036c61171c565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614801561028857506103b661173f565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614610288565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d575f6101a060405161051081611636565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c0602060405161057381611636565b60018152818101905f82526040810160018152606082015f8152608083015f815260a084015f815260c085016001815260e08601905f82526101008701925f84526101208801945f8652610140890196600188526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b3461016d576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610691611385565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261016d576101443567ffffffffffffffff811161016d576107079036906004016113a8565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d5761077c366114a1565b5050505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610820611385565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d57610853611572565b5060e4358060020b0361016d5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b3461016d576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610957611385565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261016d576101243567ffffffffffffffff811161016d576109cd9036906004016113a8565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036101455760e4355f8112918280936111b4575b61118c57821580611184575b61115c5760c43580151580910361016d577f0000000000000000000000000000000000000000000000000000000000000000151503610df857508115610d0b57610a71816116c1565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690604051907f192084510000000000000000000000000000000000000000000000000000000082526004820152602081602481855afa8015610c9b575f90610cd8575b602091506024604051809481937f7a28fb8800000000000000000000000000000000000000000000000000000000835260048301525afa908115610c9b575f91610ca6575b50604051927fb0e3890000000000000000000000000000000000000000000000000000000000845281600485015260208460248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa938415610c9b575f94610c67575b5015610c4d57505f8212610c2557610bd8610bcd610bd2610bcd606095611771565b6116ed565b92611771565b906fffffffffffffffffffffffffffffffff169060801b175b604051907f575e24b400000000000000000000000000000000000000000000000000000000825260208201525f6040820152f35b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b91505f8212610c2557610bd8610bcd610bd2606094611771565b9093506020813d602011610c93575b81610c8360209383611680565b8101031261016d57519284610bab565b3d9150610c76565b6040513d5f823e3d90fd5b90506020813d602011610cd0575b81610cc160209383611680565b8101031261016d575183610b30565b3d9150610cb4565b506020813d602011610d03575b81610cf260209383611680565b8101031261016d5760209051610aeb565b3d9150610ce5565b6040517f9576a0c800000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c9b575f91610dc6575b507812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218211670de0b6b3a7640000021581021561016d57670de0b6b3a76400008202908082049106151501610a71565b90506020813d602011610df0575b81610de160209383611680565b8101031261016d575183610d7e565b3d9150610dd4565b9180156110aa57610e08826116c1565b905b610e3582307f000000000000000000000000000000000000000000000000000000000000000061177f565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081528260048201526020816024815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610c9b575f91611078575b507f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff821695604051917f70a082310000000000000000000000000000000000000000000000000000000083528160048401526020836024818b5afa928315610c9b575f93611042575b50610f3e9060209394309061183e565b6024604051809881937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa948515610c9b575f9561100e575b508403938411610fe15715610fc757505f8212610c2557610faa610bcd610bd2610bcd606095611771565b906fffffffffffffffffffffffffffffffff169060801b17610bf1565b91505f8212610c2557610faa610bcd610bd2606094611771565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9094506020813d60201161103a575b8161102a60209383611680565b8101031261016d57519385610f7f565b3d915061101d565b9092506020813d602011611070575b8161105e60209383611680565b8101031261016d575191610f3e610f2e565b3d9150611051565b90506020813d6020116110a2575b8161109360209383611680565b8101031261016d575185610eaf565b3d9150611086565b6040517fb0e3890000000000000000000000000000000000000000000000000000000000815282600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c9b575f9161112a575b5090610e0a565b90506020813d602011611154575b8161114560209383611680565b8101031261016d575184611123565b3d9150611138565b7f21b865b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001610a28565b7f0ace433b000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f610a1c565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d57611237366113d6565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f78895c13000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d576112af366113d6565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020838186019501011161016d57565b906101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261016d5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261016d5760c491610144359067ffffffffffffffff821161016d5761149d916004016113a8565b9091565b906101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261016d5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261016d5760c49161014435916101643591610184359067ffffffffffffffff821161016d5761149d916004016113a8565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83011261016d5760249160c4359160e43591610104359067ffffffffffffffff821161016d5761149d916004016113a8565b6101c0810190811067ffffffffffffffff82111761165357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761165357604052565b7f80000000000000000000000000000000000000000000000000000000000000008114610fe1575f0390565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610fe1575f0390565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361016d5790565b60443573ffffffffffffffffffffffffffffffffffffffff8116810361016d5790565b9081602091031261016d575190565b9081600f0b918203610c2557565b909180156118395773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561016d575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610c9b5761182d5750565b5f61183791611680565b565b505050565b5f915082156118395773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b1561016d57604051907fa584119400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff8116918260048201525f8160248183885af18015610c9b57611acd575b508161195e5750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561195257506119275750565b6119489060203d60201161194b575b6119408183611680565b810190611762565b50565b503d611936565b604051903d90823e3d90fd5b9091926040602082604481988285519788927fa9059cbb0000000000000000000000000000000000000000000000000000000084528b600485015260248401525af13d15601f3d11600185511416171692828152826020820152015215611a015750602082916004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561195257506119275750565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011690604051927f90bfb86500000000000000000000000000000000000000000000000000000000845260048401527fa9059cbb000000000000000000000000000000000000000000000000000000006024840152608060448401528160a00160648401523d60848401523d9060a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b611ada9194505f90611680565b5f925f6118df56fea164736f6c634300081a000a","sourceMap":"887:1423:108:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;887:1423:108;;;;;;;;;-1:-1:-1;;;;;887:1423:108;;;;;;;;;;-1:-1:-1;;;1532:15:107;;887:1423:108;;1532:15:107;887:1423:108;1532:15:107;;;;;;;;-1:-1:-1;1532:15:107;;;-1:-1:-1;887:1423:108;;;;;;;782:26:96;;;-1:-1:-1;887:1423:108;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;782:26:96;887:1423:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;887:1423:108;;;;;;:::i;:::-;3507:4:105;887:1423:108;;3457:568:105;887:1423:108;3457:568:105;;887:1423:108;3507:4:105;887:1423:108;3457:568:105;;887:1423:108;3457:568:105;887:1423:108;3457:568:105;;887:1423:108;3457:568:105;782:26:96;3457:568:105;;887:1423:108;3457:568:105;887:1423:108;3457:568:105;;887:1423:108;3507:4:105;887:1423:108;3457:568:105;;887:1423:108;3457:568:105;887:1423:108;3457:568:105;;887:1423:108;3457:568:105;887:1423:108;3457:568:105;;887:1423:108;3457:568:105;887:1423:108;3457:568:105;;887:1423:108;3507:4:105;887:1423:108;3457:568:105;;887:1423:108;3457:568:105;887:1423:108;3457:568:105;;887:1423:108;3457:568:105;887:1423:108;3457:568:105;;887:1423:108;3457:568:105;887:1423:108;;899:4:149;16467:29:58;:34;;3507:4:105;3729:74:58;;;:166;;;-1:-1:-1;3729:265:58;;;;-1:-1:-1;3729:362:58;;;;-1:-1:-1;3729:467:58;;;;-1:-1:-1;3729:570:58;;;;-1:-1:-1;3729:652:58;;;;-1:-1:-1;3729:732:58;;;;-1:-1:-1;3729:818:58;;;;-1:-1:-1;3729:902:58;;;;-1:-1:-1;3729:1009:58;;;;-1:-1:-1;3729:1114:58;;;;-1:-1:-1;3729:1236:58;;;;-1:-1:-1;3729:1384:58;;;;-1:-1:-1;3712:1491:58;;3195:26:105;-1:-1:-1;4906:1377:35;3195:26:105;;;887:1423:108;3195:26:105;887:1423:108;3195:26:105;3231:32;887:1423:108;3231:32:105;734:50:80;;;887:1423:108;3273:39:105;887:1423:108;1602:16:107;887:1423:108;4906:1377:35;;;;;;;1532:15:107;4906:1377:35;;;1700:17:107;;4906:1377:35;;;;;;;;;;;3507:4:105;-1:-1:-1;4906:1377:35;;;;;887:1423:108;;;;;;;;;;;782:26:96;887:1423:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;887:1423:108;;;1532:15:107;887:1423:108;;;;4906:1377:35;887:1423:108;;;-1:-1:-1;;;4906:1377:35;887:1423:108;;;;;;3712:1491:58;5138:28;;;-1:-1:-1;1084:176:54;899:4:149;1532:15:107;1084:176:54;;-1:-1:-1;1084:176:54;3729:1384:58;5052:61;3507:4:105;899::149;16467:29:58;:34;;3729:1384;;:1236;4907:58;887:1423:108;899:4:149;16467:29:58;:34;;3729:1236;;:1114;4794:49;1532:15:107;899:4:149;16467:29:58;:34;;3729:1114;;:1009;4688:50;887:1423:108;899:4:149;16467:29:58;:34;;3507:4:105;4651:87:58;;3729:1009;;:902;4594:37;887:1423:108;899:4:149;16467:29:58;:34;;3729:902;;:818;4509:38;887:1423:108;899:4:149;16467:29:58;:34;;3729:818;;:732;4426:35;887:1423:108;899:4:149;16467:29:58;:34;;3729:732;;:652;4345:36;782:26:96;899:4:149;16467:29:58;:34;;3507:4:105;4319:62:58;;3729:652;;:570;4252:47;887:1423:108;899:4:149;16467:29:58;:34;;3729:570;;:467;4148:48;887:1423:108;899:4:149;16467:29:58;:34;;3729:467;;:362;4047:44;887:1423:108;899:4:149;16467:29:58;:34;;3729:362;;:265;3949:45;887:1423:108;899:4:149;16467:29:58;:34;;3507:4:105;3915:79:58;;3729:265;;:166;3854:41;887:1423:108;899:4:149;16467:29:58;:34;;3729:166;;1532:15:107;;;887:1423:108;1532:15:107;;887:1423:108;1532:15:107;;;;;;887:1423:108;1532:15:107;;;:::i;:::-;;;887:1423:108;;;;;-1:-1:-1;;;;;887:1423:108;;;;;;1532:15:107;;;887:1423:108;-1:-1:-1;887:1423:108;;1532:15:107;;;-1:-1:-1;1532:15:107;;;887:1423:108;;;-1:-1:-1;887:1423:108;;;;;;;;;;;;-1:-1:-1;;;;;887:1423:108;;;;;;;:::o;:::-;;;;-1:-1:-1;887:1423:108;;;;;-1:-1:-1;887:1423:108;;;;;;-1:-1:-1;;887:1423:108;;;;-1:-1:-1;;;;;887:1423:108;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c9081630bc6bffc146113195750806321d0ee70146112a1578063259982e5146112295780634aa07e64146111bb578063575e24b41461091f5780635d5711a5146108c55780636c2bbe7e1461076e5780636fe7e6eb146107e85780639f063efc1461076e578063b47b2fb114610659578063b6a8b0fa146100cc578063c4e833ce146104d2578063d52f63cf14610464578063dc4c90d3146103f6578063dc98354e146101715763e1b4af69146100cc575f80fd5b3461016d576100da36611595565b50505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b3461016d5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576101a8611385565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d576101db611572565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0000000000000000000000000000000000000000000000000000000000000000156103645761024761171c565b73ffffffffffffffffffffffffffffffffffffffff807f0000000000000000000000000000000000000000000000000000000000000000169116148061031b575b156102f35760643562ffffff811680910361016d576102cb5760206040517fdc98354e000000000000000000000000000000000000000000000000000000008152f35b7f1213a0ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fdcdedda9000000000000000000000000000000000000000000000000000000005f5260045ffd5b5061032461173f565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614610288565b61036c61171c565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614801561028857506103b661173f565b73ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016911614610288565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d575f6101a060405161051081611636565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201526101c0602060405161057381611636565b60018152818101905f82526040810160018152606082015f8152608083015f815260a084015f815260c085016001815260e08601905f82526101008701925f84526101208801945f8652610140890196600188526101608a01985f8a526101a06101808c019b5f8d52019b5f8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b3461016d576101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610691611385565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261016d576101443567ffffffffffffffff811161016d576107079036906004016113a8565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d5761077c366114a1565b5050505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610820611385565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d57610853611572565b5060e4358060020b0361016d5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760206040517f000000000000000000000000000000000000000000000000000000000000000015158152f35b3461016d576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57610957611385565b5060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc36011261016d5760607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c36011261016d576101243567ffffffffffffffff811161016d576109cd9036906004016113a8565b505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168033036101455760e4355f8112918280936111b4575b61118c57821580611184575b61115c5760c43580151580910361016d577f0000000000000000000000000000000000000000000000000000000000000000151503610df857508115610d0b57610a71816116c1565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690604051907f192084510000000000000000000000000000000000000000000000000000000082526004820152602081602481855afa8015610c9b575f90610cd8575b602091506024604051809481937f7a28fb8800000000000000000000000000000000000000000000000000000000835260048301525afa908115610c9b575f91610ca6575b50604051927fb0e3890000000000000000000000000000000000000000000000000000000000845281600485015260208460248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa938415610c9b575f94610c67575b5015610c4d57505f8212610c2557610bd8610bcd610bd2610bcd606095611771565b6116ed565b92611771565b906fffffffffffffffffffffffffffffffff169060801b175b604051907f575e24b400000000000000000000000000000000000000000000000000000000825260208201525f6040820152f35b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b91505f8212610c2557610bd8610bcd610bd2606094611771565b9093506020813d602011610c93575b81610c8360209383611680565b8101031261016d57519284610bab565b3d9150610c76565b6040513d5f823e3d90fd5b90506020813d602011610cd0575b81610cc160209383611680565b8101031261016d575183610b30565b3d9150610cb4565b506020813d602011610d03575b81610cf260209383611680565b8101031261016d5760209051610aeb565b3d9150610ce5565b6040517f9576a0c800000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c9b575f91610dc6575b507812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f218211670de0b6b3a7640000021581021561016d57670de0b6b3a76400008202908082049106151501610a71565b90506020813d602011610df0575b81610de160209383611680565b8101031261016d575183610d7e565b3d9150610dd4565b9180156110aa57610e08826116c1565b905b610e3582307f000000000000000000000000000000000000000000000000000000000000000061177f565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081528260048201526020816024815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610c9b575f91611078575b507f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff821695604051917f70a082310000000000000000000000000000000000000000000000000000000083528160048401526020836024818b5afa928315610c9b575f93611042575b50610f3e9060209394309061183e565b6024604051809881937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa948515610c9b575f9561100e575b508403938411610fe15715610fc757505f8212610c2557610faa610bcd610bd2610bcd606095611771565b906fffffffffffffffffffffffffffffffff169060801b17610bf1565b91505f8212610c2557610faa610bcd610bd2606094611771565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9094506020813d60201161103a575b8161102a60209383611680565b8101031261016d57519385610f7f565b3d915061101d565b9092506020813d602011611070575b8161105e60209383611680565b8101031261016d575191610f3e610f2e565b3d9150611051565b90506020813d6020116110a2575b8161109360209383611680565b8101031261016d575185610eaf565b3d9150611086565b6040517fb0e3890000000000000000000000000000000000000000000000000000000000815282600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115610c9b575f9161112a575b5090610e0a565b90506020813d602011611154575b8161114560209383611680565b8101031261016d575184611123565b3d9150611138565b7f21b865b3000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001610a28565b7f0ace433b000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f610a1c565b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d57611237366113d6565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f78895c13000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d576112af366113d6565b505050505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610145577f0a85dc29000000000000000000000000000000000000000000000000000000005f5260045ffd5b3461016d575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020838186019501011161016d57565b906101607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261016d5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261016d5760c491610144359067ffffffffffffffff821161016d5761149d916004016113a8565b9091565b906101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc82011261016d5760249160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c83011261016d5760c49161014435916101643591610184359067ffffffffffffffff821161016d5761149d916004016113a8565b60c4359073ffffffffffffffffffffffffffffffffffffffff8216820361016d57565b6101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82011261016d5760043573ffffffffffffffffffffffffffffffffffffffff8116810361016d579160a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc83011261016d5760249160c4359160e43591610104359067ffffffffffffffff821161016d5761149d916004016113a8565b6101c0810190811067ffffffffffffffff82111761165357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761165357604052565b7f80000000000000000000000000000000000000000000000000000000000000008114610fe1575f0390565b600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610fe1575f0390565b60243573ffffffffffffffffffffffffffffffffffffffff8116810361016d5790565b60443573ffffffffffffffffffffffffffffffffffffffff8116810361016d5790565b9081602091031261016d575190565b9081600f0b918203610c2557565b909180156118395773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b1561016d575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610c9b5761182d5750565b5f61183791611680565b565b505050565b5f915082156118395773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b1561016d57604051907fa584119400000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff8116918260048201525f8160248183885af18015610c9b57611acd575b508161195e5750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561195257506119275750565b6119489060203d60201161194b575b6119408183611680565b810190611762565b50565b503d611936565b604051903d90823e3d90fd5b9091926040602082604481988285519788927fa9059cbb0000000000000000000000000000000000000000000000000000000084528b600485015260248401525af13d15601f3d11600185511416171692828152826020820152015215611a015750602082916004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561195257506119275750565b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011690604051927f90bfb86500000000000000000000000000000000000000000000000000000000845260048401527fa9059cbb000000000000000000000000000000000000000000000000000000006024840152608060448401528160a00160648401523d60848401523d9060a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b611ada9194505f90611680565b5f925f6118df56fea164736f6c634300081a000a","sourceMap":"887:1423:108:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;;;;;887:1423:108;672:11:96;887:1423:108;650:10:96;:34;646:63;;3575:20:149;887:1423:108;3575:20:149;887:1423:108;;3575:20:149;646:63:96;693:16;887:1423:108;693:16:96;887:1423:108;;693:16:96;887:1423:108;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;672:11:96;887:1423:108;650:10:96;:34;646:63;;4523:14:105;;;;4553:17;;:::i;:::-;887:1423:108;4574:18:105;;887:1423:108;;;448:51:80;4553:79:105;;;4523:206;4744:12;4740:43;;4797:11;887:1423:108;;;;;;;;;4793:45:105;;887:1423:108;;;4856:32:105;887:1423:108;;;4793:45:105;4822:16;887:1423:108;4822:16:105;887:1423:108;;4822:16:105;4740:43;4765:18;887:1423:108;4765:18:105;887:1423:108;;4765:18:105;4553:79;4596:17;;;:::i;:::-;887:1423:108;4617:15:105;;887:1423:108;;;448:51:80;4553:79:105;;4523:206;4649:17;;:::i;:::-;887:1423:108;4670:15:105;;887:1423:108;;;448:51:80;4649:79:105;;4523:206;4649:79;4689:17;;;:::i;:::-;887:1423:108;4710:18:105;;887:1423:108;;;448:51:80;4523:206:105;;887:1423:108;;;;;;;;;;;;;;;411:41:96;887:1423:108;;;;;;;;;;;;;;;;;;;2196:41:105;887:1423:108;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3507:4:105;887:1423:108;;3457:568:105;;;887:1423:108;;;;;3457:568:105;;3507:4;887:1423:108;;;3457:568:105;;887:1423:108;;;;3457:568:105;;887:1423:108;;;;3457:568:105;;887:1423:108;;;;3457:568:105;;3507:4;887:1423:108;;;3457:568:105;;887:1423:108;;;;;3457:568:105;;887:1423:108;;;;;3457:568:105;;887:1423:108;;;;;3457:568:105;;887:1423:108;3507:4:105;887:1423:108;;;3457:568:105;;887:1423:108;;;;;;3457:568:105;;887:1423:108;;;;3457:568:105;887:1423:108;;;;;;;;;3507:4:105;887:1423:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;887:1423:108;672:11:96;887:1423:108;650:10:96;:34;646:63;;3575:20:149;887:1423:108;3575:20:149;887:1423:108;;3575:20:149;887:1423:108;;;;;;;:::i;:::-;672:11:96;;;;;;;887:1423:108;672:11:96;887:1423:108;650:10:96;:34;646:63;;3575:20:149;887:1423:108;3575:20:149;887:1423:108;;3575:20:149;887:1423:108;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;672:11:96;887:1423:108;650:10:96;:34;646:63;;3575:20:149;887:1423:108;3575:20:149;887:1423:108;;3575:20:149;887:1423:108;;;;;;;;;;;;;;2813:36:105;887:1423:108;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:96;;887:1423:108;672:11:96;887:1423:108;650:10:96;;:34;646:63;;5940:22:105;887:1423:108;;5940:26:105;;;;;5980:38;;;887:1423:108;5976:75:105;;6065:13;;:40;;;887:1423:108;6061:78:105;;887:1423:108;;;;;;;;;;6154:14:105;887:1423:108;;6154:35:105;;;-1:-1:-1;6274:104:105;;;;6297:23;;;:::i;:::-;887:1423:108;1733:18;887:1423;;;;1791:44;887:1423;1791:44;;887:1423;1791:44;;887:1423;;1791:44;887:1423;1791:44;;;;;;;;887:1423;1791:44;;;6274:104:105;887:1423:108;;;;;;1870:45;;;;887:1423;1870:45;;887:1423;1870:45;;887:1423;1870:45;;;;;;;887:1423;1870:45;;;6274:104:105;887:1423:108;;;2254:47;887:1423;2254:47;;;887:1423;2254:47;;887:1423;;2254:6;887:1423;2254:6;887:1423;2254:6;887:1423;2254:47;;;;;;;887:1423;2254:47;;;6274:104:105;-1:-1:-1;6528:98:105;;;1875:5:67;887:1423:108;1875:5:67;;1871:49;;6670:34:105;6671:33;6543:36;6544:35;887:1423:108;6544:35:105;;:::i;:::-;6543:36;:::i;:::-;6528:98;6671:33;:::i;6670:34::-;453:132:79;;;;;;;6150:1154:105;887:1423:108;;;7322:26:105;887:1423:108;;;;;;;;;;;;1871:49:67;1882:25;887:1423:108;814:96:54;887:1423:108;;814:96:54;6528:98:105;1875:5:67;;887:1423:108;1875:5:67;;1871:49;;6670:34:105;6671:33;6582:44;887:1423:108;6582:44:105;;:::i;2254:47:108:-;;;;887:1423;2254:47;;887:1423;2254:47;;;;;;887:1423;2254:47;;;:::i;:::-;;;887:1423;;;;;2254:47;;;;;;;-1:-1:-1;2254:47:108;;;887:1423;;;;;;;;;1870:45;;;887:1423;1870:45;;887:1423;1870:45;;;;;;887:1423;1870:45;;;:::i;:::-;;;887:1423;;;;;1870:45;;;;;;-1:-1:-1;1870:45:108;;1791:44;;887:1423;1791:44;;887:1423;1791:44;;;;;;887:1423;1791:44;;;:::i;:::-;;;887:1423;;;;;;;1791:44;;;;;-1:-1:-1;1791:44:108;;6274:104:105;887:1423:108;;;3726:23:107;;887:1423:108;3726:6:107;887:1423:108;3726:6:107;887:1423:108;3726:6:107;887:1423:108;3726:23:107;;;;;;;887:1423:108;3726:23:107;;;6274:104:105;2274