[ { "inputs": [ { "internalType": "string", "name": "baseURI_", "type": "string" }, { "internalType": "address", "name": "_layerZeroEndpoint", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "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" } ], "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": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "_owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "donate", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" }, { "internalType": "bytes", "name": "", "type": "bytes" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "failedMessages", "outputs": [ { "internalType": "uint256", "name": "payloadLength", "type": "uint256" }, { "internalType": "bytes32", "name": "payloadHash", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "uint8", "name": "numTokens", "type": "uint8" } ], "name": "mint", "outputs": [], "stateMutability": "payable", "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": "onLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "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": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "_data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "URI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newVal", "type": "uint256" } ], "name": "setGasForDestinationLzReceive", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "bytes", "name": "_trustedRemote", "type": "bytes" } ], "name": "setTrustedRemote", "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": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "_chainId", "type": "uint16" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "traverseChains", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "name": "trustedRemoteLookup", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amt", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080604052610fec600c55611970600d5562055730600e553480156200002457600080fd5b5060405162003a8638038062003a86833981016040819052620000479162000243565b6040518060400160405280600a81526020016974696e792064696e6f7360b01b8152506040518060400160405280600481526020016364696e6f60e01b815250620000a16200009b6200011660201b60201c565b6200011a565b8151620000b69060019060208501906200016a565b508051620000cc9060029060208401906200016a565b5050600a8054336001600160a01b031991821617909155600780549091166001600160a01b0384161790555081516200010d90600b9060208501906200016a565b50505062000371565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620001789062000334565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200023e57600080fd5b919050565b600080604083850312156200025757600080fd5b82516001600160401b03808211156200026f57600080fd5b818501915085601f8301126200028457600080fd5b81518181111562000299576200029962000210565b604051601f8201601f19908116603f01168101908382118183101715620002c457620002c462000210565b81604052828152602093508884848701011115620002e157600080fd5b600091505b82821015620003055784820184015181830185015290830190620002e6565b82821115620003175760008484830101525b95506200032991505085820162000226565b925050509250929050565b600181811c908216806200034957607f821691505b602082108114156200036b57634e487b7160e01b600052602260045260246000fd5b50919050565b61370580620003816000396000f3fe6080604052600436106101c15760003560e01c80637533d788116100f7578063b88d4fde11610095578063e985e9c511610064578063e985e9c514610558578063eb8d72b7146105ae578063ed88c68e146101e6578063f2fde38b146105ce57600080fd5b8063b88d4fde146104f2578063c87b56dd14610512578063cf89fa0314610532578063d1deba1f1461054557600080fd5b8063943fb872116100d1578063943fb8721461047057806395d89b4114610490578063a22cb465146104a5578063b2bdfa7b146104c557600080fd5b80637533d788146103ba5780638da5cb5b146103da5780638ee749121461040557600080fd5b80632e1a7d4d116101645780636352211e1161013e5780636352211e146103445780636ecd23061461036457806370a0823114610377578063715018a6146103a557600080fd5b80632e1a7d4d146102e457806342842e0e1461030457806355f804b31461032457600080fd5b8063081812fc116101a0578063081812fc1461023f578063095ea7b3146102845780631c37a822146102a457806323b872dd146102c457600080fd5b80621d3567146101c657806301ffc9a7146101e857806306fdde031461021d575b600080fd5b3480156101d257600080fd5b506101e66101e1366004612c6e565b6105ee565b005b3480156101f457600080fd5b50610208610203366004612d21565b610832565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b50610232610917565b6040516102149190612db4565b34801561024b57600080fd5b5061025f61025a366004612dc7565b6109a9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610214565b34801561029057600080fd5b506101e661029f366004612e02565b610a83565b3480156102b057600080fd5b506101e66102bf366004612c6e565b610c10565b3480156102d057600080fd5b506101e66102df366004612e2e565b610cab565b3480156102f057600080fd5b506101e66102ff366004612dc7565b610d4c565b34801561031057600080fd5b506101e661031f366004612e2e565b610ec0565b34801561033057600080fd5b506101e661033f366004612e6f565b610edb565b34801561035057600080fd5b5061025f61035f366004612dc7565b610f6f565b6101e6610372366004612eb8565b611021565b34801561038357600080fd5b50610397610392366004612edb565b61116f565b604051908152602001610214565b3480156103b157600080fd5b506101e661123d565b3480156103c657600080fd5b506102326103d5366004612ef8565b6112ca565b3480156103e657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661025f565b34801561041157600080fd5b5061045b610420366004612f13565b600860209081526000938452604080852084518086018401805192815290840195840195909520945292905282529020805460019091015482565b60408051928352602083019190915201610214565b34801561047c57600080fd5b506101e661048b366004612dc7565b611364565b34801561049c57600080fd5b506102326113ea565b3480156104b157600080fd5b506101e66104c0366004612f6a565b6113f9565b3480156104d157600080fd5b50600a5461025f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104fe57600080fd5b506101e661050d366004612fa8565b611404565b34801561051e57600080fd5b5061023261052d366004612dc7565b6114a6565b6101e6610540366004613008565b6115b6565b6101e661055336600461306d565b611998565b34801561056457600080fd5b506102086105733660046130f9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156105ba57600080fd5b506101e66105c9366004613127565b611b8a565b3480156105da57600080fd5b506101e66105e9366004612edb565b611c29565b60075473ffffffffffffffffffffffffffffffffffffffff16331461061257600080fd5b61ffff8416600090815260096020526040902080546106309061317a565b9050835114801561066f575061ffff841660009081526009602052604090819020905161065d91906131ce565b60405180910390208380519060200120145b610700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f7560448201527f7263652073656e64696e6720636f6e747261637400000000000000000000000060648201526084015b60405180910390fd5b6040517f1c37a8220000000000000000000000000000000000000000000000000000000081523090631c37a8229061074290879087908790879060040161325e565b600060405180830381600087803b15801561075c57600080fd5b505af192505050801561076d575060015b61082c576040518060400160405280825181526020018280519060200120815250600860008661ffff1661ffff168152602001908152602001600020846040516107b791906132a8565b90815260408051918290036020908101832067ffffffffffffffff8716600090815290825291909120835181559201516001909201919091557fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d9061082390869086908690869061325e565b60405180910390a15b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806108c557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061091157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600180546109269061317a565b80601f01602080910402602001604051908101604052809291908181526020018280546109529061317a565b801561099f5780601f106109745761010080835404028352916020019161099f565b820191906000526020600020905b81548152906001019060200180831161098257829003601f168201915b5050505050905090565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff16610a5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016106f7565b5060009081526005602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610a8e82610f6f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016106f7565b3373ffffffffffffffffffffffffffffffffffffffff82161480610b755750610b758133610573565b610c01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016106f7565b610c0b8383611d56565b505050565b333014610c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460448201527f206265204272696467652e00000000000000000000000000000000000000000060648201526084016106f7565b61082c84848484611df6565b610cb53382611e23565b610d41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016106f7565b610c0b838383611f93565b60005473ffffffffffffffffffffffffffffffffffffffff163314610dcd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f7565b600a5460405160009173ffffffffffffffffffffffffffffffffffffffff169083908381818185875af1925050503d8060008114610e27576040519150601f19603f3d011682016040523d82523d6000602084013e610e2c565b606091505b5050905080610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f74696e792064696e6f733a204661696c656420746f207769746864726177204560448201527f746865720000000000000000000000000000000000000000000000000000000060648201526084016106f7565b5050565b610c0b83838360405180602001604052806000815250611404565b60005473ffffffffffffffffffffffffffffffffffffffff163314610f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f7565b8051610ebc90600b906020840190612a31565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610911576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016106f7565b60038160ff16106110b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f74696e792064696e6f733a204d61782032204e46547320706572207472616e7360448201527f616374696f6e000000000000000000000000000000000000000000000000000060648201526084016106f7565b600d548160ff16600c546110c891906132f3565b1115611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f74696e792064696e6f733a204d696e74206578636565647320737570706c790060448201526064016106f7565b61114d33600c600081546111439061330b565b91829055506121fa565b8060ff166002141561116c5761116c33600c600081546111439061330b565b50565b600073ffffffffffffffffffffffffffffffffffffffff8216611214576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016106f7565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b60005473ffffffffffffffffffffffffffffffffffffffff1633146112be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f7565b6112c86000612214565b565b600960205260009081526040902080546112e39061317a565b80601f016020809104026020016040519081016040528092919081815260200182805461130f9061317a565b801561135c5780601f106113315761010080835404028352916020019161135c565b820191906000526020600020905b81548152906001019060200180831161133f57829003601f168201915b505050505081565b60005473ffffffffffffffffffffffffffffffffffffffff1633146113e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f7565b600e55565b6060600280546109269061317a565b610ebc338383612289565b61140e3383611e23565b61149a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016106f7565b61082c848484846123b7565b60008181526003602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016106f7565b600061156461245a565b9050600081511161158457604051806020016040528060008152506115af565b8061158e84612469565b60405160200161159f929190613344565b6040516020818303038152906040525b9392505050565b6115bf81610f6f565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f596f75206d757374206f776e2074686520746f6b656e20746f2074726176657260448201527f736500000000000000000000000000000000000000000000000000000000000060648201526084016106f7565b61ffff8216600090815260096020526040812080546116979061317a565b905011611726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f5468697320636861696e2069732063757272656e746c7920756e617661696c6160448201527f626c6520666f722074726176656c00000000000000000000000000000000000060648201526084016106f7565b61172f8161259b565b60408051336020820152808201839052815180820383018152606082018352600e547e0100000000000000000000000000000000000000000000000000000000000060808401526082808401919091528351808403909101815260a28301938490526007547f40a7bb1000000000000000000000000000000000000000000000000000000000909452909260019260009173ffffffffffffffffffffffffffffffffffffffff16906340a7bb10906117f3908990309089908790899060a601613373565b6040805180830381865afa15801561180f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183391906133d2565b509050803410156118ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604f60248201527f74696e792064696e6f733a206d73672e76616c7565206e6f7420656e6f75676860448201527f20746f20636f766572206d6573736167654665652e2053656e6420676173206660648201527f6f72206d65737361676520666565730000000000000000000000000000000000608482015260a4016106f7565b60075461ffff871660009081526009602052604080822090517fc580310000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169263c580310092349261195e928c928b913391908b906004016133f6565b6000604051808303818588803b15801561197757600080fd5b505af115801561198b573d6000803e3d6000fd5b5050505050505050505050565b61ffff851660009081526008602052604080822090516119b99087906132a8565b908152604080516020928190038301902067ffffffffffffffff87166000908152925290206001810154909150611a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60448201527f657373616765000000000000000000000000000000000000000000000000000060648201526084016106f7565b805482148015611a9c575080600101548383604051611a9292919061350e565b6040518091039020145b611b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4c617965725a65726f3a20696e76616c6964207061796c6f616400000000000060448201526064016106f7565b600080825560018201556040517f1c37a8220000000000000000000000000000000000000000000000000000000081523090631c37a82290611b50908990899089908990899060040161351e565b600060405180830381600087803b158015611b6a57600080fd5b505af1158015611b7e573d6000803e3d6000fd5b50505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f7565b61ffff8316600090815260096020526040902061082c908383612ab5565b60005473ffffffffffffffffffffffffffffffffffffffff163314611caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106f7565b73ffffffffffffffffffffffffffffffffffffffff8116611d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106f7565b61116c81612214565b600081815260056020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190611db082610f6f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008082806020019051810190611e0d919061359e565b91509150611e1b82826121fa565b505050505050565b60008181526003602052604081205473ffffffffffffffffffffffffffffffffffffffff16611ed4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016106f7565b6000611edf83610f6f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f4e57508373ffffffffffffffffffffffffffffffffffffffff16611f36846109a9565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f8b575073ffffffffffffffffffffffffffffffffffffffff80821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16611fb382610f6f565b73ffffffffffffffffffffffffffffffffffffffff1614612056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e000000000000000000000000000000000000000000000060648201526084016106f7565b73ffffffffffffffffffffffffffffffffffffffff82166120f8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106f7565b612103600082611d56565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081208054600192906121399084906135cc565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081208054600192906121749084906132f3565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610ebc828260405180602001604052806000815250612668565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561231f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016106f7565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6123c2848484611f93565b6123ce8484848461270b565b61082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106f7565b6060600b80546109269061317a565b6060816124a957505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156124d357806124bd8161330b565b91506124cc9050600a83613612565b91506124ad565b60008167ffffffffffffffff8111156124ee576124ee612b73565b6040519080825280601f01601f191660200182016040528015612518576020820181803683370190505b5090505b8415611f8b5761252d6001836135cc565b915061253a600a86613626565b6125459060306132f3565b60f81b81838151811061255a5761255a61363a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612594600a86613612565b945061251c565b60006125a682610f6f565b90506125b3600083611d56565b73ffffffffffffffffffffffffffffffffffffffff811660009081526004602052604081208054600192906125e99084906135cc565b909155505060008281526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b61267283836128fb565b61267f600084848461270b565b610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106f7565b600073ffffffffffffffffffffffffffffffffffffffff84163b156128f0576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290612782903390899088908890600401613669565b6020604051808303816000875af19250505080156127db575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526127d8918101906136b2565b60015b6128a5573d808015612809576040519150601f19603f3d011682016040523d82523d6000602084013e61280e565b606091505b50805161289d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016106f7565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611f8b565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216612978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016106f7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604081208054600192906129ae9084906132f3565b909155505060008181526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054612a3d9061317a565b90600052602060002090601f016020900481019282612a5f5760008555612aa5565b82601f10612a7857805160ff1916838001178555612aa5565b82800160010185558215612aa5579182015b82811115612aa5578251825591602001919060010190612a8a565b50612ab1929150612b47565b5090565b828054612ac19061317a565b90600052602060002090601f016020900481019282612ae35760008555612aa5565b82601f10612b1a578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555612aa5565b82800160010185558215612aa5579182015b82811115612aa5578235825591602001919060010190612b2c565b5b80821115612ab15760008155600101612b48565b803561ffff81168114612b6e57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115612bbd57612bbd612b73565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612c0357612c03612b73565b81604052809350858152868686011115612c1c57600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612c4757600080fd5b6115af83833560208501612ba2565b803567ffffffffffffffff81168114612b6e57600080fd5b60008060008060808587031215612c8457600080fd5b612c8d85612b5c565b9350602085013567ffffffffffffffff80821115612caa57600080fd5b612cb688838901612c36565b9450612cc460408801612c56565b93506060870135915080821115612cda57600080fd5b50612ce787828801612c36565b91505092959194509250565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461116c57600080fd5b600060208284031215612d3357600080fd5b81356115af81612cf3565b60005b83811015612d59578181015183820152602001612d41565b8381111561082c5750506000910152565b60008151808452612d82816020860160208601612d3e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006115af6020830184612d6a565b600060208284031215612dd957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461116c57600080fd5b60008060408385031215612e1557600080fd5b8235612e2081612de0565b946020939093013593505050565b600080600060608486031215612e4357600080fd5b8335612e4e81612de0565b92506020840135612e5e81612de0565b929592945050506040919091013590565b600060208284031215612e8157600080fd5b813567ffffffffffffffff811115612e9857600080fd5b8201601f81018413612ea957600080fd5b611f8b84823560208401612ba2565b600060208284031215612eca57600080fd5b813560ff811681146115af57600080fd5b600060208284031215612eed57600080fd5b81356115af81612de0565b600060208284031215612f0a57600080fd5b6115af82612b5c565b600080600060608486031215612f2857600080fd5b612f3184612b5c565b9250602084013567ffffffffffffffff811115612f4d57600080fd5b612f5986828701612c36565b925050604084013590509250925092565b60008060408385031215612f7d57600080fd5b8235612f8881612de0565b915060208301358015158114612f9d57600080fd5b809150509250929050565b60008060008060808587031215612fbe57600080fd5b8435612fc981612de0565b93506020850135612fd981612de0565b925060408501359150606085013567ffffffffffffffff811115612ffc57600080fd5b612ce787828801612c36565b6000806040838503121561301b57600080fd5b612e2083612b5c565b60008083601f84011261303657600080fd5b50813567ffffffffffffffff81111561304e57600080fd5b60208301915083602082850101111561306657600080fd5b9250929050565b60008060008060006080868803121561308557600080fd5b61308e86612b5c565b9450602086013567ffffffffffffffff808211156130ab57600080fd5b6130b789838a01612c36565b95506130c560408901612c56565b945060608801359150808211156130db57600080fd5b506130e888828901613024565b969995985093965092949392505050565b6000806040838503121561310c57600080fd5b823561311781612de0565b91506020830135612f9d81612de0565b60008060006040848603121561313c57600080fd5b61314584612b5c565b9250602084013567ffffffffffffffff81111561316157600080fd5b61316d86828701613024565b9497909650939450505050565b600181811c9082168061318e57607f821691505b602082108114156131c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008083546131dc8161317a565b600182811680156131f4576001811461322357613252565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00841687528287019450613252565b8760005260208060002060005b858110156132495781548a820152908401908201613230565b50505082870194505b50929695505050505050565b61ffff8516815260806020820152600061327b6080830186612d6a565b67ffffffffffffffff85166040840152828103606084015261329d8185612d6a565b979650505050505050565b600082516132ba818460208701612d3e565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613306576133066132c4565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561333d5761333d6132c4565b5060010190565b60008351613356818460208801612d3e565b83519083019061336a818360208801612d3e565b01949350505050565b61ffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015260a0604082015260006133ac60a0830186612d6a565b841515606084015282810360808401526133c68185612d6a565b98975050505050505050565b600080604083850312156133e557600080fd5b505080516020909101519092909150565b61ffff871681526000602060c081840152600088546134148161317a565b8060c087015260e0600180841660008114613436576001811461346957613497565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008516838a015261010089019550613497565b8d6000528660002060005b8581101561348f5781548b8201860152908301908801613474565b8a0184019650505b505050505083810360408501526134ae8189612d6a565b9150506134d3606084018773ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff8516608084015282810360a08401526135018185612d6a565b9998505050505050505050565b8183823760009101908152919050565b61ffff8616815260806020820152600061353b6080830187612d6a565b67ffffffffffffffff8616604084015282810360608401528381528385602083013760006020858301015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601168201019150509695505050505050565b600080604083850312156135b157600080fd5b82516135bc81612de0565b6020939093015192949293505050565b6000828210156135de576135de6132c4565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613621576136216135e3565b500490565b600082613635576136356135e3565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526136a86080830184612d6a565b9695505050505050565b6000602082840312156136c457600080fd5b81516115af81612cf356fea264697066735822122085c093523ba212a9261fda2d2f62266f661b5acc4b95d3fbb32602965137d25864736f6c634300080b003300000000000000000000000000000000000000000000000000000000000000400000000000000000000000003c2269811836af69497e5f486a85d7316753cf6200000000000000000000000000000000000000000000000000000000000000046e756c6c00000000000000000000000000000000000000000000000000000000