[ { "inputs": [ { "internalType": "address", "name": "_layerZeroEndpoint", "type": "address" }, { "internalType": "uint256", "name": "_fee", "type": "uint256" }, { "internalType": "address", "name": "_marathonAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes", "name": "_payload", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "_reason", "type": "bytes" } ], "name": "MessageFailed", "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": true, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": true, "internalType": "address", "name": "_to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "ReceiveFromChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "indexed": false, "internalType": "bytes32", "name": "_payloadHash", "type": "bytes32" } ], "name": "RetryMessageSuccess", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": true, "internalType": "address", "name": "_from", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "SendToChain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "_type", "type": "uint16" }, { "indexed": false, "internalType": "uint256", "name": "_minDstGas", "type": "uint256" } ], "name": "SetMinDstGas", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "precrime", "type": "address" } ], "name": "SetPrecrime", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_path", "type": "bytes" } ], "name": "SetTrustedRemote", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "indexed": false, "internalType": "bytes", "name": "_remoteAddress", "type": "bytes" } ], "name": "SetTrustedRemoteAddress", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "_useCustomAdapterParams", "type": "bool" } ], "name": "SetUseCustomAdapterParams", "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": "DEFAULT_PAYLOAD_SIZE_LIMIT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NO_EXTRA_GAS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PT_SEND", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "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": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": [], "name": "circulatingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimFees", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256[]", "name": "runnerIds", "type": "uint256[]" } ], "name": "claimTokens", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bool", "name": "_useZro", "type": "bool" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "estimateSendFee", "outputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "zroFee", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "uint64", "name": "", "type": "uint64" } ], "name": "failedMessages", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "forceResumeReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" } ], "name": "getConfig", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" } ], "name": "getTrustedRemoteAddress", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "runnerIds", "type": "uint256[]" } ], "name": "hasClaimedSomeTokens", "outputs": [ { "internalType": "bool[]", "name": "", "type": "bool[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "runnerId", "type": "uint256" } ], "name": "hasClaimedTokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" } ], "name": "isTrustedRemote", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lzEndpoint", "outputs": [ { "internalType": "contract ILayerZeroEndpoint", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "lzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "marathonAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "minDstGasLookup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "nonblockingLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "payloadSizeLimitLookup", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "precrime", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_srcChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_srcAddress", "type": "bytes" }, { "internalType": "uint64", "name": "_nonce", "type": "uint64" }, { "internalType": "bytes", "name": "_payload", "type": "bytes" } ], "name": "retryMessage", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint16[]", "name": "_dstChainIds", "type": "uint16[]" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, { "internalType": "address payable", "name": "_refundAddress", "type": "address" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes[]", "name": "_adapterParams", "type": "bytes[]" }, { "internalType": "uint256[]", "name": "_nativeFees", "type": "uint256[]" } ], "name": "sendBatchFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_toAddress", "type": "bytes" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address payable", "name": "_refundAddress", "type": "address" }, { "internalType": "address", "name": "_zroPaymentAddress", "type": "address" }, { "internalType": "bytes", "name": "_adapterParams", "type": "bytes" } ], "name": "sendFrom", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" }, { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "uint256", "name": "_configType", "type": "uint256" }, { "internalType": "bytes", "name": "_config", "type": "bytes" } ], "name": "setConfig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "a", "type": "address" } ], "name": "setMarathonAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "uint16", "name": "_packetType", "type": "uint16" }, { "internalType": "uint256", "name": "_minGas", "type": "uint256" } ], "name": "setMinDstGas", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_dstChainId", "type": "uint16" }, { "internalType": "uint256", "name": "_size", "type": "uint256" } ], "name": "setPayloadSizeLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_precrime", "type": "address" } ], "name": "setPrecrime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setReceiveVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_version", "type": "uint16" } ], "name": "setSendVersion", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_path", "type": "bytes" } ], "name": "setTrustedRemote", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_remoteChainId", "type": "uint16" }, { "internalType": "bytes", "name": "_remoteAddress", "type": "bytes" } ], "name": "setTrustedRemoteAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_useCustomAdapterParams", "type": "bool" } ], "name": "setUseCustomAdapterParams", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "amount", "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": "amount", "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" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "trustedRemoteLookup", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "useCustomAdapterParams", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ]
60a06040526000600c553480156200001657600080fd5b50604051620044cd380380620044cd83398101604081905262000039916200021f565b6040518060400160405280600c81526020016b13585c985d1a1bdb8813d19560a21b815250604051806040016040528060048152602001634d41524160e01b8152508482828280806200009b620000956200010860201b60201c565b6200010c565b6001600160a01b031660805250508151620000be90600a9060208501906200015c565b508051620000d490600b9060208401906200015c565b505050600c949094555050600d80546001600160a01b0319166001600160a01b0392909216919091179055506200029d9050565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200016a9062000260565b90600052602060002090601f0160209004810192826200018e5760008555620001d9565b82601f10620001a957805160ff1916838001178555620001d9565b82800160010185558215620001d9579182015b82811115620001d9578251825591602001919060010190620001bc565b50620001e7929150620001eb565b5090565b5b80821115620001e75760008155600101620001ec565b80516001600160a01b03811681146200021a57600080fd5b919050565b6000806000606084860312156200023557600080fd5b620002408462000202565b925060208401519150620002576040850162000202565b90509250925092565b600181811c908216806200027557607f821691505b602082108114156200029757634e487b7160e01b600052602260045260246000fd5b50919050565b6080516141dc620002f16000396000818161080801528181610a1901528181610d3801528181610df801528181611133015281816112d001528181611908015281816121000152612cea01526141dc6000f3fe6080604052600436106103195760003560e01c80638da5cb5b116101ab578063c82e337e116100f7578063e685e54111610095578063ed629c5c1161006f578063ed629c5c146109a9578063f2fde38b146109c3578063f5ecbdbc146109e3578063fc0c546a14610a0357600080fd5b8063e685e54114610956578063eab45d9c14610969578063eb8d72b71461098957600080fd5b8063d294f093116100d1578063d294f093146108eb578063dd62ed3e14610900578063ddca3f4314610920578063df2a5b3b1461093657600080fd5b8063c82e337e14610898578063cbed8b9c146108b8578063d1deba1f146108d857600080fd5b8063a6c3d16511610164578063b353aaa71161013e578063b353aaa7146107f6578063baf3292d1461082a578063c17c7aee1461084a578063c44618341461088257600080fd5b8063a6c3d16514610789578063a8984e56146107a9578063a9059cbb146107d657600080fd5b80638da5cb5b146106e15780639358928b146106ff578063950c8a741461071457806395d89b41146107345780639f38369a14610749578063a457c2d71461076957600080fd5b80633d8b38f61161026a5780635b8c41e61161022357806370a08231116101fd57806370a082311461063e578063715018a6146106745780637533d788146106895780638cfd8f5c146106a957600080fd5b80635b8c41e61461059757806366ad5c8a146105e6578063695cc64b1461060657600080fd5b80633d8b38f6146104da5780633f1f4fa4146104fa57806342d65a8d1461052757806344770515146105475780634c42899a1461055c578063519056361461058457600080fd5b806310ddb137116102d757806326b89ad7116102b157806326b89ad7146104565780632a205e3d14610469578063313ce5671461049e57806339509351146104ba57600080fd5b806310ddb137146103f757806318160ddd1461041757806323b872dd1461043657600080fd5b80621d35671461031e57806301ffc9a71461034057806306fdde031461037557806307e0db1714610397578063095ea7b3146103b75780630df37483146103d7575b600080fd5b34801561032a57600080fd5b5061033e6103393660046132bf565b610a16565b005b34801561034c57600080fd5b5061036061035b366004613354565b610c47565b60405190151581526020015b60405180910390f35b34801561038157600080fd5b5061038a610c85565b60405161036c91906133d6565b3480156103a357600080fd5b5061033e6103b23660046133e9565b610d17565b3480156103c357600080fd5b506103606103d2366004613426565b610da0565b3480156103e357600080fd5b5061033e6103f2366004613452565b610db8565b34801561040357600080fd5b5061033e6104123660046133e9565b610dd7565b34801561042357600080fd5b506009545b60405190815260200161036c565b34801561044257600080fd5b50610360610451366004613470565b610e2f565b61033e610464366004613585565b610e53565b34801561047557600080fd5b506104896104843660046135e4565b6110f0565b6040805192835260208301919091520161036c565b3480156104aa57600080fd5b506040516000815260200161036c565b3480156104c657600080fd5b506103606104d5366004613426565b6111c3565b3480156104e657600080fd5b506103606104f5366004613683565b6111e5565b34801561050657600080fd5b506104286105153660046133e9565b60036020526000908152604090205481565b34801561053357600080fd5b5061033e610542366004613683565b6112b1565b34801561055357600080fd5b50610428600081565b34801561056857600080fd5b50610571600081565b60405161ffff909116815260200161036c565b61033e6105923660046136d7565b611337565b3480156105a357600080fd5b506104286105b2366004613818565b6005602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b3480156105f257600080fd5b5061033e6106013660046132bf565b6113bc565b34801561061257600080fd5b50600d54610626906001600160a01b031681565b6040516001600160a01b03909116815260200161036c565b34801561064a57600080fd5b50610428610659366004613877565b6001600160a01b031660009081526007602052604090205490565b34801561068057600080fd5b5061033e611498565b34801561069557600080fd5b5061038a6106a43660046133e9565b6114ac565b3480156106b557600080fd5b506104286106c4366004613894565b600260209081526000928352604080842090915290825290205481565b3480156106ed57600080fd5b506000546001600160a01b0316610626565b34801561070b57600080fd5b50610428611546565b34801561072057600080fd5b50600454610626906001600160a01b031681565b34801561074057600080fd5b5061038a611556565b34801561075557600080fd5b5061038a6107643660046133e9565b611565565b34801561077557600080fd5b50610360610784366004613426565b61167c565b34801561079557600080fd5b5061033e6107a4366004613683565b6116f7565b3480156107b557600080fd5b506107c96107c43660046138cd565b61178a565b60405161036c9190613909565b3480156107e257600080fd5b506103606107f1366004613426565b611854565b34801561080257600080fd5b506106267f000000000000000000000000000000000000000000000000000000000000000081565b34801561083657600080fd5b5061033e610845366004613877565b611862565b34801561085657600080fd5b5061036061086536600461394f565b6000908152600e60205260409020546001600160a01b0316151590565b34801561088e57600080fd5b5061042861271081565b3480156108a457600080fd5b5061033e6108b3366004613877565b6118bf565b3480156108c457600080fd5b5061033e6108d3366004613968565b6118e9565b61033e6108e63660046132bf565b611973565b3480156108f757600080fd5b50610360611b89565b34801561090c57600080fd5b5061042861091b3660046139da565b611be3565b34801561092c57600080fd5b50610428600c5481565b34801561094257600080fd5b5061033e610951366004613a08565b611c0e565b61033e610964366004613b1b565b611cc0565b34801561097557600080fd5b5061033e610984366004613c23565b611fb3565b34801561099557600080fd5b5061033e6109a4366004613683565b611ffc565b3480156109b557600080fd5b506006546103609060ff1681565b3480156109cf57600080fd5b5061033e6109de366004613877565b612056565b3480156109ef57600080fd5b5061038a6109fe366004613c3e565b6120cf565b348015610a0f57600080fd5b5030610626565b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610a935760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff861660009081526001602052604081208054610ab190613c8f565b80601f0160208091040260200160405190810160405280929190818152602001828054610add90613c8f565b8015610b2a5780601f10610aff57610100808354040283529160200191610b2a565b820191906000526020600020905b815481529060010190602001808311610b0d57829003601f168201915b50505050509050805186869050148015610b45575060008151115b8015610b6d575080516020820120604051610b639088908890613cca565b6040518091039020145b610bc85760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b6064820152608401610a8a565b610c3e8787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061218092505050565b50505050505050565b60006001600160e01b031982161580610c7057506001600160e01b031982166336372b0760e01b145b80610c7f5750610c7f826121f9565b92915050565b6060600a8054610c9490613c8f565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc090613c8f565b8015610d0d5780601f10610ce257610100808354040283529160200191610d0d565b820191906000526020600020905b815481529060010190602001808311610cf057829003601f168201915b5050505050905090565b610d1f61222e565b6040516307e0db1760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307e0db17906024015b600060405180830381600087803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b5050505050565b600033610dae818585612288565b5060019392505050565b610dc061222e565b61ffff909116600090815260036020526040902055565b610ddf61222e565b6040516310ddb13760e01b815261ffff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906310ddb13790602401610d6b565b600033610e3d8582856123ac565b610e48858585612426565b506001949350505050565b600c548151610e629190613cf0565b341015610ea75760405162461bcd60e51b8152602060048201526013602482015272139bdd08195b9bdd59da08115512081cd95b9d606a1b6044820152606401610a8a565b60005b815181101561106357600d54825133916001600160a01b031690636352211e90859085908110610edc57610edc613d0f565b60200260200101516040518263ffffffff1660e01b8152600401610f0291815260200190565b602060405180830381865afa158015610f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f439190613d25565b6001600160a01b031614610fa95760405162461bcd60e51b815260206004820152602760248201527f53656e646572206973206e6f7420746865206f776e6572206f66207468697320604482015266393ab73732b91760c91b6064820152608401610a8a565b60006001600160a01b0316600e6000848481518110610fca57610fca613d0f565b6020908102919091018101518252810191909152604001600020546001600160a01b0316146110515760405162461bcd60e51b815260206004820152602d60248201527f546869732072756e6e65722068617320616c726561647920636c61696d65642060448201526c3a3432b4b9103a37b5b2b7399760991b6064820152608401610a8a565b8061105b81613d42565b915050610eaa565b5061107b82825160056110769190613cf0565b6125d1565b60005b81518110156110eb5733600e600084848151811061109e5761109e613d0f565b6020026020010151815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080806110e390613d42565b91505061107e565b505050565b60008060008089898960405160200161110c9493929190613d86565b60408051601f198184030181529082905263040a7bb160e41b825291506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906340a7bb1090611172908d90309086908c908c908c90600401613db5565b6040805180830381865afa15801561118e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b29190613e0b565b925092505097509795505050505050565b600033610dae8185856111d68383611be3565b6111e09190613e2f565b612288565b61ffff83166000908152600160205260408120805482919061120690613c8f565b80601f016020809104026020016040519081016040528092919081815260200182805461123290613c8f565b801561127f5780601f106112545761010080835404028352916020019161127f565b820191906000526020600020905b81548152906001019060200180831161126257829003601f168201915b505050505090508383604051611296929190613cca565b60405180910390208180519060200120149150509392505050565b6112b961222e565b6040516342d65a8d60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906342d65a8d9061130990869086908690600401613e47565b600060405180830381600087803b15801561132357600080fd5b505af1158015610c3e573d6000803e3d6000fd5b6113b1898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528c93508b92508a918a908a908190840183828082843760009201919091525061269292505050565b505050505050505050565b33301461141a5760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b6064820152608401610a8a565b6114908686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061273992505050565b505050505050565b6114a061222e565b6114aa60006127a0565b565b600160205260009081526040902080546114c590613c8f565b80601f01602080910402602001604051908101604052809291908181526020018280546114f190613c8f565b801561153e5780601f106115135761010080835404028352916020019161153e565b820191906000526020600020905b81548152906001019060200180831161152157829003601f168201915b505050505081565b600061155160095490565b905090565b6060600b8054610c9490613c8f565b61ffff811660009081526001602052604081208054606092919061158890613c8f565b80601f01602080910402602001604051908101604052809291908181526020018280546115b490613c8f565b80156116015780601f106115d657610100808354040283529160200191611601565b820191906000526020600020905b8154815290600101906020018083116115e457829003601f168201915b5050505050905080516000141561165a5760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f72640000006044820152606401610a8a565b61167560006014835161166d9190613e65565b8391906127f0565b9392505050565b6000338161168a8286611be3565b9050838110156116ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a8a565b610e488286868403612288565b6116ff61222e565b81813060405160200161171493929190613e7c565b60408051601f1981840301815291815261ffff851660009081526001602090815291902082516117499391929091019061313e565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce83838360405161177d93929190613e47565b60405180910390a1505050565b6060600082516001600160401b038111156117a7576117a76134b1565b6040519080825280602002602001820160405280156117d0578160200160208202803683370190505b50905060005b835181101561184d576118198482815181106117f4576117f4613d0f565b60200260200101516000908152600e60205260409020546001600160a01b0316151590565b82828151811061182b5761182b613d0f565b911515602092830291909101909101528061184581613d42565b9150506117d6565b5092915050565b600033610dae818585612426565b61186a61222e565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b906020015b60405180910390a150565b6118c761222e565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6118f161222e565b6040516332fb62e760e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbed8b9c906119459088908890889088908890600401613ea2565b600060405180830381600087803b15801561195f57600080fd5b505af11580156113b1573d6000803e3d6000fd5b61ffff861660009081526005602052604080822090516119969088908890613cca565b90815260408051602092819003830190206001600160401b03871660009081529252902054905080611a165760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b6064820152608401610a8a565b808383604051611a27929190613cca565b604051809103902014611a865760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b6064820152608401610a8a565b61ffff87166000908152600560205260408082209051611aa99089908990613cca565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f88018290048202830182019052868252611b41918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061273992505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051611b78959493929190613edb565b60405180910390a150505050505050565b6000611b9361222e565b604051600090339047908381818185875af1925050503d8060008114611bd5576040519150601f19603f3d011682016040523d82523d6000602084013e611bda565b606091505b50909250505090565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b611c1661222e565b60008111611c5e5760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b6044820152606401610a8a565b61ffff83811660008181526002602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac09060600161177d565b8751855114611d2e5760405162461bcd60e51b815260206004820152603460248201527f4d61726174686f6e4f46543a20616d6f756e747320616e6420647374436861696044820152730dc92c8e640d8cadccee8d040dad2e6dac2e8c6d60631b6064820152608401610a8a565b8151855114611d9e5760405162461bcd60e51b815260206004820152603660248201527f4d61726174686f6e4f46543a20616d6f756e747320616e6420616461707465726044820152750a0c2e4c2dae640d8cadccee8d040dad2e6dac2e8c6d60531b6064820152608401610a8a565b8051855114611e0b5760405162461bcd60e51b815260206004820152603360248201527f4d61726174686f6e4f46543a20616d6f756e747320616e64206e6174697665466044820152720cacae640d8cadccee8d040dad2e6dac2e8c6d606b1b6064820152608401610a8a565b8751815114611e2c5760405162461bcd60e51b8152600401610a8a90613f16565b8751825114611e4d5760405162461bcd60e51b8152600401610a8a90613f16565b8051825114611ec45760405162461bcd60e51b815260206004820152603960248201527f4d61726174686f6e4f46543a206e61746976654665657320616e64206164617060448201527f746572506172616d73206c656e677468206d69736d61746368000000000000006064820152608401610a8a565b60005b8851811015611fa7576000898281518110611ee457611ee4613d0f565b602002602001015190506000848381518110611f0257611f02613d0f565b602002602001015190506000888481518110611f2057611f20613d0f565b602002602001015190506000858581518110611f3e57611f3e613d0f565b60200260200101519050611f908e858e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508892508f91508e905089886128fd565b505050508080611f9f90613d42565b915050611ec7565b50505050505050505050565b611fbb61222e565b6006805460ff19168215159081179091556040519081527f1584ad594a70cbe1e6515592e1272a987d922b097ead875069cebe8b40c004a4906020016118b4565b61200461222e565b61ffff831660009081526001602052604090206120229083836131c2565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab83838360405161177d93929190613e47565b61205e61222e565b6001600160a01b0381166120c35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a8a565b6120cc816127a0565b50565b604051633d7b2f6f60e21b815261ffff808616600483015284166024820152306044820152606481018290526060907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f5ecbdbc90608401600060405180830381865afa15801561214f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121779190810190613fb8565b95945050505050565b6000806121e35a60966366ad5c8a60e01b898989896040516024016121a89493929190613fec565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152309291906129ed565b9150915081611490576114908686868685612a77565b60006001600160e01b03198216630a72677560e11b1480610c7f57506301ffc9a760e01b6001600160e01b0319831614610c7f565b6000546001600160a01b031633146114aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a8a565b6001600160a01b0383166122ea5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a8a565b6001600160a01b03821661234b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a8a565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006123b88484611be3565b9050600019811461242057818110156124135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a8a565b6124208484848403612288565b50505050565b6001600160a01b03831661248a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a8a565b6001600160a01b0382166124ec5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a8a565b6001600160a01b038316600090815260076020526040902054818110156125645760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a8a565b6001600160a01b0380851660008181526007602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125c49086815260200190565b60405180910390a3612420565b6001600160a01b0382166126275760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a8a565b80600960008282546126399190613e2f565b90915550506001600160a01b0382166000818152600760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6126a0866000836000612b14565b60006126ae88888888612b8e565b905060008087836040516020016126c79392919061402a565b60405160208183030381529060405290506126e6888287878734612bc0565b886001600160a01b03168861ffff167f39a4c66499bcf4b56d79f0dde8ed7a9d4925a0df55825206b2b8531e202be0d08985604051612726929190614057565b60405180910390a3505050505050505050565b602081015161ffff81166127585761275385858585612d66565b610d99565b60405162461bcd60e51b815260206004820152601c60248201527f4f4654436f72653a20756e6b6e6f776e207061636b65742074797065000000006044820152606401610a8a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6060816127fe81601f613e2f565b101561283d5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606401610a8a565b6128478284613e2f565b8451101561288b5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606401610a8a565b6060821580156128aa57604051915060008252602082016040526128f4565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156128e35780518352602092830192016128cb565b5050858452601f01601f1916604052505b50949350505050565b600081116129455760405162461bcd60e51b815260206004820152601560248201527406e6174697665466565206d757374206265203e203605c1b6044820152606401610a8a565b612953876000846000612b14565b600061296189898989612b8e565b9050600080888360405160200161297a9392919061402a565b6040516020818303038152906040529050612999898288888888612bc0565b896001600160a01b03168961ffff167f39a4c66499bcf4b56d79f0dde8ed7a9d4925a0df55825206b2b8531e202be0d08a856040516129d9929190614057565b60405180910390a350505050505050505050565b6000606060008060008661ffff166001600160401b03811115612a1257612a126134b1565b6040519080825280601f01601f191660200182016040528015612a3c576020820181803683370190505b50905060008087516020890160008d8df191503d925086831115612a5e578692505b828152826000602083013e909890975095505050505050565b8180519060200120600560008761ffff1661ffff16815260200190815260200160002085604051612aa89190614079565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c90612b059087908790879087908790614095565b60405180910390a15050505050565b60065460ff1615612b3057612b2b84848484612df0565b612420565b8151156124205760405162461bcd60e51b815260206004820152602660248201527f4f4654436f72653a205f61646170746572506172616d73206d7573742062652060448201526532b6b83a3c9760d11b6064820152608401610a8a565b6000336001600160a01b0386168114612bac57612bac8682856123ac565b612bb68684612ecf565b5090949350505050565b61ffff861660009081526001602052604081208054612bde90613c8f565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0a90613c8f565b8015612c575780601f10612c2c57610100808354040283529160200191612c57565b820191906000526020600020905b815481529060010190602001808311612c3a57829003601f168201915b50505050509050805160001415612cc95760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b6064820152608401610a8a565b612cd4878751613003565b60405162c5803160e81b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c5803100908490612d2b908b9086908c908c908c908c906004016140f3565b6000604051808303818588803b158015612d4457600080fd5b505af1158015612d58573d6000803e3d6000fd5b505050505050505050505050565b60008082806020019051810190612d7d919061414d565b909350915060009050612d908382613071565b9050612d9d8782846130d6565b9150806001600160a01b03168761ffff167fbf551ec93859b170f9b2141bd9298bf3f64322c6f7beb2543a0cb669834118bf84604051612ddf91815260200190565b60405180910390a350505050505050565b6000612dfb836130e2565b61ffff808716600090815260026020908152604080832093891683529290529081205491925090612e2d908490613e2f565b905060008111612e7f5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f74207365740000000000006044820152606401610a8a565b808210156114905760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f7700000000006044820152606401610a8a565b6001600160a01b038216612f2f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a8a565b6001600160a01b03821660009081526007602052604090205481811015612fa35760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a8a565b6001600160a01b03831660008181526007602090815260408083208686039055600980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b61ffff82166000908152600360205260409020548061302157506127105b808211156110eb5760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c617267656044820152606401610a8a565b600061307e826014613e2f565b835110156130c65760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606401610a8a565b500160200151600160601b900490565b600061184d83836125d1565b60006022825110156131365760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d73000000006044820152606401610a8a565b506022015190565b82805461314a90613c8f565b90600052602060002090601f01602090048101928261316c57600085556131b2565b82601f1061318557805160ff19168380011785556131b2565b828001600101855582156131b2579182015b828111156131b2578251825591602001919060010190613197565b506131be929150613236565b5090565b8280546131ce90613c8f565b90600052602060002090601f0160209004810192826131f057600085556131b2565b82601f106132095782800160ff198235161785556131b2565b828001600101855582156131b2579182015b828111156131b257823582559160200191906001019061321b565b5b808211156131be5760008155600101613237565b61ffff811681146120cc57600080fd5b60008083601f84011261326d57600080fd5b5081356001600160401b0381111561328457600080fd5b60208301915083602082850101111561329c57600080fd5b9250929050565b80356001600160401b03811681146132ba57600080fd5b919050565b600080600080600080608087890312156132d857600080fd5b86356132e38161324b565b955060208701356001600160401b03808211156132ff57600080fd5b61330b8a838b0161325b565b909750955085915061331f60408a016132a3565b9450606089013591508082111561333557600080fd5b5061334289828a0161325b565b979a9699509497509295939492505050565b60006020828403121561336657600080fd5b81356001600160e01b03198116811461167557600080fd5b60005b83811015613399578181015183820152602001613381565b838111156124205750506000910152565b600081518084526133c281602086016020860161337e565b601f01601f19169290920160200192915050565b60208152600061167560208301846133aa565b6000602082840312156133fb57600080fd5b81356116758161324b565b6001600160a01b03811681146120cc57600080fd5b80356132ba81613406565b6000806040838503121561343957600080fd5b823561344481613406565b946020939093013593505050565b6000806040838503121561346557600080fd5b82356134448161324b565b60008060006060848603121561348557600080fd5b833561349081613406565b925060208401356134a081613406565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156134ef576134ef6134b1565b604052919050565b60006001600160401b03821115613510576135106134b1565b5060051b60200190565b600082601f83011261352b57600080fd5b8135602061354061353b836134f7565b6134c7565b82815260059290921b8401810191818101908684111561355f57600080fd5b8286015b8481101561357a5780358352918301918301613563565b509695505050505050565b6000806040838503121561359857600080fd5b82356135a381613406565b915060208301356001600160401b038111156135be57600080fd5b6135ca8582860161351a565b9150509250929050565b803580151581146132ba57600080fd5b600080600080600080600060a0888a0312156135ff57600080fd5b873561360a8161324b565b965060208801356001600160401b038082111561362657600080fd5b6136328b838c0161325b565b909850965060408a0135955086915061364d60608b016135d4565b945060808a013591508082111561366357600080fd5b506136708a828b0161325b565b989b979a50959850939692959293505050565b60008060006040848603121561369857600080fd5b83356136a38161324b565b925060208401356001600160401b038111156136be57600080fd5b6136ca8682870161325b565b9497909650939450505050565b600080600080600080600080600060e08a8c0312156136f557600080fd5b893561370081613406565b985060208a01356137108161324b565b975060408a01356001600160401b038082111561372c57600080fd5b6137388d838e0161325b565b909950975060608c0135965060808c0135915061375482613406565b90945060a08b01359061376682613406565b90935060c08b0135908082111561377c57600080fd5b506137898c828d0161325b565b915080935050809150509295985092959850929598565b60006001600160401b038211156137b9576137b96134b1565b50601f01601f191660200190565b600082601f8301126137d857600080fd5b81356137e661353b826137a0565b8181528460208386010111156137fb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561382d57600080fd5b83356138388161324b565b925060208401356001600160401b0381111561385357600080fd5b61385f868287016137c7565b92505061386e604085016132a3565b90509250925092565b60006020828403121561388957600080fd5b813561167581613406565b600080604083850312156138a757600080fd5b82356138b28161324b565b915060208301356138c28161324b565b809150509250929050565b6000602082840312156138df57600080fd5b81356001600160401b038111156138f557600080fd5b6139018482850161351a565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015613943578351151583529284019291840191600101613925565b50909695505050505050565b60006020828403121561396157600080fd5b5035919050565b60008060008060006080868803121561398057600080fd5b853561398b8161324b565b9450602086013561399b8161324b565b93506040860135925060608601356001600160401b038111156139bd57600080fd5b6139c98882890161325b565b969995985093965092949392505050565b600080604083850312156139ed57600080fd5b82356139f881613406565b915060208301356138c281613406565b600080600060608486031215613a1d57600080fd5b8335613a288161324b565b925060208401356134a08161324b565b600082601f830112613a4957600080fd5b81356020613a5961353b836134f7565b82815260059290921b84018101918181019086841115613a7857600080fd5b8286015b8481101561357a578035613a8f8161324b565b8352918301918301613a7c565b600082601f830112613aad57600080fd5b81356020613abd61353b836134f7565b82815260059290921b84018101918181019086841115613adc57600080fd5b8286015b8481101561357a5780356001600160401b03811115613aff5760008081fd5b613b0d8986838b01016137c7565b845250918301918301613ae0565b60008060008060008060008060006101008a8c031215613b3a57600080fd5b613b438a61341b565b985060208a01356001600160401b0380821115613b5f57600080fd5b613b6b8d838e01613a38565b995060408c0135915080821115613b8157600080fd5b613b8d8d838e0161325b565b909950975060608c0135915080821115613ba657600080fd5b613bb28d838e0161351a565b9650613bc060808d0161341b565b9550613bce60a08d0161341b565b945060c08c0135915080821115613be457600080fd5b613bf08d838e01613a9c565b935060e08c0135915080821115613c0657600080fd5b50613c138c828d0161351a565b9150509295985092959850929598565b600060208284031215613c3557600080fd5b611675826135d4565b60008060008060808587031215613c5457600080fd5b8435613c5f8161324b565b93506020850135613c6f8161324b565b92506040850135613c7f81613406565b9396929550929360600135925050565b600181811c90821680613ca357607f821691505b60208210811415613cc457634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613d0a57613d0a613cda565b500290565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613d3757600080fd5b815161167581613406565b6000600019821415613d5657613d56613cda565b5060010190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff85168152606060208201526000613da4606083018587613d5d565b905082604083015295945050505050565b61ffff871681526001600160a01b038616602082015260a060408201819052600090613de3908301876133aa565b85151560608401528281036080840152613dfe818587613d5d565b9998505050505050505050565b60008060408385031215613e1e57600080fd5b505080516020909101519092909150565b60008219821115613e4257613e42613cda565b500190565b61ffff84168152604060208201526000612177604083018486613d5d565b600082821015613e7757613e77613cda565b500390565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152613ed0608083018486613d5d565b979650505050505050565b61ffff86168152608060208201526000613ef9608083018688613d5d565b6001600160401b0394909416604083015250606001529392505050565b60208082526037908201527f4d61726174686f6e4f46543a206e61746976654665657320616e64206473744360408201527f6861696e496473206c656e677468206d69736d61746368000000000000000000606082015260800190565b600082601f830112613f8457600080fd5b8151613f9261353b826137a0565b818152846020838601011115613fa757600080fd5b61390182602083016020870161337e565b600060208284031215613fca57600080fd5b81516001600160401b03811115613fe057600080fd5b61390184828501613f73565b61ffff8516815260806020820152600061400960808301866133aa565b6001600160401b03851660408401528281036060840152613ed081856133aa565b61ffff8416815260606020820152600061404760608301856133aa565b9050826040830152949350505050565b60408152600061406a60408301856133aa565b90508260208301529392505050565b6000825161408b81846020870161337e565b9190910192915050565b61ffff8616815260a0602082015260006140b260a08301876133aa565b6001600160401b038616604084015282810360608401526140d381866133aa565b905082810360808401526140e781856133aa565b98975050505050505050565b61ffff8716815260c06020820152600061411060c08301886133aa565b828103604084015261412281886133aa565b6001600160a01b0387811660608601528616608085015283810360a08501529050613dfe81856133aa565b60008060006060848603121561416257600080fd5b835161416d8161324b565b60208501519093506001600160401b0381111561418957600080fd5b61419586828701613f73565b92505060408401519050925092509256fea2646970667358221220fa1982b56c35a1fb3ddadefa8bdf5a1b5b1c5bd304d9f4c4456624dba5d6b3bd64736f6c634300080c00330000000000000000000000003c2269811836af69497e5f486a85d7316753cf6200000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e66eba102b77fc75cd87b5e60141b85573bc8e8