Loading
[ { "inputs": [ { "internalType": "string", "name": "startDefaultBaseUri", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "BaseUriCantBeNull", "type": "error" }, { "inputs": [], "name": "CallerNotOwner", "type": "error" }, { "inputs": [], "name": "CantApproveStories", "type": "error" }, { "inputs": [], "name": "CantCreateStoryOfStory", "type": "error" }, { "inputs": [], "name": "CantTransferCloprStories", "type": "error" }, { "inputs": [], "name": "DontOwnNft", "type": "error" }, { "inputs": [], "name": "DontOwnStory", "type": "error" }, { "inputs": [], "name": "InvalidDelegateVaultPairing", "type": "error" }, { "inputs": [], "name": "NeedDifferentTokenIds", "type": "error" }, { "inputs": [], "name": "NotAuthorised", "type": "error" }, { "inputs": [], "name": "NotErc721Contract", "type": "error" }, { "inputs": [], "name": "StoryDoesntExist", "type": "error" }, { "inputs": [], "name": "StoryNotCompleted", "type": "error" }, { "inputs": [], "name": "TokenAlreadyOwned", "type": "error" }, { "inputs": [], "name": "UNFTDoesntExist", "type": "error" }, { "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": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "nftContractAddress", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "nftTokenId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "storyTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "bottleTokenId", "type": "uint256" } ], "name": "CreateStory", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "burnedTokenId", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "extendedTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint24", "name": "newMaxLength", "type": "uint24" } ], "name": "ExtendStory", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "newDefaultBaseUri", "type": "string" } ], "name": "NewDefaultBaseUri", "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": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "SetImmutableTokenURI", "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "STORY_POTION_ID", "outputs": [ { "internalType": "uint16", "name": "", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "burnedTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "extendedTokenId", "type": "uint256" }, { "internalType": "address", "name": "burnVault", "type": "address" }, { "internalType": "address", "name": "extendVault", "type": "address" } ], "name": "burnAndGrowStory", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newDefaultBaseUri", "type": "string" } ], "name": "changeDefaultBaseUri", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "bottleTokenId", "type": "uint256" }, { "internalType": "contract IERC721", "name": "nftContractAddress", "type": "address" }, { "internalType": "uint256", "name": "nftTokenId", "type": "uint256" }, { "internalType": "address", "name": "vault", "type": "address" } ], "name": "createStory", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getMaxStoryLength", "outputs": [ { "internalType": "uint256", "name": "maxStoryLength", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getStoryInformation", "outputs": [ { "internalType": "contract IERC721", "name": "unftContract", "type": "address" }, { "internalType": "uint256", "name": "unftTokenId", "type": "uint256" }, { "internalType": "uint256", "name": "storyLength", "type": "uint256" }, { "internalType": "uint24", "name": "maxStoryLength", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getStoryLength", "outputs": [ { "internalType": "uint256", "name": "storyLength", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getUnft", "outputs": [ { "internalType": "contract IERC721", "name": "unftContract", "type": "address" }, { "internalType": "uint256", "name": "unftTokenId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getUnftContract", "outputs": [ { "internalType": "contract IERC721", "name": "unftContract", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getUnftTokenId", "outputs": [ { "internalType": "uint256", "name": "unftTokenId", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "offchainMetadataUpdate", "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": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "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": "", "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": "", "type": "address" }, { "internalType": "bool", "name": "", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "metadataUri", "type": "string" }, { "internalType": "bytes", "name": "signature", "type": "bytes" }, { "internalType": "address", "name": "vault", "type": "address" } ], "name": "setImmutableTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "supports_", "type": "bool" } ], "stateMutability": "pure", "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": "tokenURI_", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "currentSupply_", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "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" } ]
60806040523480156200001157600080fd5b506040516200515c3803806200515c83398101604081905262000034916200023d565b6040518060400160405280600c81526020016b436c6f707253746f7269657360a01b8152506040518060400160405280600481526020016321a9aa2960e11b8152508160009081620000879190620003a1565b506001620000968282620003a1565b505050620000b3620000ad6200012c60201b60201c565b62000130565b8051600003620000d65760405163d7b3541960e01b815260040160405180910390fd5b6009620000e48282620003a1565b5062000106600073799b7627f972dcf97b00bbbc702b2ad1b754651962000182565b6200012573799b7627f972dcf97b00bbbc702b2ad1b754651962000130565b506200046d565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526007602090815260408083206001600160a01b038516845290915290205460ff16620002235760008281526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001e23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200025157600080fd5b82516001600160401b03808211156200026957600080fd5b818501915085601f8301126200027e57600080fd5b81518181111562000293576200029362000227565b604051601f8201601f19908116603f01168101908382118183101715620002be57620002be62000227565b816040528281528886848701011115620002d757600080fd5b600093505b82841015620002fb5784840186015181850187015292850192620002dc565b600086848301015280965050505050505092915050565b600181811c908216806200032757607f821691505b6020821081036200034857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200039c57600081815260208120601f850160051c81016020861015620003775750805b601f850160051c820191505b81811015620003985782815560010162000383565b5050505b505050565b81516001600160401b03811115620003bd57620003bd62000227565b620003d581620003ce845462000312565b846200034e565b602080601f8311600181146200040d5760008415620003f45750858301515b600019600386901b1c1916600185901b17855562000398565b600085815260208120601f198616915b828110156200043e578886015182559484019460019091019084016200041d565b50858210156200045d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b614cdf806200047d6000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806370a0823111610145578063a22cb465116100bd578063d547741f1161008c578063f1e11f1311610071578063f1e11f13146105da578063f2fde38b146105ed578063fb9fb19c1461060057600080fd5b8063d547741f1461057e578063e985e9c51461059157600080fd5b8063a22cb46514610537578063b79b085f14610545578063b88d4fde14610558578063c87b56dd1461056b57600080fd5b80638da5cb5b11610114578063953bc072116100f9578063953bc0721461051457806395d89b4114610527578063a217fddf1461052f57600080fd5b80638da5cb5b146104b057806391d14854146104ce57600080fd5b806370a082311461042b578063715018a61461043e5780637c1c752814610446578063813a9a491461049557600080fd5b80632aa287d6116101d857806342966c68116101a757806353dd8dad1161018c57806353dd8dad146103fd5780636352211e14610405578063644c59251461041857600080fd5b806342966c68146103d75780634c25ab66146103ea57600080fd5b80632aa287d61461038b5780632f2ff15d1461039e57806336568abe146103b157806342842e0e146103c457600080fd5b80630ed49e091161022f57806323b872dd1161021457806323b872dd14610316578063248a9ca31461032957806327eea0b61461034c57600080fd5b80630ed49e09146102eb57806318160ddd146102fe57600080fd5b806301ffc9a71461026157806306fdde0314610289578063081812fc1461029e578063095ea7b3146102d6575b600080fd5b61027461026f36600461421a565b610613565b60405190151581526020015b60405180910390f35b61029161076f565b60405161028091906142a5565b6102b16102ac3660046142b8565b610801565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610280565b6102e96102e43660046142f3565b610835565b005b6102e96102f9366004614361565b610867565b60085463ffffffff165b604051908152602001610280565b6102e96103243660046143ed565b610cf0565b6103086103373660046142b8565b60009081526007602052604090206001015490565b61035f61035a3660046142b8565b610de6565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610280565b6102b16103993660046142b8565b610f34565b6102e96103ac36600461442e565b611076565b6102e96103bf36600461442e565b6110a0565b6102e96103d23660046143ed565b611158565b6102e96103e53660046142b8565b611173565b6102e96103f8366004614521565b61121c565b6102e96112ff565b6102b16104133660046142b8565b611362565b6103086104263660046142b8565b611589565b61030861043936600461456a565b6116c8565b6102e9611796565b6104596104543660046142b8565b6117aa565b6040805173ffffffffffffffffffffffffffffffffffffffff909516855260208501939093529183015262ffffff166060820152608001610280565b61049d602a81565b60405161ffff9091168152602001610280565b60065473ffffffffffffffffffffffffffffffffffffffff166102b1565b6102746104dc36600461442e565b600091825260076020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6102e9610522366004614587565b611925565b610291611edb565b610308600081565b6102e96102e43660046145df565b6103086105533660046142b8565b611eea565b6102e961056636600461460d565b612031565b6102916105793660046142b8565b612129565b6102e961058c36600461442e565b612200565b61027461059f36600461468d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b6103086105e83660046142b8565b612225565b6102e96105fb36600461456a565b61237c565b6102e961060e3660046146bb565b612433565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806106a657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b806106f257507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061073e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000145b8061076957507fffffffff000000000000000000000000000000000000000000000000000000008216155b92915050565b60606000805461077e906146fa565b80601f01602080910402602001604051908101604052809291908181526020018280546107aa906146fa565b80156107f75780601f106107cc576101008083540402835291602001916107f7565b820191906000526020600020905b8154815290600101906020018083116107da57829003601f168201915b5050505050905090565b600061080c82612c91565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6040517f4566affd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000868152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff16606082015260028201805491929160808401919061090f906146fa565b80601f016020809104026020016040519081016040528092919081815260200182805461093b906146fa565b80156109885780601f1061095d57610100808354040283529160200191610988565b820191906000526020600020905b81548152906001019060200180831161096b57829003601f168201915b50505091909252509192503391505073ffffffffffffffffffffffffffffffffffffffff831615610ab157602082015182516040517fb9f3687400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff808716602483015290921660448301526064820152600060848201819052906c447e69651d841bd8d104bed4939063b9f368749060a401602060405180830381865afa158015610a4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a739190614747565b905080610aac576040517f17911d0500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b839150505b816040015165ffffffffffff16421015610af7576040517fbdb6042200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610b1789611362565b73ffffffffffffffffffffffffffffffffffffffff1614610b64576040517ffc0e123000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610be28989898660600151600b60008f815260200190815260200160002054604051602001610b99959493929190614764565b604051602081830303815290604052805190602001207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b9050610c487f5fd82e5b1df0d1f1ae443b07283c1e51d49e8928809488c642626c35a63050b76104dc8389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612d1c92505050565b610c7e576040517f1648fd0100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000898152600a60205260409020600201610c9a888a836147fb565b506000898152600b60205260408120805491610cb583614944565b909155505060405189907f906b50093ec8a05832bc1b9ef721ddbfe8198db519c9bb3e5befd2fbfdf61e6090600090a2505050505050505050565b6000610cfb82611362565b90506000610d0883612d40565b90508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610d6f576040517fd8ee571b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd4576040517f792877fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ddf818385612dcc565b5050505050565b6000818152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff16606082015260028201805484938493929091608084019190610e92906146fa565b80601f0160208091040260200160405190810160405280929190818152602001828054610ebe906146fa565b8015610f0b5780601f10610ee057610100808354040283529160200191610f0b565b820191906000526020600020905b815481529060010190602001808311610eee57829003601f168201915b5050505050815250509050610f2381602001516130c7565b602081015190519094909350915050565b6000818152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff1660608201526002820180548493916080840191610fdb906146fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611007906146fa565b80156110545780601f1061102957610100808354040283529160200191611054565b820191906000526020600020905b81548152906001019060200180831161103757829003601f168201915b505050505081525050905061106c81602001516130c7565b6020015192915050565b60008281526007602052604090206001015461109181613114565b61109b838361311e565b505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6111548282613212565b5050565b61109b83838360405180602001604052806000815250612031565b3361117d82611362565b73ffffffffffffffffffffffffffffffffffffffff16146111ca576040517f5cd8319200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111d3816132cd565b6000818152600a602052604081208181556001810180547fffffff00000000000000000000000000000000000000000000000000000000001690559061109b600283018261419e565b6112246133a5565b805160000361125f576040517fd7b3541900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600961126b828261497c565b507f4b65b0dd022426eb56c094dc9bff3641187282bf1889549d0a4f020f5c74e0c38160405161129b91906142a5565b60405180910390a160408051600181527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208201527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910160405180910390a150565b6113076133a5565b60408051600181527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208201527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c910160405180910390a1565b6000818152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff1660608201526002820180548493916080840191611409906146fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611435906146fa565b80156114825780601f1061145757610100808354040283529160200191611482565b820191906000526020600020905b81548152906001019060200180831161146557829003601f168201915b505050505081525050905061149a81602001516130c7565b602081015181516040517f6352211e000000000000000000000000000000000000000000000000000000008152600481019190915260009173ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa15801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190614a96565b905073ffffffffffffffffffffffffffffffffffffffff8116611582576040517ff273badc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b6000818152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff1660608201526002820180548493916080840191611630906146fa565b80601f016020809104026020016040519081016040528092919081815260200182805461165c906146fa565b80156116a95780601f1061167e576101008083540402835291602001916116a9565b820191906000526020600020905b81548152906001019060200180831161168c57829003601f168201915b50505050508152505090506116c181602001516130c7565b5192915050565b600073ffffffffffffffffffffffffffffffffffffffff821661176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401611141565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b61179e6133a5565b6117a86000613426565b565b6000818152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff166060820152600282018054849384938493849391929160808401919061185a906146fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611886906146fa565b80156118d35780601f106118a8576101008083540402835291602001916118d3565b820191906000526020600020905b8154815290600101906020018083116118b657829003601f168201915b50505050508152505090506118eb81602001516130c7565b6020810151815160608301516040840151929750909550925061191b9065ffffffffffff1662ffffff841661349d565b9250509193509193565b3073ffffffffffffffffffffffffffffffffffffffff841603611974576040517f63d6ebf700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821615611a89576040517fb9f3687400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff80841660248301528516604482015260648101849052600060848201819052906c447e69651d841bd8d104bed4939063b9f368749060a401602060405180830381865afa158015611a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4b9190614747565b905080611a84576040517f17911d0500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b829150505b6040517f43964a9a00000000000000000000000000000000000000000000000000000000815260048101869052602a602482015273ffffffffffffffffffffffffffffffffffffffff8216604482015273b0711e51eef597fa03bff2cbfea3dc4d3c4f6906906343964a9a90606401600060405180830381600087803b158015611b1257600080fd5b505af1158015611b26573d6000803e3d6000fd5b505060088054600093509091508290611b449063ffffffff16614ab3565b91906101000a81548163ffffffff021916908363ffffffff160217905563ffffffff1690506040518060a001604052808581526020018673ffffffffffffffffffffffffffffffffffffffff168152602001426207e900611ba59190614ad6565b65ffffffffffff90811682526006602080840191909152604080518083018252600080825294820152858452600a825292839020845181559084015160018201805494860151606087015162ffffff167a010000000000000000000000000000000000000000000000000000027fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff9190951674010000000000000000000000000000000000000000027fffffffffffff000000000000000000000000000000000000000000000000000090961673ffffffffffffffffffffffffffffffffffffffff9093169290921794909417169190911790915560808201516002820190611cae908261497c565b50905050611cbc82826134c4565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f80ac58cd00000000000000000000000000000000000000000000000000000000600482015273ffffffffffffffffffffffffffffffffffffffff8616906301ffc9a790602401602060405180830381865afa158015611d46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6a9190614747565b611da0576040517fdf82a94e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff8084169190871690636352211e90602401602060405180830381865afa158015611e10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e349190614a96565b73ffffffffffffffffffffffffffffffffffffffff1614611e81576040517fc6d72fd400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80848673ffffffffffffffffffffffffffffffffffffffff167fd273fab127e1b446064eb4da5732a9957de61c9a8dc58fb47e1f79c687856b7a89604051611ecb91815260200190565b60405180910390a4505050505050565b60606001805461077e906146fa565b6000818152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff1660608201526002820180548493916080840191611f91906146fa565b80601f0160208091040260200160405190810160405280929190818152602001828054611fbd906146fa565b801561200a5780601f10611fdf5761010080835404028352916020019161200a565b820191906000526020600020905b815481529060010190602001808311611fed57829003601f168201915b505050505081525050905061202281602001516130c7565b6060015162ffffff1692915050565b600061203c83611362565b9050600061204984612d40565b90508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120b0576040517fd8ee571b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612115576040517f792877fd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612121818386866136e9565b505050505050565b606061213482612c91565b6000828152600a6020526040812060020180549091908290612155906146fa565b905011156121ee57808054612169906146fa565b80601f0160208091040260200160405190810160405280929190818152602001828054612195906146fa565b80156121e25780601f106121b7576101008083540402835291602001916121e2565b820191906000526020600020905b8154815290600101906020018083116121c557829003601f168201915b505050505091506121fa565b6121f783613792565b91505b50919050565b60008281526007602052604090206001015461221b81613114565b61109b8383613212565b6000818152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff16606082015260028201805484939160808401916122cc906146fa565b80601f01602080910402602001604051908101604052809291908181526020018280546122f8906146fa565b80156123455780601f1061231a57610100808354040283529160200191612345565b820191906000526020600020905b81548152906001019060200180831161232857829003601f168201915b505050505081525050905061235d81602001516130c7565b6121f7816040015165ffffffffffff16826060015162ffffff1661349d565b6123846133a5565b73ffffffffffffffffffffffffffffffffffffffff8116612427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401611141565b61243081613426565b50565b6000848152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff1660608201526002820180549192916080840191906124db906146fa565b80601f0160208091040260200160405190810160405280929190818152602001828054612507906146fa565b80156125545780601f1061252957610100808354040283529160200191612554565b820191906000526020600020905b81548152906001019060200180831161253757829003601f168201915b505050919092525050506000858152600a60209081526040808320815160a08101835281548152600182015473ffffffffffffffffffffffffffffffffffffffff81169482019490945274010000000000000000000000000000000000000000840465ffffffffffff16928101929092527a01000000000000000000000000000000000000000000000000000090920462ffffff166060820152600282018054949550929390926080840191612609906146fa565b80601f0160208091040260200160405190810160405280929190818152602001828054612635906146fa565b80156126825780601f1061265757610100808354040283529160200191612682565b820191906000526020600020905b81548152906001019060200180831161266557829003601f168201915b505050919092525091925033915081905073ffffffffffffffffffffffffffffffffffffffff8616156127ad57602084015184516040517fb9f3687400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff808a16602483015290921660448301526064820152600060848201819052906c447e69651d841bd8d104bed4939063b9f368749060a401602060405180830381865afa15801561274b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276f9190614747565b9050806127a8576040517f17911d0500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b869250505b73ffffffffffffffffffffffffffffffffffffffff8516156128c757602083015183516040517fb9f3687400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff808916602483015290921660448301526064820152600060848201819052906c447e69651d841bd8d104bed4939063b9f368749060a401602060405180830381865afa158015612865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128899190614747565b9050806128c2576040517f17911d0500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b859150505b868803612900576040517f574889a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661292088611362565b73ffffffffffffffffffffffffffffffffffffffff1614158061297757508173ffffffffffffffffffffffffffffffffffffffff1661295e89611362565b73ffffffffffffffffffffffffffffffffffffffff1614155b156129ae576040517ffc0e123000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008781526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16612a09576040517fb3b87d7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836040015165ffffffffffff16421080612a2e5750826040015165ffffffffffff1642105b15612a65576040517fbdb6042200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846060015184606001510190506040518060a0016040528085600001518152602001856020015173ffffffffffffffffffffffffffffffffffffffff1681526020018660600151620151800262ffffff16420165ffffffffffff1681526020018262ffffff1681526020018560800151815250600a60008a81526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff160217905550606082015181600101601a6101000a81548162ffffff021916908362ffffff1602179055506080820151816002019081612ba3919061497c565b5050506000898152600a602052604081208181556001810180547fffffff000000000000000000000000000000000000000000000000000000000016905590612bef600283018261419e565b50506000888152600a60205260408120612c0e9160029091019061419e565b612c17896132cd565b60405162ffffff8216815288908a907f7022d9e8aeb53ab04e80c9fdb1ea24b48cb921ae2899fe387d9fb9eddf5098699060200160405180910390a36040518881527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050505050505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401611141565b6000806000612d2b85856137f8565b91509150612d388161383d565b509392505050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610769576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401611141565b8273ffffffffffffffffffffffffffffffffffffffff16612dec82612d40565b73ffffffffffffffffffffffffffffffffffffffff1614612e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401611141565b73ffffffffffffffffffffffffffffffffffffffff8216612f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611141565b8273ffffffffffffffffffffffffffffffffffffffff16612f5182612d40565b73ffffffffffffffffffffffffffffffffffffffff1614612ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401611141565b600081815260046020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff8781168086526003855283862080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff8116612430576040517fb3b87d7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61243081336139f0565b600082815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661115457600082815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556131b43390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561115457600082815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006132d882612d40565b90506132e382612d40565b600083815260046020908152604080832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff85168085526003845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146117a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611141565b6006805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000824211156134ae575080610769565b620151804284036201517f010490910392915050565b73ffffffffffffffffffffffffffffffffffffffff8216613541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401611141565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156135cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401611141565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615613659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401611141565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6136f4848484612dcc565b61370084848484613aaa565b61378c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401611141565b50505050565b606061379d82612c91565b60006137a7613c9e565b905060008151116137c757604051806020016040528060008152506121f7565b806137d184613cad565b6040516020016137e2929190614ae9565b6040516020818303038152906040529392505050565b600080825160410361382e5760208301516040840151606085015160001a61382287828585613d6b565b94509450505050613836565b506000905060025b9250929050565b600081600481111561385157613851614b18565b036138595750565b600181600481111561386d5761386d614b18565b036138d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401611141565b60028160048111156138e8576138e8614b18565b0361394f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401611141565b600381600481111561396357613963614b18565b03612430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401611141565b600082815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661115457613a3081613e5a565b613a3b836020613e79565b604051602001613a4c929190614b47565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252611141916004016142a5565b600073ffffffffffffffffffffffffffffffffffffffff84163b15613c92576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290613b21903390899088908890600401614bc8565b6020604051808303816000875af1925050508015613b7a575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613b7791810190614c11565b60015b613c47573d808015613ba8576040519150601f19603f3d011682016040523d82523d6000602084013e613bad565b606091505b508051600003613c3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401611141565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050613c96565b5060015b949350505050565b60606009805461077e906146fa565b60606000613cba836140bc565b600101905060008167ffffffffffffffff811115613cda57613cda61445e565b6040519080825280601f01601f191660200182016040528015613d04576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084613d0e57509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613da25750600090506003613e51565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613df6573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116613e4a57600060019250925050613e51565b9150600090505b94509492505050565b606061076973ffffffffffffffffffffffffffffffffffffffff831660145b60606000613e88836002614c2e565b613e93906002614ad6565b67ffffffffffffffff811115613eab57613eab61445e565b6040519080825280601f01601f191660200182016040528015613ed5576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613f0c57613f0c614c45565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613f6f57613f6f614c45565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000613fab846002614c2e565b613fb6906001614ad6565b90505b6001811115614053577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613ff757613ff7614c45565b1a60f81b82828151811061400d5761400d614c45565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361404c81614c74565b9050613fb9565b508315611582576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401611141565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310614105577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310614131576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061414f57662386f26fc10000830492506010015b6305f5e1008310614167576305f5e100830492506008015b612710831061417b57612710830492506004015b6064831061418d576064830492506002015b600a83106107695760010192915050565b5080546141aa906146fa565b6000825580601f106141ba575050565b601f01602090049060005260206000209081019061243091905b808211156141e857600081556001016141d4565b5090565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461243057600080fd5b60006020828403121561422c57600080fd5b8135611582816141ec565b60005b8381101561425257818101518382015260200161423a565b50506000910152565b60008151808452614273816020860160208601614237565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611582602083018461425b565b6000602082840312156142ca57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461243057600080fd5b6000806040838503121561430657600080fd5b8235614311816142d1565b946020939093013593505050565b60008083601f84011261433157600080fd5b50813567ffffffffffffffff81111561434957600080fd5b60208301915083602082850101111561383657600080fd5b6000806000806000806080878903121561437a57600080fd5b86359550602087013567ffffffffffffffff8082111561439957600080fd5b6143a58a838b0161431f565b909750955060408901359150808211156143be57600080fd5b506143cb89828a0161431f565b90945092505060608701356143df816142d1565b809150509295509295509295565b60008060006060848603121561440257600080fd5b833561440d816142d1565b9250602084013561441d816142d1565b929592945050506040919091013590565b6000806040838503121561444157600080fd5b823591506020830135614453816142d1565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff808411156144a8576144a861445e565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156144ee576144ee61445e565b8160405280935085815286868601111561450757600080fd5b858560208301376000602087830101525050509392505050565b60006020828403121561453357600080fd5b813567ffffffffffffffff81111561454a57600080fd5b8201601f8101841361455b57600080fd5b613c968482356020840161448d565b60006020828403121561457c57600080fd5b8135611582816142d1565b6000806000806080858703121561459d57600080fd5b8435935060208501356145af816142d1565b92506040850135915060608501356145c6816142d1565b939692955090935050565b801515811461243057600080fd5b600080604083850312156145f257600080fd5b82356145fd816142d1565b91506020830135614453816145d1565b6000806000806080858703121561462357600080fd5b843561462e816142d1565b9350602085013561463e816142d1565b925060408501359150606085013567ffffffffffffffff81111561466157600080fd5b8501601f8101871361467257600080fd5b6146818782356020840161448d565b91505092959194509250565b600080604083850312156146a057600080fd5b82356146ab816142d1565b91506020830135614453816142d1565b600080600080608085870312156146d157600080fd5b843593506020850135925060408501356146ea816142d1565b915060608501356145c6816142d1565b600181811c9082168061470e57607f821691505b6020821081036121fa577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006020828403121561475957600080fd5b8151611582816145d1565b8581528385602083013760008482017fffffff00000000000000000000000000000000000000000000000000000000008560e81b166020820152836023820152604381019150509695505050505050565b601f82111561109b57600081815260208120601f850160051c810160208610156147dc5750805b601f850160051c820191505b81811015612121578281556001016147e8565b67ffffffffffffffff8311156148135761481361445e565b6148278361482183546146fa565b836147b5565b6000601f84116001811461487957600085156148435750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355610ddf565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156148c857868501358255602094850194600190920191016148a8565b5086821015614903577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361497557614975614915565b5060010190565b815167ffffffffffffffff8111156149965761499661445e565b6149aa816149a484546146fa565b846147b5565b602080601f8311600181146149fd57600084156149c75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612121565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614a4a57888601518255948401946001909101908401614a2b565b5085821015614a8657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614aa857600080fd5b8151611582816142d1565b600063ffffffff808316818103614acc57614acc614915565b6001019392505050565b8082018082111561076957610769614915565b60008351614afb818460208801614237565b835190830190614b0f818360208801614237565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614b7f816017850160208801614237565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614bbc816028840160208801614237565b01602801949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152614c07608083018461425b565b9695505050505050565b600060208284031215614c2357600080fd5b8151611582816141ec565b808202811582820484141761076957610769614915565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081614c8357614c83614915565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212206e7ce030d39c48b74729ce96899e0f047da633b2db30d1886fbbbe2c64711b9a64736f6c634300081500330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002468747470733a2f2f6d657461646174612e636c6f70726e66742e636f6d2f73746f72792f00000000000000000000000000000000000000000000000000000000