UNPKG

@etherisc/registry-contracts

Version:

Etherisc's smart contracts for the registry.

1,301 lines 332 kB
{ "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "Version", "name": "version", "type": "uint48" }, { "indexed": false, "internalType": "address", "name": "implementation", "type": "address" }, { "indexed": false, "internalType": "address", "name": "activatedBy", "type": "address" } ], "name": "LogVersionableActivated", "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" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" }, { "internalType": "address", "name": "activatedBy", "type": "address" } ], "name": "activate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" }, { "internalType": "address", "name": "newOwner", "type": "address" }, { "internalType": "address", "name": "activatedBy", "type": "address" } ], "name": "activateAndSetOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "blockNumber", "outputs": [ { "internalType": "Blocknumber", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "idx", "type": "uint256" } ], "name": "getVersion", "outputs": [ { "internalType": "Version", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "Version", "name": "_version", "type": "uint48" } ], "name": "getVersionInfo", "outputs": [ { "components": [ { "internalType": "Version", "name": "version", "type": "uint48" }, { "internalType": "address", "name": "implementation", "type": "address" }, { "internalType": "address", "name": "activatedBy", "type": "address" }, { "internalType": "Blocknumber", "name": "activatedIn", "type": "uint32" }, { "internalType": "Timestamp", "name": "activatedAt", "type": "uint40" } ], "internalType": "struct IVersionable.VersionInfo", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" }, { "internalType": "uint8", "name": "shift", "type": "uint8" } ], "name": "intToBytes", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "Version", "name": "_version", "type": "uint48" } ], "name": "isActivated", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "ChainId", "name": "x", "type": "bytes5" } ], "name": "toInt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "Blocknumber", "name": "x", "type": "uint32" } ], "name": "toInt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "Timestamp", "name": "x", "type": "uint40" } ], "name": "toInt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "Version", "name": "_version", "type": "uint48" } ], "name": "toVersionParts", "outputs": [ { "internalType": "VersionPart", "name": "major", "type": "uint16" }, { "internalType": "VersionPart", "name": "minor", "type": "uint16" }, { "internalType": "VersionPart", "name": "patch", "type": "uint16" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "Version", "name": "", "type": "uint48" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "versionParts", "outputs": [ { "internalType": "VersionPart", "name": "major", "type": "uint16" }, { "internalType": "VersionPart", "name": "minor", "type": "uint16" }, { "internalType": "VersionPart", "name": "patch", "type": "uint16" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "versions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "allSourcePaths": { "0": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts-upgradeable@4.8.2/contracts/access/OwnableUpgradeable.sol", "1": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts-upgradeable@4.8.2/contracts/proxy/utils/Initializable.sol", "3": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts-upgradeable@4.8.2/contracts/utils/ContextUpgradeable.sol", "42": "contracts/shared/BaseTypes.sol", "43": "contracts/shared/IBaseTypes.sol", "45": "contracts/shared/IVersionable.sol", "48": "contracts/shared/Versionable.sol", "49": "contracts/shared/VersionedOwnable.sol" }, "ast": { "absolutePath": "contracts/shared/VersionedOwnable.sol", "exportedSymbols": { "OwnableUpgradeable": [ 13768 ], "Versionable": [ 5891 ], "VersionedOwnable": [ 5965 ] }, "id": 5966, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 5893, "literals": [ "solidity", "^", "0.8", ".19" ], "nodeType": "PragmaDirective", "src": "39:24:49" }, { "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts-upgradeable@4.8.2/contracts/access/OwnableUpgradeable.sol", "file": "@openzeppelin-upgradeable/contracts/access/OwnableUpgradeable.sol", "id": 5895, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5966, "sourceUnit": 13769, "src": "65:101:49", "symbolAliases": [ { "foreign": { "id": 5894, "name": "OwnableUpgradeable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13768, "src": "73:18:49", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "absolutePath": "contracts/shared/Versionable.sol", "file": "./Versionable.sol", "id": 5897, "nameLocation": "-1:-1:-1", "nodeType": "ImportDirective", "scope": 5966, "sourceUnit": 5892, "src": "168:46:49", "symbolAliases": [ { "foreign": { "id": 5896, "name": "Versionable", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5891, "src": "176:11:49", "typeDescriptions": {} }, "nameLocation": "-1:-1:-1" } ], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 5898, "name": "Versionable", "nameLocations": [ "249:11:49" ], "nodeType": "IdentifierPath", "referencedDeclaration": 5891, "src": "249:11:49" }, "id": 5899, "nodeType": "InheritanceSpecifier", "src": "249:11:49" }, { "baseName": { "id": 5900, "name": "OwnableUpgradeable", "nameLocations": [ "266:18:49" ], "nodeType": "IdentifierPath", "referencedDeclaration": 13768, "src": "266:18:49" }, "id": 5901, "nodeType": "InheritanceSpecifier", "src": "266:18:49" } ], "canonicalName": "VersionedOwnable", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, "id": 5965, "linearizedBaseContracts": [ 5965, 13768, 17126, 17084, 5891, 4856, 4443, 4753 ], "name": "VersionedOwnable", "nameLocation": "225:16:49", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 5909, "nodeType": "Block", "src": "389:117:49", "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 5906, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13663, "src": "483:14:49", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 5907, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "483:16:49", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 5908, "nodeType": "ExpressionStatement", "src": "483:16:49" } ] }, "id": 5910, "implemented": true, "kind": "constructor", "modifiers": [ { "id": 5904, "kind": "modifierInvocation", "modifierName": { "id": 5903, "name": "initializer", "nameLocations": [ "373:11:49" ], "nodeType": "IdentifierPath", "referencedDeclaration": 16986, "src": "373:11:49" }, "nodeType": "ModifierInvocation", "src": "373:11:49" } ], "name": "", "nameLocation": "-1:-1:-1", "nodeType": "FunctionDefinition", "parameters": { "id": 5902, "nodeType": "ParameterList", "parameters": [], "src": "361:2:49" }, "returnParameters": { "id": 5905, "nodeType": "ParameterList", "parameters": [], "src": "389:0:49" }, "scope": 5965, "src": "350:156:49", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "baseFunctions": [ 5648 ], "body": { "id": 5923, "nodeType": "Block", "src": "750:56:49", "statements": [ { "expression": { "arguments": [ { "id": 5919, "name": "implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5912, "src": "771:14:49", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 5920, "name": "activatedBy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5914, "src": "787:11:49", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 5918, "name": "_activate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "761:9:49", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, "id": 5921, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "761:38:49", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 5922, "nodeType": "ExpressionStatement", "src": "761:38:49" } ] }, "functionSelector": "9555c4db", "id": 5924, "implemented": true, "kind": "function", "modifiers": [], "name": "activate", "nameLocation": "670:8:49", "nodeType": "FunctionDefinition", "overrides": { "id": 5916, "nodeType": "OverrideSpecifier", "overrides": [], "src": "733:8:49" }, "parameters": { "id": 5915, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 5912, "mutability": "mutable", "name": "implementation", "nameLocation": "687:14:49", "nodeType": "VariableDeclaration", "scope": 5924, "src": "679:22:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5911, "name": "address", "nodeType": "ElementaryTypeName", "src": "679:7:49", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 5914, "mutability": "mutable", "name": "activatedBy", "nameLocation": "711:11:49", "nodeType": "VariableDeclaration", "scope": 5924, "src": "703:19:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5913, "name": "address", "nodeType": "ElementaryTypeName", "src": "703:7:49", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "678:45:49" }, "returnParameters": { "id": 5917, "nodeType": "ParameterList", "parameters": [], "src": "750:0:49" }, "scope": 5965, "src": "661:145:49", "stateMutability": "nonpayable", "virtual": true, "visibility": "external" }, { "body": { "id": 5939, "nodeType": "Block", "src": "1009:76:49", "statements": [ { "expression": { "arguments": [ { "id": 5934, "name": "implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5926, "src": "1040:14:49", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 5935, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5928, "src": "1056:8:49", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 5936, "name": "activatedBy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5930, "src": "1066:11:49", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 5933, "name": "_activateAndSetOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5964, "src": "1019:20:49", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address,address)" } }, "id": 5937, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:59:49", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 5938, "nodeType": "ExpressionStatement", "src": "1019:59:49" } ] }, "functionSelector": "8e258689", "id": 5940, "implemented": true, "kind": "function", "modifiers": [], "name": "activateAndSetOwner", "nameLocation": "889:19:49", "nodeType": "FunctionDefinition", "parameters": { "id": 5931, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 5926, "mutability": "mutable", "name": "implementation", "nameLocation": "917:14:49", "nodeType": "VariableDeclaration", "scope": 5940, "src": "909:22:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5925, "name": "address", "nodeType": "ElementaryTypeName", "src": "909:7:49", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 5928, "mutability": "mutable", "name": "newOwner", "nameLocation": "941:8:49", "nodeType": "VariableDeclaration", "scope": 5940, "src": "933:16:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5927, "name": "address", "nodeType": "ElementaryTypeName", "src": "933:7:49", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 5930, "mutability": "mutable", "name": "activatedBy", "nameLocation": "959:11:49", "nodeType": "VariableDeclaration", "scope": 5940, "src": "951:19:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5929, "name": "address", "nodeType": "ElementaryTypeName", "src": "951:7:49", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "908:63:49" }, "returnParameters": { "id": 5932, "nodeType": "ParameterList", "parameters": [], "src": "1009:0:49" }, "scope": 5965, "src": "880:205:49", "stateMutability": "nonpayable", "virtual": true, "visibility": "external" }, { "body": { "id": 5963, "nodeType": "Block", "src": "1243:241:49", "statements": [ { "expression": { "arguments": [ { "id": 5952, "name": "implementation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5942, "src": "1305:14:49", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 5953, "name": "activatedBy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5946, "src": "1321:11:49", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 5951, "name": "_activate", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5719, "src": "1295:9:49", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$__$", "typeString": "function (address,address)" } }, "id": 5954, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1295:38:49", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 5955, "nodeType": "ExpressionStatement", "src": "1295:38:49" }, { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 5956, "name": "__Ownable_init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13663, "src": "1390:14:49", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 5957, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1390:16:49", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 5958, "nodeType": "ExpressionStatement", "src": "1390:16:49" }, { "expression": { "arguments": [ { "id": 5960, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5944, "src": "1468:8:49", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 5959, "name": "transferOwnership", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 13742, "src": "1450:17:49", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, "id": 5961, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1450:27:49", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 5962, "nodeType": "ExpressionStatement", "src": "1450:27:49" } ] }, "id": 5964, "implemented": true, "kind": "function", "modifiers": [ { "id": 5949, "kind": "modifierInvocation", "modifierName": { "id": 5948, "name": "initializer", "nameLocations": [ "1227:11:49" ], "nodeType": "IdentifierPath", "referencedDeclaration": 16986, "src": "1227:11:49" }, "nodeType": "ModifierInvocation", "src": "1227:11:49" } ], "name": "_activateAndSetOwner", "nameLocation": "1101:20:49", "nodeType": "FunctionDefinition", "parameters": { "id": 5947, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 5942, "mutability": "mutable", "name": "implementation", "nameLocation": "1130:14:49", "nodeType": "VariableDeclaration", "scope": 5964, "src": "1122:22:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5941, "name": "address", "nodeType": "ElementaryTypeName", "src": "1122:7:49", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 5944, "mutability": "mutable", "name": "newOwner", "nameLocation": "1154:8:49", "nodeType": "VariableDeclaration", "scope": 5964, "src": "1146:16:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5943, "name": "address", "nodeType": "ElementaryTypeName", "src": "1146:7:49", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 5946, "mutability": "mutable", "name": "activatedBy", "nameLocation": "1172:11:49", "nodeType": "VariableDeclaration", "scope": 5964, "src": "1164:19:49", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5945, "name": "address", "nodeType": "ElementaryTypeName", "src": "1164:7:49", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" } ], "src": "1121:63:49" }, "returnParameters": { "id": 5950, "nodeType": "ParameterList", "parameters": [], "src": "1243:0:49" }, "scope": 5965, "src": "1092:392:49", "stateMutability": "nonpayable", "virtual": true, "visibility": "internal" } ], "scope": 5966, "src": "216:1270:49", "usedErrors": [] } ], "src": "39:1447:49" }, "bytecode": "60806040523480156200001157600080fd5b506200001e303362000140565b600254610100900460ff16158080156200003f5750600254600160ff909116105b806200005b5750303b1580156200005b575060025460ff166001145b620000c45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6002805460ff191660011790558015620000e8576002805461ff0019166101001790555b620000f262000444565b801562000139576002805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200063c565b60006200014c620004ac565b65ffffffffffff8116600090815260208190526040902060010154909150600160a01b900463ffffffff1615620001d65760405162461bcd60e51b815260206004820152602760248201527f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f41436044820152661512559055115160ca1b6064820152608401620000bb565b6001541562000299576001805460009190620001f4908290620005fa565b8154811062000207576200020762000610565b90600052602060002090600591828204019190066006029054906101000a900465ffffffffffff1690506200023d8282620004bd565b620002975760405162461bcd60e51b8152602060048201526024808201527f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160448201526353494e4760e01b6064820152608401620000bb565b505b60018054808201825560009190915260058082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805465ffffffffffff808616600694909506939093026101000a848102930219169190911790556040805160a0810182529182526001600160a01b03808616602084015284169082015260608101620003254390565b63ffffffff1681526020014264ffffffffff90811690915265ffffffffffff8084166000908152602081815260409182902085518154928701516001600160a01b039081166601000000000000026001600160d01b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c01b0264ffffffffff60c01b1963ffffffff909716600160a01b026001600160c01b031990961692909416919091179390931793909316179055517ff7b17693e830f8b239607e857ac81b076450829d544c053d533d1b278d18cd8990620004379083908690869065ffffffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050565b600254610100900460ff16620004a05760405162461bcd60e51b815260206004820152602b60248201526000805160206200148b83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000bb565b620004aa620004d2565b565b6000620004b862000539565b905090565b65ffffffffffff808216908316115b92915050565b600254610100900460ff166200052e5760405162461bcd60e51b815260206004820152602b60248201526000805160206200148b83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000bb565b620004aa3362000549565b6000620004b8816000806200059b565b603580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061ffff8481169084811690841680620005cd63ffff0000601089901b1665ffff0000000060208b901b1662000626565b620005d9919062000626565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620004cc57620004cc620005e4565b634e487b7160e01b600052603260045260246000fd5b80820180821115620004cc57620004cc620005e4565b610e3f806200064c6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80639555c4db116100a2578063c1f6a1b711610071578063c1f6a1b714610253578063da09d48414610266578063de788b2c1461027e578063f2fde38b146102f1578063f8b1cb3c1461030457600080fd5b80639555c4db146101dd578063aa615ec8146101f0578063b88da75914610213578063bd4080ec1461022657600080fd5b80636effeac4116100de5780636effeac41461018e578063715018a6146101a55780638da5cb5b146101af5780638e258689146101ca57600080fd5b80631080d8951461011057806354fd4d501461013957806357e871e714610158578063663626121461016c575b600080fd5b61012361011e366004610b7c565b61030c565b6040516101309190610bb2565b60405180910390f35b610141610342565b60405165ffffffffffff9091168152602001610130565b60405163ffffffff43168152602001610130565b61018061017a366004610c00565b60d81c90565b604051908152602001610130565b61018061019c366004610c31565b63ffffffff1690565b6101ad610351565b005b6035546040516001600160a01b039091168152602001610130565b6101ad6101d8366004610c73565b610365565b6101ad6101eb366004610cb6565b610375565b6102036101fe366004610ce9565b610383565b6040519015158152602001610130565b610141610221366004610d11565b6103af565b61022e61044a565b6040805161ffff94851681529284166020840152921691810191909152606001610130565b61022e610261366004610ce9565b610465565b610180610274366004610d2a565b64ffffffffff1690565b61029161028c366004610ce9565b6104a7565b60408051825165ffffffffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015163ffffffff169082015260809182015164ffffffffff169181019190915260a001610130565b6101ad6102ff366004610d51565b6105a4565b600154610180565b6040805160ff831684901b60f01b6001600160f01b03191660208201528151600281830301815260229091019091525b92915050565b600061034c61061d565b905090565b61035961062b565b6103636000610685565b565b6103708383836106d7565b505050565b61037f82826107fe565b5050565b65ffffffffffff16600090815260208190526040902060010154600160a01b900463ffffffff16151590565b60015460009082106104085760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a56524e2d3031303a494e4445585f544f4f5f4c4152474500000060448201526064015b60405180910390fd5b6001828154811061041b5761041b610d6c565b90600052602060002090600591828204019190066006029054906101000a900465ffffffffffff169050919050565b600080600061045a610261610342565b925092509250909192565b6000808065ffffffffffff841661ffff602086901c166104858383610d98565b9150601082901c60006104988185610d98565b92989197509195509350505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526104db82610383565b6105275760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a56524e2d3032303a56455253494f4e5f554e4b4e4f574e00000060448201526064016103ff565b5065ffffffffffff90811660009081526020818152604091829020825160a0810184528154948516815266010000000000009094046001600160a01b03908116928501929092526001015490811691830191909152600160a01b810463ffffffff166060830152600160c01b900464ffffffffff16608082015290565b6105ac61062b565b6001600160a01b0381166106115760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103ff565b61061a81610685565b50565b600061034c81600080610add565b6035546001600160a01b031633146103635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103ff565b603580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600254610100900460ff16158080156106f75750600254600160ff909116105b806107115750303b158015610711575060025460ff166001145b6107745760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103ff565b6002805460ff191660011790558015610797576002805461ff0019166101001790555b6107a184836107fe565b6107a9610b22565b6107b2836105a4565b80156107f8576002805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000610808610342565b905061081381610383565b156108705760405162461bcd60e51b815260206004820152602760248201527f4552524f523a56524e2d3030313a56455253494f4e5f414c52454144595f41436044820152661512559055115160ca1b60648201526084016103ff565b6001541561093457600180546000919061088b908290610d98565b8154811061089b5761089b610d6c565b90600052602060002090600591828204019190066006029054906101000a900465ffffffffffff1690506108da828265ffffffffffff90811691161190565b6109325760405162461bcd60e51b8152602060048201526024808201527f4552524f523a56524e2d3030323a56455253494f4e5f4e4f545f494e4352454160448201526353494e4760e01b60648201526084016103ff565b505b60018054808201825560009190915260058082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601805465ffffffffffff808616600694909506939093026101000a848102930219169190911790556040805160a0810182529182526001600160a01b038086166020840152841690820152606081016109bf4390565b63ffffffff1681526020014264ffffffffff90811690915265ffffffffffff8084166000908152602081815260409182902085518154928701516001600160a01b039081166601000000000000026001600160d01b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c01b0264ffffffffff60c01b1963ffffffff909716600160a01b026001600160c01b031990961692909416919091179390931793909316179055517ff7b17693e830f8b239607e857ac81b076450829d544c053d533d1b278d18cd8990610ad09083908690869065ffffffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050565b600061ffff8481169084811690841680610b0d63ffff0000601089901b1665ffff0000000060208b901b16610dab565b610b179190610dab565b979650505050505050565b600254610100900460ff1661