Contract Overview
Balance:
0 METIS

METIS Value:
$0.00 (@ $48.42/METIS)
More Info
Tag:
Not Available. Update?

Contract Creator:
Contract Source Code Verified (Exact Match)
Contract Name:
LayerZeroReceiver

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 10000 runs

Created At:
Tue, 30 Jan 2024 21:00:50 GMT
LayerZeroReceiver.sol
contracts
receivers
LayerZeroReceiver.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_rainbowRoad",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_endpoint",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "payload",
        "type": "bytes"
      }
    ],
    "name": "MessageFailed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "sourceChainSelector",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "action",
        "type": "string"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "actionRecipient",
        "type": "address"
      }
    ],
    "name": "MessageReceived",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferStarted",
    "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": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Paused",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "payload",
        "type": "bytes"
      }
    ],
    "name": "RetryMessageAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "indexed": false,
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "payload",
        "type": "bytes"
      }
    ],
    "name": "RetryMessageRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "sourceAddress",
        "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": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "Unpaused",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "message",
        "type": "bytes"
      }
    ],
    "name": "addRetryMessage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "internalType": "address",
        "name": "remoteAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "localAddress",
        "type": "address"
      }
    ],
    "name": "disableMessageSender",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "internalType": "address",
        "name": "remoteAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "localAddress",
        "type": "address"
      }
    ],
    "name": "enableMessageSender",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "endpoint",
    "outputs": [
      {
        "internalType": "contract ILayerZeroEndpoint",
        "name": "",
        "type": "address"
      }
    ],
    "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": [
      {
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "message",
        "type": "bytes"
      }
    ],
    "name": "handleReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "message",
        "type": "bytes"
      }
    ],
    "name": "lzReceive",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "name": "messageSenders",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rainbowRoad",
    "outputs": [
      {
        "internalType": "contract IRainbowRoad",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "message",
        "type": "bytes"
      }
    ],
    "name": "removeRetryMessage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "sourceChainSelector",
        "type": "uint16"
      },
      {
        "internalType": "bytes",
        "name": "sourceAddress",
        "type": "bytes"
      },
      {
        "internalType": "uint64",
        "name": "nonce",
        "type": "uint64"
      },
      {
        "internalType": "bytes",
        "name": "message",
        "type": "bytes"
      }
    ],
    "name": "retryMessage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_endpoint",
        "type": "address"
      }
    ],
    "name": "setEndpoint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_rainbowRoad",
        "type": "address"
      }
    ],
    "name": "setRainbowRoad",
    "outputs": [],
    "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": "unpause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "beneficiary",
        "type": "address"
      }
    ],
    "name": "withdrawNative",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "beneficiary",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "withdrawToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60806040523480156200001157600080fd5b5060405162002514380380620025148339810160408190526200003491620001e8565b8162000040336200015d565b6001805460ff60a01b191681556002556001600160a01b038116620000b85760405162461bcd60e51b815260206004820152602360248201527f5261696e626f7720526f61642063616e6e6f74206265207a65726f206164647260448201526265737360e81b60648201526084015b60405180910390fd5b600380546001600160a01b0319166001600160a01b039283161790558116620001365760405162461bcd60e51b815260206004820152602960248201527f4c617965725a65726f20656e64706f696e742063616e6e6f74206265207a65726044820152686f206164647265737360b81b6064820152608401620000af565b600480546001600160a01b0319166001600160a01b03929092169190911790555062000220565b600180546001600160a01b031916905562000178816200017b565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001e357600080fd5b919050565b60008060408385031215620001fc57600080fd5b6200020783620001cb565b91506200021760208401620001cb565b90509250929050565b6122e480620002306000396000f3fe60806040526004361061018e5760003560e01c80637533d788116100d6578063ca64e47b1161007f578063e30c397811610059578063e30c3978146104c5578063ef3bda9f146104f0578063f2fde38b1461053c57600080fd5b8063ca64e47b14610465578063d1deba1f14610485578063dbbb4155146104a557600080fd5b80638da5cb5b116100b05780638da5cb5b146103fa578063a164525e14610425578063bfb5944a1461044557600080fd5b80637533d788146103a357806379ba5097146103d05780638456cb59146103e557600080fd5b80635c975abb1161013857806366c10f751161011257806366c10f75146103415780636a93681714610361578063715018a61461038e57600080fd5b80635c975abb146102935780635e280f11146102cf57806361e74db01461032157600080fd5b80633aeac4e1116101695780633aeac4e1146101fc5780633f4ba83a1461021c5780635b8c41e61461023157600080fd5b80621d35671461019a57806314021145146101bc5780632f622e6b146101dc57600080fd5b3661019557005b600080fd5b3480156101a657600080fd5b506101ba6101b5366004611b66565b61055c565b005b3480156101c857600080fd5b506101ba6101d7366004611b66565b61087e565b3480156101e857600080fd5b506101ba6101f7366004611c1c565b610932565b34801561020857600080fd5b506101ba610217366004611c40565b6109ef565b34801561022857600080fd5b506101ba610b2b565b34801561023d57600080fd5b5061028061024c366004611d3e565b6007602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b6040519081526020015b60405180910390f35b34801561029f57600080fd5b5060015474010000000000000000000000000000000000000000900460ff165b604051901515815260200161028a565b3480156102db57600080fd5b506004546102fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028a565b34801561032d57600080fd5b506101ba61033c366004611d9c565b610b3d565b34801561034d57600080fd5b506101ba61035c366004611b66565b610dd3565b34801561036d57600080fd5b506003546102fc9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039a57600080fd5b506101ba610f10565b3480156103af57600080fd5b506103c36103be366004611de5565b610f22565b60405161028a9190611e50565b3480156103dc57600080fd5b506101ba610fbc565b3480156103f157600080fd5b506101ba611057565b34801561040657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102fc565b34801561043157600080fd5b506101ba610440366004611b66565b611067565b34801561045157600080fd5b506101ba610460366004611c1c565b6110f2565b34801561047157600080fd5b506101ba610480366004611d9c565b6111ca565b34801561049157600080fd5b506101ba6104a0366004611b66565b611454565b3480156104b157600080fd5b506101ba6104c0366004611c1c565b61164a565b3480156104d157600080fd5b5060015473ffffffffffffffffffffffffffffffffffffffff166102fc565b3480156104fc57600080fd5b506102bf61050b366004611e63565b6005602090815260009283526040909220815180830184018051928152908401929093019190912091525460ff1681565b34801561054857600080fd5b506101ba610557366004611c1c565b611722565b6105646117d2565b60045473ffffffffffffffffffffffffffffffffffffffff1633146105d05760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420656e64706f696e742063616c6c657200000000000000000060448201526064015b60405180910390fd5b61ffff8616600090815260066020526040812080546105ee90611eb1565b80601f016020809104026020016040519081016040528092919081815260200182805461061a90611eb1565b80156106675780601f1061063c57610100808354040283529160200191610667565b820191906000526020600020905b81548152906001019060200180831161064a57829003601f168201915b50505050509050805186869050148015610682575060008151115b80156106aa5750805160208201206040516106a09088908890611f04565b6040518091039020145b80156106e9575061ffff87166000908152600560205260409081902090516106d59088908890611f04565b9081526040519081900360200190205460ff165b61075b5760405162461bcd60e51b815260206004820152602760248201527f556e737570706f7274656420736f7572636520636861696e2f6d65737361676560448201527f2073656e6465720000000000000000000000000000000000000000000000000060648201526084016105c7565b6040517f66c10f7500000000000000000000000000000000000000000000000000000000815230906366c10f75906107a1908a908a908a908a908a908a90600401611f3f565b600060405180830381600087803b1580156107bb57600080fd5b505af19250505080156107cc575060015b6108755782826040516107e0929190611f04565b6040805191829003822061ffff8a166000908152600760205291909120909161080c9089908990611f04565b90815260408051918290036020908101832067ffffffffffffffff89166000908152915220919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d9061086c90899089908990899089908990611f3f565b60405180910390a15b50505050505050565b61088661183d565b8181604051610896929190611f04565b6040805191829003822061ffff8916600090815260076020529190912090916108c29088908890611f04565b90815260408051918290036020908101832067ffffffffffffffff88166000908152915220919091557f401d8414d0ee25f60f68b6bc324307fcaf11ae4a9ce14b4e66c59b07fa90be779061092290889088908890889088908890611f3f565b60405180910390a1505050505050565b61093a61183d565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610994576040519150601f19603f3d011682016040523d82523d6000602084013e610999565b606091505b50509050806109ea5760405162461bcd60e51b815260206004820152601260248201527f556e61626c6520746f207769746864726177000000000000000000000000000060448201526064016105c7565b505050565b6109f761183d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610a64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a889190611f8d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018390529192509083169063a9059cbb906044016020604051808303816000875af1158015610b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b259190611fa6565b50505050565b610b3361183d565b610b3b6118a4565b565b610b4561183d565b73ffffffffffffffffffffffffffffffffffffffff8216610bce5760405162461bcd60e51b815260206004820152602560248201527f52656d6f746520616464726573732063616e6e6f74206265207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105c7565b73ffffffffffffffffffffffffffffffffffffffff8116610c565760405162461bcd60e51b8152602060048201526024808201527f4c6f63616c20616464726573732063616e6e6f74206265207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105c7565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015260009060480160408051601f1981840301815282825261ffff8716600090815260056020529190912090925090610cc7908390611fc8565b9081526040519081900360200190205460ff1615610d4d5760405162461bcd60e51b815260206004820152602a60248201527f4d6573736167652073656e64657220666f7220736f7572636520636861696e2060448201527f697320656e61626c65640000000000000000000000000000000000000000000060648201526084016105c7565b61ffff841660009081526005602052604090819020905160019190610d73908490611fc8565b908152604080516020928190038301902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169315159390931790925561ffff86166000908152600690915220610dcc8282612032565b5050505050565b333014610e225760405162461bcd60e51b815260206004820152600e60248201527f496e76616c69642063616c6c657200000000000000000000000000000000000060448201526064016105c7565b60008080610e328486018661212e565b6003546040517f9cdbf4c4000000000000000000000000000000000000000000000000000000008152939650919450925073ffffffffffffffffffffffffffffffffffffffff1690639cdbf4c490610e92908690869086906004016121bd565b600060405180830381600087803b158015610eac57600080fd5b505af1158015610ec0573d6000803e3d6000fd5b505050507fe2c98bc027982881015e1c22586be8f19b16ddc1ac3efb3b8bc09ea59b28b7a0898989898787604051610efd96959493929190612208565b60405180910390a1505050505050505050565b610f1861183d565b610b3b6000611921565b60066020526000908152604090208054610f3b90611eb1565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6790611eb1565b8015610fb45780601f10610f8957610100808354040283529160200191610fb4565b820191906000526020600020905b815481529060010190602001808311610f9757829003601f168201915b505050505081565b600154339073ffffffffffffffffffffffffffffffffffffffff16811461104b5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e6572000000000000000000000000000000000000000000000060648201526084016105c7565b61105481611921565b50565b61105f61183d565b610b3b611952565b61106f61183d565b61ffff86166000908152600760205260409081902090516110939087908790611f04565b90815260408051918290036020908101832067ffffffffffffffff871660009081529152908120557f42e8be5cd5ceb0fdca04a8ddfa4efeb6af0260fd0e6a19d4ec70310758654f7d9061092290889088908890889088908890611f3f565b6110fa61183d565b73ffffffffffffffffffffffffffffffffffffffff81166111835760405162461bcd60e51b815260206004820152602360248201527f5261696e626f7720526f61642063616e6e6f74206265207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105c7565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6111d261183d565b73ffffffffffffffffffffffffffffffffffffffff821661125b5760405162461bcd60e51b815260206004820152602560248201527f52656d6f746520616464726573732063616e6e6f74206265207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105c7565b73ffffffffffffffffffffffffffffffffffffffff81166112e35760405162461bcd60e51b8152602060048201526024808201527f4c6f63616c20616464726573732063616e6e6f74206265207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105c7565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084811b8216602084015283901b16603482015260009060480160408051601f1981840301815282825261ffff8716600090815260056020529190912090925090611354908390611fc8565b9081526040519081900360200190205460ff166113d95760405162461bcd60e51b815260206004820152602b60248201527f4d6573736167652073656e64657220666f7220736f7572636520636861696e2060448201527f69732064697361626c656400000000000000000000000000000000000000000060648201526084016105c7565b61ffff841660009081526005602052604080822090516113fa908490611fc8565b908152604080516020928190038301902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169315159390931790925561ffff861660009081526006909152908120610b2591611aa0565b61ffff861660009081526007602052604080822090516114779088908890611f04565b908152604080516020928190038301902067ffffffffffffffff8716600090815292529020549050806114ec5760405162461bcd60e51b815260206004820152601160248201527f4d657373616765206e6f7420666f756e6400000000000000000000000000000060448201526064016105c7565b8083836040516114fd929190611f04565b6040518091039020146115525760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964207061796c6f6164000000000000000000000000000000000060448201526064016105c7565b61ffff87166000908152600760205260409081902090516115769088908890611f04565b90815260408051918290036020908101832067ffffffffffffffff881660009081529152908120557f66c10f7500000000000000000000000000000000000000000000000000000000815230906366c10f75906115e1908a908a908a908a908a908a90600401611f3f565b600060405180830381600087803b1580156115fb57600080fd5b505af115801561160f573d6000803e3d6000fd5b505050507fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e5878787878560405161086c959493929190612272565b61165261183d565b73ffffffffffffffffffffffffffffffffffffffff81166116db5760405162461bcd60e51b815260206004820152602960248201527f4c617965725a65726f20656e64706f696e742063616e6e6f74206265207a657260448201527f6f2061646472657373000000000000000000000000000000000000000000000060648201526084016105c7565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61172a61183d565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915561178d60005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60015474010000000000000000000000000000000000000000900460ff1615610b3b5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a207061757365640000000000000000000000000000000060448201526064016105c7565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b3b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c7565b6118ac6119c1565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905561105481611a2b565b61195a6117d2565b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586118f73390565b60015474010000000000000000000000000000000000000000900460ff16610b3b5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f742070617573656400000000000000000000000060448201526064016105c7565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b508054611aac90611eb1565b6000825580601f10611abc575050565b601f01602090049060005260206000209081019061105491905b80821115611aea5760008155600101611ad6565b5090565b803561ffff81168114611b0057600080fd5b919050565b60008083601f840112611b1757600080fd5b50813567ffffffffffffffff811115611b2f57600080fd5b602083019150836020828501011115611b4757600080fd5b9250929050565b803567ffffffffffffffff81168114611b0057600080fd5b60008060008060008060808789031215611b7f57600080fd5b611b8887611aee565b9550602087013567ffffffffffffffff80821115611ba557600080fd5b611bb18a838b01611b05565b9097509550859150611bc560408a01611b4e565b94506060890135915080821115611bdb57600080fd5b50611be889828a01611b05565b979a9699509497509295939492505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461105457600080fd5b600060208284031215611c2e57600080fd5b8135611c3981611bfa565b9392505050565b60008060408385031215611c5357600080fd5b8235611c5e81611bfa565b91506020830135611c6e81611bfa565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115611cc357611cc3611c79565b604051601f8501601f19908116603f01168101908282118183101715611ceb57611ceb611c79565b81604052809350858152868686011115611d0457600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112611d2f57600080fd5b611c3983833560208501611ca8565b600080600060608486031215611d5357600080fd5b611d5c84611aee565b9250602084013567ffffffffffffffff811115611d7857600080fd5b611d8486828701611d1e565b925050611d9360408501611b4e565b90509250925092565b600080600060608486031215611db157600080fd5b611dba84611aee565b92506020840135611dca81611bfa565b91506040840135611dda81611bfa565b809150509250925092565b600060208284031215611df757600080fd5b611c3982611aee565b60005b83811015611e1b578181015183820152602001611e03565b50506000910152565b60008151808452611e3c816020860160208601611e00565b601f01601f19169290920160200192915050565b602081526000611c396020830184611e24565b60008060408385031215611e7657600080fd5b611e7f83611aee565b9150602083013567ffffffffffffffff811115611e9b57600080fd5b611ea785828601611d1e565b9150509250929050565b600181811c90821680611ec557607f821691505b602082108103611efe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b8183823760009101908152919050565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b61ffff87168152608060208201526000611f5d608083018789611f14565b67ffffffffffffffff861660408401528281036060840152611f80818587611f14565b9998505050505050505050565b600060208284031215611f9f57600080fd5b5051919050565b600060208284031215611fb857600080fd5b81518015158114611c3957600080fd5b60008251611fda818460208701611e00565b9190910192915050565b601f8211156109ea57600081815260208120601f850160051c8101602086101561200b5750805b601f850160051c820191505b8181101561202a57828155600101612017565b505050505050565b815167ffffffffffffffff81111561204c5761204c611c79565b6120608161205a8454611eb1565b84611fe4565b602080601f8311600181146120b3576000841561207d5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b17855561202a565b600085815260208120601f198616915b828110156120e2578886015182559484019460019091019084016120c3565b508582101561211e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008060006060848603121561214357600080fd5b833567ffffffffffffffff8082111561215b57600080fd5b818601915086601f83011261216f57600080fd5b61217e87833560208501611ca8565b94506020860135915061219082611bfa565b909250604085013590808211156121a657600080fd5b506121b386828701611d1e565b9150509250925092565b6060815260006121d06060830186611e24565b73ffffffffffffffffffffffffffffffffffffffff8516602084015282810360408401526121fe8185611e24565b9695505050505050565b61ffff8716815260a06020820152600061222660a083018789611f14565b67ffffffffffffffff8616604084015282810360608401526122488186611e24565b91505073ffffffffffffffffffffffffffffffffffffffff83166080830152979650505050505050565b61ffff86168152608060208201526000612290608083018688611f14565b67ffffffffffffffff9490941660408301525060600152939250505056fea2646970667358221220d6c6346bf9760299dd92b1f27bea7f02a801bf8d5861097d6fb4de9fdde0453564736f6c634300081300330000000000000000000000009412316dc6c882ffc4fa1a01413b0c701b147b9e0000000000000000000000009740ff91f1985d8d2b71494ae1a2f723bb3ed9e4