@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 658 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":"hook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract WstETHHook"}],"stateMutability":"view"},{"type":"function","name":"hookSim","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract WstETHRoutingHook"}],"stateMutability":"view"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract TestRouter"}],"stateMutability":"view"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"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_fork_unwrap_exactInput","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"dustStEth","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fork_unwrap_exactOutput","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fork_wrap_exactInput","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"dustStEth","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fork_wrap_exactOutput","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wstETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWstETH"}],"stateMutability":"view"},{"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":"0x600c8054600160ff199182168117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e08190526020805465ffffffffffff199081166378ffff8890811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101808290526063196101a08190526bb504f333f9de6484597d89b36101c081905260268054909316909317909155602755602880546001600160a01b0319908116909217905560428054600e90831617905560438054909116614000600160a01b0317905561022060405260056101e090815264616c69636560d81b6102005261012590610156565b605180546001600160a01b0319166001600160a01b0392909216919091179055348015610150575f80fd5b506102fc565b5f61016082610167565b5092915050565b5f808260405160200161017a9190610275565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156101e3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610207919061028b565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c7189061024390859087906004016102b8565b5f604051808303815f87803b15801561025a575f80fd5b505af115801561026c573d5f803e3d5ffd5b50505050915091565b5f82518060208501845e5f920191825250919050565b5f6020828403121561029b575f80fd5b81516001600160a01b03811681146102b1575f80fd5b9392505050565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b6201ee5a806200030b5f395ff3fe6080604052600436106101a7575f3560e01c8063916a17c6116100e7578063c1fe3e4811610087578063e20c9f7111610062578063e20c9f711461050d578063f753815f14610521578063f887ea401461054d578063fa7626d414610579575f80fd5b8063c1fe3e48146104b9578063c7b8e15d146104e5578063de375eba146104f9575f80fd5b8063b1a73b8a116100c2578063b1a73b8a14610403578063b5508aa91461046d578063ba414fa614610481578063c0b6399e146104a5575f80fd5b8063916a17c6146103a157806393ad73ed146103c2578063b0464fdc146103ef575f80fd5b80633f7286f411610152578063542524dd1161012d578063542524dd1461031f57806366d9a9a0146103335780637f5a7c7b1461035457806385226c8114610380575f80fd5b80633f7286f41461029b57806345f3a177146102af5780634aa07e64146102ce575f80fd5b80632ade3880116101825780632ade38801461021157806339cd2013146102325780633e5e3c2314610287575f80fd5b80630a9254e4146101b25780631ed7831c146101c85780632a6fe2d1146101f2575f80fd5b366101ae57005b5f80fd5b3480156101bd575f80fd5b506101c6610592565b005b3480156101d3575f80fd5b506101dc6115ff565b6040516101e99190614ee5565b60405180910390f35b3480156101fd575f80fd5b506101c661020c366004614f3d565b61166c565b34801561021c575f80fd5b5061022561215a565b6040516101e99190614fa9565b34801561023d575f80fd5b5060235460245460255461025f92600281810b936301000000909204900b9184565b60408051600295860b81529390940b60208401529282015260608101919091526080016101e9565b348015610292575f80fd5b506101dc6122a3565b3480156102a6575f80fd5b506101dc61230e565b3480156102ba575f80fd5b506101c66102c9366004614f3d565b612379565b3480156102d9575f80fd5b506046546102fa9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e9565b34801561032a575f80fd5b506102fa612e60565b34801561033e575f80fd5b50610347612e82565b6040516101e99190615117565b34801561035f575f80fd5b506044546102fa9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561038b575f80fd5b50610394612ffb565b6040516101e991906151b3565b3480156103ac575f80fd5b506103b56130c6565b6040516101e99190615228565b3480156103cd575f80fd5b5060205460215460225461025f92600281810b936301000000909204900b9184565b3480156103fa575f80fd5b506103b56131c9565b34801561040e575f80fd5b5060265460275460285461043a9260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff16908201526060016101e9565b348015610478575f80fd5b506103946132cc565b34801561048c575f80fd5b50610495613397565b60405190151581526020016101e9565b3480156104b0575f80fd5b506101c6613467565b3480156104c4575f80fd5b506047546102fa9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104f0575f80fd5b506102fa613942565b348015610504575f80fd5b506101c6613952565b348015610518575f80fd5b506101dc613c89565b34801561052c575f80fd5b506045546102fa9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610558575f80fd5b50604e546102fa9073ffffffffffffffffffffffffffffffffffffffff1681565b348015610584575f80fd5b50601f546104959060ff1681565b6040517ff877cb1900000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e465552415f4150495f4b45590000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f877cb19906064015f60405180830381865afa92505050801561066557506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610662919081019061538c565b60015b61068d5761068b6040518060a00160405280606381526020016201edeb60639139613cf4565b565b6106cb6040518060400160405280601781526020017f466f726b656420457468657265756d206d61696e6e6574000000000000000000815250613cf4565b6040517f975a6ce900000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6d61696e6e6574000000000000000000000000000000000000000000000000006044820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906371ee464d90829063975a6ce9906064015f60405180830381865afa158015610766573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107ab919081019061538c565b63014e2ae06040518363ffffffff1660e01b81526004016107cd9291906153d9565b6020604051808303815f875af11580156107e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080d91906153fa565b50610816613d86565b602b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166e04444c5dc75cb358380d2e3de08a9090811790915560405161085e90614e4b565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015610894573d5f803e3d5ffd5b50604e80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff9390931692909217905560468054737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0921682179055604080517fc657c71800000000000000000000000000000000000000000000000000000000815260048101929092526024820152600660448201527f77737445544800000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c718906084015f604051808303815f87803b158015610992575f80fd5b505af11580156109a4573d5f803e3d5ffd5b5050604780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ae7ab96520de3a18e5e111b5eaab095312d7fe84908117909155604080517fc657c71800000000000000000000000000000000000000000000000000000000815260048101929092526024820152600560448201527f73744554480000000000000000000000000000000000000000000000000000006064820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c657c71891506084015f604051808303815f87803b158015610a80575f80fd5b505af1158015610a92573d5f803e3d5ffd5b5050604354604480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92831617612888179055610afd9250731000000000000000000000000000000000000000915061543e565b604354604580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283166128881793909316821692909217909155604080518082018252600a81527f577374455448486f6f6b00000000000000000000000000000000000000000000602080830191909152602b54604654845191861692820192909252931691830191909152610bf491606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260445473ffffffffffffffffffffffffffffffffffffffff1661436f565b604080518082018252601181527f577374455448526f7574696e67486f6f6b000000000000000000000000000000602080830191909152602b54604654845173ffffffffffffffffffffffffffffffffffffffff928316938101939093528116828501528351808303850181526060909201909352604554610c76931661436f565b602b5460408051808201909152600181525f6020820152610cad9173ffffffffffffffffffffffffffffffffffffffff1690614380565b6050805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556040805160a080820183526046548516808352604754861660208085018290525f858701819052603c60608088018290526044548b166080988901819052604880548c168817815560498054773c00000000000000000000000000000000000000000000007fffffffffffff00000000000000000000000000000000000000000000000000009182168a178117909255604a80548f169094179093558b51998a018c52888a52958901879052888b0194909452908701919091526045548a1695909601859052604b80548916909417909355604c805490951690911717909255604d805490941617909255602b5490517f6276cbbe000000000000000000000000000000000000000000000000000000008152921691636276cbbe91610e98916c0100000000000000000000000090600401825473ffffffffffffffffffffffffffffffffffffffff90811682526001840154808216602084015262ffffff60a082901c16604084015260b81c600290810b606084015284015416608082015260c0810173ffffffffffffffffffffffffffffffffffffffff831660a08301529392505050565b6020604051808303815f875af1158015610eb4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed89190615470565b50602b546040517f6276cbbe000000000000000000000000000000000000000000000000000000008152604b5473ffffffffffffffffffffffffffffffffffffffff9081166004830152604c54808216602484015260a081901c62ffffff16604484015260b81c60020b6064830152604d54811660848301526c0100000000000000000000000060a483015290911690636276cbbe9060c4016020604051808303815f875af1158015610f8d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fb19190615470565b506040517f06447d56000000000000000000000000000000000000000000000000000000008152731982b2f5814301d4e9a8b0201555376e62f824286004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611028575f80fd5b505af115801561103a573d5f803e3d5ffd5b50506047546051546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015268056bc75e2d631000006024820181905294509116915063a9059cbb906044016020604051808303815f875af11580156110c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e59190615490565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561114d575f80fd5b505af115801561115f573d5f803e3d5ffd5b50506040517f06447d560000000000000000000000000000000000000000000000000000000081527310cd5fbe1b404b7e19ef964b63939907bdaf42e26004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b1580156111d9575f80fd5b505af11580156111eb573d5f803e3d5ffd5b50506051546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015268056bc75e2d63100000602482018190529250737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0915063a9059cbb906044016020604051808303815f875af1158015611282573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a69190615490565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561130e575f80fd5b505af1158015611320573d5f803e3d5ffd5b50506051546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506306447d5691506024015f604051808303815f87803b1580156113a0575f80fd5b505af11580156113b2573d5f803e3d5ffd5b5050604754604e546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116925063095ea7b391506044016020604051808303815f875af115801561144d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114719190615490565b50604e546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6024820152737f39c581f595b53c5cb19bd0b3f8da6c935e2ca09063095ea7b3906044016020604051808303815f875af1158015611519573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153d9190615490565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156115a5575f80fd5b505af11580156115b7573d5f803e3d5ffd5b5050605180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555050505050565b6060601680548060200260200160405190810160405280929190818152602001828054801561166257602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611637575b5050505050905090565b60515474010000000000000000000000000000000000000000900460ff1615612118576116cd6040518060400160405280601381526020017f72756e6e696e6720666f726b6564207465737400000000000000000000000000815250613cf4565b5f6116e98367016345785d8a0000678ac7230489e800006144e2565b90506116ff826001678ac7230489e800006144e2565b6040517fca669fa7000000000000000000000000000000000000000000000000000000008152731982b2f5814301d4e9a8b0201555376e62f824286004820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611778575f80fd5b505af115801561178a573d5f803e3d5ffd5b5050604754602b546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018790529116925063a9059cbb91506044016020604051808303815f875af1158015611806573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182a9190615490565b506046546040517fbb2952fc000000000000000000000000000000000000000000000000000000008152600481018390525f9173ffffffffffffffffffffffffffffffffffffffff169063bb2952fc90602401602060405180830381865afa158015611898573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118bc91906153fa565b6051546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801561193b575f80fd5b505af115801561194d573d5f803e3d5ffd5b50506047546051546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201525f9450911691506370a0823190602401602060405180830381865afa1580156119c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e791906153fa565b6051546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201529091505f90737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0906370a0823190602401602060405180830381865afa158015611a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a9091906153fa565b604e5460408051606081019091526001815291925073ffffffffffffffffffffffffffffffffffffffff169063f3cd914c9060489060208101611ad2896154af565b8152602001611af6600173fffd8963efd1fc6a506488495d951d5263988d2661543e565b73ffffffffffffffffffffffffffffffffffffffff908116909152604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681528454831660048201526001850154808416602483015260a081901c62ffffff16604483015260b81c600290810b606483015290940154821660848501528251151560a4850152602083015160c485015291909101511660e48201526101206101048201525f610124820152610144016020604051808303815f875af1158015611bc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bed91906153fa565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611c55575f80fd5b505af1158015611c67573d5f803e3d5ffd5b5050605054604080516101208101825260485473ffffffffffffffffffffffffffffffffffffffff9081166080830190815260495480831660a085015262ffffff7401000000000000000000000000000000000000000082041660c085015277010000000000000000000000000000000000000000000000900460020b60e0840152604a548216610100840152825260016020808401919091526fffffffffffffffffffffffffffffffff8b1683850152835190810184525f808252606084019190915292517faa9d21cb000000000000000000000000000000000000000000000000000000008152929550909216925063aa9d21cb91611d6a916004016154e5565b60408051808303815f875af1158015611d85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da991906155b0565b506050546040805161012081018252604b5473ffffffffffffffffffffffffffffffffffffffff90811660808301908152604c5480831660a085015262ffffff7401000000000000000000000000000000000000000082041660c085015277010000000000000000000000000000000000000000000000900460020b60e0840152604d548216610100840152825260016020808401919091526fffffffffffffffffffffffffffffffff8b1683850152835190810184525f808252606084019190915292517faa9d21cb0000000000000000000000000000000000000000000000000000000081529495509193919092169163aa9d21cb91611eae91906004016154e5565b60408051808303815f875af1158015611ec9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eed91906155b0565b509050611f1482826040518060600160405280603981526020016201edb260399139614536565b6047546051546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201525f92879216906370a0823190602401602060405180830381865afa158015611f87573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fab91906153fa565b611fb591906155d2565b9050611fdd828260036040518060600160405280603581526020016201ed7d603591396145bb565b61201f818760036040518060400160405280601881526020017f496e636f727265637420737445544820726563656976656400000000000000008152506145bb565b6051546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015261210d90737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0906370a0823190602401602060405180830381865afa1580156120a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120c791906153fa565b6120d190866155d2565b886040518060400160405280601681526020017f496e636f727265637420777374455448207370656e7400000000000000000000815250614536565b505050505050505050565b6121566040518060400160405280601481526020017f736b697070696e6720666f726b65642074657374000000000000000000000000815250613cf4565b5050565b6060601e805480602002602001604051908101604052809291908181526020015f905b8282101561229a575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b82821015612283578382905f5260205f200180546121f8906155e5565b80601f0160208091040260200160405190810160405280929190818152602001828054612224906155e5565b801561226f5780601f106122465761010080835404028352916020019161226f565b820191905f5260205f20905b81548152906001019060200180831161225257829003601f168201915b5050505050815260200190600101906121db565b50505050815250508152602001906001019061217d565b50505050905090565b6060601880548060200260200160405190810160405280929190818152602001828054801561166257602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611637575050505050905090565b6060601780548060200260200160405190810160405280929190818152602001828054801561166257602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611637575050505050905090565b60515474010000000000000000000000000000000000000000900460ff1615612118576123da6040518060400160405280601381526020017f72756e6e696e6720666f726b6564207465737400000000000000000000000000815250613cf4565b5f6123f68367016345785d8a0000678ac7230489e800006144e2565b905061240c82600167016345785d89ffff6144e2565b6040517fca669fa7000000000000000000000000000000000000000000000000000000008152731982b2f5814301d4e9a8b0201555376e62f824286004820152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015612485575f80fd5b505af1158015612497573d5f803e3d5ffd5b5050604754602b546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018790529116925063a9059cbb91506044016020604051808303815f875af1158015612513573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125379190615490565b506046546040517fb0e38900000000000000000000000000000000000000000000000000000000008152600481018390525f9173ffffffffffffffffffffffffffffffffffffffff169063b0e3890090602401602060405180830381865afa1580156125a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c991906153fa565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663f48448146040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612632575f80fd5b505af1158015612644573d5f803e3d5ffd5b5050605054604080516101208101825260485473ffffffffffffffffffffffffffffffffffffffff9081166080830190815260495480831660a085015262ffffff7401000000000000000000000000000000000000000082041660c085015277010000000000000000000000000000000000000000000000900460020b60e0840152604a54821661010084015282525f60208084018290526fffffffffffffffffffffffffffffffff8a168486015284519081018552908152606083015291517faa9d21cb00000000000000000000000000000000000000000000000000000000815291909216935063aa9d21cb925061274191906004016154e5565b60408051808303815f875af115801561275c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061278091906155b0565b50506050546040805161012081018252604b5473ffffffffffffffffffffffffffffffffffffffff90811660808301908152604c5480831660a085015262ffffff7401000000000000000000000000000000000000000082041660c085015277010000000000000000000000000000000000000000000000900460020b60e0840152604d54821661010084015282525f60208084018290526fffffffffffffffffffffffffffffffff88168486015284519081018552818152606084015292517faa9d21cb0000000000000000000000000000000000000000000000000000000081529293169163aa9d21cb91612879916004016154e5565b60408051808303815f875af1158015612894573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128b891906155b0565b506051546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612938575f80fd5b505af115801561294a573d5f803e3d5ffd5b50506047546051546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201525f9450911691506370a0823190602401602060405180830381865afa1580156129c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e491906153fa565b6051546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201529091505f90737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0906370a0823190602401602060405180830381865afa158015612a69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a8d91906153fa565b604e5460408051606081019091525f815291925073ffffffffffffffffffffffffffffffffffffffff169063f3cd914c9060489060208101612ace8a6154af565b8152602001612ae36401000276a36001615636565b73ffffffffffffffffffffffffffffffffffffffff908116909152604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681528454831660048201526001850154808416602483015260a081901c62ffffff16604483015260b81c600290810b606483015290940154821660848501528251151560a4850152602083015160c485015291909101511660e48201526101206101048201525f610124820152610144016020604051808303815f875af1158015612bb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bda91906153fa565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612c42575f80fd5b505af1158015612c54573d5f803e3d5ffd5b50506051546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201525f9250839150737f39c581f595b53c5cb19bd0b3f8da6c935e2ca0906370a0823190602401602060405180830381865afa158015612cdc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d0091906153fa565b612d0a91906155d2565b9050612d32848260026040518060600160405280603581526020016201ed7d603591396145bb565b6047546051546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152612e149291909116906370a0823190602401602060405180830381865afa158015612da8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dcc91906153fa565b612dd690856155d2565b8760026040518060400160405280601581526020017f496e636f7272656374207374455448207370656e7400000000000000000000008152506145bb565b612e56818660026040518060400160405280601981526020017f496e636f727265637420777374455448207265636569766564000000000000008152506145bb565b5050505050505050565b612e7f600173fffd8963efd1fc6a506488495d951d5263988d2661543e565b81565b6060601b805480602002602001604051908101604052809291908181526020015f905b8282101561229a578382905f5260205f2090600202016040518060400160405290815f82018054612ed5906155e5565b80601f0160208091040260200160405190810160405280929190818152602001828054612f01906155e5565b8015612f4c5780601f10612f2357610100808354040283529160200191612f4c565b820191905f5260205f20905b815481529060010190602001808311612f2f57829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015612fe357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612f905790505b50505050508152505081526020019060010190612ea5565b6060601a805480602002602001604051908101604052809291908181526020015f905b8282101561229a578382905f5260205f2001805461303b906155e5565b80601f0160208091040260200160405190810160405280929190818152602001828054613067906155e5565b80156130b25780601f10613089576101008083540402835291602001916130b2565b820191905f5260205f20905b81548152906001019060200180831161309557829003601f168201915b50505050508152602001906001019061301e565b6060601d805480602002602001604051908101604052809291908181526020015f905b8282101561229a575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156131b157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841161315e5790505b505050505081525050815260200190600101906130e9565b6060601c805480602002602001604051908101604052809291908181526020015f905b8282101561229a575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156132b457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116132615790505b505050505081525050815260200190600101906131ec565b60606019805480602002602001604051908101604052809291908181526020015f905b8282101561229a578382905f5260205f2001805461330c906155e5565b80601f0160208091040260200160405190810160405280929190818152602001828054613338906155e5565b80156133835780601f1061335a57610100808354040283529160200191613383565b820191905f5260205f20905b81548152906001019060200180831161336657829003601f168201915b5050505050815260200190600101906132ef565b6008545f9060ff16156133ae575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801561343c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061346091906153fa565b1415905090565b60515474010000000000000000000000000000000000000000900460ff1615613904576134c86040518060400160405280601381526020017f72756e6e696e6720666f726b6564207465737400000000000000000000000000815250613cf4565b6051546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152678ac7230489e8000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801561354e575f80fd5b505af1158015613560573d5f803e3d5ffd5b505060445460408051600480825260248083018452602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081167f21b865b300000000000000000000000000000000000000000000000000000000179091528551938452838301865290830180519091167fa9e35b2f000000000000000000000000000000000000000000000000000000001790529251737109709ecfa91a80626ff3989d68f67f5b1dd12d965063f28dceb395507f90bfb86500000000000000000000000000000000000000000000000000000000946136839473ffffffffffffffffffffffffffffffffffffffff91909116937f575e24b400000000000000000000000000000000000000000000000000000000939092909101615662565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252613713916004016156d5565b5f604051808303815f87803b15801561372a575f80fd5b505af115801561373c573d5f803e3d5ffd5b5050604e54604080516060810182525f81526020810186905273ffffffffffffffffffffffffffffffffffffffff909216935063f3cd914c925060489190810161378c6401000276a36001615636565b73ffffffffffffffffffffffffffffffffffffffff908116909152604080517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b1681528454831660048201526001850154808416602483015260a081901c62ffffff16604483015260b81c600290810b606483015290940154821660848501528251151560a4850152602083015160c485015291909101511660e48201526101206101048201525f610124820152610144016020604051808303815f875af115801561385f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061388391906153fa565b507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156138eb575f80fd5b505af11580156138fd573d5f803e3d5ffd5b5050505050565b61068b6040518060400160405280601481526020017f736b697070696e6720666f726b65642074657374000000000000000000000000815250613cf4565b612e7f6401000276a36001615636565b60515474010000000000000000000000000000000000000000900460ff1615613904576139b36040518060400160405280601381526020017f72756e6e696e6720666f726b6564207465737400000000000000000000000000815250613cf4565b6051546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152678ac7230489e8000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015613a39575f80fd5b505af1158015613a4b573d5f803e3d5ffd5b505060445460408051600480825260248083018452602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081167f21b865b300000000000000000000000000000000000000000000000000000000179091528551938452838301865290830180519091167fa9e35b2f000000000000000000000000000000000000000000000000000000001790529251737109709ecfa91a80626ff3989d68f67f5b1dd12d965063f28dceb395507f90bfb8650000000000000000000000000000000000000000000000000000000094613b6e9473ffffffffffffffffffffffffffffffffffffffff91909116937f575e24b400000000000000000000000000000000000000000000000000000000939092909101615662565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252613bfe916004016156d5565b5f604051808303815f87803b158015613c15575f80fd5b505af1158015613c27573d5f803e3d5ffd5b5050604e546040805160608101825260018082526020820187905273ffffffffffffffffffffffffffffffffffffffff909316945063f3cd914c9350604892909182019061378c9073fffd8963efd1fc6a506488495d951d5263988d2661543e565b6060601580548060200260200160405190810160405280929190818152602001828054801561166257602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611637575050505050905090565b613d8381604051602401613d0891906156d5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac00000000000000000000000000000000000000000000000000000000179052614639565b50565b613d8e614649565b602b5460405173ffffffffffffffffffffffffffffffffffffffff90911690613db690614e59565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613dec573d5f803e3d5ffd5b50602f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690613e4090614e67565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613e76573d5f803e3d5ffd5b50602e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690613eca90614e75565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613f00573d5f803e3d5ffd5b50602c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690613f5490614e83565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015613f8a573d5f803e3d5ffd5b50602d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b54604051911690613fde90614e91565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015614014573d5f803e3d5ffd5b50603080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b5460405191169061406890614e9f565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561409e573d5f803e3d5ffd5b50603180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b546040519116906140f290614ead565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff080158015614128573d5f803e3d5ffd5b50603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b5460405191169061417c90614ebb565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff0801580156141b2573d5f803e3d5ffd5b50603480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600d81527f666565436f6e74726f6c6c6572000000000000000000000000000000000000006020820152614235906146d4565b603580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b5460405191169061428890614ec9565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff0801580156142be573d5f803e3d5ffd5b50603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055602b546035546040517f2d7713890000000000000000000000000000000000000000000000000000000081529083166004820152911690632d771389906024015f604051808303815f87803b158015614357575f80fd5b505af1158015614369573d5f803e3d5ffd5b50505050565b61437b83835f846146e5565b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff841660208201525f91829101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527f8d1cc92500000000000000000000000000000000000000000000000000000000825260206004830152601560248301527f563451756f7465722e736f6c3a563451756f7465720000000000000000000000604483015291505f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906064015f60405180830381865afa158015614468573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526144ad919081019061538c565b826040516020016144bf9291906156fe565b6040516020818303038152906040529050838151602083015ff595945050505050565b5f6144ee8484846149e4565b905061452f6040518060400160405280600c81526020017f426f756e6420726573756c74000000000000000000000000000000000000000081525082614c14565b9392505050565b6040517f88b44c85000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d906388b44c859061458a90869086908690600401615712565b5f6040518083038186803b1580156145a0575f80fd5b505afa1580156145b2573d5f803e3d5ffd5b50505050505050565b6040517ff710b062000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f710b06290614611908790879087908790600401615739565b5f6040518083038186803b158015614627575f80fd5b505afa158015612e56573d5f803e3d5ffd5b613d8381614ca55b63ffffffff16565b3060405161465690614ed7565b73ffffffffffffffffffffffffffffffffffffffff9091168152602001604051809103905ff08015801561468c573d5f803e3d5ffd5b50602b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b5f6146de82614cc4565b5092915050565b6040517f8d1cc9250000000000000000000000000000000000000000000000000000000081525f90737109709ecfa91a80626ff3989d68f67f5b1dd12d90638d1cc925906147379088906004016156d5565b5f60405180830381865afa158015614751573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052614796919081019061538c565b90507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663b4d6c7828383876040516020016147ea9291906156fe565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401614816929190615767565b5f604051808303815f87803b15801561482d575f80fd5b505af115801561483f573d5f803e3d5ffd5b505050505f808373ffffffffffffffffffffffffffffffffffffffff16856040515f6040518083038185875af1925050503d805f811461489a576040519150601f19603f3d011682016040523d82523d5f602084013e61489f565b606091505b50915091508161495c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605860248201527f537464436865617473206465706c6f79436f6465546f28737472696e672c627960448201527f7465732c75696e743235362c61646472657373293a204661696c656420746f2060648201527f6372656174652072756e74696d652062797465636f64652e0000000000000000608482015260a4015b60405180910390fd5b6040517fb4d6c782000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906149ae9087908590600401615767565b5f604051808303815f87803b1580156149c5575f80fd5b505af11580156149d7573d5f803e3d5ffd5b5050505050505050505050565b5f81831115614a75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374645574696c7320626f756e642875696e743235362c75696e743235362c7560448201527f696e74323536293a204d6178206973206c657373207468616e206d696e2e00006064820152608401614953565b828410158015614a855750818411155b15614a9157508261452f565b5f614a9c84846155d2565b614aa7906001615795565b905060038511158015614ab957508481115b15614ad057614ac88585615795565b91505061452f565b614afb60037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6155d2565b8510158015614b325750614b2f857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6155d2565b81115b15614b6b57614b61857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6155d2565b614ac890846155d2565b82851115614bbe575f614b7e84876155d2565b90505f614b8b83836157a8565b9050805f03614b9f5784935050505061452f565b6001614bab8288615795565b614bb591906155d2565b93505050614c0c565b83851015614c0c575f614bd186866155d2565b90505f614bde83836157a8565b9050805f03614bf25785935050505061452f565b614bfc81866155d2565b614c07