@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 759 kB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_fuzz_getFeeGrowthInside","inputs":[{"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":"zeroForOne","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getLiquidity","inputs":[{"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"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getPositionInfo","inputs":[{"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":"swapAmount","type":"uint256","internalType":"uint256"},{"name":"zeroForOne","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getPositionLiquidity","inputs":[{"name":"paramsA","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":"paramsB","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"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getTickBitmap","inputs":[{"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"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getTickLiquidity","inputs":[{"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"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_getTickLiquidity_two_positions","inputs":[{"name":"paramsA","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":"paramsB","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"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getFeeGrowthGlobals0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getFeeGrowthGlobals1","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getFeeGrowthInside","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getPositionInfo","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getPositionLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getSlot0","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTickBitmap","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTickFeeGrowthOutside","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTickInfo","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_getTickLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x600c8054600160ff199182168117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e08190526020805465ffffffffffff199081166378ffff8890811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101e06040526101808290526063196101a08190526bb504f333f9de6484597d89b36101c081905260268054909316909317909155602755602880546001600160a01b0319908116909217905560428054600e90831617905560438054909116614000600160a01b03179055348015610112575f80fd5b5062022e1380620001225f395ff3fe608060405260043610610246575f3560e01c8063787675ed11610131578063ba414fa6116100ac578063e20c9f711161007c578063eb72828f11610062578063eb72828f14610658578063fa7626d41461066c578063fe09bfa314610685575f80fd5b8063e20c9f7114610630578063e618ae8714610644575f80fd5b8063ba414fa6146105d0578063c7b8e15d146105f4578063ccf67ea914610608578063db5422701461061c575f80fd5b8063916a17c611610101578063b0464fdc116100e7578063b0464fdc1461053e578063b1a73b8a14610552578063b5508aa9146105bc575f80fd5b8063916a17c6146104f057806393ad73ed14610511575f80fd5b8063787675ed146104885780637b5201311461049c57806385226c81146104bb5780638aef3e06146104dc575f80fd5b80633e5e3c23116101c1578063542524dd116101915780635d2fd514116101775780635d2fd5141461043457806366d9a9a0146104485780636f91bf0914610469575f80fd5b8063542524dd146103dc5780635ca2863d14610415575f80fd5b80633e5e3c231461038c5780633f7286f4146103a0578063508c4a57146103b4578063518471a7146103c8575f80fd5b80631ed7831c116102165780632ade3880116101fc5780632ade3880146102f75780632da17f031461031857806339cd201314610337575f80fd5b80631ed7831c146102ae5780631f66401b146102d8575f80fd5b8063096bd8e5146102515780630a9254e414610267578063160c2d4e1461027b57806317a5bbf81461029a575f80fd5b3661024d57005b5f80fd5b34801561025c575f80fd5b506102656106a4565b005b348015610272575f80fd5b50610265610dd2565b348015610286575f80fd5b50610265610295366004618e6e565b61108e565b3480156102a5575f80fd5b5061026561131a565b3480156102b9575f80fd5b506102c26116cc565b6040516102cf9190618e88565b60405180910390f35b3480156102e3575f80fd5b506102656102f2366004618e6e565b611739565b348015610302575f80fd5b5061030b611942565b6040516102cf9190618f2c565b348015610323575f80fd5b5061026561033236600461903e565b611a8b565b348015610342575f80fd5b5060235460245460255461036492600281810b936301000000909204900b9184565b60408051600295860b81529390940b60208401529282015260608101919091526080016102cf565b348015610397575f80fd5b506102c26121ef565b3480156103ab575f80fd5b506102c261225a565b3480156103bf575f80fd5b506102656122c5565b3480156103d3575f80fd5b506102656126d1565b3480156103e7575f80fd5b506103f0612c9b565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102cf565b348015610420575f80fd5b5061026561042f36600461903e565b612cbd565b34801561043f575f80fd5b50610265613244565b348015610453575f80fd5b5061045c6136d4565b6040516102cf91906190ce565b348015610474575f80fd5b50610265610483366004619177565b61384d565b348015610493575f80fd5b50610265613c27565b3480156104a7575f80fd5b506102656104b6366004618e6e565b613f81565b3480156104c6575f80fd5b506104cf6143d8565b6040516102cf91906191b5565b3480156104e7575f80fd5b506102656144a3565b3480156104fb575f80fd5b506105046147c7565b6040516102cf919061922a565b34801561051c575f80fd5b5060205460215460225461036492600281810b936301000000909204900b9184565b348015610549575f80fd5b506105046148ca565b34801561055d575f80fd5b506026546027546028546105899260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016102cf565b3480156105c7575f80fd5b506104cf6149cd565b3480156105db575f80fd5b506105e4614a98565b60405190151581526020016102cf565b3480156105ff575f80fd5b506103f0614b68565b348015610613575f80fd5b50610265614b78565b348015610627575f80fd5b50610265614e6d565b34801561063b575f80fd5b506102c261522b565b34801561064f575f80fd5b50610265615296565b348015610663575f80fd5b50610265615818565b348015610677575f80fd5b50601f546105e49060ff1681565b348015610690575f80fd5b5061026561069f3660046192cc565b615ecb565b602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c60208083019190915269021e19e0c9bab2400000828401525f606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916107559160369160248101619302565b6020604051808303815f875af1158015610771573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107959190619396565b50602c54604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffda8815261025860208083019190915269021e19e0c9bab2400000828401525f606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916108489160369160248101619302565b6020604051808303815f875af1158015610864573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108889190619396565b506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854909116608082015268056bc75e2d631000009061093b906001610928846193da565b604080515f8152602081019091526163d3565b506045546044546040517fc815641c00000000000000000000000000000000000000000000000000000000815260048101919091525f9173ffffffffffffffffffffffffffffffffffffffff169063c815641c90602401608060405180830381865afa1580156109ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d19190619443565b5050915050610a038160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff756165d4565b604554604480546040517f53e9c1fb00000000000000000000000000000000000000000000000000000000815260048101919091527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc46024820152603c918101919091525f91829173ffffffffffffffffffffffffffffffffffffffff909116906353e9c1fb906064016040805180830381865afa158015610aa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610acb9190619499565b6040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f5374617465566965775f657874736c6f61645f67657446656547726f7774684960448201527f6e7369646500000000000000000000000000000000000000000000000000000060648201529193509150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd9fca12906084016020604051808303815f875af1158015610b8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610baf9190619396565b50602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c6020808301919091525f828401819052606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda91610c589160369160248101619302565b6020604051808303815f875af1158015610c74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c989190619396565b50602c54604080515f60268201819052603c60068301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc4600383015273ffffffffffffffffffffffffffffffffffffffff9093168152603a600c82012091810183905260208101839052829052604554604480546040517f97fd7b420000000000000000000000000000000000000000000000000000000081526004810191909152602481018490529293505f92839273ffffffffffffffffffffffffffffffffffffffff16916397fd7b429101606060405180830381865afa158015610d82573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610da691906194da565b9250925050610db5855f616650565b610dbf85836166a8565b610dc984826166a8565b50505050505050565b610dda616700565b610de2616ce3565b50506040805160a0808201835260295473ffffffffffffffffffffffffffffffffffffffff908116808452602a5482166020808601829052610bb886880152603c6060808801919091525f6080978801819052603680547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168717909155603780547fffffffffffffffffff000000000000000000000000000000000000000000000016909517750bb80000000000000000000000000000000000000000177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff8116773c000000000000000000000000000000000000000000000017958690556038805490921690915589518089018b5286815290871693810184905262ffffff7401000000000000000000000000000000000000000086048116828c0152770100000000000000000000000000000000000000000000008604600290810b948301949094529881018290528790206044908155602b5499517f6276cbbe000000000000000000000000000000000000000000000000000000008152600481019690965260248601939093529583901c9096169083015260b81c90930b606484015260848301919091526c0100000000000000000000000060a48301529190911690636276cbbe9060c4016020604051808303815f875af1158015610feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100f919061950c565b50602b5460408051808201909152600181525f60208201526110479173ffffffffffffffffffffffffffffffffffffffff1690616d64565b604580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b602c546040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854821660808201525f9261115e921690846c01000000000000000000000000855b6040519080825280601f01601f191660200182016040528015611158576020820181803683370190505b50616ec6565b506045546044546040517fc815641c0000000000000000000000000000000000000000000000000000000081529293505f9273ffffffffffffffffffffffffffffffffffffffff9092169163c815641c916111bf9160040190815260200190565b608060405180830381865afa1580156111da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111fe9190619443565b50506045546044546040517ffa6793d500000000000000000000000000000000000000000000000000000000815260048101919091529193505f925073ffffffffffffffffffffffffffffffffffffffff169063fa6793d590602401602060405180830381865afa158015611275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112999190619527565b9050825f015160020b8260020b12806112bc5750826020015160020b8260020b12155b156112e2576112dd816fffffffffffffffffffffffffffffffff165f6166a8565b611314565b611314816fffffffffffffffffffffffffffffffff1684604001516fffffffffffffffffffffffffffffffff166166a8565b50505050565b602c54604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed480825261012c602080840182905269021e19e0c9bab2400000848601525f606085018190528551908152908101948590527f5a6bcfda000000000000000000000000000000000000000000000000000000009094529093909273ffffffffffffffffffffffffffffffffffffffff90911691635a6bcfda916113d09160369160248101619302565b6020604051808303815f875af11580156113ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114109190619396565b506037545f908190611455906114449077010000000000000000000000000000000000000000000000900460020b8661956d565b600281900b60081d9160ff90911690565b604554604480546040517f1c7ccb4c0000000000000000000000000000000000000000000000000000000081526004810191909152600185900b60248201529395509193505f9273ffffffffffffffffffffffffffffffffffffffff90911691631c7ccb4c9101602060405180830381865afa1580156114d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fb9190619396565b6040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f5374617465566965775f657874736c6f61645f6765745469636b4269746d61706044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd9fca12906064016020604051808303815f875af1158015611593573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b79190619396565b506115c2815f616650565b6115d281600160ff85161b6166a8565b603754611601906114449077010000000000000000000000000000000000000000000000900460020b8661956d565b6045546044546040517f1c7ccb4c00000000000000000000000000000000000000000000000000000000815293965091945073ffffffffffffffffffffffffffffffffffffffff1691631c7ccb4c9161166a91879060040191825260010b602082015260400190565b602060405180830381865afa158015611685573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a99190619396565b90506116b5815f616650565b6116c581600160ff85161b6166a8565b5050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561172f57602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611704575b5050505050905090565b602c546040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854821660808201525f926117dd921690846c010000000000000000000000008561112e565b5060375481519192505f918291611816916114449177010000000000000000000000000000000000000000000000900460020b9061956d565b60375460208601519294509092505f918291611854916114449177010000000000000000000000000000000000000000000000900460020b9061956d565b604554604480546040517f1c7ccb4c0000000000000000000000000000000000000000000000000000000081526004810191909152600189900b60248201529395509193505f9273ffffffffffffffffffffffffffffffffffffffff90911691631c7ccb4c9101602060405180830381865afa1580156118d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fa9190619396565b9050611906815f616650565b8260010b8560010b036119325761192d818360ff166001901b8660ff166001901b176166a8565b610dc9565b610dc981600160ff87161b6166a8565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015611a82575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015611a6b578382905f5260205f200180546119e0906195e0565b80601f0160208091040260200160405190810160405280929190818152602001828054611a0c906195e0565b8015611a575780601f10611a2e57610100808354040283529160200191611a57565b820191905f5260205f20905b815481529060010190602001808311611a3a57829003601f168201915b5050505050815260200190600101906119c3565b505050508152505081526020019060010190611965565b50505050905090565b602c546040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854821660808201525f92611b5d921690856c01000000000000000000000000855b6040519080825280601f01601f191660200182016040528015611b55576020820181803683370190505b506002616f99565b50602c546040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854821660808201529293505f92611c08929190911690856c0100000000000000000000000085611b2b565b5060408084015181830151604554604454875194517fcaedab54000000000000000000000000000000000000000000000000000000008152959650929491935f93849373ffffffffffffffffffffffffffffffffffffffff9093169263caedab5492611c83929160040191825260020b602082015260400190565b6040805180830381865afa158015611c9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc19190619642565b6045546044805489516040517fcaedab54000000000000000000000000000000000000000000000000000000008152600481019290925260020b60248201529395509193505f92839273ffffffffffffffffffffffffffffffffffffffff9092169163caedab5491016040805180830381865afa158015611d44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d689190619642565b6045546044805460208d01516040517fcaedab54000000000000000000000000000000000000000000000000000000008152600481019290925260020b60248201529395509193505f92839273ffffffffffffffffffffffffffffffffffffffff9092169163caedab5491016040805180830381865afa158015611dee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e129190619642565b6045546044805460208e01516040517fcaedab54000000000000000000000000000000000000000000000000000000008152600481019290925260020b60248201526fffffffffffffffffffffffffffffffff949094169550600f9290920b93505f92839273ffffffffffffffffffffffffffffffffffffffff9092169163caedab5491016040805180830381865afa158015611eb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed59190619642565b600f0b91506fffffffffffffffffffffffffffffffff1691508a5f015160020b8c5f015160020b1480611f1457508a6020015160020b8c5f015160020b145b15611f9b57611f506fffffffffffffffffffffffffffffffff8916611f398b8d61966a565b6fffffffffffffffffffffffffffffffff166166a8565b8a518c51600291820b910b14611f8157611f7c600f88900b611f728b8d619692565b600f0b600161706e565b611fd9565b611f7c600f88900b611f938b8d61966a565b600f0b6165d4565b611fc9886fffffffffffffffffffffffffffffffff168b6fffffffffffffffffffffffffffffffff166166a8565b611fd987600f0b8b600f0b6165d4565b8a5f015160020b8c6020015160020b148061200157508a6020015160020b8c6020015160020b145b1561205d5761201484611f398b8d61966a565b8a6020015160020b8c6020015160020b1461204657612041836120378c8c619692565b600f0b600261706e565b612086565b612041836120548b8d61966a565b611f93906196e0565b612079848b6fffffffffffffffffffffffffffffffff166166a8565b61208683611f938c6196e0565b8b518b51600291820b910b14806120a957508b6020015160020b8b5f015160020b145b15612107576120ce6fffffffffffffffffffffffffffffffff8716611f398b8d61966a565b8b518b51600291820b910b146120f5576120f0600f86900b611f728c8c619692565b612145565b6120f0600f86900b611f938b8d61966a565b612135866fffffffffffffffffffffffffffffffff168a6fffffffffffffffffffffffffffffffff166166a8565b61214585600f0b8a600f0b6165d4565b8b5f015160020b8b6020015160020b148061216d57508b6020015160020b8b6020015160020b145b156121b65761218082611f398b8d61966a565b8b6020015160020b8b6020015160020b146121a8576121a3816120378b8d619692565b6121df565b6121a3816120548b8d61966a565b6121d2828a6fffffffffffffffffffffffffffffffff166166a8565b6121df81611f938b6196e0565b5050505050505050505050505050565b6060601880548060200260200160405190810160405280929190818152602001828054801561172f57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611704575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561172f57602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611704575050505050905090565b602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c60208083019190915269021e19e0c9bab24000008284018190525f606084018190528451908152918201938490527f5a6bcfda00000000000000000000000000000000000000000000000000000000909352919273ffffffffffffffffffffffffffffffffffffffff1691635a6bcfda91612379916036919060248101619302565b6020604051808303815f875af1158015612395573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b99190619396565b506045546044546040517f9ec538c80000000000000000000000000000000000000000000000000000000081525f92839273ffffffffffffffffffffffffffffffffffffffff90911691639ec538c8916124199160040190815260200190565b6040805180830381865afa158015612433573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124579190619499565b91509150612465825f6166a8565b61246f815f6166a8565b6040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b60608201526038549091166080820152678ac7230489e800009061250d906001610928846193da565b506045546044546040517f9ec538c800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921691639ec538c8916125699160040190815260200190565b6040805180830381865afa158015612583573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125a79190619499565b6040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f5374617465566965775f657874736c6f61645f67657446656547726f7774684760448201527f6c6f62616c73000000000000000000000000000000000000000000000000000060648201529194509250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd9fca12906084016020604051808303815f875af1158015612667573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061268b9190619396565b505f6126bb700100000000000000000000000000000000866126b485660aa87bee5380006170f0565b919061710d565b90506126c784826166a8565b6116c5835f6166a8565b602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c60208083019190915269021e19e0c9bab2400000828401525f606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916127829160369160248101619302565b6020604051808303815f875af115801561279e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c29190619396565b50602c54604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffda8815261025860208083019190915269021e19e0c9bab2400000828401525f606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916128759160369160248101619302565b6020604051808303815f875af1158015612891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b59190619396565b506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854909116608082015268056bc75e2d6310000090612955906001610928846193da565b506045546044546040517fc815641c00000000000000000000000000000000000000000000000000000000815260048101919091525f9173ffffffffffffffffffffffffffffffffffffffff169063c815641c90602401608060405180830381865afa1580156129c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129eb9190619443565b5050915050612a1d8160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff756165d4565b604554604480546040517f8a2bb9e600000000000000000000000000000000000000000000000000000000815260048101919091527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc460248201819052925f92839273ffffffffffffffffffffffffffffffffffffffff90921691638a2bb9e691016040805180830381865afa158015612ab9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612add9190619499565b6040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5374617465566965775f657874736c6f61645f6765745469636b46656547726f60448201527f7774684f7574736964650000000000000000000000000000000000000000000060648201529193509150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd9fca12906084016020604051808303815f875af1158015612b9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bc19190619396565b50612bda826d97ab4a0932b9403be6d79708e8fc6166a8565b612be4815f6166a8565b604554604480546040517f8a2bb9e60000000000000000000000000000000000000000000000000000000081526004810191909152603c60248201819052955073ffffffffffffffffffffffffffffffffffffffff90921691638a2bb9e691016040805180830381865afa158015612c5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c829190619499565b9092509050612c91825f6166a8565b6116c5815f6166a8565b612cba600173fffd8963efd1fc6a506488495d951d5263988d2661971c565b81565b6040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b606082015260385490911660808201525f90612d5c90846c01000000000000000000000000617147565b6040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b606082015260385490911660808201529091505f90612dfe90846c01000000000000000000000000617147565b80518351919250737109709ecfa91a80626ff3989d68f67f5b1dd12d91634c63e56291600291820b910b14801590612e435750826020015160020b845f015160020b14155b8015612e5c5750836020015160020b835f015160020b14155b8015612e765750826020015160020b846020015160020b14155b6040518263ffffffff1660e01b8152600401612e96911515815260200190565b5f6040518083038186803b158015612eac575f80fd5b505afa158015612ebe573d5f803e3d5ffd5b5050602c54604080515f815260208101918290527f5a6bcfda0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9091169250635a6bcfda9150612f2990603690869060248101619302565b6020604051808303815f875af1158015612f45573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f699190619396565b50602c54604080515f815260208101918290527f5a6bcfda0000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff90911690635a6bcfda90612fd190603690859060248101619302565b6020604051808303815f875af1158015612fed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130119190619396565b50602c548251602080850151604080515f602682018190526006820193909352600381019490945273ffffffffffffffffffffffffffffffffffffffff9485168452603a600c850120848201839052928401829052928190526045546044805494517ff0928f290000000000000000000000000000000000000000000000000000000081526004810195909552602485018490529294919391169163f0928f299101602060405180830381865afa1580156130ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f29190619527565b9050613126816fffffffffffffffffffffffffffffffff1685604001516fffffffffffffffffffffffffffffffff166166a8565b602c548351602080860151604080515f602682018190526006820193909352600381019490945273ffffffffffffffffffffffffffffffffffffffff9485168452603a600c850120848201839052928401829052928190526045546044805494517ff0928f290000000000000000000000000000000000000000000000000000000081526004810195909552602485018490529294919391169163f0928f299101602060405180830381865afa1580156131e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132069190619527565b905061323a816fffffffffffffffffffffffffffffffff1686604001516fffffffffffffffffffffffffffffffff166166a8565b5050505050505050565b602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c60208083019190915269021e19e0c9bab2400000828401525f606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916132f59160369160248101619302565b6020604051808303815f875af1158015613311573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133359190619396565b50602c54604080516080810182527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffda8815261025860208083019190915269021e19e0c9bab2400000828401525f606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda916133e89160369160248101619302565b6020604051808303815f875af1158015613404573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134289190619396565b506040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854909116608082015268056bc75e2d63100000906134c8906001610928846193da565b506045546044546040517fc815641c0000000000000000000000000000000000000000000000000000000081525f9283928392839273ffffffffffffffffffffffffffffffffffffffff169163c815641c9161352b919060040190815260200190565b608060405180830381865afa158015613546573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061356a9190619443565b6040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5374617465566965775f657874736c6f61645f676574536c6f74300000000000604482015293975091955093509150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd9fca12906064016020604051808303815f875af1158015613609573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061362d9190619396565b5061365b8360020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff756165d4565b6136878473ffffffffffffffffffffffffffffffffffffffff166bfe3aa841ba359daa0ea9eff76166a8565b6136b48360020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff756165d4565b6136c38262ffffff165f6166a8565b6116c58162ffffff16610bb86166a8565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015611a82578382905f5260205f2090600202016040518060400160405290815f82018054613727906195e0565b80601f0160208091040260200160405190810160405280929190818152602001828054613753906195e0565b801561379e5780601f106137755761010080835404028352916020019161379e565b820191905f5260205f20905b81548152906001019060200180831161378157829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561383557602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116137e25790505b505050505081525050815260200190600101906136f7565b602c546040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854821660808201525f9283926138f492911690876c010000000000000000000000008561112e565b915091505f6139038260801d90565b61390c906196e0565b600f0b90505f61391c83600f0b90565b613925906196e0565b600f0b9050815f0361393a5760019450613945565b805f03613945575f94505b6139618660016f7fffffffffffffffffffffffffffffff6171b9565b6040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b606082015260385490911660808201529096506139f79086610928896193da565b50602c54604080516080810182528651600290810b825260208089015190910b818301525f828401819052606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda91613a889160369160248101619302565b6020604051808303815f875af1158015613aa4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ac89190619396565b50602c548451602080870151604080515f602682018190526006820193909352600381019490945273ffffffffffffffffffffffffffffffffffffffff9485168452603a600c850120848201839052928401829052928190526045546044805494517f97fd7b42000000000000000000000000000000000000000000000000000000008152600481019590955260248501849052929491938493849392909216916397fd7b429101606060405180830381865afa158015613b8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613baf91906194da565b925092509250613be7836fffffffffffffffffffffffffffffffff1689604001516fffffffffffffffffffffffffffffffff166166a8565b8815613c0657613bf7825f616650565b613c01815f6166a8565b613c1a565b613c10825f6166a8565b613c1a815f616650565b5050505050505050505050565b602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c602080830191909152678ac7230489e80000828401525f606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda91613cd69160369160248101619302565b6020604051808303815f875af1158015613cf2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d169190619396565b50602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8881526078602080830191909152678ac7230489e80000828401525f606083018190528351908152908101928390527f5a6bcfda0000000000000000000000000000000000000000000000000000000090925273ffffffffffffffffffffffffffffffffffffffff90921691635a6bcfda91613dc69160369160248101619302565b6020604051808303815f875af1158015613de2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e069190619396565b506045546044546040517ffa6793d500000000000000000000000000000000000000000000000000000000815260048101919091525f9173ffffffffffffffffffffffffffffffffffffffff169063fa6793d590602401602060405180830381865afa158015613e78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e9c9190619527565b6040517fdd9fca1200000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5374617465566965775f657874736c6f61645f6765744c6971756964697479006044820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063dd9fca12906064016020604051808303815f875af1158015613f34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f589190619396565b50613f7e816fffffffffffffffffffffffffffffffff166801158e460913d000006166a8565b50565b602c546040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939093527701000000000000000000000000000000000000000000000090920460020b6060820152603854821660808201525f92614025921690846c010000000000000000000000008561112e565b50604080820151604554604454845193517fcaedab5400000000000000000000000000000000000000000000000000000000815294955091935f93849373ffffffffffffffffffffffffffffffffffffffff9093169263caedab549261409a929060040191825260020b602082015260400190565b6040805180830381865afa1580156140b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140d89190619642565b9150915061410a826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff166166a8565b61411e81600f0b8560400151600f0b6165d4565b6045546044805460208701516040517fcaedab54000000000000000000000000000000000000000000000000000000008152600481019290925260020b60248201525f92839273ffffffffffffffffffffffffffffffffffffffff9091169163caedab5491016040805180830381865afa15801561419e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141c29190619642565b915091506141f4826fffffffffffffffffffffffffffffffff16866fffffffffffffffffffffffffffffffff166166a8565b61420981600f0b8760400151611f93906196e0565b6045546044805488516040517f7c40f1fe000000000000000000000000000000000000000000000000000000008152600481019290925260020b60248201525f92839273ffffffffffffffffffffffffffffffffffffffff90911691637c40f1fe9101608060405180830381865afa158015614287573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142ab9190619748565b5050915091506142df826fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff166166a8565b6142ef81600f0b86600f0b6165d4565b6045546044805460208b01516040517f7c40f1fe000000000000000000000000000000000000000000000000000000008152600481019290925260020b60248201525f92839273ffffffffffffffffffffffffffffffffffffffff90911691637c40f1fe9101608060405180830381865afa158015614370573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143949190619748565b5050915091506143c8826fffffffffffffffffffffffffffffffff16876fffffffffffffffffffffffffffffffff166166a8565b613c1a81600f0b86600f0b6165d4565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015611a82578382905f5260205f20018054614418906195e0565b80601f0160208091040260200160405190810160405280929190818152602001828054614444906195e0565b801561448f5780601f106144665761010080835404028352916020019161448f565b820191905f5260205f20905b81548152906001019060200180831161447257829003601f168201915b5050505050815260200190600101906143fb565b602c54604080516080810182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc48152603c60208083019190915269021e19e0c9bab24000008284018190525f606084018190528451908152918201938490527f5a6bcfda00000000000000000000000000000000000000000000000000000000909352919273ffffffffffffffffffffffffffffffffffffffff1691635a6bcfda91614557916036919060248101619302565b6020604051808303815f875af1158015614573573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145979190619396565b506045546044546040517f9ec538c80000000000000000000000000000000000000000000000000000000081525f92839273ffffffffffffffffffffffffffffffffffffffff90911691639ec538c8916145f79160040190815260200190565b6040805180830381865afa158015614611573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906146359190619499565b91509150614643825f6166a8565b61464d815f6166a8565b6040805160a08101825260365473ffffffffffffffffffffffffffffffffffffffff9081168252603754808216602084015262ffffff74010000000000000000000000000000000000000000820416938301939