[ { "inputs": [ { "internalType": "address", "name": "_initialOwner", "type": "address" }, { "internalType": "string", "name": "_baseUri", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [], "name": "InvalidName", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "node", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "addr", "type": "address" } ], "name": "AddressChanged", "type": "event" }, { "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": true, "internalType": "uint256", "name": "node", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "avatar", "type": "string" } ], "name": "AvatarChanged", "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": true, "internalType": "uint256", "name": "node", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "name", "type": "string" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "addr", "type": "address" }, { "indexed": false, "internalType": "string", "name": "avatar", "type": "string" } ], "name": "Registered", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "node", "type": "uint256" } ], "name": "addr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" } ], "name": "addrByName", "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": "string", "name": "name", "type": "string" } ], "name": "available", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "node", "type": "uint256" } ], "name": "avatar", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" } ], "name": "avatarByName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseUri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "string", "name": "name", "type": "string" } ], "name": "hashName", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "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": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "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": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "node", "type": "uint256" } ], "name": "recordExists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "string", "name": "avatar", "type": "string" } ], "name": "register", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "uint256", "name": "node", "type": "uint256" }, { "internalType": "address", "name": "addr", "type": "address" } ], "name": "setAddr", "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": "_baseUri", "type": "string" } ], "name": "setBaseURI", "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "node", "type": "uint256" }, { "internalType": "string", "name": "avatar", "type": "string" } ], "name": "updateAvatar", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "node", "type": "uint256" }, { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "string", "name": "avatar", "type": "string" } ], "name": "updateRecords", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162002aef38038062002aef833981016040819052620000349162000162565b81604051806040016040528060088152602001675465616d4e69636b60c01b815250604051806040016040528060048152602001634e49434b60e01b8152508160009081620000849190620002e7565b506001620000938282620002e7565b50506006805460ff19169055506001600160a01b038116620000cf57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b620000da81620000f2565b506009620000e98282620002e7565b505050620003b3565b600680546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200017657600080fd5b82516001600160a01b03811681146200018e57600080fd5b602084810151919350906001600160401b0380821115620001ae57600080fd5b818601915086601f830112620001c357600080fd5b815181811115620001d857620001d86200014c565b604051601f8201601f19908116603f011681019083821181831017156200020357620002036200014c565b8160405282815289868487010111156200021c57600080fd5b600093505b8284101562000240578484018601518185018701529285019262000221565b60008684830101528096505050505050509250929050565b600181811c908216806200026d57607f821691505b6020821081036200028e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002e257600081815260208120601f850160051c81016020861015620002bd5750805b601f850160051c820191505b81811015620002de57828155600101620002c9565b5050505b505050565b81516001600160401b038111156200030357620003036200014c565b6200031b8162000314845462000258565b8462000294565b602080601f8311600181146200035357600084156200033a5750858301515b600019600386901b1c1916600185901b178555620002de565b600085815260208120601f198616915b82811015620003845788860151825594840194600190910190840162000363565b5085821015620003a35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61272c80620003c36000396000f3fe608060405234801561001057600080fd5b506004361061020a5760003560e01c80638456cb591161012a578063c87b56dd116100bd578063ee52a5041161008c578063fdfd1e0511610071578063fdfd1e0514610492578063fdffba0e146104a5578063ffa18649146104dd57600080fd5b8063ee52a5041461046c578063f2fde38b1461047f57600080fd5b8063c87b56dd146103ea578063e985e9c5146103fd578063e9d0810714610446578063eba36dbd1461045957600080fd5b8063a22cb465116100f9578063a22cb4651461039e578063aeb8ce9b146103b1578063af9a3f9b146103c4578063b88d4fde146103d757600080fd5b80638456cb59146103635780638da5cb5b1461036b57806395d89b411461038e5780639abc83201461039657600080fd5b806342842e0e116101a25780635e5741f5116101715780635e5741f5146103225780636352211e1461033557806370a0823114610348578063715018a61461035b57600080fd5b806342842e0e146102de57806355f804b3146102f15780635c2368ce146103045780635c975abb1461031757600080fd5b8063095ea7b3116101de578063095ea7b31461029957806318160ddd146102ac57806323b872dd146102c35780633f4ba83a146102d657600080fd5b806295ce971461020f57806301ffc9a71461022457806306fdde031461024c578063081812fc14610261575b600080fd5b61022261021d366004611d69565b610513565b005b610237610232366004611de3565b6105eb565b60405190151581526020015b60405180910390f35b6102546106d0565b6040516102439190611e6e565b61027461026f366004611e81565b610762565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610243565b6102226102a7366004611ec3565b610798565b6102b560085481565b604051908152602001610243565b6102226102d1366004611eed565b6107a7565b61022261089d565b6102226102ec366004611eed565b6108af565b6102226102ff366004611fec565b6108cf565b610222610312366004612035565b6108e3565b60065460ff16610237565b610254610330366004611e81565b61097a565b610274610343366004611e81565b610a1f565b6102b561035636600461208f565b610a2a565b610222610aa5565b610222610ab7565b600654610100900473ffffffffffffffffffffffffffffffffffffffff16610274565b610254610ac7565b610254610ad6565b6102226103ac3660046120aa565b610b64565b6102376103bf3660046120e6565b610b6f565b6102b56103d23660046120e6565b610b97565b6102226103e5366004612128565b610be9565b6102546103f8366004611e81565b610c00565b61023761040b3660046121a4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b6102546104543660046120e6565b610c68565b6102226104673660046121d7565b610d1d565b61027461047a3660046120e6565b610da2565b61022261048d36600461208f565b610ddc565b6102226104a03660046121fa565b610e40565b6102376104b3366004611e81565b60009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16151590565b6102746104eb366004611e81565b60009081526007602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b82336105418260009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461058e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526007602052604090206001016105aa83858361232f565b50837f1cae4430a086ba6075ad9662b8ca9efb664ccad4e4f59d718e5fb2ef64f28e1484846040516105dd929190612492565b60405180910390a250505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061067e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806106ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060600080546106df9061228e565b80601f016020809104026020016040519081016040528092919081815260200182805461070b9061228e565b80156107585780601f1061072d57610100808354040283529160200191610758565b820191906000526020600020905b81548152906001019060200180831161073b57829003601f168201915b5050505050905090565b600061076d82610f78565b5060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff166106ca565b6107a3828233610fd7565b5050565b73ffffffffffffffffffffffffffffffffffffffff82166107fc576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b6000610809838333610fe4565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610897576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015260248201849052821660448201526064016107f3565b50505050565b6108a561102b565b6108ad611084565b565b6108ca83838360405180602001604052806000815250610be9565b505050565b6108d761102b565b60096107a382826124a6565b83336109118260009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff161461095e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109688585610d1d565b610973858484610513565b5050505050565b600081815260076020526040902060010180546060919061099a9061228e565b80601f01602080910402602001604051908101604052809291908181526020018280546109c69061228e565b8015610a135780601f106109e857610100808354040283529160200191610a13565b820191906000526020600020905b8154815290600101906020018083116109f657829003601f168201915b50505050509050919050565b60006106ca82610f78565b600073ffffffffffffffffffffffffffffffffffffffff8216610a7c576040517f89c62b64000000000000000000000000000000000000000000000000000000008152600060048201526024016107f3565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b610aad61102b565b6108ad6000611101565b610abf61102b565b6108ad61117f565b6060600180546106df9061228e565b60098054610ae39061228e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0f9061228e565b8015610b5c5780601f10610b3157610100808354040283529160200191610b5c565b820191906000526020600020905b815481529060010190602001808311610b3f57829003601f168201915b505050505081565b6107a33383836111da565b60006002821015610b82575060006106ca565b610b8f6104b38484610b97565b159392505050565b60008282604051602001610bac9291906125c0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209392505050565b610bf48484846107a7565b610897848484846112d7565b6060610c0b82610f78565b506000610c166114c7565b90506000815111610c365760405180602001604052806000815250610c61565b80610c40846114d6565b604051602001610c519291906125d0565b6040516020818303038152906040525b9392505050565b60606000610c768484610b97565b6000818152600760205260409020600101805491925090610c969061228e565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc29061228e565b8015610d0f5780601f10610ce457610100808354040283529160200191610d0f565b820191906000526020600020905b815481529060010190602001808311610cf257829003601f168201915b505050505091505092915050565b8133610d4b8260009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610d98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108ca8383611594565b600080610daf8484610b97565b60009081526007602052604090205473ffffffffffffffffffffffffffffffffffffffff16949350505050565b610de461102b565b73ffffffffffffffffffffffffffffffffffffffff8116610e34576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016107f3565b610e3d81611101565b50565b6002851015610e7b576040517f430f13b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610e878787610b97565b9050610e938582611612565b600081815260076020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8616178155600101610eed83858361232f565b5060088054906000610efe836125ff565b91905055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16827fa2417ad91ea10f62ba5dab8135731088d98c6a3dbbcf6dad44eb1340fd1986a38a8a8888604051610f67949392919061265e565b60405180910390a450505050505050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16806106ca576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018490526024016107f3565b6108ca838383600161162c565b60008281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611018576110188385611594565b6110238484846117f7565b949350505050565b60065473ffffffffffffffffffffffffffffffffffffffff6101009091041633146108ad576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016107f3565b61108c61180c565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6006805473ffffffffffffffffffffffffffffffffffffffff8381166101008181027fffffffffffffffffffffff0000000000000000000000000000000000000000ff85161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611187611848565b600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110d73390565b73ffffffffffffffffffffffffffffffffffffffff821661123f576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024016107f3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83163b15610897576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a029061134c903390889087908790600401612690565b6020604051808303816000875af19250505080156113a5575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526113a2918101906126d9565b60015b611434573d8080156113d3576040519150601f19603f3d011682016040523d82523d6000602084013e6113d8565b606091505b50805160000361142c576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016107f3565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014610973576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016107f3565b6060600980546106df9061228e565b606060006114e383611885565b600101905060008167ffffffffffffffff81111561150357611503611f29565b6040519080825280601f01601f19166020018201604052801561152d576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a850494508461153757509392505050565b60008281526007602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091559051909184917fa5d871c0e725767cd5aefc99c53aeca35f09dcc268145cbb13b74a7e2f48f1969190a35050565b6107a3828260405180602001604052806000815250611967565b808061164d575073ffffffffffffffffffffffffffffffffffffffff821615155b156117a257600061165d84610f78565b905073ffffffffffffffffffffffffffffffffffffffff8316158015906116b057508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156116ef575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209387168352929052205460ff16155b1561173e576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024016107f3565b81156117a057838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000611801611848565b61102384848461197e565b60065460ff166108ad576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065460ff16156108ad576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106118ce577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106118fa576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061191857662386f26fc10000830492506010015b6305f5e1008310611930576305f5e100830492506008015b612710831061194457612710830492506004015b60648310611956576064830492506002015b600a83106106ca5760010192915050565b6119718383611afb565b6108ca60008484846112d7565b60008281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff908116908316156119b8576119b8818486611bac565b73ffffffffffffffffffffffffffffffffffffffff811615611a2e576119e260008560008061162c565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff851615611a775773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b73ffffffffffffffffffffffffffffffffffffffff8216611b4b576040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600060048201526024016107f3565b6000611b5983836000610fe4565b905073ffffffffffffffffffffffffffffffffffffffff8116156108ca576040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600060048201526024016107f3565b611bb7838383611c5c565b6108ca5773ffffffffffffffffffffffffffffffffffffffff8316611c0b576040517f7e273289000000000000000000000000000000000000000000000000000000008152600481018290526024016107f3565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602481018290526044016107f3565b600073ffffffffffffffffffffffffffffffffffffffff83161580159061102357508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611cea575073ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352929052205460ff165b8061102357505060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff908116911614919050565b60008083601f840112611d3257600080fd5b50813567ffffffffffffffff811115611d4a57600080fd5b602083019150836020828501011115611d6257600080fd5b9250929050565b600080600060408486031215611d7e57600080fd5b83359250602084013567ffffffffffffffff811115611d9c57600080fd5b611da886828701611d20565b9497909650939450505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610e3d57600080fd5b600060208284031215611df557600080fd5b8135610c6181611db5565b60005b83811015611e1b578181015183820152602001611e03565b50506000910152565b60008151808452611e3c816020860160208601611e00565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610c616020830184611e24565b600060208284031215611e9357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ebe57600080fd5b919050565b60008060408385031215611ed657600080fd5b611edf83611e9a565b946020939093013593505050565b600080600060608486031215611f0257600080fd5b611f0b84611e9a565b9250611f1960208501611e9a565b9150604084013590509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115611f7357611f73611f29565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611fb957611fb9611f29565b81604052809350858152868686011115611fd257600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611ffe57600080fd5b813567ffffffffffffffff81111561201557600080fd5b8201601f8101841361202657600080fd5b61102384823560208401611f58565b6000806000806060858703121561204b57600080fd5b8435935061205b60208601611e9a565b9250604085013567ffffffffffffffff81111561207757600080fd5b61208387828801611d20565b95989497509550505050565b6000602082840312156120a157600080fd5b610c6182611e9a565b600080604083850312156120bd57600080fd5b6120c683611e9a565b9150602083013580151581146120db57600080fd5b809150509250929050565b600080602083850312156120f957600080fd5b823567ffffffffffffffff81111561211057600080fd5b61211c85828601611d20565b90969095509350505050565b6000806000806080858703121561213e57600080fd5b61214785611e9a565b935061215560208601611e9a565b925060408501359150606085013567ffffffffffffffff81111561217857600080fd5b8501601f8101871361218957600080fd5b61219887823560208401611f58565b91505092959194509250565b600080604083850312156121b757600080fd5b6121c083611e9a565b91506121ce60208401611e9a565b90509250929050565b600080604083850312156121ea57600080fd5b823591506121ce60208401611e9a565b6000806000806000806080878903121561221357600080fd5b863567ffffffffffffffff8082111561222b57600080fd5b6122378a838b01611d20565b909850965086915061224b60208a01611e9a565b955061225960408a01611e9a565b9450606089013591508082111561226f57600080fd5b5061227c89828a01611d20565b979a9699509497509295939492505050565b600181811c908216806122a257607f821691505b6020821081036122db577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b601f8211156108ca57600081815260208120601f850160051c810160208610156123085750805b601f850160051c820191505b8181101561232757828155600101612314565b505050505050565b67ffffffffffffffff83111561234757612347611f29565b61235b83612355835461228e565b836122e1565b6000601f8411600181146123ad57600085156123775750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610973565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156123fc57868501358255602094850194600190920191016123dc565b5086821015612437577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b602081526000611023602083018486612449565b815167ffffffffffffffff8111156124c0576124c0611f29565b6124d4816124ce845461228e565b846122e1565b602080601f83116001811461252757600084156124f15750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612327565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b8281101561257457888601518255948401946001909101908401612555565b50858210156125b057878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b8183823760009101908152919050565b600083516125e2818460208801611e00565b8351908301906125f6818360208801611e00565b01949350505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612657577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b604081526000612672604083018688612449565b8281036020840152612685818587612449565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526126cf6080830184611e24565b9695505050505050565b6000602082840312156126eb57600080fd5b8151610c6181611db556fea2646970667358221220f9eaa4bcdf36de47e37250f8cdfcb63d1bfd137783f21e7886cf408d973d675164736f6c63430008150033000000000000000000000000534631bcf33bdb069fb20a93d2fdb9e4d4dd42cf0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f7465616d6e69636b2e78797a2f6e66742f00000000000000