@layerzerolabs/oft-alt-evm
Version:
LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation
1 lines • 1.42 MB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DEFAULT_CHANNEL_ID","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"EVM_COMPUTE_MAP_BPS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"EVM_COMPUTE_REDUCE_FEE_USD","inputs":[],"outputs":[{"name":"","type":"uint120","internalType":"uint120"}],"stateMutability":"view"},{"type":"function","name":"EVM_REQUEST_FEE_USD","inputs":[],"outputs":[{"name":"","type":"uint120","internalType":"uint120"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"MAP_REDUCE_COMPUTE_TYPES","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"NATIVE_TOKEN_PRICE_USD","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"TREASURY_GAS_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"TREASURY_GAS_FOR_FEE_CAP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"altToken","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"assertGuid","inputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"},{"name":"guid","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"createEndpoints","inputs":[{"name":"_endpointNum","type":"uint8","internalType":"uint8"},{"name":"_libraryType","type":"uint8","internalType":"enum TestHelperOz5.LibraryType"},{"name":"nativeTokenAddresses","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decodeLzComposeOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"index","type":"uint16","internalType":"uint16"},{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeLzReadOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"size","type":"uint32","internalType":"uint32"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeLzReceiveOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"gas","type":"uint128","internalType":"uint128"},{"name":"value","type":"uint128","internalType":"uint128"}],"stateMutability":"pure"},{"type":"function","name":"decodeNativeDropOption","inputs":[{"name":"_option","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"receiver","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"decodeOFTComposeMsgCodec","inputs":[{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"nonce","type":"uint64","internalType":"uint64"},{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"amountCreditLD","type":"uint256","internalType":"uint256"},{"name":"composeFrom","type":"bytes32","internalType":"bytes32"},{"name":"composeMsg","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"decodeOFTMsgCodec","inputs":[{"name":"message","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"isComposed","type":"bool","internalType":"bool"},{"name":"sendTo","type":"bytes32","internalType":"bytes32"},{"name":"amountSD","type":"uint64","internalType":"uint64"},{"name":"composeMsg","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"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":"executorValueCap","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getNextInflightPacket","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"hasPendingPackets","inputs":[{"name":"_dstEid","type":"uint16","internalType":"uint16"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"flag","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialNativeBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lzCompose","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_from","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_to","type":"address","internalType":"address"},{"name":"_composerMsg","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzCompose","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_composer","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReadReceive","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"lzReceive","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"nextExecutorOption","inputs":[{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_cursor","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"optionType","type":"uint8","internalType":"uint8"},{"name":"option","type":"bytes","internalType":"bytes"},{"name":"cursor","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"registerEndpoint","inputs":[{"name":"endpoint","type":"address","internalType":"contract EndpointV2Mock"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"schedulePacket","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setExecutorValueCap","inputs":[{"name":"_valueCap","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUpEndpoints","inputs":[{"name":"_endpointNum","type":"uint8","internalType":"uint8"},{"name":"_libraryType","type":"uint8","internalType":"enum TestHelperOz5.LibraryType"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setupOApps","inputs":[{"name":"_oappCreationCode","type":"bytes","internalType":"bytes"},{"name":"_startEid","type":"uint8","internalType":"uint8"},{"name":"_oappNum","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"oapps","type":"address[]","internalType":"address[]"}],"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_assert_options_type3_revert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_combine_options","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"nativeDropGas","type":"uint128","internalType":"uint128"},{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_combine_options_no_enforced_options","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"msgType","type":"uint16","internalType":"uint16"},{"name":"nativeDropGas","type":"uint128","internalType":"uint128"},{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_combine_options_no_extra_options","inputs":[{"name":"eid","type":"uint32","internalType":"uint32"},{"name":"gasLimit","type":"uint128","internalType":"uint128"},{"name":"nativeDrop","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_constructor","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_debit_slippage_minAmountToCreditLD","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_debit_slippage_removeDust","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oapp_inspector_inspect","inputs":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"user","type":"address","internalType":"address"},{"name":"amountToSendLD","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oftVersion","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oft_adapter_credit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oft_adapter_debit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oft_build_msg","inputs":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"amountToSendLD","type":"uint256","internalType":"uint256"},{"name":"composeMsg","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oft_build_msg_no_compose_msg","inputs":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"amountToSendLD","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oft_compose_codec","inputs":[{"name":"nonce","type":"uint64","internalType":"uint64"},{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"amountCreditLD","type":"uint256","internalType":"uint256"},{"name":"composeMsg","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oft_credit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_oft_debit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_revert_msg_value_not_zero","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_send_oft","inputs":[{"name":"tokensToSend","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_send_oft_compose_msg","inputs":[{"name":"tokensToSend","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_set_enforced_options","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_toLD","inputs":[{"name":"amountSD","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_toSD","inputs":[{"name":"amountLD","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"userA","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"userB","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"userC","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"userD","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"validatePacket","inputs":[{"name":"_packetBytes","type":"bytes","internalType":"bytes"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"},{"name":"_packetAmount","type":"uint256","internalType":"uint256"},{"name":"_composer","type":"address","internalType":"address"},{"name":"_resolvedPayload","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyPackets","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_dstAddress","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wireOApps","inputs":[{"name":"oapps","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"wireReadOApps","inputs":[{"name":"oapps","type":"address[]","internalType":"address[]"},{"name":"channels","type":"uint32[]","internalType":"uint32[]"}],"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},{"type":"error","name":"Executor_InvalidLzComposeOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReadOption","inputs":[]},{"type":"error","name":"Executor_InvalidLzReceiveOption","inputs":[]},{"type":"error","name":"Executor_InvalidNativeDropOption","inputs":[]},{"type":"error","name":"InvalidOptionType","inputs":[{"name":"optionType","type":"uint16","internalType":"uint16"}]},{"type":"error","name":"SafeCastOverflowedUintDowncast","inputs":[{"name":"bits","type":"uint8","internalType":"uint8"},{"name":"value","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x60806040819052600c8054600160ff199182168117909255601f805490911690911790556200002e9062000535565b604051809103905ff08015801562000048573d5f803e3d5ffd5b50601f80546001600160a01b039290921661010002610100600160a81b0319909216919091179055602480546001600160801b03191667016345785d8a0000179055604051620000989062000543565b6040808252601190820152704e6174697665416c74546f6b656e735f4160781b6060820152608060208201819052600590820152644e41545f4160d81b60a082015260c001604051809103905ff080158015620000f7573d5f803e3d5ffd5b50603380546001600160a01b0319166001600160a01b0392909216919091179055604051620001269062000543565b6040808252601190820152702730ba34bb32a0b63a2a37b5b2b739afa160791b6060820152608060208201819052600590820152642720aa2fa160d91b60a082015260c001604051809103905ff08015801562000185573d5f803e3d5ffd5b50603480546001600160a01b0319166001600160a01b0392909216919091179055604051620001b49062000543565b6040808252601190820152704e6174697665416c74546f6b656e735f4360781b6060820152608060208201819052600590820152644e41545f4360d81b60a082015260c001604051809103905ff08015801562000213573d5f803e3d5ffd5b50603580546001600160a01b0319166001600160a01b0392909216919091179055604051620002429062000543565b60408082526011908201527013985d1a5d99505b1d151bdad95b9cd7d1607a1b60608201526080602082018190526005908201526413905517d160da1b60a082015260c001604051809103905ff080158015620002a1573d5f803e3d5ffd5b50603680546001600160a01b0319166001600160a01b0392909216919091179055604080518082019091526005815264757365724160d81b6020820152620002e9906200040b565b603d80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152643ab9b2b92160d91b602082015262000330906200040b565b603e80546001600160a01b0319166001600160a01b0392909216919091179055604080518082019091526005815264757365724360d81b602082015262000377906200040b565b603f80546001600160a01b0319166001600160a01b03929092169190911790556040805180820190915260058152641d5cd95c9160da1b6020820152620003be906200040b565b604080546001600160a01b0319166001600160a01b039290921691909117905568056bc75e2d63100000604155683635c9adc5dea0000060425534801562000404575f80fd5b5062000604565b5f62000417826200041e565b5092915050565b5f808260405160200162000433919062000575565b60408051808303601f190181529082905280516020909101206001625e79b760e01b03198252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa1580156200049d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c3919062000592565b6040516318caf8e360e31b8152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890620005019085908790600401620005c1565b5f604051808303815f87803b15801562000519575f80fd5b505af11580156200052c573d5f803e3d5ffd5b50505050915091565b610aa9806204354983390190565b610c908062043ff283390190565b5f5b838110156200056d57818101518382015260200162000553565b50505f910152565b5f82516200058881846020870162000551565b9190910192915050565b5f60208284031215620005a3575f80fd5b81516001600160a01b0381168114620005ba575f80fd5b9392505050565b60018060a01b0383168152604060208201525f8251806040840152620005ef81606085016020870162000551565b601f01601f1916919091016060019392505050565b62042f3680620006135f395ff3fe60806040526004361062000572575f3560e01c80637433c59d11620002d6578063b76bada5116200018e578063e20c9f7111620000e2578063f93e1d611162000092578063fa1ac3b91162000076578063fa1ac3b91462001020578063fa7626d41462001057578063faed6c581462001072575f80fd5b8063f93e1d611462000fae578063f961196f1462000ffc575f80fd5b8063e99b6b3111620000c6578063e99b6b311462000f5f578063ec53eaa01462000f76578063ef76d3201462000f8d575f80fd5b8063e20c9f711462000f31578063e5af7e9c1462000f48575f80fd5b8063d0d3eb77116200013e578063db76826a1162000122578063db76826a1462000e8b578063deb22e9a1462000eaf578063defd9da61462000ed0575f80fd5b8063d0d3eb771462000e43578063d6d624971462000e67575f80fd5b8063ba414fa61162000172578063ba414fa61462000df1578063baead19c1462000e08578063cb1a295f1462000e22575f80fd5b8063b76bada51462000d8e578063b954fdf61462000da4575f80fd5b8063916a17c61162000246578063b0464fdc11620001f6578063b398b71211620001da578063b398b7121462000d3c578063b5508aa91462000d53578063b752b72a1462000d6a575f80fd5b8063b0464fdc1462000d0d578063b1dcf5c81462000d24575f80fd5b8063997cff1b116200022a578063997cff1b1462000cae578063a29c89841462000cd2578063ae6ce4001462000ce9575f80fd5b8063916a17c61462000c2b5780639751ca861462000c51575f80fd5b806382411c7711620002a257806385226c81116200028657806385226c811462000bd757806387d732631462000bfd5780638861a6411462000c14575f80fd5b806382411c771462000660578063834bd1591462000bb3575f80fd5b80637433c59d1462000b0b5780637982cf421462000b455780637f71dc311462000b785780637fef94d91462000b8f575f80fd5b80633e5e3c23116200042a5780635ea0fefe116200039a5780636a1ddf42116200034a578063703ca254116200032e578063703ca2541462000aac5780637323514c1462000ad057806373a015dc1462000ae7575f80fd5b80636a1ddf421462000a5f5780636e1775e31462000a76575f80fd5b806365449eb0116200037e57806365449eb014620009f757806366d9a9a01462000a1b578063699cbade1462000a41575f80fd5b80635ea0fefe146200099e5780636019788914620009d3575f80fd5b8063478796b411620003f6578063518e8ab011620003da578063518e8ab014620008f457806351aa318b146200094c57806358b8e966146200097a575f80fd5b8063478796b414620008c65780634bcf42c514620008dd575f80fd5b80633e5e3c23146200083e5780633f7286f4146200085557806343a2cd48146200086c57806345c6da5c14620008a2575f80fd5b80631837bea411620004e25780632a35d25011620004925780632f8c3b6a11620004765780632f8c3b6a14620007ec5780633b58c0ab14620008035780633bbd6a941462000827575f80fd5b80632a35d25014620007a25780632ade388014620007c6575f80fd5b80631ed7831c11620004c65780631ed7831c146200070c5780632113ce6214620007325780632215694a146200077e575f80fd5b80631837bea414620006c45780631cc4652514620006e8575f80fd5b80630a9254e4116200053e57806311078daa116200052257806311078daa146200063c5780631766f5a4146200066057806318369a2a146200069e575f80fd5b80630a9254e414620005f65780630afba868146200060d575f80fd5b8063054a76a4146200057e578063072ea15f1462000597578063090852b614620005bb5780630a69faa914620005df575f80fd5b366200057a57005b5f80fd5b3480156200058a575f80fd5b506200059562001096565b005b348015620005a3575f80fd5b5062000595620005b53660046200cec2565b620013d3565b348015620005c7575f80fd5b5062000595620005d93660046200cf01565b62001c39565b62000595620005f03660046200d08d565b62001c65565b34801562000602575f80fd5b506200059562001dbc565b34801562000619575f80fd5b506200062461271081565b60405161ffff90911681526020015b60405180910390f35b34801562000648575f80fd5b50620005956200065a3660046200d11f565b62002594565b3480156200066c575f80fd5b506200067d670de0b6b3a764000081565b6040516effffffffffffffffffffffffffffff909116815260200162000633565b348015620006aa575f80fd5b50620006b560415481565b60405190815260200162000633565b348015620006d0575f80fd5b5062000595620006e23660046200d162565b620029b6565b348015620006f4575f80fd5b5062000595620007063660046200d1ba565b62002cd8565b34801562000718575f80fd5b506200072362002d2e565b6040516200063391906200d22e565b3480156200073e575f80fd5b506024546200075c906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff909116815260200162000633565b3480156200078a575f80fd5b50620005956200079c3660046200d260565b62002d90565b348015620007ae575f80fd5b5062000723620007c03660046200d2af565b62002fe6565b348015620007d2575f80fd5b50620007dd620030f0565b6040516200063391906200d3b9565b348015620007f8575f80fd5b506200059562003238565b3480156200080f575f80fd5b5062000595620008213660046200d46e565b62003511565b62000595620008383660046200d48c565b6200364e565b3480156200084a575f80fd5b506200072362003709565b34801562000861575f80fd5b506200072362003769565b34801562000878575f80fd5b50620008906200088a3660046200d540565b620037c9565b6040516200063394939291906200d583565b348015620008ae575f80fd5b5062000595620008c03660046200d5b5565b62003804565b348015620008d2575f80fd5b506200059562003ac5565b348015620008e9575f80fd5b506200059562003e98565b34801562000900575f80fd5b5062000918620009123660046200d540565b62003f6d565b6040805161ffff90941684526fffffffffffffffffffffffffffffffff928316602085015291169082015260600162000633565b34801562000958575f80fd5b50620009646201117181565b60405163ffffffff909116815260200162000633565b34801562000986575f80fd5b5062000595620009983660046200d5f9565b62003f89565b348015620009aa575f80fd5b50620009c2620009bc3660046200d66d565b620040a6565b604051901515815260200162000633565b348015620009df575f80fd5b5062000595620009f13660046200d69a565b62004106565b34801562000a03575f80fd5b506200059562000a153660046200d7a4565b62004ea6565b34801562000a27575f80fd5b5062000a3262004f97565b6040516200063391906200d8c3565b34801562000a4d575f80fd5b506200075c68056bc75e2d6310000081565b34801562000a6b575f80fd5b50620005956200511c565b34801562000a82575f80fd5b5062000a9a62000a943660046200d95e565b6200518b565b6040516200063394939291906200d9d3565b34801562000ab8575f80fd5b506200059562000aca3660046200da02565b620051ad565b34801562000adc575f80fd5b50620005956200537e565b34801562000af3575f80fd5b506200059562000b053660046200cec2565b62005b00565b34801562000b17575f80fd5b50603f5462000b2c906001600160a01b031681565b6040516001600160a01b03909116815260200162000633565b34801562000b51575f80fd5b5062000b6962000b633660046200d66d565b62006580565b6040516200063391906200da38565b34801562000b84575f80fd5b506200059562006695565b34801562000b9b575f80fd5b506200059562000bad3660046200cec2565b6200691c565b34801562000bbf575f80fd5b506200059562000bd13660046200da4c565b62006a6b565b34801562000be3575f80fd5b5062000bee6200707c565b6040516200063391906200dac5565b34801562000c09575f80fd5b506200059562007151565b34801562000c20575f80fd5b50620006b560425481565b34801562000c37575f80fd5b5062000c426200733e565b6040516200063391906200dad9565b34801562000c5d575f80fd5b5062000c7562000c6f3660046200d540565b62007438565b604080516fffffffffffffffffffffffffffffffff948516815263ffffffff909316602084015292169181019190915260600162000633565b34801562000cba575f80fd5b506200059562000ccc3660046200d95e565b62007447565b6200059562000ce33660046200db6a565b620074c1565b34801562000cf5575f80fd5b506200059562000d073660046200dbf5565b6200753d565b34801562000d19575f80fd5b5062000c42620075f2565b34801562000d30575f80fd5b50620006b5620186a081565b34801562000d48575f80fd5b5062000595620076ec565b34801562000d5f575f80fd5b5062000bee62007955565b34801562000d76575f80fd5b506200059562000d883660046200dc13565b62007a2a565b34801562000d9a575f80fd5b50620006b5600381565b34801562000db0575f80fd5b5062000dc862000dc23660046200d540565b62007a47565b604080516fffffffffffffffffffffffffffffffff909316835260208301919091520162000633565b34801562000dfd575f80fd5b50620009c262007a61565b34801562000e14575f80fd5b50620006b564e8d4a5100081565b34801562000e2e575f80fd5b50603e5462000b2c906001600160a01b031681565b34801562000e4f575f80fd5b506200059562000e613660046200dc32565b62007b35565b34801562000e73575f80fd5b506200059562000e853660046200dc94565b62007c12565b34801562000e97575f80fd5b5062000b2c62000ea93660046200cec2565b62009ea1565b34801562000ebb575f80fd5b50603d5462000b2c906001600160a01b031681565b34801562000edc575f80fd5b506200059562000eee3660046200dcee565b602480547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b34801562000f3d575f80fd5b506200072362009eca565b34801562000f54575f80fd5b506200059562009f2a565b34801562000f6b575f80fd5b50620005956200a515565b6200059562000f873660046200d69a565b6200a94b565b34801562000f99575f80fd5b5060405462000b2c906001600160a01b031681565b34801562000fba575f80fd5b5062000fd262000fcc3660046200d540565b6200aa6f565b604080516fffffffffffffffffffffffffffffffff93841681529290911660208301520162000633565b34801562001008575f80fd5b50620005956200101a3660046200dd0c565b6200aa7d565b3480156200102c575f80fd5b50620010446200103e3660046200d540565b6200ad9f565b604051620006339594939291906200dd57565b34801562001063575f80fd5b50601f54620009c29060ff1681565b3480156200107e575f80fd5b5062000595620010903660046200dd93565b6200adf5565b60015f620010ec62030d4082620010e4604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b91906200ae80565b90505f6200113a6203d0905f620010e4604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b604080516002808252606082019092529192505f9190816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816200115557905050905060405180606001604052808563ffffffff168152602001600161ffff16815260200184815250815f81518110620011c157620011c16200de01565b602002602001018190525060405180606001604052808563ffffffff168152602001600261ffff16815260200183815250816001815181106200120857620012086200de01565b60209081029190910101526038546040517fb98bd0700000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b98bd070906200125e9084906004016200de2e565b5f604051808303815f87803b15801562001276575f80fd5b505af115801562001289573d5f803e3d5ffd5b50506038546040517f5535d46100000000000000000000000000000000000000000000000000000000815263ffffffff88166004820152600160248201526200132e93506001600160a01b039091169150635535d461906044015f60405180830381865afa158015620012fe573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200132791908101906200df14565b846200af08565b6038546040517f5535d46100000000000000000000000000000000000000000000000000000000815263ffffffff8616600482015260026024820152620013cd916001600160a01b031690635535d461906044015f60405180830381865afa1580156200139d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620013c691908101906200df14565b836200af08565b50505050565b737109709ecfa91a80626ff3989d68f67f5b1dd12d634c63e56266038d7ea4c68000831180156200140c575068056bc75e2d6310000083105b6040518263ffffffff1660e01b81526004016200142d911515815260200190565b5f6040518083038186803b15801562001444575f80fd5b505afa15801562001457573d5f803e3d5ffd5b5050603d546001600160a01b03163191505f9050620014b662030d4082620010e4604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b6040805160e08101825260028152603e546001600160a01b031660208201529081018590529091505f9060608101612710620014f58761251c6200df77565b6200150191906200df91565b815260208082018590526040805180830182525f808252828501919091528151928301825280835260609093019190915260385490517f3b6f743b00000000000000000000000000000000000000000000000000000000815292935090916001600160a01b0390911690633b6f743b906200158390859085906004016200e045565b6040805180830381865afa1580156200159e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620015c491906200e0bb565b603854603d546040516370a0823160e01b81526001600160a01b03918216600482015292935062001647929116906370a08231906024015b602060405180830381865afa15801562001618573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200163e91906200e0d8565b6041546200af86565b603954603e546040516370a0823160e01b81526001600160a01b039182166004820152620016839291909116906370a0823190602401620015fc565b6038546001600160a01b03166001600160a01b0316639f68b9646040518163ffffffff1660e01b8152600401602060405180830381865afa158015620016cb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620016f191906200e100565b156200182357603d546040517fca669fa70000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b15801562001767575f80fd5b505af11580156200177a573d5f803e3d5ffd5b50506038546001600160a01b03169150620017929050565b6038546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810188905291169063095ea7b3906044016020604051808303815f875af1158015620017fb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200182191906200e100565b505b603d546040517f06447d560000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801562001893575f80fd5b505af1158015620018a6573d5f803e3d5ffd5b5050603354603d5484516040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f1991506044015f604051808303815f87803b15801562001914575f80fd5b505af115801562001927573d5f803e3d5ffd5b505060335460385484516040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116925063095ea7b391506044016020604051808303815f875af11580156200199a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620019c091906200e100565b506038546040517fc7c7f5b30000000000000000000000000000000000000000000000000000000081525f9182916001600160a01b039091169063c7c7f5b39062001a14908790879030906004016200e11c565b60c0604051808303815f875af115801562001a31573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001a5791906200e167565b915091507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b03166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801562001ab6575f80fd5b505af115801562001ac9573d5f803e3d5ffd5b505060395462001ae79250600291506001600160a01b031662007a2a565b603d546001600160a01b03163162001b0087826200af86565b604083015151845162001b1491906200af86565b603854603d546040516370a0823160e01b81526001600160a01b03918216600482015262001ba39291909116906370a0823190602401602060405180830381865afa15801562001b66573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b8c91906200e0d8565b835160415462001b9d91906200e1f0565b6200af86565b603954603e546040516370a0823160e01b81526001600160a01b03918216600482015262001c2f9291909116906370a0823190602401602060405180830381865afa15801562001bf5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001c1b91906200e0d8565b836020015160415462001b9d91906200e206565b5050505050505050565b62001c6182826001600160a01b03165f1b5f8060405180602001604052805f81525062006a6b565b5050565b5f60235f62001c7587876200afdf565b63ffffffff16815260208101919091526040015f908120546001600160a01b031691508062001ca4856200b005565b92505091505f604051806060016040528062001cc18a8a6200b139565b63ffffffff16815260200162001cd88a8a6200b14a565b815260200162001ce98a8a6200b166565b67ffffffffffffffff16905290506001600160a01b038416630c0c389e6fffffffffffffffffffffffffffffffff8581169085168462001d2a8d8d6200b18c565b62001d368e8e6200b1a0565b604080516020810182525f815290517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16815262001d81949392918e916004016200e21c565b5f604051808303818589803b15801562001d99575f80fd5b5088f115801562001dac573d5f803e3d5ffd5b5050505050505050505050505050565b62001dc66200b1b1565b62001dd06200b3ec565b60335460378054600181810183555f8390527f42a7b7dd785cd69714a189dffb3fd7d7174edc9ece837694ce50f7078f7c31ae91820180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03968716179091556034548454808401865584018054831691871691909117905560355484548084018655840180548316918716919091179055603654845480840186559093018054909116929094169190911790925580546040805160208381028201810190925282815262001ef2946004949093919290919083018282801562001ee757602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162001ec8575b505050505062007c12565b62001fb76040518060200162001f08906200cb8e565b601f19828203810183526040601f90920116818101825260048082527f614f4654000000000000000000000000000000000000000000000000000000006020838101829052845180860186529283528281019190915260015f52602381527fb361aea33a0348d043deace4a562cb920ac10508397ad80f12dfe9a2a063e04754935162001fa2946001600160a01b0316913091016200e290565b6040516020818303038152906040526200b3f6565b603880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200209f9062002005602082016200cb8e565b601f19828203810183526040601f90920116818101825260048082527f624f4654000000000000000000000000000000000000000000000000000000006020838101829052845180860186529283528281019190915260025f52602381527f1bcb44d21c67d5659cdd5f45cd32c6d6c6d33d5044115600c6652ecd87939c0954935162001fa2946001600160a01b0316913091016200e290565b60395f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506040518060400160405280600681526020017f63546f6b656e00000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f63546f6b656e00000000000000000000000000000000000000000000000000008152506040516200213e906200cb9c565b6200214b9291906200e2dd565b604051809103905ff08015801562002165573d5f803e3d5ffd5b50603b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556040516200221f90620021b4602082016200cbaa565b601f1982820381018352601f909101166040818152603b5460035f52602360209081527fca0574cb82515dd8d8feabc9bfece9b4778855cddef4d6e8f68e64178480ff7e546001600160a01b0392831691850191909152169082015230606082015260800162001fa2565b603a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055604080516003808252608082019092525f9160208201606080368337505060385482519293506001600160a01b0316918391505f906200229b576200229b6200de01565b6001600160a01b039283166020918202929092010152603954825191169082906001908110620022cf57620022cf6200de01565b6001600160a01b039283166020918202929092010152603a548251911690829060029081106200230357620023036200de01565b6001600160a01b03909216602092830291909101909101526040517f703ca254000000000000000000000000000000000000000000000000000000008152309063703ca25490620023599084906004016200d22e565b5f604051808303815f87803b15801562002371575f80fd5b505af115801562002384573d5f803e3d5ffd5b50506038546001600160a01b031691506200239c9050565b603d546041546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116906340c10f19906044015f604051808303815f87803b15801562002404575f80fd5b505af115801562002417573d5f803e3d5ffd5b50506039546001600160a01b031691506200242f9050565b603e546041546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260248101919091529116906340c10f19906044015f604051808303815f87803b15801562002497575f80fd5b505af1158015620024aa573d5f803e3d5ffd5b5050603b54603f546041546040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b0392831660048201526024810191909152911692506340c10f1991506044015f604051808303815f87803b15801562002519575f80fd5b505af11580156200252c573d5f803e3d5ffd5b505050506040516200253e906200cbb8565b604051809103905ff08015801562002558573d5f803e3d5ffd5b50603c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6038546040517fc0779988000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03848116925f9291169063c077998890602401602060405180830381865afa158015620025fa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200262091906200e0d8565b90505f6200266e62030d405f620010e4604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b60408051602080820183525f808352835160e08101855263ffffffff8c1681528083018990528085018a9052606081018890526080810186905260a081018490528451928301855281835260c081019290925260385493517f056d62de000000000000000000000000000000000000000000000000000000008152949550919390928692916001600160a01b039091169063056d62de906200271790869086906004016200e305565b5f60405180830381865afa15801562002732573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526200275b91908101906200e328565b5090506040516200276c906200cbb8565b604051809103905ff08015801562002786573d5f803e3d5ffd5b50603c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556038546040517f6fc1b31e000000000000000000000000000000000000000000000000000000008152600481019290925290911690636fc1b31e906024015f604051808303815f87803b15801562002814575f80fd5b505af115801562002827573d5f803e3d5ffd5b5050604051737109709ecfa91a80626ff3989d68f67f5b1dd12d925063f28dceb391507f7b43b43900000000000000000000000000000000000000000000000000000000906200287e9085908a906024016200e2dd565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e084901b9092168252620028f2916004016200da38565b5f604051808303815f87803b1580156200290a575f80fd5b505af11580156200291d573d5f803e3d5ffd5b50506038546001600160a01b03169150620029359050565b6001600160a01b031663056d62de84846040518363ffffffff1660e01b8152600401620029649291906200e305565b5f60405180830381865afa1580156200297f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620029a891908101906200e328565b505050505050505050505050565b6038546040517fc0779988000000000000000000000000000000000000000000000000000000008152600481018390525f916001600160a01b03169063c077998890602401602060405180830381865afa15801562002a17573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002a3d91906200e0d8565b90505f62002a8b62030d405f620010e4604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b60408051602080820183525f808352835160e08101855263ffffffff8b1681528083018a9052808501899052606081018890526080810186905260a081018490528451928301855281835260c081019290925260385493517f056d62de000000000000000000000000000000000000000000000000000000008152949550919390928692916001600160a01b039091169063056d62de9062002b3490869086906004016200e305565b5f60405180830381865afa15801562002b4f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002b7891908101906200e328565b5090505f805f80306001600160a01b03166343a2cd48866040518263ffffffff1660e01b815260040162002bad91906200da38565b5f60405180830381865afa15801562002bc8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002bf191908101906200e38f565b935093509350935062002c05845f6200b452565b62002c11838d6200b4ad565b60385462002caf9067ffffffffffffffff8416906001600160a01b03165b6001600160a01b0316630e78842c896040518263ffffffff1660e01b815260040162002c5d91815260200190565b602060405180830381865afa15801562002c79573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062002c9f91906200e3f2565b67ffffffffffffffff166200af86565b62002cc98160405180602001604052805f8152506200af08565b50505050505050505050505050565b62001c6182828460ff1667ffffffffffffffff81111562002cfd5762002cfd6200cf7e565b60405190808252806020026020018201604052801562002d27578160200160208202803683370190505b5062007c12565b6060601680548060200260200160405190810160405280929190818152602001828054801562002d8657602002820191905f5260205f20905b81546001600160a01b0316815260019091019060200180831162002d67575b5050505050905090565b60015f62002ddb8484620010e4604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b6040805160018082528183019092529192505f9190816020015b60408051606080820183525f80835260208301529181019190915281526020019060019003908162002df557905050905060405180606001604052808763ffffffff1681526020018461ffff16815260200183815250815f8151811062002e605762002e606200de01565b60209081029190910101526038546040517fb98bd0700000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063b98bd0709062002eb69084906004016200de2e565b5f604051808303815f87803b15801562002ece575f80fd5b505af115801562002ee1573d5f803e3d5ffd5b505050505f62002f2e8686620010e4604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b6038546040517fbc70b35400000000000000000000000000000000000000000000000000000000815263ffffffff8a16600482015261ffff87166024820152606060448201525f606482018190529293506001600160a01b039091169063bc70b354906084015f60405180830381865afa15801562002faf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405262002fd891908101906200df14565b905062001c2f81836200af08565b60608160ff1667ffffffffffffffff8111156200300757620030076200cf7e565b60405190808252806020026020018201604052801562003031578160200160208202803683370190505b509050825b6200304283856200e410565b60ff168160ff161015620030dd5760ff81165f9081526023602090815260408083205481516001600160a01b03909116928101929092523090820152600160608201526200309590879060800162001fa2565b90508083620030a587856200e42c565b60ff1681518110620030bb57620030bb6200de01565b6001600160a01b03909216602092830291909101909101525060010162003036565b50620030e981620051ad565b9392505050565b6060601e805480602002602001604051908101604052809291908181526020015f905b828210156200322f575f84815260208082206040805180820182526002870290920180546001600160a01b03168352600181018054835181870281018701909452808452939591948681019491929084015b8282101562003217578382905f5260205f2001805462003185906200e448565b80601f0160208091040260200160405190810160405280929190818152602001828054620031b3906200e448565b8015620032025780601f10620031d85761010080835404028352916020019162003202565b820191905f5