{
  "contractName": "TimeHelpers",
  "abi": [],
  "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820a45591a005ad8a3b7e83474bb53feb29a1e731fe70048d21674a9064546805f50029",
  "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820a45591a005ad8a3b7e83474bb53feb29a1e731fe70048d21674a9064546805f50029",
  "sourceMap": "103:1266:37:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;103:1266:37;;;;;;;",
  "deployedSourceMap": "103:1266:37:-;;;;;",
  "source": "/*\n * SPDX-License-Identitifer:    MIT\n */\n\npragma solidity ^0.4.24;\n\nimport \"./Uint256Helpers.sol\";\n\n\ncontract TimeHelpers {\n    using Uint256Helpers for uint256;\n\n    /**\n    * @dev Returns the current block number.\n    *      Using a function rather than `block.number` allows us to easily mock the block number in\n    *      tests.\n    */\n    function getBlockNumber() internal view returns (uint256) {\n        return block.number;\n    }\n\n    /**\n    * @dev Returns the current block number, converted to uint64.\n    *      Using a function rather than `block.number` allows us to easily mock the block number in\n    *      tests.\n    */\n    function getBlockNumber64() internal view returns (uint64) {\n        return getBlockNumber().toUint64();\n    }\n\n    /**\n    * @dev Returns the current timestamp.\n    *      Using a function rather than `block.timestamp` allows us to easily mock it in\n    *      tests.\n    */\n    function getTimestamp() internal view returns (uint256) {\n        return block.timestamp; // solium-disable-line security/no-block-members\n    }\n\n    /**\n    * @dev Returns the current timestamp, converted to uint64.\n    *      Using a function rather than `block.timestamp` allows us to easily mock it in\n    *      tests.\n    */\n    function getTimestamp64() internal view returns (uint64) {\n        return getTimestamp().toUint64();\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/common/TimeHelpers.sol",
  "ast": {
    "absolutePath": "@aragon/os/contracts/common/TimeHelpers.sol",
    "exportedSymbols": {
      "TimeHelpers": [
        11200
      ]
    },
    "id": 11201,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11155,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:37"
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Uint256Helpers.sol",
        "file": "./Uint256Helpers.sol",
        "id": 11156,
        "nodeType": "ImportDirective",
        "scope": 11201,
        "sourceUnit": 11232,
        "src": "70:30:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11200,
        "linearizedBaseContracts": [
          11200
        ],
        "name": "TimeHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11159,
            "libraryName": {
              "contractScope": null,
              "id": 11157,
              "name": "Uint256Helpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11231,
              "src": "136:14:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Uint256Helpers_$11231",
                "typeString": "library Uint256Helpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "130:33:37",
            "typeName": {
              "id": 11158,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "155:7:37",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "body": {
              "id": 11167,
              "nodeType": "Block",
              "src": "405:36:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 11164,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15143,
                      "src": "422:5:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 11165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "number",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "422:12:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11163,
                  "id": 11166,
                  "nodeType": "Return",
                  "src": "415:19:37"
                }
              ]
            },
            "documentation": "@dev Returns the current block number.\n     Using a function rather than `block.number` allows us to easily mock the block number in\n     tests.",
            "id": 11168,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBlockNumber",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11160,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "370:2:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 11163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11162,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11168,
                  "src": "396:7:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11161,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "395:9:37"
            },
            "scope": 11200,
            "src": "347:94:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11178,
              "nodeType": "Block",
              "src": "705:51:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11173,
                          "name": "getBlockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11168,
                          "src": "722:14:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 11174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "722:16:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11230,
                      "src": "722:25:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint64)"
                      }
                    },
                    "id": 11176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "722:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 11172,
                  "id": 11177,
                  "nodeType": "Return",
                  "src": "715:34:37"
                }
              ]
            },
            "documentation": "@dev Returns the current block number, converted to uint64.\n     Using a function rather than `block.number` allows us to easily mock the block number in\n     tests.",
            "id": 11179,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBlockNumber64",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11169,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "671:2:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 11172,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11171,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11179,
                  "src": "697:6:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 11170,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "697:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "696:8:37"
            },
            "scope": 11200,
            "src": "646:110:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11187,
              "nodeType": "Block",
              "src": "982:88:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 11184,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15143,
                      "src": "999:5:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 11185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "timestamp",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "999:15:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11183,
                  "id": 11186,
                  "nodeType": "Return",
                  "src": "992:22:37"
                }
              ]
            },
            "documentation": "@dev Returns the current timestamp.\n     Using a function rather than `block.timestamp` allows us to easily mock it in\n     tests.",
            "id": 11188,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTimestamp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11180,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "947:2:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 11183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11182,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11188,
                  "src": "973:7:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11181,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "973:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "972:9:37"
            },
            "scope": 11200,
            "src": "926:144:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11198,
              "nodeType": "Block",
              "src": "1318:49:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11193,
                          "name": "getTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11188,
                          "src": "1335:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 11194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1335:14:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11195,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11230,
                      "src": "1335:23:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint64)"
                      }
                    },
                    "id": 11196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1335:25:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 11192,
                  "id": 11197,
                  "nodeType": "Return",
                  "src": "1328:32:37"
                }
              ]
            },
            "documentation": "@dev Returns the current timestamp, converted to uint64.\n     Using a function rather than `block.timestamp` allows us to easily mock it in\n     tests.",
            "id": 11199,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTimestamp64",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11189,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1284:2:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 11192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11191,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11199,
                  "src": "1310:6:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 11190,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1310:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1309:8:37"
            },
            "scope": 11200,
            "src": "1261:106:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 11201,
        "src": "103:1266:37"
      }
    ],
    "src": "44:1326:37"
  },
  "legacyAST": {
    "absolutePath": "@aragon/os/contracts/common/TimeHelpers.sol",
    "exportedSymbols": {
      "TimeHelpers": [
        11200
      ]
    },
    "id": 11201,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11155,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "44:24:37"
      },
      {
        "absolutePath": "@aragon/os/contracts/common/Uint256Helpers.sol",
        "file": "./Uint256Helpers.sol",
        "id": 11156,
        "nodeType": "ImportDirective",
        "scope": 11201,
        "sourceUnit": 11232,
        "src": "70:30:37",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11200,
        "linearizedBaseContracts": [
          11200
        ],
        "name": "TimeHelpers",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11159,
            "libraryName": {
              "contractScope": null,
              "id": 11157,
              "name": "Uint256Helpers",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 11231,
              "src": "136:14:37",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Uint256Helpers_$11231",
                "typeString": "library Uint256Helpers"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "130:33:37",
            "typeName": {
              "id": 11158,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "155:7:37",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "body": {
              "id": 11167,
              "nodeType": "Block",
              "src": "405:36:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 11164,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15143,
                      "src": "422:5:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 11165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "number",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "422:12:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11163,
                  "id": 11166,
                  "nodeType": "Return",
                  "src": "415:19:37"
                }
              ]
            },
            "documentation": "@dev Returns the current block number.\n     Using a function rather than `block.number` allows us to easily mock the block number in\n     tests.",
            "id": 11168,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBlockNumber",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11160,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "370:2:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 11163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11162,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11168,
                  "src": "396:7:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11161,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "396:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "395:9:37"
            },
            "scope": 11200,
            "src": "347:94:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11178,
              "nodeType": "Block",
              "src": "705:51:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11173,
                          "name": "getBlockNumber",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11168,
                          "src": "722:14:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 11174,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "722:16:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11175,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11230,
                      "src": "722:25:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint64)"
                      }
                    },
                    "id": 11176,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "722:27:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 11172,
                  "id": 11177,
                  "nodeType": "Return",
                  "src": "715:34:37"
                }
              ]
            },
            "documentation": "@dev Returns the current block number, converted to uint64.\n     Using a function rather than `block.number` allows us to easily mock the block number in\n     tests.",
            "id": 11179,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getBlockNumber64",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11169,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "671:2:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 11172,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11171,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11179,
                  "src": "697:6:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 11170,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "697:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "696:8:37"
            },
            "scope": 11200,
            "src": "646:110:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11187,
              "nodeType": "Block",
              "src": "982:88:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 11184,
                      "name": "block",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15143,
                      "src": "999:5:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_magic_block",
                        "typeString": "block"
                      }
                    },
                    "id": 11185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "timestamp",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": null,
                    "src": "999:15:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11183,
                  "id": 11186,
                  "nodeType": "Return",
                  "src": "992:22:37"
                }
              ]
            },
            "documentation": "@dev Returns the current timestamp.\n     Using a function rather than `block.timestamp` allows us to easily mock it in\n     tests.",
            "id": 11188,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTimestamp",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11180,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "947:2:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 11183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11182,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11188,
                  "src": "973:7:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11181,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "973:7:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "972:9:37"
            },
            "scope": 11200,
            "src": "926:144:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11198,
              "nodeType": "Block",
              "src": "1318:49:37",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 11193,
                          "name": "getTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11188,
                          "src": "1335:12:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                            "typeString": "function () view returns (uint256)"
                          }
                        },
                        "id": 11194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1335:14:37",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 11195,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "toUint64",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11230,
                      "src": "1335:23:37",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256) pure returns (uint64)"
                      }
                    },
                    "id": 11196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1335:25:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "functionReturnParameters": 11192,
                  "id": 11197,
                  "nodeType": "Return",
                  "src": "1328:32:37"
                }
              ]
            },
            "documentation": "@dev Returns the current timestamp, converted to uint64.\n     Using a function rather than `block.timestamp` allows us to easily mock it in\n     tests.",
            "id": 11199,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTimestamp64",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11189,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1284:2:37"
            },
            "payable": false,
            "returnParameters": {
              "id": 11192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11191,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11199,
                  "src": "1310:6:37",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 11190,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1310:6:37",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1309:8:37"
            },
            "scope": 11200,
            "src": "1261:106:37",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 11201,
        "src": "103:1266:37"
      }
    ],
    "src": "44:1326:37"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2019-09-04T11:02:55.763Z"
}