[ { "inputs": [ { "components": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "string", "name": "topdomain", "type": "string" }, { "internalType": "string", "name": "domain", "type": "string" }, { "internalType": "string", "name": "domain2", "type": "string" }, { "internalType": "contract OCWebsiteFactoryToken", "name": "factoryToken", "type": "address" }, { "internalType": "contract ClonableOCWebsite", "name": "websiteImplementation", "type": "address" }, { "internalType": "contract ClonableWebsiteVersionViewer", "name": "websiteVersionViewerImplementation", "type": "address" } ], "internalType": "struct OCWebsiteFactory.ConstructorParams", "name": "_params", "type": "tuple" } ], "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": 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": true, "internalType": "uint256", "name": "websiteId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "website", "type": "address" } ], "name": "WebsiteCreated", "type": "event" }, { "inputs": [ { "internalType": "contract IFactoryExtension", "name": "_extension", "type": "address" } ], "name": "addExtension", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IVersionableWebsitePlugin", "name": "plugin", "type": "address" }, { "internalType": "bool", "name": "addAsNewWebsiteDefaultPlugin", "type": "bool" } ], "name": "addWebsitePlugin", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "string", "name": "subdomain", "type": "string" } ], "name": "computeSubdomainNameHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "detailedToken", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "string", "name": "subdomain", "type": "string" }, { "internalType": "string", "name": "tokenSVG", "type": "string" } ], "internalType": "struct OCWebsiteFactory.DetailedToken", "name": "token", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "detailedTokens", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "string", "name": "subdomain", "type": "string" }, { "internalType": "string", "name": "tokenSVG", "type": "string" } ], "internalType": "struct OCWebsiteFactory.DetailedToken[]", "name": "tokens", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "detailedTokensOfOwner", "outputs": [ { "components": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "contractAddress", "type": "address" }, { "internalType": "string", "name": "subdomain", "type": "string" }, { "internalType": "string", "name": "tokenSVG", "type": "string" } ], "internalType": "struct OCWebsiteFactory.DetailedToken[]", "name": "tokens", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "domain", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "domain2", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "extensions", "outputs": [ { "internalType": "contract IFactoryExtension", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factoryToken", "outputs": [ { "internalType": "contract OCWebsiteFactoryToken", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getExtensions", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "address", "name": "extensionAddress", "type": "address" } ], "internalType": "struct OCWebsiteFactory.ExtensionInfo[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4[]", "name": "interfaceFilters", "type": "bytes4[]" } ], "name": "getWebsitePlugins", "outputs": [ { "components": [ { "internalType": "contract IVersionableWebsitePlugin", "name": "plugin", "type": "address" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "string", "name": "title", "type": "string" }, { "internalType": "string", "name": "subTitle", "type": "string" }, { "internalType": "string", "name": "author", "type": "string" }, { "internalType": "string", "name": "homepage", "type": "string" }, { "internalType": "contract IVersionableWebsitePlugin[]", "name": "dependencies", "type": "address[]" }, { "components": [ { "internalType": "string", "name": "title", "type": "string" }, { "internalType": "string", "name": "url", "type": "string" }, { "internalType": "contract IVersionableWebsitePlugin", "name": "moduleForGlobalAdminPanel", "type": "address" }, { "internalType": "enum IVersionableWebsitePlugin.AdminPanelType", "name": "panelType", "type": "uint8" } ], "internalType": "struct IVersionableWebsitePlugin.AdminPanel[]", "name": "adminPanels", "type": "tuple[]" } ], "internalType": "struct IVersionableWebsitePlugin.Infos", "name": "infos", "type": "tuple" }, { "internalType": "bool", "name": "interfaceValid", "type": "bool" }, { "internalType": "bool", "name": "isDefaultPlugin", "type": "bool" } ], "internalType": "struct OCWebsiteFactory.IVersionableWebsitePluginWithInfos[]", "name": "", "type": "tuple[]" } ], "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": "string", "name": "subdomain", "type": "string" } ], "name": "isSubdomainValid", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "subdomain", "type": "string" } ], "name": "isSubdomainValidAndAvailable", "outputs": [ { "internalType": "bool", "name": "result", "type": "bool" }, { "internalType": "string", "name": "reason", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "subdomain", "type": "string" } ], "name": "mintWebsite", "outputs": [ { "internalType": "contract ClonableOCWebsite", "name": "", "type": "address" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "newWebsiteDefaultPlugins", "outputs": [ { "internalType": "contract IVersionableWebsitePlugin", "name": "", "type": "address" } ], "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": [ { "internalType": "contract IVersionableWebsitePlugin", "name": "plugin", "type": "address" } ], "name": "removeWebsitePlugin", "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": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract OCWebsiteFactoryToken", "name": "_factoryToken", "type": "address" } ], "name": "setFactoryToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract OCWebsite", "name": "_website", "type": "address" } ], "name": "setFactoryWebsite", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" } ], "name": "setOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ClonableOCWebsite", "name": "_websiteImplementation", "type": "address" } ], "name": "setWebsiteImplementation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract IVersionableWebsitePlugin", "name": "plugin", "type": "address" }, { "internalType": "bool", "name": "isDefaultPlugin", "type": "bool" } ], "name": "setWebsitePluginAsDefaultPlugin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "subdomainNameHashToWebsite", "outputs": [ { "internalType": "contract OCWebsite", "name": "", "type": "address" } ], "stateMutability": "view", "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": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenSVG", "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenWeb3Address", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "topdomain", "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": [], "name": "website", "outputs": [ { "internalType": "contract OCWebsite", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "websiteAvailablePlugins", "outputs": [ { "internalType": "contract IVersionableWebsitePlugin", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "websiteImplementation", "outputs": [ { "internalType": "contract ClonableOCWebsite", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract OCWebsite", "name": "", "type": "address" } ], "name": "websiteToIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract OCWebsite", "name": "", "type": "address" } ], "name": "websiteToSubdomain", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "websiteVersionViewerImplementation", "outputs": [ { "internalType": "contract ClonableWebsiteVersionViewer", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "websites", "outputs": [ { "internalType": "contract OCWebsite", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ]
608060405234801562000010575f80fd5b5060405162004d7938038062004d798339810160408190526200003391620002a8565b604051806040016040528060098152602001684f435765627369746560b81b815250604051806040016040528060038152602001624f435760e81b815250815f908162000081919062000439565b50600162000090828262000439565b50508151601780546001600160a01b0319166001600160a01b03909216919091179055506020810151601090620000c8908262000439565b506040810151601190620000dd908262000439565b506060810151601290620000f2908262000439565b506080810151600b80546001600160a01b039283166001600160a01b0319918216811790925560a0840151600c805491851691831691909117905560c0840151600f8054919094169116179091556040516346a88e2560e01b81523060048201526346a88e25906024015f604051808303815f87803b15801562000174575f80fd5b505af115801562000187573d5f803e3d5ffd5b505050505062000505565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715620001cb57620001cb62000192565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620001fc57620001fc62000192565b604052919050565b80516001600160a01b03811681146200021b575f80fd5b919050565b5f82601f83011262000230575f80fd5b81516001600160401b038111156200024c576200024c62000192565b602062000262601f8301601f19168201620001d1565b828152858284870101111562000276575f80fd5b5f5b838110156200029557858101830151828201840152820162000278565b505f928101909101919091529392505050565b5f60208284031215620002b9575f80fd5b81516001600160401b0380821115620002d0575f80fd5b9083019060e08286031215620002e4575f80fd5b620002ee620001a6565b620002f98362000204565b81526020830151828111156200030d575f80fd5b6200031b8782860162000220565b60208301525060408301518281111562000333575f80fd5b620003418782860162000220565b60408301525060608301518281111562000359575f80fd5b620003678782860162000220565b6060830152506200037b6080840162000204565b60808201526200038e60a0840162000204565b60a0820152620003a160c0840162000204565b60c082015295945050505050565b600181811c90821680620003c457607f821691505b602082108103620003e357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200043457805f5260205f20601f840160051c81016020851015620004105750805b601f840160051c820191505b8181101562000431575f81556001016200041c565b50505b505050565b81516001600160401b0381111562000455576200045562000192565b6200046d81620004668454620003af565b84620003e9565b602080601f831160018114620004a3575f84156200048b5750858301515b5f19600386901b1c1916600185901b178555620004fd565b5f85815260208120601f198616915b82811015620004d357888601518255948401946001909101908401620004b2565b5085821015620004f157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61486680620005135f395ff3fe6080604052600436106102bf575f3560e01c80637f18565d1161016f578063a887543e116100d8578063c2fb26a611610092578063db85d59c1161006d578063db85d59c146108a5578063e20b3ebd146108c4578063e985e9c5146108e3578063f27cedac1461092a575f80fd5b8063c2fb26a614610853578063c87b56dd14610867578063d092115914610886575f80fd5b8063a887543e14610798578063ad607ca0146107ab578063b63c1d63146107d7578063b88d4fde146107f6578063beb0a41614610815578063bf4b064314610834575f80fd5b8063977999091161012957806397799909146106c357806397f6c25d146106ef5780639bac5f7a1461070e5780639ed817551461072d578063a22cb4651461074c578063a6fe91aa1461076b575f80fd5b80637f18565d1461061d57806383b7db631461063c5780638da5cb5b1461065d5780638e922a831461067c578063942663211461069b57806395d89b41146106af575f80fd5b806324f093a41161022b57806345e189ca116101e55780636352211e116101c05780636352211e1461059457806370a08231146105b3578063795b7d87146105d25780637ce6b2ab146105fe575f80fd5b806345e189ca146105165780634f6ccce714610541578063583bb10414610560575f80fd5b806324f093a41461046757806329e13fef1461047b5780632f745c591461049a5780633acbb2cc146104b95780634192cf9a146104d857806342842e0e146104f7575f80fd5b8063170ff3e11161027c578063170ff3e1146103ae57806318160ddd146103cd578063189ab09c146103eb57806319aff92d1461040a5780631dcb637e1461042957806323b872dd14610448575f80fd5b806301ffc9a7146102c357806306fdde03146102f7578063081812fc14610318578063095ea7b31461034f5780630fb65f1c1461037057806313af40351461038f575b5f80fd5b3480156102ce575f80fd5b506102e26102dd36600461372d565b610949565b60405190151581526020015b60405180910390f35b348015610302575f80fd5b5061030b610973565b6040516102ee919061379c565b348015610323575f80fd5b506103376103323660046137ae565b610a02565b6040516001600160a01b0390911681526020016102ee565b34801561035a575f80fd5b5061036e6103693660046137d9565b610a27565b005b34801561037b575f80fd5b50600c54610337906001600160a01b031681565b34801561039a575f80fd5b5061036e6103a9366004613803565b610b40565b3480156103b9575f80fd5b5061036e6103c8366004613803565b610b8c565b3480156103d8575f80fd5b506008545b6040519081526020016102ee565b3480156103f6575f80fd5b5061036e610405366004613803565b610e98565b348015610415575f80fd5b5061036e610424366004613803565b610ee4565b348015610434575f80fd5b506103376104433660046137ae565b610f30565b348015610453575f80fd5b5061036e61046236600461381e565b610f58565b348015610472575f80fd5b5061030b610f89565b348015610486575f80fd5b506103376104953660046137ae565b611015565b3480156104a5575f80fd5b506103dd6104b43660046137d9565b611024565b3480156104c4575f80fd5b50600f54610337906001600160a01b031681565b3480156104e3575f80fd5b5061030b6104f2366004613803565b6110b8565b348015610502575f80fd5b5061036e61051136600461381e565b6110d0565b348015610521575f80fd5b506103dd610530366004613803565b600e6020525f908152604090205481565b34801561054c575f80fd5b506103dd61055b3660046137ae565b6110ea565b34801561056b575f80fd5b5061033761057a3660046137ae565b60146020525f90815260409020546001600160a01b031681565b34801561059f575f80fd5b506103376105ae3660046137ae565b61117a565b3480156105be575f80fd5b506103dd6105cd366004613803565b6111d9565b3480156105dd575f80fd5b506105f16105ec36600461385c565b61125d565b6040516102ee91906138ce565b348015610609575f80fd5b5061030b6106183660046137ae565b61151e565b348015610628575f80fd5b5061036e61063736600461393d565b611643565b348015610647575f80fd5b506106506117df565b6040516102ee9190613974565b348015610668575f80fd5b50601754610337906001600160a01b031681565b348015610687575f80fd5b5061036e61069636600461393d565b61193b565b3480156106a6575f80fd5b5061030b611a8f565b3480156106ba575f80fd5b5061030b611a9c565b3480156106ce575f80fd5b506106e26106dd366004613aa4565b611aab565b6040516102ee9190613c36565b3480156106fa575f80fd5b50600b54610337906001600160a01b031681565b348015610719575f80fd5b5061030b6107283660046137ae565b611d5c565b348015610738575f80fd5b506103dd610747366004613e03565b611dee565b348015610757575f80fd5b5061036e61076636600461393d565b611f7c565b348015610776575f80fd5b5061078a610785366004613e03565b611f87565b6040516102ee929190613e47565b6103376107a6366004613e03565b6120db565b3480156107b6575f80fd5b506107ca6107c53660046137ae565b6122b4565b6040516102ee9190613e61565b3480156107e2575f80fd5b5061078a6107f1366004613e03565b612447565b348015610801575f80fd5b5061036e610810366004613e73565b6124e7565b348015610820575f80fd5b50600a54610337906001600160a01b031681565b34801561083f575f80fd5b5061036e61084e366004613803565b61251f565b34801561085e575f80fd5b5061030b61256b565b348015610872575f80fd5b5061030b6108813660046137ae565b612578565b348015610891575f80fd5b506103376108a03660046137ae565b6125cd565b3480156108b0575f80fd5b506103376108bf3660046137ae565b6125dc565b3480156108cf575f80fd5b506105f16108de366004613eed565b6125eb565b3480156108ee575f80fd5b506102e26108fd366004613f1f565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b348015610935575f80fd5b5061036e610944366004613803565b6128a1565b5f6001600160e01b0319821663780e9d6360e01b148061096d575061096d82612a95565b92915050565b60605f805461098190613f4b565b80601f01602080910402602001604051908101604052809291908181526020018280546109ad90613f4b565b80156109f85780601f106109cf576101008083540402835291602001916109f8565b820191905f5260205f20905b8154815290600101906020018083116109db57829003601f168201915b5050505050905090565b5f610a0c82612ae4565b505f908152600460205260409020546001600160a01b031690565b5f610a318261117a565b9050806001600160a01b0316836001600160a01b031603610aa35760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610abf5750610abf81336108fd565b610b315760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610a9a565b610b3b8383612b42565b505050565b6017546001600160a01b03163314610b6a5760405162461bcd60e51b8152600401610a9a90613f7d565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b03163314610bb65760405162461bcd60e51b8152600401610a9a90613f7d565b6001600160a01b038116610c0c5760405162461bcd60e51b815260206004820152601d60248201527f457874656e73696f6e20616464726573732063616e6e6f7420626520300000006044820152606401610a9a565b5f5b601854811015610e4657816001600160a01b031660188281548110610c3557610c35613fa0565b5f918252602090912001546001600160a01b031603610c965760405162461bcd60e51b815260206004820152601760248201527f457874656e73696f6e20616c72656164792061646465640000000000000000006044820152606401610a9a565b7393b8c3b86c98579115d9de658db20428e9d57efd633a96fdd760188381548110610cc357610cc3613fa0565b5f918252602082200154604080516305f5f79f60e21b815290516001600160a01b03909216926317d7de7c926004808401938290030181865afa158015610d0c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d339190810190613ff6565b846001600160a01b03166317d7de7c6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610d6e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d959190810190613ff6565b6040518363ffffffff1660e01b8152600401610db2929190614027565b602060405180830381865af4158015610dcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df1919061404b565b15610e3e5760405162461bcd60e51b815260206004820152601b60248201527f457874656e73696f6e206e616d6520616c7265616479207573656400000000006044820152606401610a9a565b600101610c0e565b50601880546001810182555f919091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e0180546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610a9a90613f7d565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6017546001600160a01b03163314610f0e5760405162461bcd60e51b8152600401610a9a90613f7d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60168181548110610f3f575f80fd5b5f918252602090912001546001600160a01b0316905081565b610f623382612baf565b610f7e5760405162461bcd60e51b8152600401610a9a90614066565b610b3b838383612c2c565b60108054610f9690613f4b565b80601f0160208091040260200160405190810160405280929190818152602001828054610fc290613f4b565b801561100d5780601f10610fe45761010080835404028352916020019161100d565b820191905f5260205f20905b815481529060010190602001808311610ff057829003601f168201915b505050505081565b600d8181548110610f3f575f80fd5b5f61102e836111d9565b82106110905760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610a9a565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b60136020525f908152604090208054610f9690613f4b565b610b3b83838360405180602001604052805f8152506124e7565b5f6110f460085490565b82106111575760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610a9a565b6008828154811061116a5761116a613fa0565b905f5260205f2001549050919050565b5f818152600260205260408120546001600160a01b03168061096d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a9a565b5f6001600160a01b0382166112425760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610a9a565b506001600160a01b03165f9081526003602052604090205490565b60605f61126960085490565b905083158061127757508084105b6112b95760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610a9a565b825f036112d1576112ca84826140c7565b92506112ef565b806112dc84866140da565b11156112ef576112ec84826140c7565b92505b826001600160401b03811115611307576113076139f3565b60405190808252806020026020018201604052801561134057816020015b61132d613674565b8152602001906001900390816113255790505b5091505f5b83811015611516576040518060800160405280868361136491906140da565b8152602001600d61137588856140da565b8154811061138557611385613fa0565b5f9182526020808320909101546001600160a01b031683529190910190601390600d6113b18a876140da565b815481106113c1576113c1613fa0565b5f9182526020808320909101546001600160a01b03168352820192909252604001902080546113ef90613f4b565b80601f016020809104026020016040519081016040528092919081815260200182805461141b90613f4b565b80156114665780601f1061143d57610100808354040283529160200191611466565b820191905f5260205f20905b81548152906001019060200180831161144957829003601f168201915b5050509183525050600b546020909101906001600160a01b0316639bac5f7a61148f89866140da565b6040518263ffffffff1660e01b81526004016114ad91815260200190565b5f60405180830381865afa1580156114c7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114ee9190810190613ff6565b81525083828151811061150357611503613fa0565b6020908102919091010152600101611345565b505092915050565b600d5460609082106115425760405162461bcd60e51b8152600401610a9a906140ed565b5f7393b8c3b86c98579115d9de658db20428e9d57efd631bb0c665600d858154811061157057611570613fa0565b5f9182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b0390911660048201526024015f60405180830381865af41580156115bc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115e39190810190613ff6565b6040516020016115f3919061411b565b60408051601f19818403018152919052905046600181111561163c578161161982612d9b565b60405160200161162a929190614149565b60405160208183030381529060405291505b5092915050565b6017546001600160a01b0316331461166d5760405162461bcd60e51b8152600401610a9a90613f7d565b5f5b60165481101561178957826001600160a01b03166016828154811061169657611696613fa0565b5f918252602090912001546001600160a01b0316036117815781156116ba57505050565b805b6016546116cb906001906140c7565b81101561174a5760166116df8260016140da565b815481106116ef576116ef613fa0565b5f91825260209091200154601680546001600160a01b03909216918390811061171a5761171a613fa0565b5f91825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556001016116bc565b50601680548061175c5761175c614184565b5f8281526020902081015f1990810180546001600160a01b0319169055019055505050565b60010161166f565b5080156117db57601680546001810182555f919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0319166001600160a01b0384161790555b5050565b6018546060905f906001600160401b038111156117fe576117fe6139f3565b60405190808252806020026020018201604052801561184357816020015b60408051808201909152606081525f602082015281526020019060019003908161181c5790505b5090505f5b6018548110156119355760405180604001604052806018838154811061187057611870613fa0565b5f918252602082200154604080516305f5f79f60e21b815290516001600160a01b03909216926317d7de7c926004808401938290030181865afa1580156118b9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526118e09190810190613ff6565b8152602001601883815481106118f8576118f8613fa0565b5f918252602090912001546001600160a01b03169052825183908390811061192257611922613fa0565b6020908102919091010152600101611848565b50919050565b6017546001600160a01b031633146119655760405162461bcd60e51b8152600401610a9a90613f7d565b5f5b6015548110156119ee57826001600160a01b03166015828154811061198e5761198e613fa0565b5f918252602090912001546001600160a01b0316036119e65760405162461bcd60e51b8152602060048201526014602482015273141b1d59da5b88185b1c9958591e48185919195960621b6044820152606401610a9a565b600101611967565b50601580546001810182555f919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b0319166001600160a01b03841617905580156117db57601680546001810182555f919091527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b51242890180546001600160a01b0384166001600160a01b03199091161790555050565b60128054610f9690613f4b565b60606001805461098190613f4b565b6015546060905f906001600160401b03811115611aca57611aca6139f3565b604051908082528060200260200182016040528015611b0357816020015b611af06136a3565b815260200190600190039081611ae85790505b5090505f5b60155481101561163c578351155f5b8551811015611bed5760158381548110611b3357611b33613fa0565b5f9182526020909120015486516001600160a01b03909116906301ffc9a790889084908110611b6457611b64613fa0565b60200260200101516040518263ffffffff1660e01b8152600401611b9891906001600160e01b031991909116815260200190565b602060405180830381865afa158015611bb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd7919061404b565b15611be55760019150611bed565b600101611b17565b505f805b601654811015611c635760168181548110611c0e57611c0e613fa0565b5f91825260209091200154601580546001600160a01b039092169186908110611c3957611c39613fa0565b5f918252602090912001546001600160a01b031603611c5b5760019150611c63565b600101611bf1565b50604051806080016040528060158581548110611c8257611c82613fa0565b5f91825260209182902001546001600160a01b0316825260158054929091019186908110611cb257611cb2613fa0565b5f91825260208220015460408051639a88be2f60e01b815290516001600160a01b0390921692639a88be2f926004808401938290030181865afa158015611cfb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d229190810190614308565b81526020018315158152602001821515815250848481518110611d4757611d47613fa0565b60209081029190910101525050600101611b08565b600d546060908210611d805760405162461bcd60e51b8152600401610a9a906140ed565b600b54604051634dd62fbd60e11b8152600481018490526001600160a01b0390911690639bac5f7a906024015b5f60405180830381865afa158015611dc7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261096d9190810190613ff6565b6040515f90819081908190611e0890601090602001614465565b60405160208183030381529060405280519060200120604051602001611e38929190918252602082015260400190565b6040516020818303038152906040528051906020012090505f816011604051602001611e649190614465565b60405160208183030381529060405280519060200120604051602001611e94929190918252602082015260400190565b6040516020818303038152906040528051906020012090505f816012604051602001611ec09190614465565b60405160208183030381529060405280519060200120604051602001611ef0929190918252602082015260400190565b60405160208183030381529060405280519060200120905085515f03611f195795945050505050565b8086604051602001611f2b91906144d7565b60405160208183030381529060405280519060200120604051602001611f5b929190918252602082015260400190565b60405160208183030381529060405280519060200120945050505050919050565b6117db338383612e97565b5f60605f839050600381511015611fbc575f6040518060600160405280602481526020016147a5602491399250925050915091565b600e81511115611fea575f60405180606001604052806024815260200161480d602491399250925050915091565b5f5b81518110156120bf575f82828151811061200857612008613fa0565b01602001516001600160f81b0319169050600360fc1b811080159061203b5750603960f81b6001600160f81b0319821611155b1580156120715750606160f81b6001600160f81b031982161080159061206f5750603d60f91b6001600160f81b0319821611155b155b801561208b5750602d60f81b6001600160f81b0319821614155b156120b6575f6040518060800160405280604481526020016147c96044913994509450505050915091565b50600101611fec565b50600160405180602001604052805f8152509250925050915091565b5f805f6120e784612447565b9150915081819061210b5760405162461bcd60e51b8152600401610a9a919061379c565b50600c545f90612123906001600160a01b0316612f64565b600f54604051631cd7f7fb60e31b81529192506001600160a01b038084169263e6bfbfd89261215f9233923092909116906016906004016144f2565b5f604051808303815f87803b158015612176575f80fd5b505af1158015612188573d5f803e3d5ffd5b5050600d8054600180820183555f8390527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb590910180546001600160a01b0319166001600160a01b03871617905590546121e593509091506140c7565b6001600160a01b0382165f908152600e6020908152604080832093909355601390522061221286826145a5565b505f61221d86611dee565b5f81815260146020526040902080546001600160a01b0319166001600160a01b038516179055600d5490915061226090339061225b906001906140c7565b612ffb565b600d5461226f906001906140c7565b6040516001600160a01b03841681527f0aff572d1069f7e62f493a4df8d35dc160c72a08c2749f1f3a87d08606cb37259060200160405180910390a250949350505050565b6122bc613674565b6040518060800160405280838152602001600d84815481106122e0576122e0613fa0565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b0316815260200160135f600d868154811061231f5761231f613fa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020805461234d90613f4b565b80601f016020809104026020016040519081016040528092919081815260200182805461237990613f4b565b80156123c45780601f1061239b576101008083540402835291602001916123c4565b820191905f5260205f20905b8154815290600101906020018083116123a757829003601f168201915b5050509183525050600b54604051634dd62fbd60e11b8152600481018690526020909201916001600160a01b0390911690639bac5f7a906024015f60405180830381865afa158015612418573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261243f9190810190613ff6565b905292915050565b5f606061245383611f87565b90925090508161246257915091565b5f61246c84611dee565b5f818152601460205260409020549091506001600160a01b0316156124cc575f6040518060400160405280601981526020017f537562646f6d61696e20697320616c72656164792075736564000000000000008152509250925050915091565b600160405180602001604052805f8152509250925050915091565b6124f13383612baf565b61250d5760405162461bcd60e51b8152600401610a9a90614066565b61251984848484613014565b50505050565b6017546001600160a01b031633146125495760405162461bcd60e51b8152600401610a9a90613f7d565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b60118054610f9690613f4b565b600d54606090821061259c5760405162461bcd60e51b8152600401610a9a906140ed565b600b5460405163c87b56dd60e01b8152600481018490526001600160a01b039091169063c87b56dd90602401611dad565b60158181548110610f3f575f80fd5b60188181548110610f3f575f80fd5b60605f6125f7856111d9565b905083158061260557508084105b6126475760405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606401610a9a565b825f0361265f5761265884826140c7565b925061267d565b8061266a84866140da565b111561267d5761267a84826140c7565b92505b826001600160401b03811115612695576126956139f3565b6040519080825280602002602001820160405280156126ce57816020015b6126bb613674565b8152602001906001900390816126b35790505b5091505f5b83811015612898575f6126ea876104b488856140da565b90506040518060800160405280828152602001600d838154811061271057612710613fa0565b905f5260205f20015f9054906101000a90046001600160a01b03166001600160a01b0316815260200160135f600d858154811061274f5761274f613fa0565b5f9182526020808320909101546001600160a01b031683528201929092526040019020805461277d90613f4b565b80601f01602080910402602001604051908101604052809291908181526020018280546127a990613f4b565b80156127f45780601f106127cb576101008083540402835291602001916127f4565b820191905f5260205f20905b8154815290600101906020018083116127d757829003601f168201915b5050509183525050600b54604051634dd62fbd60e11b8152600481018590526020909201916001600160a01b0390911690639bac5f7a906024015f60405180830381865afa158015612848573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261286f9190810190613ff6565b81525084838151811061288457612884613fa0565b6020908102919091010152506001016126d3565b50509392505050565b6017546001600160a01b031633146128cb5760405162461bcd60e51b8152600401610a9a90613f7d565b5f5b6015548110156129c057816001600160a01b0316601582815481106128f4576128f4613fa0565b5f918252602090912001546001600160a01b0316036129b8576015805461291d906001906140c7565b8154811061292d5761292d613fa0565b5f91825260209091200154601580546001600160a01b03909216918390811061295857612958613fa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550601580548061299457612994614184565b5f8281526020902081015f1990810180546001600160a01b03191690550190555050565b6001016128cd565b505f5b6016548110156117db57816001600160a01b0316601682815481106129ea576129ea613fa0565b5f918252602090912001546001600160a01b031603612a8a5760168054612a13906001906140c7565b81548110612a2357612a23613fa0565b5f91825260209091200154601680546001600160a01b039092169183908110612a4e57612a4e613fa0565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550601680548061299457612994614184565b6001016129c3565b50565b5f6001600160e01b031982166380ac58cd60e01b1480612ac557506001600160e01b03198216635b5e139f60e01b145b8061096d57506301ffc9a760e01b6001600160e01b031983161461096d565b5f818152600260205260409020546001600160a01b0316612a925760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610a9a565b5f81815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190612b768261117a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f80612bba8361117a565b9050806001600160a01b0316846001600160a01b03161480612c0057506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b80612c245750836001600160a01b0316612c1984610a02565b6001600160a01b0316145b949350505050565b826001600160a01b0316612c3f8261117a565b6001600160a01b031614612c655760405162461bcd60e51b8152600401610a9a90614664565b6001600160a01b038216612cc75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610a9a565b612cd48383836001613047565b826001600160a01b0316612ce78261117a565b6001600160a01b031614612d0d5760405162461bcd60e51b8152600401610a9a90614664565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6060815f03612dc15750506040805180820190915260018152600360fc1b602082015290565b815f5b8115612dea5780612dd4816146a9565b9150612de39050600a836146d5565b9150612dc4565b5f816001600160401b03811115612e0357612e036139f3565b6040519080825280601f01601f191660200182016040528015612e2d576020820181803683370190505b5090505b8415612c2457612e426001836140c7565b9150612e4f600a866146e8565b612e5a9060306140da565b60f81b818381518110612e6f57612e6f613fa0565b60200101906001600160f81b03191690815f1a905350612e90600a866146d5565b9450612e31565b816001600160a01b0316836001600160a01b031603612ef85760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610a9a565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c175f526e5af43d82803e903d91602b57fd5bf38260781b17602052603760095ff090506001600160a01b038116612ff65760405162461bcd60e51b8152602060048201526016602482015275115490cc4c4d8dce8818dc99585d194819985a5b195960521b6044820152606401610a9a565b919050565b6117db828260405180602001604052805f815250613102565b61301f848484612c2c565b61302b84848484613134565b6125195760405162461bcd60e51b8152600401610a9a906146fb565b61305384848484613231565b6001600160a01b03841615612519575f5b818110156130fb575f600d61307983866140da565b8154811061308957613089613fa0565b5f9182526020909120015460405163f2fde38b60e01b81526001600160a01b0387811660048301529091169150819063f2fde38b906024015f604051808303815f87803b1580156130d8575f80fd5b505af11580156130ea573d5f803e3d5ffd5b505060019093019250613064915050565b5050505050565b61310c838361335d565b6131185f848484613134565b610b3b5760405162461bcd60e51b8152600401610a9a906146fb565b5f6001600160a01b0384163b1561322657604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061317790339089908890889060040161474d565b6020604051808303815f875af19250505080156131b1575060408051601f3d908101601f191682019092526131ae91810190614789565b60015b61320c573d8080156131de576040519150601f19603f3d011682016040523d82523d5f602084013e6131e3565b606091505b5080515f036132045760405162461bcd60e51b8152600401610a9a906146fb565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612c24565b506001949350505050565b60018111156132a05760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610a9a565b816001600160a01b0385166132fb576132f681600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b61331e565b836001600160a01b0316856001600160a01b03161461331e5761331e85826134f2565b6001600160a01b03841661333a576133358161358b565b6130fb565b846001600160a01b0316846001600160a01b0316146130fb576130fb8482613632565b6001600160a01b0382166133b35760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610a9a565b5f818152600260205260409020546001600160a01b0316156134175760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a9a565b6134245f83836001613047565b5f818152600260205260409020546001600160a01b0316156134885760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610a9a565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b5f60016134fe846111d9565b61350891906140c7565b5f83815260076020526040902054909150808214613559576001600160a01b0384165f9081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b505f9182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b6008545f9061359c906001906140c7565b5f83815260096020526040812054600880549394509092849081106135c3576135c3613fa0565b905f5260205f200154905080600883815481106135e2576135e2613fa0565b5f91825260208083209091019290925582815260099091526040808220849055858252812055600880548061361957613619614184565b600190038181905f5260205f20015f9055905550505050565b5f61363c836111d9565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60405180608001604052805f81526020015f6001600160a01b0316815260200160608152602001606081525090565b60405180608001604052805f6001600160a01b0316815260200161370560405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b81525f6020820181905260409091015290565b6001600160e01b031981168114612a92575f80fd5b5f6020828403121561373d575f80fd5b813561374881613718565b9392505050565b5f5b83811015613769578181015183820152602001613751565b50505f910152565b5f815180845261378881602086016020860161374f565b601f01601f19169290920160200192915050565b602081525f6137486020830184613771565b5f602082840312156137be575f80fd5b5035919050565b6001600160a01b0381168114612a92575f80fd5b5f80604083850312156137ea575f80fd5b82356137f5816137c5565b946020939093013593505050565b5f60208284031215613813575f80fd5b8135613748816137c5565b5f805f60608486031215613830575f80fd5b833561383b816137c5565b9250602084013561384b816137c5565b929592945050506040919091013590565b5f806040838503121561386d575f80fd5b50508035926020909101359150565b8051825260018060a01b0360208201511660208301525f6040820151608060408501526138ac6080850182613771565b9050606083015184820360608601526138c58282613771565b95945050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b8281101561392357603f1988860301845261391185835161387c565b945092850192908501906001016138f5565b5092979650505050505050565b8015158114612a92575f80fd5b5f806040838503121561394e575f80fd5b8235613959816137c5565b9150602083013561396981613930565b809150509250929050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b838110156139e557888303603f19018552815180518785526139bf88860182613771565b918901516001600160a01b0316948901949094529487019492509086019060010161399b565b509098975050505050505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715613a2957613a296139f3565b60405290565b60405161010081016001600160401b0381118282101715613a2957613a296139f3565b604051601f8201601f191681016001600160401b0381118282101715613a7a57613a7a6139f3565b604052919050565b5f6001600160401b03821115613a9a57613a9a6139f3565b5060051b60200190565b5f6020808385031215613ab5575f80fd5b82356001600160401b03811115613aca575f80fd5b8301601f81018513613ada575f80fd5b8035613aed613ae882613a82565b613a52565b81815260059190911b82018301908381019087831115613b0b575f80fd5b928401925b82841015613b32578335613b2381613718565b82529284019290840190613b10565b979650505050505050565b5f815180845260208085019450602084015f5b83811015613b755781516001600160a01b031687529582019590820190600101613b50565b509495945050505050565b5f82825180855260208086019550808260051b8401018186015f5b84811015613c2957601f19868403018952815160808151818652613bc182870182613771565b9150508582015185820387870152613bd98282613771565b6040848101516001600160a01b03169088015260609384015193909250905060028310613c1457634e487b7160e01b5f52602160045260245ffd5b94909401529783019790830190600101613b9b565b5090979650505050505050565b5f60208083018184528085518083526040925060408601915060408160051b8701018488015f5b838110156139e557603f198984030185528151608060018060a01b03825116855288820151818a87015280516101008084890152613c9f610180890183613771565b91508b830151607f1960a0818b860301818c0152613cbd8584613771565b94508d860151925060c0828c870301818d0152613cda8685613771565b9550606093508387015160e0848e890301818f0152613cf98883613771565b9750898901519950848e890301878f0152613d14888b613771565b9950838901519750848e8b03016101208f0152613d318a89613771565b9950828901519750848e8b03016101408f0152613d4e8a89613b3d565b995080890151985050505050808a8703016101608b015250613d708585613b80565b94508b8601519350613d858c8a018515159052565b9485015115159790940196909652509588019593505090860190600101613c5d565b5f6001600160401b03821115613dbf57613dbf6139f3565b50601f01601f191660200190565b5f613dda613ae884613da7565b9050828152838383011115613ded575f80fd5b828260208301375f602084830101529392505050565b5f60208284031215613e13575f80fd5b81356001600160401b03811115613e28575f80fd5b8201601f81018413613e38575f80fd5b612c2484823560208401613dcd565b8215158152604060208201525f612c246040830184613771565b602081525f613748602083018461387c565b5f805f8060808587031215613e86575f80fd5b8435613e91816137c5565b93506020850135613ea1816137c5565b92506040850135915060608501356001600160401b03811115613ec2575f80fd5b8501601f81018713613ed2575f80fd5b613ee187823560208401613dcd565b91505092959194509250565b5f805f60608486031215613eff575f80fd5b8335613f0a816137c5565b95602085013595506040909401359392505050565b5f8060408385031215613f30575f80fd5b8235613f3b816137c5565b91506020830135613969816137c5565b600181811c90821680613f5f57607f821691505b60208210810361193557634e487b7160e01b5f52602260045260245ffd5b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f82601f830112613fc3575f80fd5b8151613fd1613ae882613da7565b818152846020838601011115613fe5575f80fd5b612c2482602083016020870161374f565b5f60208284031215614006575f80fd5b81516001600160401b0381111561401b575f80fd5b612c2484828501613fb4565b604081525f6140396040830185613771565b82810360208401526138c58185613771565b5f6020828403121561405b575f80fd5b815161374881613930565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561096d5761096d6140b3565b8082018082111561096d5761096d6140b3565b602080825260149082015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b604082015260600190565b66776562333a2f2f60c81b81525f825161413c81600785016020870161374f565b9190910160070192915050565b5f835161415a81846020880161374f565b601d60f91b908301908152835161417881600184016020880161374f565b01600101949350505050565b634e487b7160e01b5f52603160045260245ffd5b5f82601f8301126141a7575f80fd5b815160206141b7613ae883613a82565b8083825260208201915060208460051b8701019350868411156141d8575f80fd5b602086015b848110156141fd5780516141f0816137c5565b83529183019183016141dd565b509695505050505050565b5f82601f830112614217575f80fd5b81516020614227613ae883613a82565b82815260059290921b84018101918181019086841115614245575f80fd5b8286015b848110156141fd5780516001600160401b0380821115614267575f80fd5b908801906080828b03601f190181131561427f575f80fd5b614287613a07565b8784015183811115614297575f80fd5b6142a58d8a83880101613fb4565b825250604080850151848111156142ba575f80fd5b6142c88e8b83890101613fb4565b8a8401525060609350838501516142de816137c5565b908201529281015192600284106142f3575f80fd5b91820192909252845250918301918301614249565b5f60208284031215614318575f80fd5b81516001600160401b038082111561432e575f80fd5b908301906101008286031215614342575f80fd5b61434a613a2f565b825182811115614358575f80fd5b61436487828601613fb4565b825250602083015182811115614378575f80fd5b61438487828601613fb4565b60208301525060408301518281111561439b575f80fd5b6143a787828601613fb4565b6040830152506060830151828111156143be575f80fd5b6143ca87828601613fb4565b6060830152506080830151828111156143e1575f80fd5b6143ed87828601613fb4565b60808301525060a083015182811115614404575f80fd5b61441087828601613fb4565b60a08301525060c083015182811115614427575f80fd5b61443387828601614198565b60c08301525060e08301518281111561444a575f80fd5b61445687828601614208565b60e08301525095945050505050565b5f80835461447281613f4b565b6001828116801561448a576001811461449f576144cb565b60ff19841687528215158302870194506144cb565b875f526020805f205f5b858110156144c25781548a8201529084019082016144a9565b50505082870194505b50929695505050505050565b5f82516144e881846020870161374f565b9190910192915050565b5f6080820160018060a01b0380881684526020818816602086015281871660408601526080606086015282865480855260a087019150875f5260205f2094505f5b81811015614551578554851683526001958601959284019201614533565b50909a9950505050505050505050565b601f821115610b3b57805f5260205f20601f840160051c810160208510156145865750805b601f840160051c820191505b818110156130fb575f8155600101614592565b81516001600160401b038111156145be576145be6139f3565b6145d2816145cc8454613f4b565b84614561565b602080601f831160018114614605575f84156145ee5750858301515b5f19600386901b1c1916600185901b17855561465c565b5f85815260208120601f198616915b8281101561463357888601518255948401946001909101908401614614565b508582101561465057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f600182016146ba576146ba6140b3565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f826146e3576146e36146c1565b500490565b5f826146f6576146f66146c1565b500690565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061477f90830184613771565b9695505050505050565b5f60208284031215614799575f80fd5b81516137488161371856fe537562646f6d61696e20697320746f6f2073686f727420286d696e203320636861727329537562646f6d61696e20636f6e7461696e7320696e76616c696420636861726163746572732e204f6e6c7920612d7a2c20302d392c202d2061726520616c6c6f7765642e537562646f6d61696e20697320746f6f206c6f6e6720286d617820313420636861727329a26469706673582212206921e50b0e228858df7c2dccb166c3a329badd4664d684dfde19af2079c9639f64736f6c634300081800330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000aafa7e1fbe681de12d41ef9a5d5206a96963390e00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000005fbc5be7db1f91de13dc4fdc14309d088b60ada9000000000000000000000000f461d1c7120074997f855058361fcfefabf546ab00000000000000000000000089d04aa9b45d423b3da5fd4ffa90a095d38ca83b0000000000000000000000000000000000000000000000000000000000000003657468000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056f637765620000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007686f6c65736b7900000000000000000000000000000000000000000000000000