[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "address", "name": "_lzEndpoint", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidDelegate", "type": "error" }, { "inputs": [], "name": "InvalidEndpointCall", "type": "error" }, { "inputs": [], "name": "InvalidLocalDecimals", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "options", "type": "bytes" } ], "name": "InvalidOptions", "type": "error" }, { "inputs": [], "name": "LzTokenUnavailable", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" } ], "name": "NoPeer", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "msgValue", "type": "uint256" } ], "name": "NotEnoughNative", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "addr", "type": "address" } ], "name": "OnlyEndpoint", "type": "error" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" } ], "name": "OnlyPeer", "type": "error" }, { "inputs": [], "name": "OnlySelf", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "result", "type": "bytes" } ], "name": "SimulationResult", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" } ], "name": "SlippageExceeded", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" }, { "internalType": "bytes", "name": "options", "type": "bytes" } ], "indexed": false, "internalType": "struct EnforcedOptionParam[]", "name": "_enforcedOptions", "type": "tuple[]" } ], "name": "EnforcedOptionSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "inspector", "type": "address" } ], "name": "MsgInspectorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "indexed": false, "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "toAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "name": "OFTReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "indexed": false, "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "indexed": true, "internalType": "address", "name": "fromAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "name": "OFTSent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "eid", "type": "uint32" }, { "indexed": false, "internalType": "bytes32", "name": "peer", "type": "bytes32" } ], "name": "PeerSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "preCrimeAddress", "type": "address" } ], "name": "PreCrimeSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "SEND", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SEND_AND_CALL", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "origin", "type": "tuple" } ], "name": "allowInitializePath", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "approvalRequired", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "uint16", "name": "_msgType", "type": "uint16" }, { "internalType": "bytes", "name": "_extraOptions", "type": "bytes" } ], "name": "combineOptions", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimalConversionRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "endpoint", "outputs": [ { "internalType": "contract ILayerZeroEndpointV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" } ], "name": "enforcedOptions", "outputs": [ { "internalType": "bytes", "name": "enforcedOption", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "", "type": "tuple" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "address", "name": "_sender", "type": "address" } ], "name": "isComposeMsgSender", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "bytes32", "name": "_peer", "type": "bytes32" } ], "name": "isPeer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "_origin", "type": "tuple" }, { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "address", "name": "_executor", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "origin", "type": "tuple" }, { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "address", "name": "executor", "type": "address" }, { "internalType": "bytes", "name": "message", "type": "bytes" }, { "internalType": "bytes", "name": "extraData", "type": "bytes" } ], "internalType": "struct InboundPacket[]", "name": "_packets", "type": "tuple[]" } ], "name": "lzReceiveAndRevert", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "srcEid", "type": "uint32" }, { "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "internalType": "struct Origin", "name": "_origin", "type": "tuple" }, { "internalType": "bytes32", "name": "_guid", "type": "bytes32" }, { "internalType": "bytes", "name": "_message", "type": "bytes" }, { "internalType": "address", "name": "_executor", "type": "address" }, { "internalType": "bytes", "name": "_extraData", "type": "bytes" } ], "name": "lzReceiveSimulate", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "msgInspector", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" }, { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "nextNonce", "outputs": [ { "internalType": "uint64", "name": "nonce", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oApp", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "oAppVersion", "outputs": [ { "internalType": "uint64", "name": "senderVersion", "type": "uint64" }, { "internalType": "uint64", "name": "receiverVersion", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "oftVersion", "outputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }, { "internalType": "uint64", "name": "version", "type": "uint64" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "eid", "type": "uint32" } ], "name": "peers", "outputs": [ { "internalType": "bytes32", "name": "peer", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "preCrime", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" } ], "name": "quoteOFT", "outputs": [ { "components": [ { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmountLD", "type": "uint256" } ], "internalType": "struct OFTLimit", "name": "oftLimit", "type": "tuple" }, { "components": [ { "internalType": "int256", "name": "feeAmountLD", "type": "int256" }, { "internalType": "string", "name": "description", "type": "string" } ], "internalType": "struct OFTFeeDetail[]", "name": "oftFeeDetails", "type": "tuple[]" }, { "components": [ { "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "internalType": "struct OFTReceipt", "name": "oftReceipt", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" }, { "internalType": "bool", "name": "_payInLzToken", "type": "bool" } ], "name": "quoteSend", "outputs": [ { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "msgFee", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "dstEid", "type": "uint32" }, { "internalType": "bytes32", "name": "to", "type": "bytes32" }, { "internalType": "uint256", "name": "amountLD", "type": "uint256" }, { "internalType": "uint256", "name": "minAmountLD", "type": "uint256" }, { "internalType": "bytes", "name": "extraOptions", "type": "bytes" }, { "internalType": "bytes", "name": "composeMsg", "type": "bytes" }, { "internalType": "bytes", "name": "oftCmd", "type": "bytes" } ], "internalType": "struct SendParam", "name": "_sendParam", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "_fee", "type": "tuple" }, { "internalType": "address", "name": "_refundAddress", "type": "address" } ], "name": "send", "outputs": [ { "components": [ { "internalType": "bytes32", "name": "guid", "type": "bytes32" }, { "internalType": "uint64", "name": "nonce", "type": "uint64" }, { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "lzTokenFee", "type": "uint256" } ], "internalType": "struct MessagingFee", "name": "fee", "type": "tuple" } ], "internalType": "struct MessagingReceipt", "name": "msgReceipt", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "amountSentLD", "type": "uint256" }, { "internalType": "uint256", "name": "amountReceivedLD", "type": "uint256" } ], "internalType": "struct OFTReceipt", "name": "oftReceipt", "type": "tuple" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_delegate", "type": "address" } ], "name": "setDelegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "uint32", "name": "eid", "type": "uint32" }, { "internalType": "uint16", "name": "msgType", "type": "uint16" }, { "internalType": "bytes", "name": "options", "type": "bytes" } ], "internalType": "struct EnforcedOptionParam[]", "name": "_enforcedOptions", "type": "tuple[]" } ], "name": "setEnforcedOptions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_msgInspector", "type": "address" } ], "name": "setMsgInspector", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "_eid", "type": "uint32" }, { "internalType": "bytes32", "name": "_peer", "type": "bytes32" } ], "name": "setPeer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_preCrime", "type": "address" } ], "name": "setPreCrime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sharedDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "token", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60c06040523480156200001157600080fd5b50604051620035e5380380620035e58339810160408190526200003491620002a8565b828282338383601284848181818133806200006957604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000074816200018e565b506001600160a01b038083166080528116620000a357604051632d618d8160e21b815260040160405180910390fd5b60805160405163ca5eb5e160e01b81526001600160a01b0383811660048301529091169063ca5eb5e190602401600060405180830381600087803b158015620000eb57600080fd5b505af115801562000100573d6000803e3d6000fd5b505050505050505062000118620001de60201b60201c565b60ff168360ff1610156200013f576040516301e9714b60e41b815260040160405180910390fd5b6200014c6006846200034b565b6200015990600a6200046a565b60a05250600891506200016f9050838262000511565b5060096200017e828262000511565b50505050505050505050620005dd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600690565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020b57600080fd5b81516001600160401b0380821115620002285762000228620001e3565b604051601f8301601f19908116603f01168101908282118183101715620002535762000253620001e3565b816040528381526020925086838588010111156200027057600080fd5b600091505b8382101562000294578582018301518183018401529082019062000275565b600093810190920192909252949350505050565b600080600060608486031215620002be57600080fd5b83516001600160401b0380821115620002d657600080fd5b620002e487838801620001f9565b94506020860151915080821115620002fb57600080fd5b506200030a86828701620001f9565b604086015190935090506001600160a01b03811681146200032a57600080fd5b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b60ff828116828216039081111562000367576200036762000335565b92915050565b600181815b80851115620003ae57816000190482111562000392576200039262000335565b80851615620003a057918102915b93841c939080029062000372565b509250929050565b600082620003c75750600162000367565b81620003d65750600062000367565b8160018114620003ef5760028114620003fa576200041a565b600191505062000367565b60ff8411156200040e576200040e62000335565b50506001821b62000367565b5060208310610133831016604e8410600b84101617156200043f575081810a62000367565b6200044b83836200036d565b806000190482111562000462576200046262000335565b029392505050565b60006200047b60ff841683620003b6565b9392505050565b600181811c908216806200049757607f821691505b602082108103620004b857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200050c57600081815260208120601f850160051c81016020861015620004e75750805b601f850160051c820191505b818110156200050857828155600101620004f3565b5050505b505050565b81516001600160401b038111156200052d576200052d620001e3565b62000545816200053e845462000482565b84620004be565b602080601f8311600181146200057d5760008415620005645750858301515b600019600386901b1c1916600185901b17855562000508565b600085815260208120601f198616915b82811015620005ae578886015182559484019460019091019084016200058d565b5085821015620005cd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051612f9c620006496000396000818161058301528181611a3701528181611aac0152611c8901526000818161044b015281816108b701528181610f880152818161123a0152818161156d0152818161188601528181611d8a0152611e430152612f9c6000f3fe6080604052600436106101e15760003560e01c806306fdde03146101e6578063095ea7b3146102115780630d35b41514610241578063111ecdad1461027057806313137d651461029d578063134d4f25146102b2578063156a0d0f146102da57806317442b701461030157806318160ddd146103235780631f5e13341461034257806323b872dd14610357578063313ce567146103775780633400288b146103995780633b6f743b146103b957806352ae2879146103e65780635535d461146103f95780635a0dfe4d146104195780635e280f11146104395780636fc1b31e1461046d57806370a082311461048d578063715018a6146104c35780637d25a05e146104d857806382413eac14610513578063857749b0146105335780638da5cb5b1461054757806395d89b411461055c578063963efcaa146105715780639f68b964146105a5578063a9059cbb146105b9578063b731ea0a146105d9578063b98bd070146105f9578063bb0b6a5314610619578063bc70b35414610646578063bd815db014610666578063c7c7f5b314610679578063ca5eb5e11461069a578063d045a0dc146106ba578063d4243885146106cd578063dd62ed3e146106ed578063f2fde38b1461070d578063fc0c546a146103e6578063ff7bd03d1461072d575b600080fd5b3480156101f257600080fd5b506101fb61074d565b60405161020891906120c6565b60405180910390f35b34801561021d57600080fd5b5061023161022c3660046120ee565b6107df565b6040519015158152602001610208565b34801561024d57600080fd5b5061026161025c366004612132565b6107f9565b60405161020893929190612175565b34801561027c57600080fd5b50600454610290906001600160a01b031681565b6040516102089190612202565b6102b06102ab366004612270565b6108b5565b005b3480156102be57600080fd5b506102c7600281565b60405161ffff9091168152602001610208565b3480156102e657600080fd5b506040805162b9270b60e21b81526001602082015201610208565b34801561030d57600080fd5b5060408051600181526002602082015201610208565b34801561032f57600080fd5b506007545b604051908152602001610208565b34801561034e57600080fd5b506102c7600181565b34801561036357600080fd5b5061023161037236600461230f565b61096d565b34801561038357600080fd5b5060125b60405160ff9091168152602001610208565b3480156103a557600080fd5b506102b06103b4366004612369565b610993565b3480156103c557600080fd5b506103d96103d4366004612393565b6109a9565b60405161020891906123e4565b3480156103f257600080fd5b5030610290565b34801561040557600080fd5b506101fb610414366004612404565b610a04565b34801561042557600080fd5b50610231610434366004612369565b610aa9565b34801561044557600080fd5b506102907f000000000000000000000000000000000000000000000000000000000000000081565b34801561047957600080fd5b506102b0610488366004612437565b610ac5565b34801561049957600080fd5b506103346104a8366004612437565b6001600160a01b031660009081526005602052604090205490565b3480156104cf57600080fd5b506102b0610b23565b3480156104e457600080fd5b506104fb6104f3366004612369565b600092915050565b6040516001600160401b039091168152602001610208565b34801561051f57600080fd5b5061023161052e366004612454565b610b37565b34801561053f57600080fd5b506006610387565b34801561055357600080fd5b50610290610b4c565b34801561056857600080fd5b506101fb610b5b565b34801561057d57600080fd5b506103347f000000000000000000000000000000000000000000000000000000000000000081565b3480156105b157600080fd5b506000610231565b3480156105c557600080fd5b506102316105d43660046120ee565b610b6a565b3480156105e557600080fd5b50600254610290906001600160a01b031681565b34801561060557600080fd5b506102b06106143660046124fe565b610b78565b34801561062557600080fd5b5061033461063436600461253f565b60016020526000908152604090205481565b34801561065257600080fd5b506101fb61066136600461255a565b610b8a565b6102b06106743660046124fe565b610cfd565b61068c6106873660046125ba565b610e7a565b604051610208929190612627565b3480156106a657600080fd5b506102b06106b5366004612437565b610f69565b6102b06106c8366004612270565b610ff2565b3480156106d957600080fd5b506102b06106e8366004612437565b611021565b3480156106f957600080fd5b50610334610708366004612663565b611074565b34801561071957600080fd5b506102b0610728366004612437565b61109f565b34801561073957600080fd5b50610231610748366004612691565b6110dd565b60606008805461075c906126ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610788906126ad565b80156107d55780601f106107aa576101008083540402835291602001916107d5565b820191906000526020600020905b8154815290600101906020018083116107b857829003601f168201915b5050505050905090565b6000336107ed818585611113565b60019150505b92915050565b60408051808201909152600080825260208201526060610817612038565b60408051808201825260008082526001600160401b03602080840182905284518381529081019094529195509182610872565b60408051808201909152600081526060602082015281526020019060019003908161084a5790505b509350600080610897604089013560608a013561089260208c018c61253f565b611125565b60408051808201909152918252602082015296989597505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461090957336040516391ac5e4f60e01b81526004016109009190612202565b60405180910390fd5b602087018035906109239061091e908a61253f565b611169565b1461095557610935602088018861253f565b876020013560405163309afaf360e21b81526004016109009291906126f7565b610964878787878787876111a5565b50505050505050565b60003361097b858285611305565b610986858585611358565b60019150505b9392505050565b61099b6113b7565b6109a582826113e9565b5050565b6109b1612038565b60006109cd60408501356060860135610892602088018861253f565b9150506000806109dd868461143f565b90925090506109fa6109f2602088018861253f565b838388611563565b9695505050505050565b600360209081526000928352604080842090915290825290208054610a28906126ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610a54906126ad565b8015610aa15780601f10610a7657610100808354040283529160200191610aa1565b820191906000526020600020905b815481529060010190602001808311610a8457829003601f168201915b505050505081565b63ffffffff919091166000908152600160205260409020541490565b610acd6113b7565b600480546001600160a01b0319166001600160a01b0383161790556040517ff0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d441419790610b18908390612202565b60405180910390a150565b610b2b6113b7565b610b356000611638565b565b6001600160a01b03811630145b949350505050565b6000546001600160a01b031690565b60606009805461075c906126ad565b6000336107ed818585611358565b610b806113b7565b6109a58282611688565b63ffffffff8416600090815260036020908152604080832061ffff87168452909152812080546060929190610bbe906126ad565b80601f0160208091040260200160405190810160405280929190818152602001828054610bea906126ad565b8015610c375780601f10610c0c57610100808354040283529160200191610c37565b820191906000526020600020905b815481529060010190602001808311610c1a57829003601f168201915b505050505090508051600003610c875783838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929450610b449350505050565b6000839003610c97579050610b44565b60028310610ce057610ca984846117eb565b80610cb7846002818861270d565b604051602001610cc993929190612737565b604051602081830303815290604052915050610b44565b8383604051639a6d49cd60e01b8152600401610900929190612788565b60005b81811015610df95736838383818110610d1b57610d1b61279c565b9050602002810190610d2d91906127b2565b9050610d49610d3f602083018361253f565b6020830135610aa9565b610d535750610de7565b3063d045a0dc60c08301358360a0810135610d726101008301836127d3565b610d83610100890160e08a01612437565b610d916101208a018a6127d3565b6040518963ffffffff1660e01b8152600401610db3979695949392919061282e565b6000604051808303818588803b158015610dcc57600080fd5b505af1158015610de0573d6000803e3d6000fd5b5050505050505b80610df1816128ca565b915050610d00565b50336001600160a01b0316638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610e38573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e60919081019061290b565b604051638351eea760e01b815260040161090091906120c6565b610e82612052565b610e8a612038565b600080610ead33604089013560608a0135610ea860208c018c61253f565b61182d565b91509150600080610ebe898461143f565b9092509050610eea610ed360208b018b61253f565b8383610ee4368d90038d018d6129ac565b8b611853565b60408051808201909152858152602080820186905282519298509096503391907f85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a90610f38908d018d61253f565b6040805163ffffffff909216825260208201899052810187905260600160405180910390a350505050935093915050565b610f716113b7565b60405163ca5eb5e160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190610fbd908490600401612202565b600060405180830381600087803b158015610fd757600080fd5b505af1158015610feb573d6000803e3d6000fd5b5050505050565b3330146110125760405163029a949d60e31b815260040160405180910390fd5b61096487878787878787610955565b6110296113b7565b600280546001600160a01b0319166001600160a01b0383161790556040517fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c242776090610b18908390612202565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6110a76113b7565b6001600160a01b0381166110d1576000604051631e4fbdf760e01b81526004016109009190612202565b6110da81611638565b50565b60006020820180359060019083906110f5908661253f565b63ffffffff1681526020810191909152604001600020541492915050565b611120838383600161195e565b505050565b60008061113185611a33565b915081905083811015611161576040516371c4efed60e01b81526004810182905260248101859052604401610900565b935093915050565b63ffffffff8116600090815260016020526040812054806107f35760405163f6ff4fb760e01b815263ffffffff84166004820152602401610900565b60006111b76111b48787611a6a565b90565b905060006111e3826111d16111cc8a8a611a82565b611aa5565b6111de60208d018d61253f565b611ada565b905060288611156112aa57600061122061120360608c0160408d016129de565b61121060208d018d61253f565b8461121b8c8c611aee565b611b39565b604051633e5ac80960e11b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637cb59012906112769086908d9060009087906004016129fb565b600060405180830381600087803b15801561129057600080fd5b505af11580156112a4573d6000803e3d6000fd5b50505050505b6001600160a01b038216887fefed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c6112e360208d018d61253f565b846040516112f29291906126f7565b60405180910390a3505050505050505050565b60006113118484611074565b90506000198114611352578181101561134357828183604051637dc7a0d960e11b815260040161090093929190612a2c565b6113528484848403600061195e565b50505050565b6001600160a01b038316611382576000604051634b637e8f60e11b81526004016109009190612202565b6001600160a01b0382166113ac57600060405163ec442f0560e01b81526004016109009190612202565b611120838383611b6b565b336113c0610b4c565b6001600160a01b031614610b35573360405163118cdaa760e01b81526004016109009190612202565b63ffffffff821660009081526001602052604090819020829055517f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b9061143390849084906126f7565b60405180910390a15050565b606080600061149c856020013561145586611c82565b61146260a08901896127d3565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cae92505050565b90935090506000816114af5760016114b2565b60025b90506114d26114c4602088018861253f565b8261066160808a018a6127d3565b6004549093506001600160a01b03161561155a576004805460405163043a78eb60e01b81526001600160a01b039091169163043a78eb91611517918891889101612a4d565b602060405180830381865afa158015611534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115589190612a72565b505b50509250929050565b61156b612038565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ddc28c586040518060a001604052808863ffffffff1681526020016115ba89611169565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b81526004016115ef929190612a8f565b6040805180830381865afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f9190612b38565b95945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b818110156117b9576116cd8383838181106116a8576116a861279c565b90506020028101906116ba9190612b54565b6116c89060408101906127d3565b6117eb565b8282828181106116df576116df61279c565b90506020028101906116f19190612b54565b6116ff9060408101906127d3565b600360008686868181106117155761171561279c565b90506020028101906117279190612b54565b61173590602081019061253f565b63ffffffff1663ffffffff16815260200190815260200160002060008686868181106117635761176361279c565b90506020028101906117759190612b54565b611786906040810190602001612b6a565b61ffff1681526020810191909152604001600020916117a6919083612bd3565b50806117b1816128ca565b91505061168b565b507fbe4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b6748282604051611433929190612c92565b60006117fa600282848661270d565b61180391612d76565b60f01c905060038114611120578282604051639a6d49cd60e01b8152600401610900929190612788565b60008061183b858585611125565b909250905061184a8683611d28565b94509492505050565b61185b612052565b600061186a8460000151611d5e565b602085015190915015611884576118848460200151611d86565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632637a450826040518060a001604052808b63ffffffff1681526020016118d48c611169565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611910929190612a8f565b60806040518083038185885af115801561192e573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119539190612da6565b979650505050505050565b6001600160a01b03841661198857600060405163e602df0560e01b81526004016109009190612202565b6001600160a01b0383166119b2576000604051634a1406b160e11b81526004016109009190612202565b6001600160a01b038085166000908152600660209081526040808320938716835292905220829055801561135257826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051611a2591815260200190565b60405180910390a350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000611a608184612e0d565b6107f39190612e2f565b6000611a79602082848661270d565b61098c91612e46565b6000611a9260286020848661270d565b611a9b91612e64565b60c01c9392505050565b60006107f37f00000000000000000000000000000000000000000000000000000000000000006001600160401b038416612e2f565b6000611ae68484611e68565b509092915050565b6060611afd826028818661270d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929695505050505050565b606084848484604051602001611b529493929190612e92565b6040516020818303038152906040529050949350505050565b6001600160a01b038316611b96578060076000828254611b8b9190612ee4565b90915550611bf59050565b6001600160a01b03831660009081526005602052604090205481811015611bd65783818360405163391434e360e21b815260040161090093929190612a2c565b6001600160a01b03841660009081526005602052604090209082900390555b6001600160a01b038216611c1157600780548290039055611c30565b6001600160a01b03821660009081526005602052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c7591815260200190565b60405180910390a3505050565b60006107f37f000000000000000000000000000000000000000000000000000000000000000083612e0d565b8051606090151580611cf7578484604051602001611ce392919091825260c01b6001600160c01b031916602082015260280190565b604051602081830303815290604052611d1e565b84843385604051602001611d0e9493929190612ef7565b6040516020818303038152906040525b9150935093915050565b6001600160a01b038216611d52576000604051634b637e8f60e11b81526004016109009190612202565b6109a582600083611b6b565b6000813414611d82576040516304fb820960e51b8152346004820152602401610900565b5090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015611de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0a9190612f37565b90506001600160a01b038116611e33576040516329b99a9560e11b815260040160405180910390fd5b6109a56001600160a01b038216337f000000000000000000000000000000000000000000000000000000000000000085611e9e565b6001600160a01b038216611e9257600060405163ec442f0560e01b81526004016109009190612202565b6109a560008383611b6b565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b17905261135291869190600090611f0490841683611f49565b90508051600014158015611f29575080806020019051810190611f279190612a72565b155b156111205782604051635274afe760e01b81526004016109009190612202565b606061098c8383600084600080856001600160a01b03168486604051611f6f9190612f54565b60006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091506109fa868383606082611fd157611fcc8261200f565b61098c565b8151158015611fe857506001600160a01b0384163b155b156120085783604051639996b31560e01b81526004016109009190612202565b508061098c565b80511561201f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806040016040528060008152602001600081525090565b6040805160608101825260008082526020820152908101612071612038565b905290565b60005b83811015612091578181015183820152602001612079565b50506000910152565b600081518084526120b2816020860160208601612076565b601f01601f19169290920160200192915050565b60208152600061098c602083018461209a565b6001600160a01b03811681146110da57600080fd5b6000806040838503121561210157600080fd5b823561210c816120d9565b946020939093013593505050565b600060e0828403121561212c57600080fd5b50919050565b60006020828403121561214457600080fd5b81356001600160401b0381111561215a57600080fd5b610b448482850161211a565b80518252602090810151910152565b600060a082016121858387612166565b604060a08185015281865180845260c08601915060c08160051b8701019350602080890160005b838110156121eb5788870360bf190185528151805188528301518388018790526121d88789018261209a565b97505093820193908201906001016121ac565b50505050505080915050610b446060830184612166565b6001600160a01b0391909116815260200190565b60006060828403121561212c57600080fd5b60008083601f84011261223a57600080fd5b5081356001600160401b0381111561225157600080fd5b60208301915083602082850101111561226957600080fd5b9250929050565b600080600080600080600060e0888a03121561228b57600080fd5b6122958989612216565b96506060880135955060808801356001600160401b03808211156122b857600080fd5b6122c48b838c01612228565b909750955060a08a013591506122d9826120d9565b90935060c089013590808211156122ef57600080fd5b506122fc8a828b01612228565b989b979a50959850939692959293505050565b60008060006060848603121561232457600080fd5b833561232f816120d9565b9250602084013561233f816120d9565b929592945050506040919091013590565b803563ffffffff8116811461236457600080fd5b919050565b6000806040838503121561237c57600080fd5b61210c83612350565b80151581146110da57600080fd5b600080604083850312156123a657600080fd5b82356001600160401b038111156123bc57600080fd5b6123c88582860161211a565b92505060208301356123d981612385565b809150509250929050565b604081016107f38284612166565b803561ffff8116811461236457600080fd5b6000806040838503121561241757600080fd5b61242083612350565b915061242e602084016123f2565b90509250929050565b60006020828403121561244957600080fd5b813561098c816120d9565b60008060008060a0858703121561246a57600080fd5b6124748686612216565b935060608501356001600160401b0381111561248f57600080fd5b61249b87828801612228565b90945092505060808501356124af816120d9565b939692955090935050565b60008083601f8401126124cc57600080fd5b5081356001600160401b038111156124e357600080fd5b6020830191508360208260051b850101111561226957600080fd5b6000806020838503121561251157600080fd5b82356001600160401b0381111561252757600080fd5b612533858286016124ba565b90969095509350505050565b60006020828403121561255157600080fd5b61098c82612350565b6000806000806060858703121561257057600080fd5b61257985612350565b9350612587602086016123f2565b925060408501356001600160401b038111156125a257600080fd5b6125ae87828801612228565b95989497509550505050565b600080600083850360808112156125d057600080fd5b84356001600160401b038111156125e657600080fd5b6125f28782880161211a565b9450506040601f198201121561260757600080fd5b50602084019150606084013561261c816120d9565b809150509250925092565b825181526020808401516001600160401b03169082015260408084015160c083019161265590840182612166565b5061098c6080830184612166565b6000806040838503121561267657600080fd5b8235612681816120d9565b915060208301356123d9816120d9565b6000606082840312156126a357600080fd5b61098c8383612216565b600181811c908216806126c157607f821691505b60208210810361212c57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b63ffffffff929092168252602082015260400190565b6000808585111561271d57600080fd5b8386111561272a57600080fd5b5050820193919092039150565b60008451612749818460208901612076565b8201838582376000930192835250909392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000610b4460208301848661275f565b634e487b7160e01b600052603260045260246000fd5b6000823561013e198336030181126127c957600080fd5b9190910192915050565b6000808335601e198436030181126127ea57600080fd5b8301803591506001600160401b0382111561280457600080fd5b60200191503681900382131561226957600080fd5b6001600160401b03811681146110da57600080fd5b63ffffffff61283c89612350565b168152602088013560208201526000604089013561285981612819565b6001600160401b031660408301526060820188905260e060808301819052612884908301878961275f565b6001600160a01b03861660a084015282810360c08401526128a681858761275f565b9a9950505050505050505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016128dc576128dc6128b4565b5060010190565b604080519081016001600160401b0381118282101715612905576129056126e1565b60405290565b60006020828403121561291d57600080fd5b81516001600160401b038082111561293457600080fd5b818401915084601f83011261294857600080fd5b81518181111561295a5761295a6126e1565b604051601f8201601f19908116603f01168101908382118183101715612982576129826126e1565b8160405282815287602084870101111561299b57600080fd5b611953836020830160208801612076565b6000604082840312156129be57600080fd5b6129c66128e3565b82358152602083013560208201528091505092915050565b6000602082840312156129f057600080fd5b813561098c81612819565b60018060a01b038516815283602082015261ffff831660408201526080606082015260006109fa608083018461209a565b6001600160a01b039390931683526020830191909152604082015260600190565b604081526000612a60604083018561209a565b828103602084015261162f818561209a565b600060208284031215612a8457600080fd5b815161098c81612385565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612ac560e084018261209a565b90506060850151603f198483030160a0850152612ae2828261209a565b60809690960151151560c08501525050506001600160a01b039190911660209091015290565b600060408284031215612b1a57600080fd5b612b226128e3565b9050815181526020820151602082015292915050565b600060408284031215612b4a57600080fd5b61098c8383612b08565b60008235605e198336030181126127c957600080fd5b600060208284031215612b7c57600080fd5b61098c826123f2565b601f82111561112057600081815260208120601f850160051c81016020861015612bac5750805b601f850160051c820191505b81811015612bcb57828155600101612bb8565b505050505050565b6001600160401b03831115612bea57612bea6126e1565b612bfe83612bf883546126ad565b83612b85565b6000601f841160018114612c325760008515612c1a5750838201355b600019600387901b1c1916600186901b178355610feb565b600083815260209020601f19861690835b82811015612c635786850135825560209485019460019092019101612c43565b5086821015612c805760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082528181018390526000906040808401600586901b8501820187855b88811015612d6857878303603f190184528135368b9003605e19018112612cd757600080fd5b8a01606063ffffffff612ce983612350565b16855261ffff612cfa8984016123f2565b168886015286820135601e19833603018112612d1557600080fd5b9091018781019190356001600160401b03811115612d3257600080fd5b803603831315612d4157600080fd5b8188870152612d53828701828561275f565b96890196955050509186019150600101612cb1565b509098975050505050505050565b6001600160f01b03198135818116916002851015612d9e5780818660020360031b1b83161692505b505092915050565b600060808284031215612db857600080fd5b604051606081016001600160401b0381118282101715612dda57612dda6126e1565b604052825181526020830151612def81612819565b6020820152612e018460408501612b08565b60408201529392505050565b600082612e2a57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176107f3576107f36128b4565b803560208310156107f357600019602084900360031b1b1692915050565b6001600160c01b03198135818116916008851015612d9e5760089490940360031b84901b1690921692915050565b60c085901b6001600160c01b031916815260e084901b6001600160e01b0319166008820152600c81018390528151600090612ed481602c850160208701612076565b91909101602c0195945050505050565b808201808211156107f3576107f36128b4565b84815260018060c01b03198460c01b16602082015282602882015260008251612f27816048850160208701612076565b9190910160480195945050505050565b600060208284031215612f4957600080fd5b815161098c816120d9565b600082516127c981846020870161207656fea264697066735822122032ce81a8e3df305bde8f3f8f8e4c0af662f08bcba663e9d4df60367ee6a03d7e64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001a44076050125825900e736c501f859c50fe728c00000000000000000000000000000000000000000000000000000000000000046d5553440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046d55534400000000000000000000000000000000000000000000000000000000