diff --git a/README.md b/README.md index 6e59286..cfe7cb1 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,52 @@ # AKAP -The AKA protocol is somewhat like LDAP for Ethereum. It allows you to -reference content and data, and also navigate structures in the context -of nodes and a directed acyclic graph. +The [AKA protocol](https://akap.me) (AKAP) is an idea, a specification, and a set of smart contracts written for the Ethereum blockchain. It tackles a challenge seen on blockchains related to immutability and how you write code to handle such an environment. -The contract is deployed and is ready for use, see below for details. +In short the challenge facing blockchain developers is that when they deploy code others depend on, there's no easy upgrade path. The location of the code is tied in with the location of storage, and if you want to upgrade your code you can't easily take this storage with you. Deploying a new version would force everyone who depend on it to change their references, not to mention the pain of repopulating existing data. -Please have a read of the [white paper](WHITEPAPER.md). +Eternal storage is a pattern that AKAP can help you leverage, where the idea is to keep your storage separate from your code. -## Truffle commands +Please see the [documentation](https://akap.me/docs) for more in depth material. + +## Repositories + +This repository contains the AKAP and AKAF registry contracts. Other related repositories: + +[AKAP utils](https://github.com/cfelde/AKAP-utils)
+[AKAP docs](https://github.com/cfelde/AKAP-docs)
+[AKAP browser](https://github.com/cfelde/AKAP-browser)
+[Using AKAP](https://github.com/cfelde/Using-AKAP)
+ +## Building locally with Truffle Assuming you have [Truffle](https://www.trufflesuite.com/) installed you can run the usual commands: +`git clone https://github.com/cfelde/AKAP.git` + +`cd AKAP` + `truffle build` `truffle test` You might need to do: - `npm install @openzeppelin/contracts` +`npm install @openzeppelin/contracts` - `npm install @openzeppelin/test-helpers` +`npm install @openzeppelin/test-helpers` + +## Using as a library + +To use this as a library in your Solidity code, install with npm first: + +`npm install akap` + +If you need a local testnet instance of AKAP do: + +`truffle deploy --network development` + +You can find an example with further details on https://github.com/cfelde/Using-AKAP ## Official build @@ -48,6 +73,13 @@ macOS Catalina v10.15.2 The solc optimizer was enabled with runs = 200. -## AKAP UI +## AKAP UI and apps + +There's a browser available on [akap.me/browser](https://akap.me/browser), and you can find the repo for this [here](https://github.com/cfelde/AKAP-browser). +Also, if you want to see how you can get started using AKAP in your web apps, there's a simple [deploy test](https://github.com/cfelde/AKAP-deploy-test) example available. + +We're building a list of apps and similar using AKAP. If you have some examples to share, please do. + +[Redir.eth URL shortener](https://redir.eth), with [source code](https://github.com/mohamedelshami/AKAP-url-shortener). -There's a browser available on [akap.me/browser](https://akap.me/browser), and you can find the repo for this [here](https://github.com/cfelde/AKAP-browser). \ No newline at end of file +[The Million DAI Website](https://milliondai.website) \ No newline at end of file diff --git a/build/contracts/AKAF.json b/build/contracts/AKAF.json new file mode 100644 index 0000000..fa13117 --- /dev/null +++ b/build/contracts/AKAF.json @@ -0,0 +1,16108 @@ +{ + "contractName": "AKAF", + "abi": [ + { + "inputs": [], + "payable": false, + "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": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "enum IAKAP.NodeAttribute", + "name": "attribute", + "type": "uint8" + } + ], + "name": "AttributeChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "parentId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "label", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "enum IAKAP.ClaimCase", + "name": "claimCase", + "type": "uint8" + } + ], + "name": "Claim", + "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" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "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": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "parentId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "label", + "type": "bytes" + } + ], + "name": "hashOf", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "parentId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "label", + "type": "bytes" + } + ], + "name": "claim", + "outputs": [ + { + "internalType": "uint256", + "name": "status", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + } + ], + "name": "isApprovedOrOwner", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + } + ], + "name": "parentOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + } + ], + "name": "expiryOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + } + ], + "name": "seeAlso", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + } + ], + "name": "seeAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + } + ], + "name": "nodeBody", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + } + ], + "name": "expireNode", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "setSeeAlso", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "value", + "type": "address" + } + ], + "name": "setSeeAddress", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "value", + "type": "bytes" + } + ], + "name": "setNodeBody", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "internalType": "uint256", + "name": "nodeId", + "type": "uint256" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + } + ], + "name": "setTokenURI", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"enum IAKAP.NodeAttribute\",\"name\":\"attribute\",\"type\":\"uint8\"}],\"name\":\"AttributeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"enum IAKAP.ClaimCase\",\"name\":\"claimCase\",\"type\":\"uint8\"}],\"name\":\"Claim\",\"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\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"parentId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"}],\"name\":\"claim\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"status\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"expireNode\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"expiryOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"parentId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"}],\"name\":\"hashOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"isApprovedOrOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"nodeBody\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"parentOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"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\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"seeAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"}],\"name\":\"seeAlso\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"value\",\"type\":\"bytes\"}],\"name\":\"setNodeBody\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"value\",\"type\":\"address\"}],\"name\":\"setSeeAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setSeeAlso\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nodeId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approve(address,uint256)\":{\"details\":\"Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.\",\"params\":{\"to\":\"address to be approved for the given token ID\",\"tokenId\":\"uint256 ID of the token to be approved\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"address to query the balance of\"},\"return\":\"uint256 representing the amount owned by the passed address\"},\"getApproved(uint256)\":{\"details\":\"Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query the approval of\"},\"return\":\"address currently approved for the given token ID\"},\"isApprovedForAll(address,address)\":{\"details\":\"Tells whether an operator is approved by a given owner.\",\"params\":{\"operator\":\"operator address which you want to query the approval of\",\"owner\":\"owner address which you want to query the approval of\"},\"return\":\"bool whether the given operator is approved by the given owner\"},\"name()\":{\"details\":\"Gets the token name.\",\"return\":\"string representing the token name\"},\"ownerOf(uint256)\":{\"details\":\"Gets the owner of the specified token ID.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query the owner of\"},\"return\":\"address currently marked as the owner of the given token ID\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`; otherwise, the transfer is reverted. Requires the msg.sender to be the owner, approved, or operator\",\"params\":{\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\\\"onERC721Received(address,address,uint256,bytes)\\\"))`; otherwise, the transfer is reverted. Requires the msg.sender to be the owner, approved, or operator\",\"params\":{\"_data\":\"bytes data to send along with a safe transfer check\",\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}},\"setApprovalForAll(address,bool)\":{\"details\":\"Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf.\",\"params\":{\"approved\":\"representing the status of the approval to be set\",\"to\":\"operator address to set the approval\"}},\"supportsInterface(bytes4)\":{\"details\":\"See `IERC165.supportsInterface`. * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Gets the token symbol.\",\"return\":\"string representing the token symbol\"},\"tokenByIndex(uint256)\":{\"details\":\"Gets the token ID at a given index of all the tokens in this contract Reverts if the index is greater or equal to the total number of tokens.\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the tokens list\"},\"return\":\"uint256 token ID at the given index of the tokens list\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Gets the token ID at a given index of the tokens list of the requested owner.\",\"params\":{\"index\":\"uint256 representing the index to be accessed of the requested tokens list\",\"owner\":\"address owning the tokens list to be accessed\"},\"return\":\"uint256 token ID at the given index of the tokens list owned by the requested address\"},\"tokenURI(uint256)\":{\"details\":\"Returns an URI for a given token ID. Throws if the token ID does not exist. May return an empty string.\",\"params\":{\"tokenId\":\"uint256 ID of the token to query\"}},\"totalSupply()\":{\"details\":\"Gets the total amount of tokens stored by the contract.\",\"return\":\"uint256 representing the total amount of tokens\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers the ownership of a given token ID to another address. Usage of this method is discouraged, use `safeTransferFrom` whenever possible. Requires the msg.sender to be the owner, approved, or operator.\",\"params\":{\"from\":\"current owner of the token\",\"to\":\"address to receive the ownership of the given token ID\",\"tokenId\":\"uint256 ID of the token to be transferred\"}}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/private/tmp/eth/akap/contracts/AKAF.sol\":\"AKAF\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/private/tmp/eth/akap/contracts/AKAF.sol\":{\"keccak256\":\"0xf2978e2729083e110ff4c9ec5bb29d7f0c45b1ce55976b85f313fbf8a50b1109\",\"urls\":[\"bzz-raw://846fe8dcf2e6507135b593c2bebd704e94fe1c111365f870e63475d7ac85952e\",\"dweb:/ipfs/QmXMLimLgj7ou43rsQAYEzw69KZkE2gHRLybfhk5qX3Kc6\"]},\"/private/tmp/eth/akap/contracts/IAKAP.sol\":{\"keccak256\":\"0x2163f1519406e467ca39601ce7dfed73d104b3da8bdd0146bd6ca2d14388276a\",\"urls\":[\"bzz-raw://2e4395653541d8e0a6a5bad617a3b7af3efcd8fdea988edf4c7644aabbb8e6b0\",\"dweb:/ipfs/QmPDi6uqVTLCp1v725r2qfC5GNsiGCwbMCpZWSjc34u1Ek\"]},\"@openzeppelin/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzz-raw://072e8b5a1b5acfc2acba9b6fb87d1dc57065aad44572617ad46b014074969eb3\",\"dweb:/ipfs/QmVTDHUriaxBJqiWCWgWC8vYaYYfXSz883LsowzTx1DcpK\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzz-raw://8bdbefb642e7b08535c66bbf074e576cfef2300cdf910c1e0b211f6393833a28\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzz-raw://b40442c5b350b57b88a081a1eacd2bac962d4ecc1f029f5447a18986f08f6f14\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xd1804d04fb39689453f673601429a99a0c68c422a981fc338773df9a59180fe9\",\"urls\":[\"bzz-raw://1b9307920e0378d58c6677f8952ad090a9ecb30e878835e301a0d18386a870c1\",\"dweb:/ipfs/QmYYixTDVF4FXqFpYzEcufAwEY9BFBJ33Ew9ncsGvD7btC\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf151df411bbf4eaef1fc8e8480cd10c2cd985f1a36517e63981517610213efc1\",\"urls\":[\"bzz-raw://2a277b3cc3a1a03af5c039bc75cd16bb2d23b529cb2564cc0bea1b1e0eb4dd68\",\"dweb:/ipfs/QmNRxggY8qmjjuLnxggRqE8uBueuCktLwi9YYHagWoaEJ8\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Enumerable.sol\":{\"keccak256\":\"0xb42cb5a7471d98114af8f7050e7d08dfd543f432713a8aee72a45ce9485f5bed\",\"urls\":[\"bzz-raw://324b8d35f37d91fd863130a6e4b83d55b8b95264af011a008ec03e084ac91b75\",\"dweb:/ipfs/QmWY61QSSJPkgDb2WZR1unTfuSrd5jBp2tC7RrCrQxC9CL\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Full.sol\":{\"keccak256\":\"0x908d0d6fd8d30cffb1fe9fce1f7db6802cb885fbe88d2f170539e8dcc6afa946\",\"urls\":[\"bzz-raw://ed5f7883e2a50b3efeaae764c77152bef9d3d9965832ef095c94e79c2e887257\",\"dweb:/ipfs/QmaLRQ1ziLAo18gvM2EbKhvHC3ys4333mTxCFfoEJ8AodY\"]},\"@openzeppelin/contracts/token/ERC721/ERC721Metadata.sol\":{\"keccak256\":\"0xe5e28b1a405164faa98f8ecd8ed2b00907b89e3d58b2b2bb8ac8b12bc5714489\",\"urls\":[\"bzz-raw://0d5d3f0caa7e7ec91f8a2894e1a6a3513a0c79aa91a498ebf8fdbdd07c12286f\",\"dweb:/ipfs/QmP7r4jQMRxXb5JHy5V9bgMz5FmTezcSDd7ivyzJN88pTR\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xce48937a8007c580b8e2e35705738c922dd17540de89ebee6df06d2917a3f9fc\",\"urls\":[\"bzz-raw://1d117265103ee3efcd454d3aafb3e79a115f9bca6dec78a1229558eb30d14d05\",\"dweb:/ipfs/QmTm5Z1c7zzPiG3Cfj1eBMB23AeiEFGgvmTFQVaeEWXVCw\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x5c573acd6c7b98d71f3c1c44d63dc17400b0fd7b26a52c9fded43b8b533dc4ec\",\"urls\":[\"bzz-raw://e23af54444d2dbfae58895339eb7b189e1ba5d0b7abde63716e7ef7da23b2fde\",\"dweb:/ipfs/QmZva7dE1SMd1yyizzc6ivSoBXXwpNveLV7iFNATNpq68Y\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0x2b2b99dc7fe8fcd1f9427d00822b99cbc683dc21f5dd7532bd7e2281fd2c2ca2\",\"urls\":[\"bzz-raw://a8024c00e34efaf328f9592e76823c79f25fa0f6006bdf4a1e7fea204afd4773\",\"dweb:/ipfs/QmZns9jTr7843njq3J2iL2LLoWXK5mdzN1bDGd9GL3ahhD\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzz-raw://90dceab42713246639100b87d6650037d68e4a2ab2dd4b5768c3ed35d6b3a4a0\",\"dweb:/ipfs/QmQ42UW5nchMoYP9bU9F1AJga5chG8j92fCPkURpiDKsCu\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604080518082018252601481527f414b4120466f72657665722052656769737472790000000000000000000000006020808301919091528251808401909352600483526320a5a0a360e11b908301529081816200007f6301ffc9a760e01b6001600160e01b03620001c316565b6200009a6380ac58cd60e01b6001600160e01b03620001c316565b620000b563780e9d6360e01b6001600160e01b03620001c316565b8151620000ca90600990602085019062000482565b508051620000e090600a90602084019062000482565b50620000fc635b5e139f60e01b6001600160e01b03620001c316565b50600092506200012c91506200011c90506001600160e01b036200024816565b826001600160e01b036200024d16565b6000818152600c602052604090206000196001909101558080620001586001600160e01b036200024816565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e600160405180806020018360028111156200019957fe5b60ff1681526020018281038252600081526020016020019250505060405180910390a45062000524565b6001600160e01b0319808216141562000223576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b335b90565b6200026482826200029160201b62001ff21760201c565b6200027982826001600160e01b03620003da16565b6200028d816001600160e01b036200041816565b5050565b6001600160a01b038216620002ed576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b62000301816001600160e01b036200045c16565b1562000354576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600382529091206200039e9162000479811b620021c117901c565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b6000908152600160205260409020546001600160a01b0316151590565b80546001019055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004c557805160ff1916838001178555620004f5565b82800160010185558215620004f5579182015b82811115620004f5578251825591602001919060010190620004d8565b506200050392915062000507565b5090565b6200024a91905b808211156200050357600081556001016200050e565b61266180620005346000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c8063631fb72611610104578063b0690124116100a2578063c87b56dd11610071578063c87b56dd14610783578063cfa3c132146107a0578063e741cc4e146107bd578063e985e9c514610868576101da565b8063b069012414610610578063b88d4fde14610685578063b8af764214610749578063baef73e914610766576101da565b80637352f2b4116100de5780637352f2b41461059a5780638b73061f146105b757806395d89b41146105da578063a22cb465146105e2576101da565b8063631fb7261461053a5780636352211e1461055757806370a0823114610574576101da565b806323b872dd1161017c5780633a76c3021161014b5780633a76c3021461049e57806342842e0e146104ca5780634f558e79146105005780634f6ccce71461051d576101da565b806323b872dd146103aa5780632f745c59146103e0578063380a284c1461040c57806338926b6d14610429576101da565b8063095ea7b3116101b8578063095ea7b3146102d05780630d340c4a146102fe578063162094c41461031b57806318160ddd14610390576101da565b806301ffc9a7146101df57806306fdde031461021a578063081812fc14610297575b600080fd5b610206600480360360208110156101f557600080fd5b50356001600160e01b031916610896565b604080519115158252519081900360200190f35b6102226108b5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b4600480360360208110156102ad57600080fd5b503561094c565b604080516001600160a01b039092168252519081900360200190f35b6102fc600480360360408110156102e657600080fd5b506001600160a01b0381351690602001356109ae565b005b6102fc6004803603602081101561031457600080fd5b5035610abf565b6102fc6004803603604081101561033157600080fd5b81359190810190604081016020820135600160201b81111561035257600080fd5b82018360208201111561036457600080fd5b803590602001918460018302840111600160201b8311171561038557600080fd5b509092509050610b87565b610398610c76565b60408051918252519081900360200190f35b6102fc600480360360608110156103c057600080fd5b506001600160a01b03813581169160208101359091169060400135610c7c565b610398600480360360408110156103f657600080fd5b506001600160a01b038135169060200135610cd1565b6102226004803603602081101561042257600080fd5b5035610d50565b6103986004803603604081101561043f57600080fd5b81359190810190604081016020820135600160201b81111561046057600080fd5b82018360208201111561047257600080fd5b803590602001918460018302840111600160201b8311171561049357600080fd5b509092509050610e46565b6102fc600480360360408110156104b457600080fd5b50803590602001356001600160a01b0316611207565b6102fc600480360360608110156104e057600080fd5b506001600160a01b038135811691602081013590911690604001356112df565b6102066004803603602081101561051657600080fd5b50356112fa565b6103986004803603602081101561053357600080fd5b5035611317565b6102066004803603602081101561055057600080fd5b503561137d565b6102b46004803603602081101561056d57600080fd5b5035611390565b6103986004803603602081101561058a57600080fd5b50356001600160a01b03166113e4565b610398600480360360208110156105b057600080fd5b503561144c565b6102fc600480360360408110156105cd57600080fd5b50803590602001356114b6565b610222611560565b6102fc600480360360408110156105f857600080fd5b506001600160a01b03813516906020013515156115c1565b6102fc6004803603604081101561062657600080fd5b81359190810190604081016020820135600160201b81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111600160201b8311171561067a57600080fd5b50909250905061168d565b6102fc6004803603608081101561069b57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156106d557600080fd5b8201836020820111156106e757600080fd5b803590602001918460018302840111600160201b8311171561070857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611740945050505050565b6102b46004803603602081101561075f57600080fd5b5035611798565b6103986004803603602081101561077c57600080fd5b503561180b565b6102226004803603602081101561079957600080fd5b5035611875565b610398600480360360208110156107b657600080fd5b503561195a565b610398600480360360408110156107d357600080fd5b81359190810190604081016020820135600160201b8111156107f457600080fd5b82018360208201111561080657600080fd5b803590602001918460018302840111600160201b8311171561082757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119c1945050505050565b6102066004803603604081101561087e57600080fd5b506001600160a01b0381358116916020013516611ab6565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b505050505090505b90565b600061095782611ae4565b6109925760405162461bcd60e51b815260040180806020018281038252602c8152602001806124b6602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006109b982611390565b9050806001600160a01b0316836001600160a01b03161415610a0c5760405162461bcd60e51b81526004018080602001828103825260218152602001806125af6021913960400191505060405180910390fd5b336001600160a01b0382161480610a285750610a288133611ab6565b610a635760405162461bcd60e51b815260040180806020018281038252603881526020018061242b6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b80610ac981611ae4565b8015610ae15750610ae1610adb611b01565b82611b05565b8015610aed5750600081115b610b285760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000828152600c602052604090204260019091015581610b46611b01565b6001600160a01b0316600080516020612537833981519152600060405180826004811115610b7057fe5b60ff16815260200191505060405180910390a35050565b82610b9181611ae4565b8015610ba35750610ba3610adb611b01565b8015610baf5750600081115b610bea5760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b610c2a8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ba192505050565b83610c33611b01565b6001600160a01b0316600080516020612537833981519152600460405180826004811115610c5d57fe5b60ff16815260200191505060405180910390a350505050565b60075490565b610c863382611b05565b610cc15760405162461bcd60e51b81526004018080602001828103825260318152602001806125d06031913960400191505060405180910390fd5b610ccc838383611c04565b505050565b6000610cdc836113e4565b8210610d195760405162461bcd60e51b815260040180806020018281038252602b81526020018061234e602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610d3d57fe5b9060005260206000200154905092915050565b606081610d5c81611ae4565b8015610d685750600081115b610da35760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b6000838152600c602090815260409182902060040180548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610e395780601f10610e0e57610100808354040283529160200191610e39565b820191906000526020600020905b815481529060010190602001808311610e1c57829003601f168201915b5050505050915050919050565b600080610e898585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119c192505050565b90506000610e9e610e98611b01565b87611b05565b90506000610eab83611ae4565b9050808015610ec65750610ec6610ec0611b01565b84611b05565b15610fd6576000838152600c60205260409020548714610f29576040805162461bcd60e51b81526020600482015260196024820152780829682a0744092dcecc2d8d2c840e0c2e4cadce840d0c2e6d603b1b604482015290519081900360640190fd5b6000838152600c602052604090206000196001909101558683610f4a611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e898960006040518080602001836002811115610f8c57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460019350505050611200565b80158015610fe15750815b156110a757610ff7610ff1611b01565b84611c23565b6000838152600c60205260409020878155600019600190910155868361101b611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e89896001604051808060200183600281111561105d57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460029350505050611200565b8080156110c557506000838152600c60205260409020600101544210155b80156110ce5750815b156111f8576000838152600c60205260409020548714611131576040805162461bcd60e51b81526020600482015260196024820152780829682a0744092dcecc2d8d2c840e0c2e4cadce840d0c2e6d603b1b604482015290519081900360640190fd5b61114b61113d84611390565b611145611b01565b85611c04565b6000838152600c60205260409020600019600190910155868361116c611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e8989600260405180806020018360028111156111ae57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460039350505050611200565b600093505050505b9392505050565b8161121181611ae4565b80156112235750611223610adb611b01565b801561122f5750600081115b61126a5760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000838152600c6020526040902060030180546001600160a01b0319166001600160a01b0384161790558261129d611b01565b6001600160a01b03166000805160206125378339815191526002604051808260048111156112c757fe5b60ff16815260200191505060405180910390a3505050565b610ccc83838360405180602001604052806000815250611740565b600061130582611ae4565b80156113115750600082115b92915050565b6000611321610c76565b821061135e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612601602c913960400191505060405180910390fd5b6007828154811061136b57fe5b90600052602060002001549050919050565b600061131161138a611b01565b83611b05565b6000818152600160205260408120546001600160a01b0316806113115760405162461bcd60e51b815260040180806020018281038252602981526020018061248d6029913960400191505060405180910390fd5b60006001600160a01b03821661142b5760405162461bcd60e51b815260040180806020018281038252602a815260200180612463602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061131190611c44565b60008161145881611ae4565b80156114645750600081115b61149f5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090206002015490565b816114c081611ae4565b80156114d257506114d2610adb611b01565b80156114de5750600081115b6115195760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000838152600c6020526040902060020182905582611536611b01565b6001600160a01b03166000805160206125378339815191526001604051808260048111156112c757fe5b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109415780601f1061091657610100808354040283529160200191610941565b6001600160a01b03821633141561161f576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b8261169781611ae4565b80156116a957506116a9610adb611b01565b80156116b55750600081115b6116f05760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000848152600c6020526040902061170c906004018484612227565b5083611716611b01565b6001600160a01b0316600080516020612537833981519152600360405180826004811115610c5d57fe5b61174b848484610c7c565b61175784848484611c48565b6117925760405162461bcd60e51b81526004018080602001828103825260328152602001806123796032913960400191505060405180910390fd5b50505050565b6000816117a481611ae4565b80156117b05750600081115b6117eb5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c60205260409020600301546001600160a01b031690565b60008161181781611ae4565b80156118235750600081115b61185e5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090206001015490565b606061188082611ae4565b6118bb5760405162461bcd60e51b815260040180806020018281038252602f815260200180612557602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452909183018282801561194e5780601f106119235761010080835404028352916020019161194e565b820191906000526020600020905b81548152906001019060200180831161193157829003601f168201915b50505050509050919050565b60008161196681611ae4565b80156119725750600081115b6119ad5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090205490565b600060018251101580156119d757506020825111155b611a28576040805162461bcd60e51b815260206004820152601a60248201527f414b41503a20496e76616c6964206c6162656c206c656e677468000000000000604482015290519081900360640190fd5b8151602080840191909120604080518084018790528082018390528151808203830181526060909101909152805192019190912080611aae576040805162461bcd60e51b815260206004820152601760248201527f414b41503a20496e76616c6964206e6f64652068617368000000000000000000604482015290519081900360640190fd5b949350505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b3390565b6000611b1082611ae4565b611b4b5760405162461bcd60e51b815260040180806020018281038252602c8152602001806123ff602c913960400191505060405180910390fd5b6000611b5683611390565b9050806001600160a01b0316846001600160a01b03161480611b915750836001600160a01b0316611b868461094c565b6001600160a01b0316145b80611aae5750611aae8185611ab6565b611baa82611ae4565b611be55760405162461bcd60e51b815260040180806020018281038252602c8152602001806124e2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610ccc928401906122a5565b611c0f838383611d7b565b611c198382611ebf565b610ccc8282611fb4565b611c2d8282611ff2565b611c378282611fb4565b611c4081612123565b5050565b5490565b6000611c5c846001600160a01b0316612167565b611c6857506001611aae565b604051630a85bd0160e11b815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015611ce2578181015183820152602001611cca565b50505050905090810190601f168015611d0f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b505050506040513d6020811015611d5b57600080fd5b50516001600160e01b031916630a85bd0160e11b14915050949350505050565b826001600160a01b0316611d8e82611390565b6001600160a01b031614611dd35760405162461bcd60e51b815260040180806020018281038252602981526020018061250e6029913960400191505060405180910390fd5b6001600160a01b038216611e185760405162461bcd60e51b81526004018080602001828103825260248152602001806123db6024913960400191505060405180910390fd5b611e218161216d565b6001600160a01b0383166000908152600360205260409020611e42906121aa565b6001600160a01b0382166000908152600360205260409020611e63906121c1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054611ee990600163ffffffff6121ca16565b600083815260066020526040902054909150808214611f84576001600160a01b0384166000908152600560205260408120805484908110611f2657fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110611f6457fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611fad906000198301612313565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6001600160a01b03821661204d576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61205681611ae4565b156120a8576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600390915290206120e7906121c1565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b3b151590565b6000818152600260205260409020546001600160a01b0316156121a757600081815260026020526040902080546001600160a01b03191690555b50565b80546121bd90600163ffffffff6121ca16565b9055565b80546001019055565b600082821115612221576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122685782800160ff19823516178555612295565b82800160010185558215612295579182015b8281111561229557823582559160200191906001019061227a565b506122a1929150612333565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122e657805160ff1916838001178555612295565b82800160010185558215612295579182015b828111156122955782518255916020019190600101906122f8565b815481835581811115610ccc57600083815260209020610ccc9181019083015b61094991905b808211156122a1576000815560010161233956fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572414b41503a207365742076616c75652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4e643f23cbc202af4f83dce574290af81b7d940546736d83eec38524c05908f84552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e414b41503a206f70657261746f7220717565727920666f72206e6f6e6578697374656e74206e6f64654552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a72315820fad6b581bcdb67eb97ac3e02062c4c98693ea66a316c8b2acf1207be83e0b82064736f6c63430005100032", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101da5760003560e01c8063631fb72611610104578063b0690124116100a2578063c87b56dd11610071578063c87b56dd14610783578063cfa3c132146107a0578063e741cc4e146107bd578063e985e9c514610868576101da565b8063b069012414610610578063b88d4fde14610685578063b8af764214610749578063baef73e914610766576101da565b80637352f2b4116100de5780637352f2b41461059a5780638b73061f146105b757806395d89b41146105da578063a22cb465146105e2576101da565b8063631fb7261461053a5780636352211e1461055757806370a0823114610574576101da565b806323b872dd1161017c5780633a76c3021161014b5780633a76c3021461049e57806342842e0e146104ca5780634f558e79146105005780634f6ccce71461051d576101da565b806323b872dd146103aa5780632f745c59146103e0578063380a284c1461040c57806338926b6d14610429576101da565b8063095ea7b3116101b8578063095ea7b3146102d05780630d340c4a146102fe578063162094c41461031b57806318160ddd14610390576101da565b806301ffc9a7146101df57806306fdde031461021a578063081812fc14610297575b600080fd5b610206600480360360208110156101f557600080fd5b50356001600160e01b031916610896565b604080519115158252519081900360200190f35b6102226108b5565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561025c578181015183820152602001610244565b50505050905090810190601f1680156102895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102b4600480360360208110156102ad57600080fd5b503561094c565b604080516001600160a01b039092168252519081900360200190f35b6102fc600480360360408110156102e657600080fd5b506001600160a01b0381351690602001356109ae565b005b6102fc6004803603602081101561031457600080fd5b5035610abf565b6102fc6004803603604081101561033157600080fd5b81359190810190604081016020820135600160201b81111561035257600080fd5b82018360208201111561036457600080fd5b803590602001918460018302840111600160201b8311171561038557600080fd5b509092509050610b87565b610398610c76565b60408051918252519081900360200190f35b6102fc600480360360608110156103c057600080fd5b506001600160a01b03813581169160208101359091169060400135610c7c565b610398600480360360408110156103f657600080fd5b506001600160a01b038135169060200135610cd1565b6102226004803603602081101561042257600080fd5b5035610d50565b6103986004803603604081101561043f57600080fd5b81359190810190604081016020820135600160201b81111561046057600080fd5b82018360208201111561047257600080fd5b803590602001918460018302840111600160201b8311171561049357600080fd5b509092509050610e46565b6102fc600480360360408110156104b457600080fd5b50803590602001356001600160a01b0316611207565b6102fc600480360360608110156104e057600080fd5b506001600160a01b038135811691602081013590911690604001356112df565b6102066004803603602081101561051657600080fd5b50356112fa565b6103986004803603602081101561053357600080fd5b5035611317565b6102066004803603602081101561055057600080fd5b503561137d565b6102b46004803603602081101561056d57600080fd5b5035611390565b6103986004803603602081101561058a57600080fd5b50356001600160a01b03166113e4565b610398600480360360208110156105b057600080fd5b503561144c565b6102fc600480360360408110156105cd57600080fd5b50803590602001356114b6565b610222611560565b6102fc600480360360408110156105f857600080fd5b506001600160a01b03813516906020013515156115c1565b6102fc6004803603604081101561062657600080fd5b81359190810190604081016020820135600160201b81111561064757600080fd5b82018360208201111561065957600080fd5b803590602001918460018302840111600160201b8311171561067a57600080fd5b50909250905061168d565b6102fc6004803603608081101561069b57600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156106d557600080fd5b8201836020820111156106e757600080fd5b803590602001918460018302840111600160201b8311171561070857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611740945050505050565b6102b46004803603602081101561075f57600080fd5b5035611798565b6103986004803603602081101561077c57600080fd5b503561180b565b6102226004803603602081101561079957600080fd5b5035611875565b610398600480360360208110156107b657600080fd5b503561195a565b610398600480360360408110156107d357600080fd5b81359190810190604081016020820135600160201b8111156107f457600080fd5b82018360208201111561080657600080fd5b803590602001918460018302840111600160201b8311171561082757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506119c1945050505050565b6102066004803603604081101561087e57600080fd5b506001600160a01b0381358116916020013516611ab6565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109415780601f1061091657610100808354040283529160200191610941565b820191906000526020600020905b81548152906001019060200180831161092457829003601f168201915b505050505090505b90565b600061095782611ae4565b6109925760405162461bcd60e51b815260040180806020018281038252602c8152602001806124b6602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006109b982611390565b9050806001600160a01b0316836001600160a01b03161415610a0c5760405162461bcd60e51b81526004018080602001828103825260218152602001806125af6021913960400191505060405180910390fd5b336001600160a01b0382161480610a285750610a288133611ab6565b610a635760405162461bcd60e51b815260040180806020018281038252603881526020018061242b6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b80610ac981611ae4565b8015610ae15750610ae1610adb611b01565b82611b05565b8015610aed5750600081115b610b285760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000828152600c602052604090204260019091015581610b46611b01565b6001600160a01b0316600080516020612537833981519152600060405180826004811115610b7057fe5b60ff16815260200191505060405180910390a35050565b82610b9181611ae4565b8015610ba35750610ba3610adb611b01565b8015610baf5750600081115b610bea5760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b610c2a8484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ba192505050565b83610c33611b01565b6001600160a01b0316600080516020612537833981519152600460405180826004811115610c5d57fe5b60ff16815260200191505060405180910390a350505050565b60075490565b610c863382611b05565b610cc15760405162461bcd60e51b81526004018080602001828103825260318152602001806125d06031913960400191505060405180910390fd5b610ccc838383611c04565b505050565b6000610cdc836113e4565b8210610d195760405162461bcd60e51b815260040180806020018281038252602b81526020018061234e602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610d3d57fe5b9060005260206000200154905092915050565b606081610d5c81611ae4565b8015610d685750600081115b610da35760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b6000838152600c602090815260409182902060040180548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610e395780601f10610e0e57610100808354040283529160200191610e39565b820191906000526020600020905b815481529060010190602001808311610e1c57829003601f168201915b5050505050915050919050565b600080610e898585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506119c192505050565b90506000610e9e610e98611b01565b87611b05565b90506000610eab83611ae4565b9050808015610ec65750610ec6610ec0611b01565b84611b05565b15610fd6576000838152600c60205260409020548714610f29576040805162461bcd60e51b81526020600482015260196024820152780829682a0744092dcecc2d8d2c840e0c2e4cadce840d0c2e6d603b1b604482015290519081900360640190fd5b6000838152600c602052604090206000196001909101558683610f4a611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e898960006040518080602001836002811115610f8c57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460019350505050611200565b80158015610fe15750815b156110a757610ff7610ff1611b01565b84611c23565b6000838152600c60205260409020878155600019600190910155868361101b611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e89896001604051808060200183600281111561105d57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460029350505050611200565b8080156110c557506000838152600c60205260409020600101544210155b80156110ce5750815b156111f8576000838152600c60205260409020548714611131576040805162461bcd60e51b81526020600482015260196024820152780829682a0744092dcecc2d8d2c840e0c2e4cadce840d0c2e6d603b1b604482015290519081900360640190fd5b61114b61113d84611390565b611145611b01565b85611c04565b6000838152600c60205260409020600019600190910155868361116c611b01565b6001600160a01b03167f2574d3b5e98dcd17b129343ee43bda3629741c9f23256766c603c18f2c1f014e8989600260405180806020018360028111156111ae57fe5b60ff1681526020018281038252858582818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a460039350505050611200565b600093505050505b9392505050565b8161121181611ae4565b80156112235750611223610adb611b01565b801561122f5750600081115b61126a5760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000838152600c6020526040902060030180546001600160a01b0319166001600160a01b0384161790558261129d611b01565b6001600160a01b03166000805160206125378339815191526002604051808260048111156112c757fe5b60ff16815260200191505060405180910390a3505050565b610ccc83838360405180602001604052806000815250611740565b600061130582611ae4565b80156113115750600082115b92915050565b6000611321610c76565b821061135e5760405162461bcd60e51b815260040180806020018281038252602c815260200180612601602c913960400191505060405180910390fd5b6007828154811061136b57fe5b90600052602060002001549050919050565b600061131161138a611b01565b83611b05565b6000818152600160205260408120546001600160a01b0316806113115760405162461bcd60e51b815260040180806020018281038252602981526020018061248d6029913960400191505060405180910390fd5b60006001600160a01b03821661142b5760405162461bcd60e51b815260040180806020018281038252602a815260200180612463602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061131190611c44565b60008161145881611ae4565b80156114645750600081115b61149f5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090206002015490565b816114c081611ae4565b80156114d257506114d2610adb611b01565b80156114de5750600081115b6115195760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000838152600c6020526040902060020182905582611536611b01565b6001600160a01b03166000805160206125378339815191526001604051808260048111156112c757fe5b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109415780601f1061091657610100808354040283529160200191610941565b6001600160a01b03821633141561161f576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b8261169781611ae4565b80156116a957506116a9610adb611b01565b80156116b55750600081115b6116f05760405162461bcd60e51b81526004018080602001828103825260308152602001806123ab6030913960400191505060405180910390fd5b6000848152600c6020526040902061170c906004018484612227565b5083611716611b01565b6001600160a01b0316600080516020612537833981519152600360405180826004811115610c5d57fe5b61174b848484610c7c565b61175784848484611c48565b6117925760405162461bcd60e51b81526004018080602001828103825260328152602001806123796032913960400191505060405180910390fd5b50505050565b6000816117a481611ae4565b80156117b05750600081115b6117eb5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c60205260409020600301546001600160a01b031690565b60008161181781611ae4565b80156118235750600081115b61185e5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090206001015490565b606061188082611ae4565b6118bb5760405162461bcd60e51b815260040180806020018281038252602f815260200180612557602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452909183018282801561194e5780601f106119235761010080835404028352916020019161194e565b820191906000526020600020905b81548152906001019060200180831161193157829003601f168201915b50505050509050919050565b60008161196681611ae4565b80156119725750600081115b6119ad5760405162461bcd60e51b81526004018080602001828103825260298152602001806125866029913960400191505060405180910390fd5b50506000908152600c602052604090205490565b600060018251101580156119d757506020825111155b611a28576040805162461bcd60e51b815260206004820152601a60248201527f414b41503a20496e76616c6964206c6162656c206c656e677468000000000000604482015290519081900360640190fd5b8151602080840191909120604080518084018790528082018390528151808203830181526060909101909152805192019190912080611aae576040805162461bcd60e51b815260206004820152601760248201527f414b41503a20496e76616c6964206e6f64652068617368000000000000000000604482015290519081900360640190fd5b949350505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b3390565b6000611b1082611ae4565b611b4b5760405162461bcd60e51b815260040180806020018281038252602c8152602001806123ff602c913960400191505060405180910390fd5b6000611b5683611390565b9050806001600160a01b0316846001600160a01b03161480611b915750836001600160a01b0316611b868461094c565b6001600160a01b0316145b80611aae5750611aae8185611ab6565b611baa82611ae4565b611be55760405162461bcd60e51b815260040180806020018281038252602c8152602001806124e2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610ccc928401906122a5565b611c0f838383611d7b565b611c198382611ebf565b610ccc8282611fb4565b611c2d8282611ff2565b611c378282611fb4565b611c4081612123565b5050565b5490565b6000611c5c846001600160a01b0316612167565b611c6857506001611aae565b604051630a85bd0160e11b815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015611ce2578181015183820152602001611cca565b50505050905090810190601f168015611d0f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015611d3157600080fd5b505af1158015611d45573d6000803e3d6000fd5b505050506040513d6020811015611d5b57600080fd5b50516001600160e01b031916630a85bd0160e11b14915050949350505050565b826001600160a01b0316611d8e82611390565b6001600160a01b031614611dd35760405162461bcd60e51b815260040180806020018281038252602981526020018061250e6029913960400191505060405180910390fd5b6001600160a01b038216611e185760405162461bcd60e51b81526004018080602001828103825260248152602001806123db6024913960400191505060405180910390fd5b611e218161216d565b6001600160a01b0383166000908152600360205260409020611e42906121aa565b6001600160a01b0382166000908152600360205260409020611e63906121c1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054611ee990600163ffffffff6121ca16565b600083815260066020526040902054909150808214611f84576001600160a01b0384166000908152600560205260408120805484908110611f2657fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110611f6457fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611fad906000198301612313565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6001600160a01b03821661204d576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b61205681611ae4565b156120a8576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b0387169081179091558352600390915290206120e7906121c1565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b3b151590565b6000818152600260205260409020546001600160a01b0316156121a757600081815260026020526040902080546001600160a01b03191690555b50565b80546121bd90600163ffffffff6121ca16565b9055565b80546001019055565b600082821115612221576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122685782800160ff19823516178555612295565b82800160010185558215612295579182015b8281111561229557823582559160200191906001019061227a565b506122a1929150612333565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106122e657805160ff1916838001178555612295565b82800160010185558215612295579182015b828111156122955782518255916020019190600101906122f8565b815481835581811115610ccc57600083815260209020610ccc9181019083015b61094991905b808211156122a1576000815560010161233956fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572414b41503a207365742076616c75652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4e643f23cbc202af4f83dce574290af81b7d940546736d83eec38524c05908f84552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e414b41503a206f70657261746f7220717565727920666f72206e6f6e6578697374656e74206e6f64654552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a265627a7a72315820fad6b581bcdb67eb97ac3e02062c4c98693ea66a316c8b2acf1207be83e0b82064736f6c63430005100032", + "sourceMap": "737:5155:0:-;;;963:316;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;452:155:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;452:155:10;;;;;;;718:40:5;-1:-1:-1;;;;;;;;718:18:5;:40;:::i;:::-;2220::8;-1:-1:-1;;;;;;;;2220:18:8;:40;:::i;:::-;1316:51:9;-1:-1:-1;;;;;;;;1316:18:9;:51;:::i;:::-;825:12:11;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;847:16:11;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;951:49:11;-1:-1:-1;;;;;;;;951:18:11;:49;:::i;:::-;-1:-1:-1;1110:11:0;;-1:-1:-1;1135:27:0;;-1:-1:-1;1141:12:0;;-1:-1:-1;;;;;;1141:10:0;:12;:::i;:::-;1155:6;-1:-1:-1;;;;;1135:5:0;:27;:::i;:::-;1172:13;;;;:5;:13;;;;;-1:-1:-1;;1172:20:0;;;;:31;1178:6;;1224:12;-1:-1:-1;;;;;1224:10:0;:12;:::i;:::-;-1:-1:-1;;;;;1218:54:0;;1258:13;1218:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;963:316;737:5155;;1442:190:5;-1:-1:-1;;;;;;1517:25:5;;;;;1509:66;;;;;-1:-1:-1;;;1509:66:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1585:33:5;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1585:40:5;1621:4;1585:40;;;1442:190::o;1285:96:0:-;1364:10;1285:96;;:::o;3629:196:9:-;3692:24;3704:2;3708:7;3692:11;;;;;:24;;:::i;:::-;3727:40;3755:2;3759:7;-1:-1:-1;;;;;3727:27:9;:40;:::i;:::-;3778;3810:7;-1:-1:-1;;;;;3778:31:9;:40;:::i;:::-;3629:196;;:::o;9179:327:8:-;-1:-1:-1;;;;;9250:16:8;;9242:61;;;;;-1:-1:-1;;;9242:61:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9322:16;9330:7;-1:-1:-1;;;;;9322:7:8;:16;:::i;:::-;9321:17;9313:58;;;;;-1:-1:-1;;;9313:58:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;9382:20;;;;:11;:20;;;;;;;;:25;;-1:-1:-1;;;;;;9382:25:8;-1:-1:-1;;;;;9382:25:8;;;;;;;;9417:21;;:17;:21;;;;;:33;;:31;;;;;:33;;:::i;:::-;9466;;9491:7;;-1:-1:-1;;;;;9466:33:8;;;9483:1;;9466:33;;9483:1;;9466:33;9179:327;;:::o;5087:183:9:-;-1:-1:-1;;;;;5200:16:9;;;;;;;:12;:16;;;;;;;;:23;;5171:26;;;:17;:26;;;;;:52;;;5233:16;;;39:1:-1;23:18;;45:23;;5233:30:9;;;;;;;;5087:183::o;5465:161::-;5568:10;:17;;5541:24;;;;:15;:24;;;;;:44;;;39:1:-1;23:18;;45:23;;5595:24:9;;;;;;;5465:161::o;8092:152:8:-;8149:4;8181:20;;;:11;:20;;;;;;-1:-1:-1;;;;;8181:20:8;8218:19;;;8092:152::o;1181:89:4:-;1244:19;;1262:1;1244:19;;;1181:89::o;737:5155:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:5155:0;;;-1:-1:-1;737:5155:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "737:5155:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;737:5155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;915:133:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;915:133:5;-1:-1:-1;;;;;;915:133:5;;:::i;:::-;;;;;;;;;;;;;;;;;;1112:83:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1112:83:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4237:200:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4237:200:8;;:::i;:::-;;;;-1:-1:-1;;;;;4237:200:8;;;;;;;;;;;;;;3541:411;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3541:411:8;;;;;;;;:::i;:::-;;4861:181:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4861:181:0;;:::i;5685:205::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5685:205:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5685:205:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5685:205:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;5685:205:0;;-1:-1:-1;5685:205:0;-1:-1:-1;5685:205:0;:::i;2130:94:9:-;;;:::i;:::-;;;;;;;;;;;;;;;;5877:285:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5877:285:8;;;;;;;;;;;;;;;;;:::i;1748:229:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1748:229:9;;;;;;;;:::i;4720:135:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4720:135:0;;:::i;2129:1794::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2129:1794:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2129:1794:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2129:1794:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;2129:1794:0;;-1:-1:-1;2129:1794:0;-1:-1:-1;2129:1794:0;:::i;5252:210::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5252:210:0;;;;;;-1:-1:-1;;;;;5252:210:0;;:::i;6795:132:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;6795:132:8;;;;;;;;;;;;;;;;;:::i;3929:111:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3929:111:0;;:::i;2562:196:9:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2562:196:9;;:::i;4046:133:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4046:133:0;;:::i;2897:223:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2897:223:8;;:::i;2471:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2471:207:8;-1:-1:-1;;;;;2471:207:8;;:::i;4449:125:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4449:125:0;;:::i;5048:198::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5048:198:0;;;;;;;:::i;1304:87:11:-;;;:::i;4730:243:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4730:243:8;;;;;;;;;;:::i;5468:211:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5468:211:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5468:211:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5468:211:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;5468:211:0;;-1:-1:-1;5468:211:0;-1:-1:-1;5468:211:0;:::i;7632:265:8:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;7632:265:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7632:265:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7632:265:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7632:265:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7632:265:8;;-1:-1:-1;7632:265:8;;-1:-1:-1;;;;;7632:265:8:i;4580:134:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4580:134:0;;:::i;4318:125::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4318:125:0;;:::i;1591:202:11:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1591:202:11;;:::i;4185:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4185:127:0;;:::i;1744:379::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1744:379:0;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1744:379:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1744:379:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1744:379:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1744:379:0;;-1:-1:-1;1744:379:0;;-1:-1:-1;;;;;1744:379:0:i;5295:145:8:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5295:145:8;;;;;;;;;;:::i;915:133:5:-;-1:-1:-1;;;;;;1008:33:5;985:4;1008:33;;;;;;;;;;;;;;915:133::o;1112:83:11:-;1183:5;1176:12;;;;;;;;-1:-1:-1;;1176:12:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:13;;1176:12;;1183:5;;1176:12;;1183:5;1176:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1112:83;;:::o;4237:200:8:-;4296:7;4323:16;4331:7;4323;:16::i;:::-;4315:73;;;;-1:-1:-1;;;4315:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4406:24:8;;;;:15;:24;;;;;;-1:-1:-1;;;;;4406:24:8;;4237:200::o;3541:411::-;3604:13;3620:16;3628:7;3620;:16::i;:::-;3604:32;;3660:5;-1:-1:-1;;;;;3654:11:8;:2;-1:-1:-1;;;;;3654:11:8;;;3646:57;;;;-1:-1:-1;;;3646:57:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3722:10;-1:-1:-1;;;;;3722:19:8;;;;:58;;;3745:35;3762:5;3769:10;3745:16;:35::i;:::-;3714:148;;;;-1:-1:-1;;;3714:148:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3873:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;3873:29:8;-1:-1:-1;;;;;3873:29:8;;;;;;;;;3917:28;;3873:24;;3917:28;;;;;;;3541:411;;;:::o;4861:181:0:-;4916:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;:::-;1645:6;1612:18;:40::i;:::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4934:13;;;;:5;:13;;;;;4957:3;4934:20;;;;:26;4940:6;4992:12;:10;:12::i;:::-;-1:-1:-1;;;;;4975:60:0;-1:-1:-1;;;;;;;;;;;5014:20:0;4975:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;4861:181;;:::o;5685:205::-;5762:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;1612:40::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5780:25;5793:6;5801:3;;5780:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5780:12:0;;-1:-1:-1;;;5780:25:0:i;:::-;5851:6;5837:12;:10;:12::i;:::-;-1:-1:-1;;;;;5820:63:0;-1:-1:-1;;;;;;;;;;;5859:23:0;5820:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;5685:205;;;;:::o;2130:94:9:-;2200:10;:17;2130:94;:::o;5877:285:8:-;6019:39;6038:10;6050:7;6019:18;:39::i;:::-;6011:101;;;;-1:-1:-1;;;6011:101:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6123:32;6137:4;6143:2;6147:7;6123:13;:32::i;:::-;5877:285;;;:::o;1748:229:9:-;1828:7;1863:16;1873:5;1863:9;:16::i;:::-;1855:5;:24;1847:80;;;;-1:-1:-1;;;1847:80:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1944:19:9;;;;;;:12;:19;;;;;:26;;1964:5;;1944:26;;;;;;;;;;;;;;1937:33;;1748:229;;;;:::o;4720:135:0:-;4795:12;4778:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4826:13;;;;:5;:13;;;;;;;;;:22;;4819:29;;;;;;-1:-1:-1;;4819:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4826:22;;4819:29;;4826:22;4819:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4720:135;;;;:::o;2129:1794::-;2199:11;2532;2546:23;2553:8;2563:5;;2546:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2546:6:0;;-1:-1:-1;;;2546:23:0:i;:::-;2532:37;;2580:18;2601:42;2620:12;:10;:12::i;:::-;2634:8;2601:18;:42::i;:::-;2580:63;;2653:15;2671;2679:6;2671:7;:15::i;:::-;2653:33;;2701:10;:54;;;;;2715:40;2734:12;:10;:12::i;:::-;2748:6;2715:18;:40::i;:::-;2697:1180;;;2791:13;;;;:5;:13;;;;;:22;2779:34;;2771:72;;;;;-1:-1:-1;;;2771:72:0;;;;;;;;;;;;-1:-1:-1;;;2771:72:0;;;;;;;;;;;;;;;2922:13;;;;:5;:13;;;;;-1:-1:-1;;2922:20:0;;;;:31;3000:8;2928:6;2978:12;:10;:12::i;:::-;-1:-1:-1;;;;;2972:63:0;;3010:5;;3017:17;2972:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;2972:63:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;2972:63:0;;;;-1:-1:-1;2972:63:0;;-1:-1:-1;;;;;2972:63:0;3057:1;3050:8;;;;;;;2697:1180;3080:10;3079:11;:28;;;;;3094:13;3079:28;3075:802;;;3180:27;3186:12;:10;:12::i;:::-;3200:6;3180:5;:27::i;:::-;3221:13;;;;:5;:13;;;;;:33;;;-1:-1:-1;;3268:20:0;;;;:31;3246:8;3227:6;3324:12;:10;:12::i;:::-;-1:-1:-1;;;;;3318:59:0;;3356:5;;3363:13;3318:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;3318:59:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;3318:59:0;;;;-1:-1:-1;3318:59:0;;-1:-1:-1;;;;;3318:59:0;3399:1;3392:8;;;;;;;3075:802;3421:10;:41;;;;-1:-1:-1;3435:13:0;;;;:5;:13;;;;;:20;;;3459:3;-1:-1:-1;3435:27:0;3421:41;:58;;;;;3466:13;3421:58;3417:460;;;3515:13;;;;:5;:13;;;;;:22;3503:34;;3495:72;;;;;-1:-1:-1;;;3495:72:0;;;;;;;;;;;;-1:-1:-1;;;3495:72:0;;;;;;;;;;;;;;;3663:52;3677:15;3685:6;3677:7;:15::i;:::-;3694:12;:10;:12::i;:::-;3708:6;3663:13;:52::i;:::-;3729:13;;;;:5;:13;;;;;-1:-1:-1;;3729:20:0;;;;:31;3807:8;3735:6;3785:12;:10;:12::i;:::-;-1:-1:-1;;;;;3779:64:0;;3817:5;;3824:18;3779:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;3779:64:0;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;3779:64:0;;;;-1:-1:-1;3779:64:0;;-1:-1:-1;;;;;3779:64:0;3865:1;3858:8;;;;;;;3417:460;3915:1;3908:8;;;;;2129:1794;;;;;;:::o;5252:210::-;5325:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;1612:40::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5343:13;;;;:5;:13;;;;;:24;;:32;;-1:-1:-1;;;;;;5343:32:0;-1:-1:-1;;;;;5343:32:0;;;;;:13;5407:12;:10;:12::i;:::-;-1:-1:-1;;;;;5390:65:0;-1:-1:-1;;;;;;;;;;;5429:25:0;5390:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;5252:210;;;:::o;6795:132:8:-;6881:39;6898:4;6904:2;6908:7;6881:39;;;;;;;;;;;;:16;:39::i;3929:111:0:-;3981:4;4004:15;4012:6;4004:7;:15::i;:::-;:29;;;;;4032:1;4023:6;:10;4004:29;3997:36;3929:111;-1:-1:-1;;3929:111:0:o;2562:196:9:-;2620:7;2655:13;:11;:13::i;:::-;2647:5;:21;2639:78;;;;-1:-1:-1;;;2639:78:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2734:10;2745:5;2734:17;;;;;;;;;;;;;;;;2727:24;;2562:196;;;:::o;4046:133:0:-;4109:4;4132:40;4151:12;:10;:12::i;:::-;4165:6;4132:18;:40::i;2897:223:8:-;2952:7;2987:20;;;:11;:20;;;;;;-1:-1:-1;;;;;2987:20:8;3025:19;3017:73;;;;-1:-1:-1;;;3017:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:207;2526:7;-1:-1:-1;;;;;2553:19:8;;2545:74;;;;-1:-1:-1;;;2545:74:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2637:24:8;;;;;;:17;:24;;;;;:34;;:32;:34::i;4449:125:0:-;4523:4;4506:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4546:13:0;;;;:5;:13;;;;;:21;;;;4449:125::o;5048:198::-;5115:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;1612:40::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5133:13;;;;:5;:13;;;;;:21;;:29;;;5139:6;5194:12;:10;:12::i;:::-;-1:-1:-1;;;;;5177:62:0;-1:-1:-1;;;;;;;;;;;5216:22:0;5177:62;;;;;;;;;;;1304:87:11;1377:7;1370:14;;;;;;;;-1:-1:-1;;1370:14:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1345:13;;1370:14;;1377:7;;1370:14;;1377:7;1370:14;;;;;;;;;;;;;;;;;;;;;;;;4730:243:8;-1:-1:-1;;;;;4809:16:8;;4815:10;4809:16;;4801:54;;;;;-1:-1:-1;;;4801:54:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;4885:10;4866:30;;;;:18;:30;;;;;;;;-1:-1:-1;;;;;4866:34:8;;;;;;;;;;;;:45;;-1:-1:-1;;4866:45:8;;;;;;;;;;4926:40;;;;;;;4866:34;;4885:10;4926:40;;;;;;;;;;;4730:243;;:::o;5468:211:0:-;5546:6;1593:15;1601:6;1593:7;:15::i;:::-;:59;;;;;1612:40;1631:12;:10;:12::i;1612:40::-;1593:73;;;;;1665:1;1656:6;:10;1593:73;1585:134;;;;-1:-1:-1;;;1585:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5564:13;;;;:5;:13;;;;;:30;;:22;;5589:5;;5564:30;:::i;:::-;;5640:6;5626:12;:10;:12::i;:::-;-1:-1:-1;;;;;5609:63:0;-1:-1:-1;;;;;;;;;;;5648:23:0;5609:63;;;;;;;;;;;7632:265:8;7738:31;7751:4;7757:2;7761:7;7738:12;:31::i;:::-;7787:48;7810:4;7816:2;7820:7;7829:5;7787:22;:48::i;:::-;7779:111;;;;-1:-1:-1;;;7779:111:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7632:265;;;;:::o;4580:134:0:-;4657:7;4640:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4683:13:0;;;;:5;:13;;;;;:24;;;-1:-1:-1;;;;;4683:24:0;;4580:134::o;4318:125::-;4393:4;4376:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4416:13:0;;;;:5;:13;;;;;:20;;;;4318:125::o;1591:202:11:-;1649:13;1682:16;1690:7;1682;:16::i;:::-;1674:76;;;;-1:-1:-1;;;1674:76:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1767:19;;;;:10;:19;;;;;;;;;1760:26;;;;;;-1:-1:-1;;1760:26:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1767:19;;1760:26;;1767:19;1760:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1591:202;;;:::o;4185:127:0:-;4260:4;4243:6;1440:15;1448:6;1440:7;:15::i;:::-;:29;;;;;1468:1;1459:6;:10;1440:29;1432:83;;;;-1:-1:-1;;;1432:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4283:13:0;;;;:5;:13;;;;;:22;;4185:127::o;1744:379::-;1816:7;1859:1;1843:5;:12;:17;;:39;;;;;1880:2;1864:5;:12;:18;;1843:39;1835:78;;;;;-1:-1:-1;;;1835:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1944:16;;;;;;;;;;1997:31;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1997:31:0;;;;;;;1987:42;;;;;;;;2048:10;2040:46;;;;;-1:-1:-1;;;2040:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2109:6;1744:379;-1:-1:-1;;;;1744:379:0:o;5295:145:8:-;-1:-1:-1;;;;;5398:25:8;;;5375:4;5398:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;5295:145::o;8092:152::-;8149:4;8181:20;;;:11;:20;;;;;;-1:-1:-1;;;;;8181:20:8;8218:19;;;8092:152::o;1285:96:0:-;1364:10;1285:96;:::o;8605:329:8:-;8690:4;8714:16;8722:7;8714;:16::i;:::-;8706:73;;;;-1:-1:-1;;;8706:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8789:13;8805:16;8813:7;8805;:16::i;:::-;8789:32;;8850:5;-1:-1:-1;;;;;8839:16:8;:7;-1:-1:-1;;;;;8839:16:8;;:51;;;;8883:7;-1:-1:-1;;;;;8859:31:8;:20;8871:7;8859:11;:20::i;:::-;-1:-1:-1;;;;;8859:31:8;;8839:51;:87;;;;8894:32;8911:5;8918:7;8894:16;:32::i;2032:192:11:-;2117:16;2125:7;2117;:16::i;:::-;2109:73;;;;-1:-1:-1;;;2109:73:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2192:19;;;;:10;:19;;;;;;;;:25;;;;;;;;:::i;3133:239:9:-;3218:38;3238:4;3244:2;3248:7;3218:19;:38::i;:::-;3267:47;3300:4;3306:7;3267:32;:47::i;:::-;3325:40;3353:2;3357:7;3325:27;:40::i;3629:196::-;3692:24;3704:2;3708:7;3692:11;:24::i;:::-;3727:40;3755:2;3759:7;3727:27;:40::i;:::-;3778;3810:7;3778:31;:40::i;:::-;3629:196;;:::o;1063:112:4:-;1154:14;;1063:112::o;11771:347:8:-;11892:4;11917:15;:2;-1:-1:-1;;;;;11917:13:8;;:15::i;:::-;11912:58;;-1:-1:-1;11955:4:8;11948:11;;11912:58;11996:70;;-1:-1:-1;;;11996:70:8;;12033:10;11996:70;;;;;;-1:-1:-1;;;;;11996:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;11980:13;;11996:36;;;;;;12033:10;;12045:4;;12051:7;;12060:5;;11996:70;;;;;;;;;;;11980:13;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11996:70:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11996:70:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11996:70:8;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11996:70:8;-1:-1:-1;;;;;;12084:26:8;-1:-1:-1;;;12084:26:8;;-1:-1:-1;;11771:347:8;;;;;;:::o;10751:447::-;10864:4;-1:-1:-1;;;;;10844:24:8;:16;10852:7;10844;:16::i;:::-;-1:-1:-1;;;;;10844:24:8;;10836:78;;;;-1:-1:-1;;;10836:78:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10932:16:8;;10924:65;;;;-1:-1:-1;;;10924:65:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11000:23;11015:7;11000:14;:23::i;:::-;-1:-1:-1;;;;;11034:23:8;;;;;;:17;:23;;;;;:35;;:33;:35::i;:::-;-1:-1:-1;;;;;11079:21:8;;;;;;:17;:21;;;;;:33;;:31;:33::i;:::-;11123:20;;;;:11;:20;;;;;;:25;;-1:-1:-1;;;;;;11123:25:8;-1:-1:-1;;;;;11123:25:8;;;;;;;;;11164:27;;11123:20;;11164:27;;;;;;;10751:447;;;:::o;6241:1128:9:-;-1:-1:-1;;;;;6528:18:9;;6503:22;6528:18;;;:12;:18;;;;;:25;:32;;6558:1;6528:32;:29;:32;:::i;:::-;6570:18;6591:26;;;:17;:26;;;;;;6503:57;;-1:-1:-1;6721:28:9;;;6717:323;;-1:-1:-1;;;;;6787:18:9;;6765:19;6787:18;;;:12;:18;;;;;:34;;6806:14;;6787:34;;;;;;;;;;;;;;6765:56;;6869:11;6836:12;:18;6849:4;-1:-1:-1;;;;;6836:18:9;-1:-1:-1;;;;;6836:18:9;;;;;;;;;;;;6855:10;6836:30;;;;;;;;;;;;;;;;;;;:44;;;;6952:30;;;:17;:30;;;;;:43;;;6717:323;-1:-1:-1;;;;;7126:18:9;;;;;;:12;:18;;;;;:27;;;;;-1:-1:-1;;7126:27:9;;;:::i;:::-;;6241:1128;;;;:::o;5087:183::-;-1:-1:-1;;;;;5200:16:9;;;;;;;:12;:16;;;;;;;;:23;;5171:26;;;:17;:26;;;;;:52;;;5233:16;;;39:1:-1;23:18;;45:23;;5233:30:9;;;;;;;;5087:183::o;9179:327:8:-;-1:-1:-1;;;;;9250:16:8;;9242:61;;;;;-1:-1:-1;;;9242:61:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9322:16;9330:7;9322;:16::i;:::-;9321:17;9313:58;;;;;-1:-1:-1;;;9313:58:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;9382:20;;;;:11;:20;;;;;;;;:25;;-1:-1:-1;;;;;;9382:25:8;-1:-1:-1;;;;;9382:25:8;;;;;;;;9417:21;;:17;:21;;;;;:33;;:31;:33::i;:::-;9466;;9491:7;;-1:-1:-1;;;;;9466:33:8;;;9483:1;;9466:33;;9483:1;;9466:33;9179:327;;:::o;5465:161:9:-;5568:10;:17;;5541:24;;;;:15;:24;;;;;:44;;;39:1:-1;23:18;;45:23;;5595:24:9;;;;;;;5465:161::o;542:413:16:-;902:20;940:8;;;542:413::o;12280:171:8:-;12379:1;12343:24;;;:15;:24;;;;;;-1:-1:-1;;;;;12343:24:8;:38;12339:106;;12432:1;12397:24;;;:15;:24;;;;;:37;;-1:-1:-1;;;;;;12397:37:8;;;12339:106;12280:171;:::o;1276:108:4:-;1356:14;;:21;;1375:1;1356:21;:18;:21;:::i;:::-;1339:38;;1276:108::o;1181:89::-;1244:19;;1262:1;1244:19;;;1181:89::o;1274:179:7:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:7;;;1274:179::o;737:5155:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;737:5155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;737:5155:0;;;-1:-1:-1;737:5155:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "source": "// Copyright (C) 2019 Christian Felde\n// Copyright (C) 2019 Mohamed Elshami\n\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n\n// http://www.apache.org/licenses/LICENSE-2.0\n\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\npragma solidity ^0.5.0;\n\nimport \"./IAKAP.sol\";\nimport \"@openzeppelin/contracts/token/ERC721/ERC721Full.sol\";\n\ncontract AKAF is IAKAP, ERC721Full {\n struct Node {\n uint parentId;\n uint expiry;\n uint seeAlso;\n address seeAddress;\n bytes nodeBody;\n }\n\n mapping(uint => Node) private nodes;\n\n constructor() ERC721Full(\"AKA Forever Registry\", \"AKAF\") public {\n // Create the special root node and assigned msg.sender as owner\n uint nodeId = 0;\n _mint(_msgSender(), nodeId);\n nodes[nodeId].expiry = uint(-1);\n emit Claim(_msgSender(), nodeId, nodeId, \"\", ClaimCase.NEW);\n }\n\n function _msgSender() internal view returns (address payable) {\n return msg.sender;\n }\n\n modifier onlyExisting(uint nodeId) {\n require(_exists(nodeId) && nodeId > 0, \"AKAP: operator query for nonexistent node\");\n\n _;\n }\n\n modifier onlyApproved(uint nodeId) {\n require(_exists(nodeId) && _isApprovedOrOwner(_msgSender(), nodeId) && nodeId > 0, \"AKAP: set value caller is not owner nor approved\");\n\n _;\n }\n\n function hashOf(uint parentId, bytes memory label) public pure returns (uint id) {\n require(label.length >= 1 && label.length <= 32, \"AKAP: Invalid label length\");\n\n bytes32 labelHash = keccak256(label);\n bytes32 nodeId = keccak256(abi.encode(parentId, labelHash));\n\n require(nodeId > 0, \"AKAP: Invalid node hash\");\n\n return uint(nodeId);\n }\n\n function claim(uint parentId, bytes calldata label) external returns (uint status) {\n // Claim logic is as found in AKAP, but with an expiry timestamp set to \"forever\".\n // Owners of a node on an AKAF contract does hence not need to reclaim their nodes.\n // Node owners may still explicitly expire a node if they wish.\n\n // Get hash/id of the node caller is claiming\n uint nodeId = hashOf(parentId, label);\n\n bool isParentOwner = _isApprovedOrOwner(_msgSender(), parentId);\n bool nodeExists = _exists(nodeId);\n\n if (nodeExists && _isApprovedOrOwner(_msgSender(), nodeId)) {\n require(parentId == nodes[nodeId].parentId, \"AKAP: Invalid parent hash\");\n\n // Caller is current owner/approved, extend lease..\n nodes[nodeId].expiry = uint(-1);\n emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.RECLAIM);\n\n return 1;\n } else if (!nodeExists && isParentOwner) {\n // Node does not exist, allocate to caller..\n _mint(_msgSender(), nodeId);\n nodes[nodeId].parentId = parentId;\n nodes[nodeId].expiry = uint(-1);\n emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.NEW);\n\n return 2;\n } else if (nodeExists && nodes[nodeId].expiry <= now && isParentOwner) {\n require(parentId == nodes[nodeId].parentId, \"AKAP: Invalid parent hash\");\n\n // Node exists and is expired, allocate to caller and extend lease..\n _transferFrom(ownerOf(nodeId), _msgSender(), nodeId);\n nodes[nodeId].expiry = uint(-1);\n emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.TRANSFER);\n\n return 3;\n }\n\n // No action\n return 0;\n }\n\n function exists(uint nodeId) external view returns (bool) {\n return _exists(nodeId) && nodeId > 0;\n }\n\n function isApprovedOrOwner(uint nodeId) external view returns (bool) {\n return _isApprovedOrOwner(_msgSender(), nodeId);\n }\n\n function parentOf(uint nodeId) external view onlyExisting(nodeId) returns (uint) {\n return nodes[nodeId].parentId;\n }\n\n function expiryOf(uint nodeId) external view onlyExisting(nodeId) returns (uint) {\n return nodes[nodeId].expiry;\n }\n\n function seeAlso(uint nodeId) external view onlyExisting(nodeId) returns (uint) {\n return nodes[nodeId].seeAlso;\n }\n\n function seeAddress(uint nodeId) external view onlyExisting(nodeId) returns (address) {\n return nodes[nodeId].seeAddress;\n }\n\n function nodeBody(uint nodeId) external view onlyExisting(nodeId) returns (bytes memory) {\n return nodes[nodeId].nodeBody;\n }\n\n function expireNode(uint nodeId) external onlyApproved(nodeId) {\n nodes[nodeId].expiry = now;\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.EXPIRY);\n }\n\n function setSeeAlso(uint nodeId, uint value) external onlyApproved(nodeId) {\n nodes[nodeId].seeAlso = value;\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.SEE_ALSO);\n }\n\n function setSeeAddress(uint nodeId, address value) external onlyApproved(nodeId) {\n nodes[nodeId].seeAddress = value;\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.SEE_ADDRESS);\n }\n\n function setNodeBody(uint nodeId, bytes calldata value) external onlyApproved(nodeId) {\n nodes[nodeId].nodeBody = value;\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.NODE_BODY);\n }\n\n function setTokenURI(uint nodeId, string calldata uri) external onlyApproved(nodeId) {\n _setTokenURI(nodeId, uri);\n emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.TOKEN_URI);\n }\n}", + "sourcePath": "/private/tmp/eth/akap/contracts/AKAF.sol", + "ast": { + "absolutePath": "/private/tmp/eth/akap/contracts/AKAF.sol", + "exportedSymbols": { + "AKAF": [ + 564 + ] + }, + "id": 565, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "627:23:0" + }, + { + "absolutePath": "/private/tmp/eth/akap/contracts/IAKAP.sol", + "file": "./IAKAP.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 565, + "sourceUnit": 1319, + "src": "652:21:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Full.sol", + "file": "@openzeppelin/contracts/token/ERC721/ERC721Full.sol", + "id": 3, + "nodeType": "ImportDirective", + "scope": 565, + "sourceUnit": 2546, + "src": "674:61:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4, + "name": "IAKAP", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1318, + "src": "754:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAKAP_$1318", + "typeString": "contract IAKAP" + } + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "754:5:0" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6, + "name": "ERC721Full", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2545, + "src": "761:10:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Full_$2545", + "typeString": "contract ERC721Full" + } + }, + "id": 7, + "nodeType": "InheritanceSpecifier", + "src": "761:10:0" + } + ], + "contractDependencies": [ + 1318, + 1476, + 1486, + 2184, + 2521, + 2545, + 2674, + 2777, + 2804, + 2827 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 564, + "linearizedBaseContracts": [ + 564, + 2545, + 2674, + 2827, + 2521, + 2804, + 2184, + 2777, + 1476, + 1486, + 1318 + ], + "name": "AKAF", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "AKAF.Node", + "id": 18, + "members": [ + { + "constant": false, + "id": 9, + "name": "parentId", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "800:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "800:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "823:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "823:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13, + "name": "seeAlso", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "844:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "844:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 15, + "name": "seeAddress", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "866:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "866:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "name": "nodeBody", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "894:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 16, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "894:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Node", + "nodeType": "StructDefinition", + "scope": 564, + "src": "778:137:0", + "visibility": "public" + }, + { + "constant": false, + "id": 22, + "name": "nodes", + "nodeType": "VariableDeclaration", + "scope": 564, + "src": "921:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node)" + }, + "typeName": { + "id": 21, + "keyType": { + "id": 19, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "929:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "921:21:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node)" + }, + "valueType": { + "contractScope": null, + "id": 20, + "name": "Node", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "937:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage_ptr", + "typeString": "struct AKAF.Node" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 59, + "nodeType": "Block", + "src": "1027:252:0", + "statements": [ + { + "assignments": [ + 30 + ], + "declarations": [ + { + "constant": false, + "id": 30, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 59, + "src": "1110:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1110:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 32, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1124:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1110:15:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 34, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1141:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1141:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 36, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "1155:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 33, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2328 + ], + "referencedDeclaration": 2328, + "src": "1135:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1135:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 38, + "nodeType": "ExpressionStatement", + "src": "1135:27:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 47, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 39, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "1172:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 41, + "indexExpression": { + "argumentTypes": null, + "id": 40, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "1178:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1172:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 42, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "1172:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1200:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1201:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1195:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1195:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1172:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 48, + "nodeType": "ExpressionStatement", + "src": "1172:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1224:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1224:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 52, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "1238:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 53, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "1246:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1254:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 55, + "name": "ClaimCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "1258:9:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$", + "typeString": "type(enum IAKAP.ClaimCase)" + } + }, + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "NEW", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1258:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + ], + "id": 49, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "1218:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1218:54:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58, + "nodeType": "EmitStatement", + "src": "1213:59:0" + } + ] + }, + "documentation": null, + "id": 60, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "414b4120466f7265766572205265676973747279", + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "988:22:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cae7ceeb2ebe151f1c27619f938a56491425da9af3053c9e79e96783851bd6e3", + "typeString": "literal_string \"AKA Forever Registry\"" + }, + "value": "AKA Forever Registry" + }, + { + "argumentTypes": null, + "hexValue": "414b4146", + "id": 26, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1012:6:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a508d8c7eae35b3a6e2f5a6804bed7b2f7bf00c46f7af065a48ea5aa52ab21e5", + "typeString": "literal_string \"AKAF\"" + }, + "value": "AKAF" + } + ], + "id": 27, + "modifierName": { + "argumentTypes": null, + "id": 24, + "name": "ERC721Full", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2545, + "src": "977:10:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Full_$2545_$", + "typeString": "type(contract ERC721Full)" + } + }, + "nodeType": "ModifierInvocation", + "src": "977:42:0" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [], + "src": "974:2:0" + }, + "returnParameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [], + "src": "1027:0:0" + }, + "scope": 564, + "src": "963:316:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "1347:34:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 65, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2877, + "src": "1364:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1364:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 64, + "id": 67, + "nodeType": "Return", + "src": "1357:17:0" + } + ] + }, + "documentation": null, + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [], + "src": "1304:2:0" + }, + "returnParameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1330:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1330:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:17:0" + }, + "scope": 564, + "src": "1285:96:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 85, + "nodeType": "Block", + "src": "1422:112:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 75, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "1448:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 74, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "1440:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1440:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 77, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "1459:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1468:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1459:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1440:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a206f70657261746f7220717565727920666f72206e6f6e6578697374656e74206e6f6465", + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1471:43:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a658d58523fc6cf084d1dd3125a8fc1b3ad66eb4d398c72b5853657b82ff950b", + "typeString": "literal_string \"AKAP: operator query for nonexistent node\"" + }, + "value": "AKAP: operator query for nonexistent node" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a658d58523fc6cf084d1dd3125a8fc1b3ad66eb4d398c72b5853657b82ff950b", + "typeString": "literal_string \"AKAP: operator query for nonexistent node\"" + } + ], + "id": 73, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "1432:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1432:83:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 83, + "nodeType": "ExpressionStatement", + "src": "1432:83:0" + }, + { + "id": 84, + "nodeType": "PlaceholderStatement", + "src": "1526:1:0" + } + ] + }, + "documentation": null, + "id": 86, + "name": "onlyExisting", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 71, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1409:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 70, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1409:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1408:13:0" + }, + "src": "1387:147:0", + "visibility": "internal" + }, + { + "body": { + "id": 108, + "nodeType": "Block", + "src": "1575:163:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 92, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "1601:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 91, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "1593:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1593:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 95, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1631:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1631:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 97, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "1645:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 94, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "1612:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1612:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1593:59:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 100, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "1656:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1665:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1656:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1593:73:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a207365742076616c75652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1668:50:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_267122d712ca03e8a1e34737e2379df35cd276456b17514e34146918d87bc92c", + "typeString": "literal_string \"AKAP: set value caller is not owner nor approved\"" + }, + "value": "AKAP: set value caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_267122d712ca03e8a1e34737e2379df35cd276456b17514e34146918d87bc92c", + "typeString": "literal_string \"AKAP: set value caller is not owner nor approved\"" + } + ], + "id": 90, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "1585:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1585:134:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 106, + "nodeType": "ExpressionStatement", + "src": "1585:134:0" + }, + { + "id": 107, + "nodeType": "PlaceholderStatement", + "src": "1730:1:0" + } + ] + }, + "documentation": null, + "id": 109, + "name": "onlyApproved", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 88, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 109, + "src": "1562:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 87, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1562:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1561:13:0" + }, + "src": "1540:198:0", + "visibility": "internal" + }, + { + "body": { + "id": 158, + "nodeType": "Block", + "src": "1825:298:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 119, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "1843:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1843:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1859:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1843:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 123, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "1864:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1864:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1880:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "1864:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1843:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a20496e76616c6964206c6162656c206c656e677468", + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1884:28:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00918a32a10d2b64eddc50bddc5eb424a8dd1297b66da0875142c7f852ae50b5", + "typeString": "literal_string \"AKAP: Invalid label length\"" + }, + "value": "AKAP: Invalid label length" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_00918a32a10d2b64eddc50bddc5eb424a8dd1297b66da0875142c7f852ae50b5", + "typeString": "literal_string \"AKAP: Invalid label length\"" + } + ], + "id": 118, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "1835:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1835:78:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 130, + "nodeType": "ExpressionStatement", + "src": "1835:78:0" + }, + { + "assignments": [ + 132 + ], + "declarations": [ + { + "constant": false, + "id": 132, + "name": "labelHash", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "1924:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 136, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 134, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "1954:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 133, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2871, + "src": "1944:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1944:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1924:36:0" + }, + { + "assignments": [ + 138 + ], + "declarations": [ + { + "constant": false, + "id": 138, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "1970:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 137, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1970:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 146, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 142, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "2008:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 143, + "name": "labelHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "2018:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 140, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2864, + "src": "1997:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1997:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1997:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 139, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2871, + "src": "1987:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1987:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1970:59:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 148, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "2048:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2057:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2048:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a20496e76616c6964206e6f64652068617368", + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2060:25:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f83c7c02ea33e77031e907158a5c8c3333335ada800bb7480d52a6ecfa1f04e2", + "typeString": "literal_string \"AKAP: Invalid node hash\"" + }, + "value": "AKAP: Invalid node hash" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f83c7c02ea33e77031e907158a5c8c3333335ada800bb7480d52a6ecfa1f04e2", + "typeString": "literal_string \"AKAP: Invalid node hash\"" + } + ], + "id": 147, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "2040:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2040:46:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 153, + "nodeType": "ExpressionStatement", + "src": "2040:46:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 155, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "2109:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2104:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2104:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 117, + "id": 157, + "nodeType": "Return", + "src": "2097:19:0" + } + ] + }, + "documentation": null, + "id": 159, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 111, + "name": "parentId", + "nodeType": "VariableDeclaration", + "scope": 159, + "src": "1760:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1760:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "name": "label", + "nodeType": "VariableDeclaration", + "scope": 159, + "src": "1775:18:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 112, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1775:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1759:35:0" + }, + "returnParameters": { + "id": 117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 116, + "name": "id", + "nodeType": "VariableDeclaration", + "scope": 159, + "src": "1816:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 115, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1816:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1815:9:0" + }, + "scope": 564, + "src": "1744:379:0", + "stateMutability": "pure", + "superFunction": 1153, + "visibility": "public" + }, + { + "body": { + "id": 326, + "nodeType": "Block", + "src": "2212:1711:0", + "statements": [ + { + "assignments": [ + 169 + ], + "declarations": [ + { + "constant": false, + "id": 169, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "2532:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 168, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2532:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 174, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 171, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2553:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 172, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2563:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 170, + "name": "hashOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 159 + ], + "referencedDeclaration": 159, + "src": "2546:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,bytes memory) pure returns (uint256)" + } + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2546:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2532:37:0" + }, + { + "assignments": [ + 176 + ], + "declarations": [ + { + "constant": false, + "id": 176, + "name": "isParentOwner", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "2580:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 175, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2580:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 182, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 178, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "2620:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2620:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 180, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2634:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 177, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "2601:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2601:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2580:63:0" + }, + { + "assignments": [ + 184 + ], + "declarations": [ + { + "constant": false, + "id": 184, + "name": "nodeExists", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "2653:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 183, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2653:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 188, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 186, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2679:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 185, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "2671:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2671:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2653:33:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 189, + "name": "nodeExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "2701:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 191, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "2734:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2734:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 193, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2748:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 190, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "2715:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2715:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2701:54:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3079:11:0", + "subExpression": { + "argumentTypes": null, + "id": 229, + "name": "nodeExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "3080:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 231, + "name": "isParentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "3094:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3079:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 269, + "name": "nodeExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "3421:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 270, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3435:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 272, + "indexExpression": { + "argumentTypes": null, + "id": 271, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3441:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3435:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "3435:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 274, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2879, + "src": "3459:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3435:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3421:41:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 277, + "name": "isParentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "3466:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3421:58:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 321, + "nodeType": "IfStatement", + "src": "3417:460:0", + "trueBody": { + "id": 320, + "nodeType": "Block", + "src": "3481:396:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 280, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3503:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 281, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3515:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 283, + "indexExpression": { + "argumentTypes": null, + "id": 282, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3521:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3515:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 284, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "parentId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9, + "src": "3515:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3503:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a20496e76616c696420706172656e742068617368", + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3539:27:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6", + "typeString": "literal_string \"AKAP: Invalid parent hash\"" + }, + "value": "AKAP: Invalid parent hash" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6", + "typeString": "literal_string \"AKAP: Invalid parent hash\"" + } + ], + "id": 279, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "3495:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3495:72:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 288, + "nodeType": "ExpressionStatement", + "src": "3495:72:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 291, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3685:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 290, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1720 + ], + "referencedDeclaration": 1720, + "src": "3677:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3677:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 293, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3694:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3694:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 295, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3708:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 289, + "name": "_transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2304 + ], + "referencedDeclaration": 2304, + "src": "3663:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3663:52:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 297, + "nodeType": "ExpressionStatement", + "src": "3663:52:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 298, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3729:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 300, + "indexExpression": { + "argumentTypes": null, + "id": 299, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3735:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3729:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 301, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "3729:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "3757:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3758:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3752:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3752:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3729:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 307, + "nodeType": "ExpressionStatement", + "src": "3729:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 309, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3785:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3785:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 311, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3799:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 312, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3807:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 313, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3817:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 314, + "name": "ClaimCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "3824:9:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$", + "typeString": "type(enum IAKAP.ClaimCase)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "TRANSFER", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3824:18:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + ], + "id": 308, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "3779:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)" + } + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3779:64:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 317, + "nodeType": "EmitStatement", + "src": "3774:69:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "33", + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3865:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "functionReturnParameters": 167, + "id": 319, + "nodeType": "Return", + "src": "3858:8:0" + } + ] + } + }, + "id": 322, + "nodeType": "IfStatement", + "src": "3075:802:0", + "trueBody": { + "id": 268, + "nodeType": "Block", + "src": "3109:302:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 234, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3186:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3186:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 236, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3200:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 233, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2328 + ], + "referencedDeclaration": 2328, + "src": "3180:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3180:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 238, + "nodeType": "ExpressionStatement", + "src": "3180:27:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 239, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3221:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 241, + "indexExpression": { + "argumentTypes": null, + "id": 240, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3227:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3221:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 242, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "parentId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9, + "src": "3221:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 243, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3246:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3221:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 245, + "nodeType": "ExpressionStatement", + "src": "3221:33:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 246, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3268:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 248, + "indexExpression": { + "argumentTypes": null, + "id": 247, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3274:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3268:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 249, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "3268:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "3296:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3297:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3291:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3291:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3268:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 255, + "nodeType": "ExpressionStatement", + "src": "3268:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 257, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3324:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3324:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 259, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3338:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 260, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3346:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 261, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3356:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 262, + "name": "ClaimCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "3363:9:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$", + "typeString": "type(enum IAKAP.ClaimCase)" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "NEW", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3363:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + ], + "id": 256, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "3318:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)" + } + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3318:59:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 265, + "nodeType": "EmitStatement", + "src": "3313:64:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "32", + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3399:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "functionReturnParameters": 167, + "id": 267, + "nodeType": "Return", + "src": "3392:8:0" + } + ] + } + }, + "id": 323, + "nodeType": "IfStatement", + "src": "2697:1180:0", + "trueBody": { + "id": 228, + "nodeType": "Block", + "src": "2757:312:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 197, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2779:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 198, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "2791:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 200, + "indexExpression": { + "argumentTypes": null, + "id": 199, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2797:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2791:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 201, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "parentId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9, + "src": "2791:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2779:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a20496e76616c696420706172656e742068617368", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2815:27:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6", + "typeString": "literal_string \"AKAP: Invalid parent hash\"" + }, + "value": "AKAP: Invalid parent hash" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6", + "typeString": "literal_string \"AKAP: Invalid parent hash\"" + } + ], + "id": 196, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "2771:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2771:72:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 205, + "nodeType": "ExpressionStatement", + "src": "2771:72:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 206, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "2922:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 208, + "indexExpression": { + "argumentTypes": null, + "id": 207, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2928:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2922:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 209, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "2922:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "2950:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2951:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2945:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2922:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 215, + "nodeType": "ExpressionStatement", + "src": "2922:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 217, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "2978:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2978:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 219, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2992:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 220, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3000:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 221, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3010:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 222, + "name": "ClaimCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "3017:9:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$", + "typeString": "type(enum IAKAP.ClaimCase)" + } + }, + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "RECLAIM", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3017:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + ], + "id": 216, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "2972:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)" + } + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2972:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 225, + "nodeType": "EmitStatement", + "src": "2967:68:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "31", + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3057:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 167, + "id": 227, + "nodeType": "Return", + "src": "3050:8:0" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3915:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 167, + "id": 325, + "nodeType": "Return", + "src": "3908:8:0" + } + ] + }, + "documentation": null, + "id": 327, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claim", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 161, + "name": "parentId", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "2144:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 160, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2144:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 163, + "name": "label", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "2159:20:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 162, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2159:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2143:37:0" + }, + "returnParameters": { + "id": 167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 166, + "name": "status", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "2199:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 165, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2199:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2198:13:0" + }, + "scope": 564, + "src": "2129:1794:0", + "stateMutability": "nonpayable", + "superFunction": 1162, + "visibility": "external" + }, + { + "body": { + "id": 342, + "nodeType": "Block", + "src": "3987:53:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 335, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 329, + "src": "4012:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 334, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "4004:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4004:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 337, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 329, + "src": "4023:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4032:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4023:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4004:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 333, + "id": 341, + "nodeType": "Return", + "src": "3997:36:0" + } + ] + }, + "documentation": null, + "id": 343, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "exists", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 329, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 343, + "src": "3945:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 328, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3945:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3944:13:0" + }, + "returnParameters": { + "id": 333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 332, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 343, + "src": "3981:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 331, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3981:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3980:6:0" + }, + "scope": 564, + "src": "3929:111:0", + "stateMutability": "view", + "superFunction": 1169, + "visibility": "external" + }, + { + "body": { + "id": 356, + "nodeType": "Block", + "src": "4115:64:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 351, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "4151:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4151:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 353, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "4165:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 350, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "4132:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4132:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 349, + "id": 355, + "nodeType": "Return", + "src": "4125:47:0" + } + ] + }, + "documentation": null, + "id": 357, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedOrOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 345, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "4073:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 344, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4073:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4072:13:0" + }, + "returnParameters": { + "id": 349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 348, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "4109:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 347, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4109:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4108:6:0" + }, + "scope": 564, + "src": "4046:133:0", + "stateMutability": "view", + "superFunction": 1176, + "visibility": "external" + }, + { + "body": { + "id": 372, + "nodeType": "Block", + "src": "4266:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 367, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4283:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 369, + "indexExpression": { + "argumentTypes": null, + "id": 368, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "4289:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4283:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "parentId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9, + "src": "4283:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 366, + "id": 371, + "nodeType": "Return", + "src": "4276:29:0" + } + ] + }, + "documentation": null, + "id": 373, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 362, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "4243:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 363, + "modifierName": { + "argumentTypes": null, + "id": 361, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4230:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4230:20:0" + } + ], + "name": "parentOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 359, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 373, + "src": "4203:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 358, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4203:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4202:13:0" + }, + "returnParameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 365, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 373, + "src": "4260:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 364, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4260:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4259:6:0" + }, + "scope": 564, + "src": "4185:127:0", + "stateMutability": "view", + "superFunction": 1190, + "visibility": "external" + }, + { + "body": { + "id": 388, + "nodeType": "Block", + "src": "4399:44:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 383, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4416:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 385, + "indexExpression": { + "argumentTypes": null, + "id": 384, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 375, + "src": "4422:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4416:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 386, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "4416:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 382, + "id": 387, + "nodeType": "Return", + "src": "4409:27:0" + } + ] + }, + "documentation": null, + "id": 389, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 378, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 375, + "src": "4376:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 379, + "modifierName": { + "argumentTypes": null, + "id": 377, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4363:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4363:20:0" + } + ], + "name": "expiryOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 375, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "4336:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 374, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4336:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4335:13:0" + }, + "returnParameters": { + "id": 382, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 381, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "4393:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 380, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4393:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4392:6:0" + }, + "scope": 564, + "src": "4318:125:0", + "stateMutability": "view", + "superFunction": 1197, + "visibility": "external" + }, + { + "body": { + "id": 404, + "nodeType": "Block", + "src": "4529:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 399, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4546:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 401, + "indexExpression": { + "argumentTypes": null, + "id": 400, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "4552:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4546:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "seeAlso", + "nodeType": "MemberAccess", + "referencedDeclaration": 13, + "src": "4546:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 398, + "id": 403, + "nodeType": "Return", + "src": "4539:28:0" + } + ] + }, + "documentation": null, + "id": 405, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 394, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "4506:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 395, + "modifierName": { + "argumentTypes": null, + "id": 393, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4493:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4493:20:0" + } + ], + "name": "seeAlso", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 391, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "4466:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 390, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4466:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4465:13:0" + }, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "4523:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 396, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4523:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4522:6:0" + }, + "scope": 564, + "src": "4449:125:0", + "stateMutability": "view", + "superFunction": 1204, + "visibility": "external" + }, + { + "body": { + "id": 420, + "nodeType": "Block", + "src": "4666:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 415, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4683:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 417, + "indexExpression": { + "argumentTypes": null, + "id": 416, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "4689:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4683:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 418, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "seeAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "4683:24:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 414, + "id": 419, + "nodeType": "Return", + "src": "4676:31:0" + } + ] + }, + "documentation": null, + "id": 421, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 410, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "4640:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 411, + "modifierName": { + "argumentTypes": null, + "id": 409, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4627:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4627:20:0" + } + ], + "name": "seeAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 407, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 421, + "src": "4600:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 406, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4600:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4599:13:0" + }, + "returnParameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 413, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 421, + "src": "4657:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 412, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4657:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4656:9:0" + }, + "scope": 564, + "src": "4580:134:0", + "stateMutability": "view", + "superFunction": 1211, + "visibility": "external" + }, + { + "body": { + "id": 436, + "nodeType": "Block", + "src": "4809:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 431, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4826:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 433, + "indexExpression": { + "argumentTypes": null, + "id": 432, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "4832:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4826:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 434, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "nodeBody", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "4826:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 430, + "id": 435, + "nodeType": "Return", + "src": "4819:29:0" + } + ] + }, + "documentation": null, + "id": 437, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 426, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "4778:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 427, + "modifierName": { + "argumentTypes": null, + "id": 425, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4765:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4765:20:0" + } + ], + "name": "nodeBody", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 423, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 437, + "src": "4738:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 422, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4738:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4737:13:0" + }, + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 429, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 437, + "src": "4795:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 428, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4795:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4794:14:0" + }, + "scope": 564, + "src": "4720:135:0", + "stateMutability": "view", + "superFunction": 1218, + "visibility": "external" + }, + { + "body": { + "id": 460, + "nodeType": "Block", + "src": "4924:118:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 445, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4934:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 447, + "indexExpression": { + "argumentTypes": null, + "id": 446, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "4940:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4934:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "4934:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 449, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2879, + "src": "4957:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4934:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 451, + "nodeType": "ExpressionStatement", + "src": "4934:26:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 453, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "4992:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4992:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 455, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "5006:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 456, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5014:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "EXPIRY", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5014:20:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 452, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "4975:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4975:60:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 459, + "nodeType": "EmitStatement", + "src": "4970:65:0" + } + ] + }, + "documentation": null, + "id": 461, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 442, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "4916:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 443, + "modifierName": { + "argumentTypes": null, + "id": 441, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "4903:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4903:20:0" + } + ], + "name": "expireNode", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 439, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 461, + "src": "4881:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 438, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4881:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4880:13:0" + }, + "returnParameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [], + "src": "4924:0:0" + }, + "scope": 564, + "src": "4861:181:0", + "stateMutability": "nonpayable", + "superFunction": 1230, + "visibility": "external" + }, + { + "body": { + "id": 486, + "nodeType": "Block", + "src": "5123:123:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 471, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "5133:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 473, + "indexExpression": { + "argumentTypes": null, + "id": 472, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "5139:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5133:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 474, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "seeAlso", + "nodeType": "MemberAccess", + "referencedDeclaration": 13, + "src": "5133:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 475, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 465, + "src": "5157:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5133:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "5133:29:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 479, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "5194:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5194:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 481, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "5208:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 482, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5216:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "SEE_ALSO", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5216:22:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 478, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "5177:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5177:62:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 485, + "nodeType": "EmitStatement", + "src": "5172:67:0" + } + ] + }, + "documentation": null, + "id": 487, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 468, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "5115:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 469, + "modifierName": { + "argumentTypes": null, + "id": 467, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "5102:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5102:20:0" + } + ], + "name": "setSeeAlso", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 463, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "5068:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5068:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "5081:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 464, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5081:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5067:25:0" + }, + "returnParameters": { + "id": 470, + "nodeType": "ParameterList", + "parameters": [], + "src": "5123:0:0" + }, + "scope": 564, + "src": "5048:198:0", + "stateMutability": "nonpayable", + "superFunction": 1237, + "visibility": "external" + }, + { + "body": { + "id": 512, + "nodeType": "Block", + "src": "5333:129:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 497, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "5343:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 499, + "indexExpression": { + "argumentTypes": null, + "id": 498, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5349:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5343:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 500, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "seeAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "5343:24:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 501, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "5370:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5343:32:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 503, + "nodeType": "ExpressionStatement", + "src": "5343:32:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 505, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "5407:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5407:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 507, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5421:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 508, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5429:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "SEE_ADDRESS", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5429:25:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 504, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "5390:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5390:65:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 511, + "nodeType": "EmitStatement", + "src": "5385:70:0" + } + ] + }, + "documentation": null, + "id": 513, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 494, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5325:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 495, + "modifierName": { + "argumentTypes": null, + "id": 493, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "5312:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5312:20:0" + } + ], + "name": "setSeeAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 513, + "src": "5275:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 488, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5275:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 513, + "src": "5288:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5288:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5274:28:0" + }, + "returnParameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [], + "src": "5333:0:0" + }, + "scope": 564, + "src": "5252:210:0", + "stateMutability": "nonpayable", + "superFunction": 1244, + "visibility": "external" + }, + { + "body": { + "id": 538, + "nodeType": "Block", + "src": "5554:125:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 523, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "5564:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 525, + "indexExpression": { + "argumentTypes": null, + "id": 524, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "5570:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5564:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 526, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "nodeBody", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "5564:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 527, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "5589:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "src": "5564:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 529, + "nodeType": "ExpressionStatement", + "src": "5564:30:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 531, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "5626:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5626:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 533, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "5640:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 534, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5648:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "NODE_BODY", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5648:23:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 530, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "5609:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5609:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 537, + "nodeType": "EmitStatement", + "src": "5604:68:0" + } + ] + }, + "documentation": null, + "id": 539, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 520, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "5546:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 521, + "modifierName": { + "argumentTypes": null, + "id": 519, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "5533:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5533:20:0" + } + ], + "name": "setNodeBody", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 515, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "5489:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 514, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5489:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 517, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "5502:20:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 516, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5502:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5488:35:0" + }, + "returnParameters": { + "id": 522, + "nodeType": "ParameterList", + "parameters": [], + "src": "5554:0:0" + }, + "scope": 564, + "src": "5468:211:0", + "stateMutability": "nonpayable", + "superFunction": 1251, + "visibility": "external" + }, + { + "body": { + "id": 562, + "nodeType": "Block", + "src": "5770:120:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 550, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "5793:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 551, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "5801:3:0", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 549, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2643, + "src": "5780:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5780:25:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 553, + "nodeType": "ExpressionStatement", + "src": "5780:25:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 555, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "5837:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5837:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 557, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "5851:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 558, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5859:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "TOKEN_URI", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5859:23:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 554, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "5820:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5820:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 561, + "nodeType": "EmitStatement", + "src": "5815:68:0" + } + ] + }, + "documentation": null, + "id": 563, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 546, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "5762:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 547, + "modifierName": { + "argumentTypes": null, + "id": 545, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "5749:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5749:20:0" + } + ], + "name": "setTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 541, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "5706:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 540, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5706:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 543, + "name": "uri", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "5719:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 542, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5719:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5705:34:0" + }, + "returnParameters": { + "id": 548, + "nodeType": "ParameterList", + "parameters": [], + "src": "5770:0:0" + }, + "scope": 564, + "src": "5685:205:0", + "stateMutability": "nonpayable", + "superFunction": 1258, + "visibility": "external" + } + ], + "scope": 565, + "src": "737:5155:0" + } + ], + "src": "627:5265:0" + }, + "legacyAST": { + "absolutePath": "/private/tmp/eth/akap/contracts/AKAF.sol", + "exportedSymbols": { + "AKAF": [ + 564 + ] + }, + "id": 565, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.5", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "627:23:0" + }, + { + "absolutePath": "/private/tmp/eth/akap/contracts/IAKAP.sol", + "file": "./IAKAP.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 565, + "sourceUnit": 1319, + "src": "652:21:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721Full.sol", + "file": "@openzeppelin/contracts/token/ERC721/ERC721Full.sol", + "id": 3, + "nodeType": "ImportDirective", + "scope": 565, + "sourceUnit": 2546, + "src": "674:61:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4, + "name": "IAKAP", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1318, + "src": "754:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAKAP_$1318", + "typeString": "contract IAKAP" + } + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "754:5:0" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 6, + "name": "ERC721Full", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2545, + "src": "761:10:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721Full_$2545", + "typeString": "contract ERC721Full" + } + }, + "id": 7, + "nodeType": "InheritanceSpecifier", + "src": "761:10:0" + } + ], + "contractDependencies": [ + 1318, + 1476, + 1486, + 2184, + 2521, + 2545, + 2674, + 2777, + 2804, + 2827 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 564, + "linearizedBaseContracts": [ + 564, + 2545, + 2674, + 2827, + 2521, + 2804, + 2184, + 2777, + 1476, + 1486, + 1318 + ], + "name": "AKAF", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "AKAF.Node", + "id": 18, + "members": [ + { + "constant": false, + "id": 9, + "name": "parentId", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "800:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "800:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11, + "name": "expiry", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "823:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "823:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 13, + "name": "seeAlso", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "844:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "844:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 15, + "name": "seeAddress", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "866:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "866:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "name": "nodeBody", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "894:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 16, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "894:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Node", + "nodeType": "StructDefinition", + "scope": 564, + "src": "778:137:0", + "visibility": "public" + }, + { + "constant": false, + "id": 22, + "name": "nodes", + "nodeType": "VariableDeclaration", + "scope": 564, + "src": "921:35:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node)" + }, + "typeName": { + "id": 21, + "keyType": { + "id": 19, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "929:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "921:21:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node)" + }, + "valueType": { + "contractScope": null, + "id": 20, + "name": "Node", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "937:4:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage_ptr", + "typeString": "struct AKAF.Node" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 59, + "nodeType": "Block", + "src": "1027:252:0", + "statements": [ + { + "assignments": [ + 30 + ], + "declarations": [ + { + "constant": false, + "id": 30, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 59, + "src": "1110:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1110:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 32, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1124:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1110:15:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 34, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1141:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1141:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 36, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "1155:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 33, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2328 + ], + "referencedDeclaration": 2328, + "src": "1135:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1135:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 38, + "nodeType": "ExpressionStatement", + "src": "1135:27:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 47, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 39, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "1172:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 41, + "indexExpression": { + "argumentTypes": null, + "id": 40, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "1178:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1172:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 42, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "1172:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "1200:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1201:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1195:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1195:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1172:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 48, + "nodeType": "ExpressionStatement", + "src": "1172:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1224:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1224:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 52, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "1238:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 53, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "1246:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1254:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 55, + "name": "ClaimCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "1258:9:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$", + "typeString": "type(enum IAKAP.ClaimCase)" + } + }, + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "NEW", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1258:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + ], + "id": 49, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "1218:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)" + } + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1218:54:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58, + "nodeType": "EmitStatement", + "src": "1213:59:0" + } + ] + }, + "documentation": null, + "id": 60, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "414b4120466f7265766572205265676973747279", + "id": 25, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "988:22:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cae7ceeb2ebe151f1c27619f938a56491425da9af3053c9e79e96783851bd6e3", + "typeString": "literal_string \"AKA Forever Registry\"" + }, + "value": "AKA Forever Registry" + }, + { + "argumentTypes": null, + "hexValue": "414b4146", + "id": 26, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1012:6:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a508d8c7eae35b3a6e2f5a6804bed7b2f7bf00c46f7af065a48ea5aa52ab21e5", + "typeString": "literal_string \"AKAF\"" + }, + "value": "AKAF" + } + ], + "id": 27, + "modifierName": { + "argumentTypes": null, + "id": 24, + "name": "ERC721Full", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2545, + "src": "977:10:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Full_$2545_$", + "typeString": "type(contract ERC721Full)" + } + }, + "nodeType": "ModifierInvocation", + "src": "977:42:0" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [], + "src": "974:2:0" + }, + "returnParameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [], + "src": "1027:0:0" + }, + "scope": 564, + "src": "963:316:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "1347:34:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 65, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2877, + "src": "1364:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1364:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 64, + "id": 67, + "nodeType": "Return", + "src": "1357:17:0" + } + ] + }, + "documentation": null, + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [], + "src": "1304:2:0" + }, + "returnParameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 63, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "1330:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 62, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1330:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1329:17:0" + }, + "scope": 564, + "src": "1285:96:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 85, + "nodeType": "Block", + "src": "1422:112:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 75, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "1448:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 74, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "1440:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1440:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 77, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "1459:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1468:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1459:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1440:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a206f70657261746f7220717565727920666f72206e6f6e6578697374656e74206e6f6465", + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1471:43:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a658d58523fc6cf084d1dd3125a8fc1b3ad66eb4d398c72b5853657b82ff950b", + "typeString": "literal_string \"AKAP: operator query for nonexistent node\"" + }, + "value": "AKAP: operator query for nonexistent node" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a658d58523fc6cf084d1dd3125a8fc1b3ad66eb4d398c72b5853657b82ff950b", + "typeString": "literal_string \"AKAP: operator query for nonexistent node\"" + } + ], + "id": 73, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "1432:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1432:83:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 83, + "nodeType": "ExpressionStatement", + "src": "1432:83:0" + }, + { + "id": 84, + "nodeType": "PlaceholderStatement", + "src": "1526:1:0" + } + ] + }, + "documentation": null, + "id": 86, + "name": "onlyExisting", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 71, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 86, + "src": "1409:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 70, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1409:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1408:13:0" + }, + "src": "1387:147:0", + "visibility": "internal" + }, + { + "body": { + "id": 108, + "nodeType": "Block", + "src": "1575:163:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 92, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "1601:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 91, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "1593:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1593:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 95, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1631:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1631:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 97, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "1645:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 94, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "1612:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1612:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1593:59:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 100, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 88, + "src": "1656:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1665:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1656:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1593:73:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a207365742076616c75652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1668:50:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_267122d712ca03e8a1e34737e2379df35cd276456b17514e34146918d87bc92c", + "typeString": "literal_string \"AKAP: set value caller is not owner nor approved\"" + }, + "value": "AKAP: set value caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_267122d712ca03e8a1e34737e2379df35cd276456b17514e34146918d87bc92c", + "typeString": "literal_string \"AKAP: set value caller is not owner nor approved\"" + } + ], + "id": 90, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "1585:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1585:134:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 106, + "nodeType": "ExpressionStatement", + "src": "1585:134:0" + }, + { + "id": 107, + "nodeType": "PlaceholderStatement", + "src": "1730:1:0" + } + ] + }, + "documentation": null, + "id": 109, + "name": "onlyApproved", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 88, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 109, + "src": "1562:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 87, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1562:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1561:13:0" + }, + "src": "1540:198:0", + "visibility": "internal" + }, + { + "body": { + "id": 158, + "nodeType": "Block", + "src": "1825:298:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 119, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "1843:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1843:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1859:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1843:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 123, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "1864:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1864:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1880:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "1864:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1843:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a20496e76616c6964206c6162656c206c656e677468", + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1884:28:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00918a32a10d2b64eddc50bddc5eb424a8dd1297b66da0875142c7f852ae50b5", + "typeString": "literal_string \"AKAP: Invalid label length\"" + }, + "value": "AKAP: Invalid label length" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_00918a32a10d2b64eddc50bddc5eb424a8dd1297b66da0875142c7f852ae50b5", + "typeString": "literal_string \"AKAP: Invalid label length\"" + } + ], + "id": 118, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "1835:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1835:78:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 130, + "nodeType": "ExpressionStatement", + "src": "1835:78:0" + }, + { + "assignments": [ + 132 + ], + "declarations": [ + { + "constant": false, + "id": 132, + "name": "labelHash", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "1924:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 136, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 134, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 113, + "src": "1954:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 133, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2871, + "src": "1944:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1944:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1924:36:0" + }, + { + "assignments": [ + 138 + ], + "declarations": [ + { + "constant": false, + "id": 138, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "1970:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 137, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1970:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 146, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 142, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 111, + "src": "2008:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 143, + "name": "labelHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "2018:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 140, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2864, + "src": "1997:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1997:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1997:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 139, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2871, + "src": "1987:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1987:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1970:59:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 148, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "2048:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2057:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2048:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a20496e76616c6964206e6f64652068617368", + "id": 151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2060:25:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f83c7c02ea33e77031e907158a5c8c3333335ada800bb7480d52a6ecfa1f04e2", + "typeString": "literal_string \"AKAP: Invalid node hash\"" + }, + "value": "AKAP: Invalid node hash" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f83c7c02ea33e77031e907158a5c8c3333335ada800bb7480d52a6ecfa1f04e2", + "typeString": "literal_string \"AKAP: Invalid node hash\"" + } + ], + "id": 147, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "2040:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2040:46:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 153, + "nodeType": "ExpressionStatement", + "src": "2040:46:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 155, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "2109:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2104:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2104:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 117, + "id": 157, + "nodeType": "Return", + "src": "2097:19:0" + } + ] + }, + "documentation": null, + "id": 159, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 111, + "name": "parentId", + "nodeType": "VariableDeclaration", + "scope": 159, + "src": "1760:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 110, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1760:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "name": "label", + "nodeType": "VariableDeclaration", + "scope": 159, + "src": "1775:18:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 112, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1775:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1759:35:0" + }, + "returnParameters": { + "id": 117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 116, + "name": "id", + "nodeType": "VariableDeclaration", + "scope": 159, + "src": "1816:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 115, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1816:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1815:9:0" + }, + "scope": 564, + "src": "1744:379:0", + "stateMutability": "pure", + "superFunction": 1153, + "visibility": "public" + }, + { + "body": { + "id": 326, + "nodeType": "Block", + "src": "2212:1711:0", + "statements": [ + { + "assignments": [ + 169 + ], + "declarations": [ + { + "constant": false, + "id": 169, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "2532:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 168, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2532:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 174, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 171, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2553:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 172, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2563:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 170, + "name": "hashOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 159 + ], + "referencedDeclaration": 159, + "src": "2546:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (uint256,bytes memory) pure returns (uint256)" + } + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2546:23:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2532:37:0" + }, + { + "assignments": [ + 176 + ], + "declarations": [ + { + "constant": false, + "id": 176, + "name": "isParentOwner", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "2580:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 175, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2580:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 182, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 178, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "2620:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2620:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 180, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2634:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 177, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "2601:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2601:42:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2580:63:0" + }, + { + "assignments": [ + 184 + ], + "declarations": [ + { + "constant": false, + "id": 184, + "name": "nodeExists", + "nodeType": "VariableDeclaration", + "scope": 326, + "src": "2653:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 183, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2653:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 188, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 186, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2679:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 185, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "2671:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2671:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2653:33:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 189, + "name": "nodeExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "2701:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 191, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "2734:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2734:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 193, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2748:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 190, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "2715:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2715:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2701:54:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3079:11:0", + "subExpression": { + "argumentTypes": null, + "id": 229, + "name": "nodeExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "3080:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 231, + "name": "isParentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "3094:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3079:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 269, + "name": "nodeExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "3421:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 270, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3435:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 272, + "indexExpression": { + "argumentTypes": null, + "id": 271, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3441:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3435:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "3435:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 274, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2879, + "src": "3459:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3435:27:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3421:41:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "id": 277, + "name": "isParentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "3466:13:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3421:58:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 321, + "nodeType": "IfStatement", + "src": "3417:460:0", + "trueBody": { + "id": 320, + "nodeType": "Block", + "src": "3481:396:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 280, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3503:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 281, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3515:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 283, + "indexExpression": { + "argumentTypes": null, + "id": 282, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3521:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3515:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 284, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "parentId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9, + "src": "3515:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3503:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a20496e76616c696420706172656e742068617368", + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3539:27:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6", + "typeString": "literal_string \"AKAP: Invalid parent hash\"" + }, + "value": "AKAP: Invalid parent hash" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6", + "typeString": "literal_string \"AKAP: Invalid parent hash\"" + } + ], + "id": 279, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "3495:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3495:72:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 288, + "nodeType": "ExpressionStatement", + "src": "3495:72:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 291, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3685:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 290, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1720 + ], + "referencedDeclaration": 1720, + "src": "3677:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3677:15:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 293, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3694:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3694:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 295, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3708:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 289, + "name": "_transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2304 + ], + "referencedDeclaration": 2304, + "src": "3663:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3663:52:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 297, + "nodeType": "ExpressionStatement", + "src": "3663:52:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 298, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3729:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 300, + "indexExpression": { + "argumentTypes": null, + "id": 299, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3735:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3729:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 301, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "3729:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "3757:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3758:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3752:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3752:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3729:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 307, + "nodeType": "ExpressionStatement", + "src": "3729:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 309, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3785:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3785:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 311, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3799:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 312, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3807:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 313, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3817:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 314, + "name": "ClaimCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "3824:9:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$", + "typeString": "type(enum IAKAP.ClaimCase)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "TRANSFER", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3824:18:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + ], + "id": 308, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "3779:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)" + } + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3779:64:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 317, + "nodeType": "EmitStatement", + "src": "3774:69:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "33", + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3865:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "functionReturnParameters": 167, + "id": 319, + "nodeType": "Return", + "src": "3858:8:0" + } + ] + } + }, + "id": 322, + "nodeType": "IfStatement", + "src": "3075:802:0", + "trueBody": { + "id": 268, + "nodeType": "Block", + "src": "3109:302:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 234, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3186:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3186:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 236, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3200:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 233, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2328 + ], + "referencedDeclaration": 2328, + "src": "3180:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3180:27:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 238, + "nodeType": "ExpressionStatement", + "src": "3180:27:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 239, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3221:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 241, + "indexExpression": { + "argumentTypes": null, + "id": 240, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3227:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3221:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 242, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "parentId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9, + "src": "3221:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 243, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3246:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3221:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 245, + "nodeType": "ExpressionStatement", + "src": "3221:33:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 246, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "3268:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 248, + "indexExpression": { + "argumentTypes": null, + "id": 247, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3274:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3268:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 249, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "3268:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "3296:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3297:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3291:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3291:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3268:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 255, + "nodeType": "ExpressionStatement", + "src": "3268:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 257, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3324:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3324:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 259, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "3338:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 260, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3346:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 261, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3356:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 262, + "name": "ClaimCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "3363:9:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$", + "typeString": "type(enum IAKAP.ClaimCase)" + } + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "NEW", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3363:13:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + ], + "id": 256, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "3318:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)" + } + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3318:59:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 265, + "nodeType": "EmitStatement", + "src": "3313:64:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "32", + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3399:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "functionReturnParameters": 167, + "id": 267, + "nodeType": "Return", + "src": "3392:8:0" + } + ] + } + }, + "id": 323, + "nodeType": "IfStatement", + "src": "2697:1180:0", + "trueBody": { + "id": 228, + "nodeType": "Block", + "src": "2757:312:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 197, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "2779:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 198, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "2791:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 200, + "indexExpression": { + "argumentTypes": null, + "id": 199, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2797:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2791:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 201, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "parentId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9, + "src": "2791:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2779:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "414b41503a20496e76616c696420706172656e742068617368", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2815:27:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6", + "typeString": "literal_string \"AKAP: Invalid parent hash\"" + }, + "value": "AKAP: Invalid parent hash" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_64b34acd8a645818c53dcaba71e4e82f4914fdcb799ec12bc45079715e103af6", + "typeString": "literal_string \"AKAP: Invalid parent hash\"" + } + ], + "id": 196, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2880, + 2881 + ], + "referencedDeclaration": 2881, + "src": "2771:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2771:72:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 205, + "nodeType": "ExpressionStatement", + "src": "2771:72:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 206, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "2922:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 208, + "indexExpression": { + "argumentTypes": null, + "id": 207, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2928:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2922:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 209, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "2922:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "2950:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2951:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2945:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint" + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2922:31:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 215, + "nodeType": "ExpressionStatement", + "src": "2922:31:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 217, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "2978:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2978:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 219, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 169, + "src": "2992:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 220, + "name": "parentId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 161, + "src": "3000:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 221, + "name": "label", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "3010:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 222, + "name": "ClaimCase", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1094, + "src": "3017:9:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_ClaimCase_$1094_$", + "typeString": "type(enum IAKAP.ClaimCase)" + } + }, + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "RECLAIM", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3017:17:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_enum$_ClaimCase_$1094", + "typeString": "enum IAKAP.ClaimCase" + } + ], + "id": 216, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1112, + "src": "2972:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ClaimCase_$1094_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory,enum IAKAP.ClaimCase)" + } + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2972:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 225, + "nodeType": "EmitStatement", + "src": "2967:68:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "31", + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3057:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "functionReturnParameters": 167, + "id": 227, + "nodeType": "Return", + "src": "3050:8:0" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3915:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 167, + "id": 325, + "nodeType": "Return", + "src": "3908:8:0" + } + ] + }, + "documentation": null, + "id": 327, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claim", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 161, + "name": "parentId", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "2144:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 160, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2144:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 163, + "name": "label", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "2159:20:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 162, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2159:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2143:37:0" + }, + "returnParameters": { + "id": 167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 166, + "name": "status", + "nodeType": "VariableDeclaration", + "scope": 327, + "src": "2199:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 165, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2199:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2198:13:0" + }, + "scope": 564, + "src": "2129:1794:0", + "stateMutability": "nonpayable", + "superFunction": 1162, + "visibility": "external" + }, + { + "body": { + "id": 342, + "nodeType": "Block", + "src": "3987:53:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 335, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 329, + "src": "4012:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 334, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1924, + "src": "4004:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4004:15:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 337, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 329, + "src": "4023:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4032:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4023:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4004:29:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 333, + "id": 341, + "nodeType": "Return", + "src": "3997:36:0" + } + ] + }, + "documentation": null, + "id": 343, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "exists", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 329, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 343, + "src": "3945:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 328, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3945:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3944:13:0" + }, + "returnParameters": { + "id": 333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 332, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 343, + "src": "3981:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 331, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3981:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3980:6:0" + }, + "scope": 564, + "src": "3929:111:0", + "stateMutability": "view", + "superFunction": 1169, + "visibility": "external" + }, + { + "body": { + "id": 356, + "nodeType": "Block", + "src": "4115:64:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 351, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "4151:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4151:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 353, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "4165:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 350, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "4132:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4132:40:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 349, + "id": 355, + "nodeType": "Return", + "src": "4125:47:0" + } + ] + }, + "documentation": null, + "id": 357, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedOrOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 346, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 345, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "4073:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 344, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4073:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4072:13:0" + }, + "returnParameters": { + "id": 349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 348, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 357, + "src": "4109:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 347, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4109:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4108:6:0" + }, + "scope": 564, + "src": "4046:133:0", + "stateMutability": "view", + "superFunction": 1176, + "visibility": "external" + }, + { + "body": { + "id": 372, + "nodeType": "Block", + "src": "4266:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 367, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4283:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 369, + "indexExpression": { + "argumentTypes": null, + "id": 368, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "4289:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4283:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "parentId", + "nodeType": "MemberAccess", + "referencedDeclaration": 9, + "src": "4283:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 366, + "id": 371, + "nodeType": "Return", + "src": "4276:29:0" + } + ] + }, + "documentation": null, + "id": 373, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 362, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "4243:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 363, + "modifierName": { + "argumentTypes": null, + "id": 361, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4230:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4230:20:0" + } + ], + "name": "parentOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 360, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 359, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 373, + "src": "4203:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 358, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4203:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4202:13:0" + }, + "returnParameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 365, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 373, + "src": "4260:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 364, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4260:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4259:6:0" + }, + "scope": 564, + "src": "4185:127:0", + "stateMutability": "view", + "superFunction": 1190, + "visibility": "external" + }, + { + "body": { + "id": 388, + "nodeType": "Block", + "src": "4399:44:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 383, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4416:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 385, + "indexExpression": { + "argumentTypes": null, + "id": 384, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 375, + "src": "4422:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4416:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 386, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "4416:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 382, + "id": 387, + "nodeType": "Return", + "src": "4409:27:0" + } + ] + }, + "documentation": null, + "id": 389, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 378, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 375, + "src": "4376:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 379, + "modifierName": { + "argumentTypes": null, + "id": 377, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4363:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4363:20:0" + } + ], + "name": "expiryOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 375, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "4336:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 374, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4336:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4335:13:0" + }, + "returnParameters": { + "id": 382, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 381, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 389, + "src": "4393:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 380, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4393:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4392:6:0" + }, + "scope": 564, + "src": "4318:125:0", + "stateMutability": "view", + "superFunction": 1197, + "visibility": "external" + }, + { + "body": { + "id": 404, + "nodeType": "Block", + "src": "4529:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 399, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4546:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 401, + "indexExpression": { + "argumentTypes": null, + "id": 400, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "4552:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4546:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "seeAlso", + "nodeType": "MemberAccess", + "referencedDeclaration": 13, + "src": "4546:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 398, + "id": 403, + "nodeType": "Return", + "src": "4539:28:0" + } + ] + }, + "documentation": null, + "id": 405, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 394, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "4506:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 395, + "modifierName": { + "argumentTypes": null, + "id": 393, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4493:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4493:20:0" + } + ], + "name": "seeAlso", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 391, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "4466:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 390, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4466:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4465:13:0" + }, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 405, + "src": "4523:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 396, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4523:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4522:6:0" + }, + "scope": 564, + "src": "4449:125:0", + "stateMutability": "view", + "superFunction": 1204, + "visibility": "external" + }, + { + "body": { + "id": 420, + "nodeType": "Block", + "src": "4666:48:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 415, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4683:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 417, + "indexExpression": { + "argumentTypes": null, + "id": 416, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "4689:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4683:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 418, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "seeAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "4683:24:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 414, + "id": 419, + "nodeType": "Return", + "src": "4676:31:0" + } + ] + }, + "documentation": null, + "id": 421, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 410, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 407, + "src": "4640:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 411, + "modifierName": { + "argumentTypes": null, + "id": 409, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4627:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4627:20:0" + } + ], + "name": "seeAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 407, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 421, + "src": "4600:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 406, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4600:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4599:13:0" + }, + "returnParameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 413, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 421, + "src": "4657:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 412, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4657:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4656:9:0" + }, + "scope": 564, + "src": "4580:134:0", + "stateMutability": "view", + "superFunction": 1211, + "visibility": "external" + }, + { + "body": { + "id": 436, + "nodeType": "Block", + "src": "4809:46:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 431, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4826:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 433, + "indexExpression": { + "argumentTypes": null, + "id": 432, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "4832:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4826:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 434, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "nodeBody", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "4826:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 430, + "id": 435, + "nodeType": "Return", + "src": "4819:29:0" + } + ] + }, + "documentation": null, + "id": 437, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 426, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "4778:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 427, + "modifierName": { + "argumentTypes": null, + "id": 425, + "name": "onlyExisting", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 86, + "src": "4765:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4765:20:0" + } + ], + "name": "nodeBody", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 423, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 437, + "src": "4738:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 422, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4738:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4737:13:0" + }, + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 429, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 437, + "src": "4795:12:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 428, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4795:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4794:14:0" + }, + "scope": 564, + "src": "4720:135:0", + "stateMutability": "view", + "superFunction": 1218, + "visibility": "external" + }, + { + "body": { + "id": 460, + "nodeType": "Block", + "src": "4924:118:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 445, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "4934:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 447, + "indexExpression": { + "argumentTypes": null, + "id": 446, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "4940:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4934:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "expiry", + "nodeType": "MemberAccess", + "referencedDeclaration": 11, + "src": "4934:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 449, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2879, + "src": "4957:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4934:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 451, + "nodeType": "ExpressionStatement", + "src": "4934:26:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 453, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "4992:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4992:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 455, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "5006:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 456, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5014:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "EXPIRY", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5014:20:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 452, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "4975:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4975:60:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 459, + "nodeType": "EmitStatement", + "src": "4970:65:0" + } + ] + }, + "documentation": null, + "id": 461, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 442, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "4916:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 443, + "modifierName": { + "argumentTypes": null, + "id": 441, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "4903:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4903:20:0" + } + ], + "name": "expireNode", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 439, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 461, + "src": "4881:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 438, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4881:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4880:13:0" + }, + "returnParameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [], + "src": "4924:0:0" + }, + "scope": 564, + "src": "4861:181:0", + "stateMutability": "nonpayable", + "superFunction": 1230, + "visibility": "external" + }, + { + "body": { + "id": 486, + "nodeType": "Block", + "src": "5123:123:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 471, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "5133:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 473, + "indexExpression": { + "argumentTypes": null, + "id": 472, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "5139:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5133:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 474, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "seeAlso", + "nodeType": "MemberAccess", + "referencedDeclaration": 13, + "src": "5133:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 475, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 465, + "src": "5157:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5133:29:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 477, + "nodeType": "ExpressionStatement", + "src": "5133:29:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 479, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "5194:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5194:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 481, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "5208:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 482, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5216:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "SEE_ALSO", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5216:22:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 478, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "5177:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5177:62:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 485, + "nodeType": "EmitStatement", + "src": "5172:67:0" + } + ] + }, + "documentation": null, + "id": 487, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 468, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "5115:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 469, + "modifierName": { + "argumentTypes": null, + "id": 467, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "5102:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5102:20:0" + } + ], + "name": "setSeeAlso", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 463, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "5068:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5068:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "5081:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 464, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5081:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5067:25:0" + }, + "returnParameters": { + "id": 470, + "nodeType": "ParameterList", + "parameters": [], + "src": "5123:0:0" + }, + "scope": 564, + "src": "5048:198:0", + "stateMutability": "nonpayable", + "superFunction": 1237, + "visibility": "external" + }, + { + "body": { + "id": 512, + "nodeType": "Block", + "src": "5333:129:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 497, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "5343:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 499, + "indexExpression": { + "argumentTypes": null, + "id": 498, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5349:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5343:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 500, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "seeAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 15, + "src": "5343:24:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 501, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "5370:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5343:32:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 503, + "nodeType": "ExpressionStatement", + "src": "5343:32:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 505, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "5407:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5407:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 507, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5421:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 508, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5429:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "SEE_ADDRESS", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5429:25:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 504, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "5390:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5390:65:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 511, + "nodeType": "EmitStatement", + "src": "5385:70:0" + } + ] + }, + "documentation": null, + "id": 513, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 494, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "5325:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 495, + "modifierName": { + "argumentTypes": null, + "id": 493, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "5312:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5312:20:0" + } + ], + "name": "setSeeAddress", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 513, + "src": "5275:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 488, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5275:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 513, + "src": "5288:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5288:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5274:28:0" + }, + "returnParameters": { + "id": 496, + "nodeType": "ParameterList", + "parameters": [], + "src": "5333:0:0" + }, + "scope": 564, + "src": "5252:210:0", + "stateMutability": "nonpayable", + "superFunction": 1244, + "visibility": "external" + }, + { + "body": { + "id": 538, + "nodeType": "Block", + "src": "5554:125:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 523, + "name": "nodes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 22, + "src": "5564:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Node_$18_storage_$", + "typeString": "mapping(uint256 => struct AKAF.Node storage ref)" + } + }, + "id": 525, + "indexExpression": { + "argumentTypes": null, + "id": 524, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "5570:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5564:13:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$18_storage", + "typeString": "struct AKAF.Node storage ref" + } + }, + "id": 526, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "nodeBody", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "5564:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 527, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 517, + "src": "5589:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "src": "5564:30:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 529, + "nodeType": "ExpressionStatement", + "src": "5564:30:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 531, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "5626:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5626:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 533, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "5640:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 534, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5648:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "NODE_BODY", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5648:23:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 530, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "5609:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5609:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 537, + "nodeType": "EmitStatement", + "src": "5604:68:0" + } + ] + }, + "documentation": null, + "id": 539, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 520, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "5546:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 521, + "modifierName": { + "argumentTypes": null, + "id": 519, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "5533:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5533:20:0" + } + ], + "name": "setNodeBody", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 515, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "5489:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 514, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5489:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 517, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 539, + "src": "5502:20:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 516, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5502:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5488:35:0" + }, + "returnParameters": { + "id": 522, + "nodeType": "ParameterList", + "parameters": [], + "src": "5554:0:0" + }, + "scope": 564, + "src": "5468:211:0", + "stateMutability": "nonpayable", + "superFunction": 1251, + "visibility": "external" + }, + { + "body": { + "id": 562, + "nodeType": "Block", + "src": "5770:120:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 550, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "5793:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 551, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 543, + "src": "5801:3:0", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 549, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2643, + "src": "5780:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5780:25:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 553, + "nodeType": "ExpressionStatement", + "src": "5780:25:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 555, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "5837:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5837:12:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 557, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "5851:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 558, + "name": "NodeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "5859:13:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_NodeAttribute_$1100_$", + "typeString": "type(enum IAKAP.NodeAttribute)" + } + }, + "id": 559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "TOKEN_URI", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5859:23:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_NodeAttribute_$1100", + "typeString": "enum IAKAP.NodeAttribute" + } + ], + "id": 554, + "name": "AttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "5820:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_enum$_NodeAttribute_$1100_$returns$__$", + "typeString": "function (address,uint256,enum IAKAP.NodeAttribute)" + } + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5820:63:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 561, + "nodeType": "EmitStatement", + "src": "5815:68:0" + } + ] + }, + "documentation": null, + "id": 563, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 546, + "name": "nodeId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "5762:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 547, + "modifierName": { + "argumentTypes": null, + "id": 545, + "name": "onlyApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "5749:12:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_uint256_$", + "typeString": "modifier (uint256)" + } + }, + "nodeType": "ModifierInvocation", + "src": "5749:20:0" + } + ], + "name": "setTokenURI", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 541, + "name": "nodeId", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "5706:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 540, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5706:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 543, + "name": "uri", + "nodeType": "VariableDeclaration", + "scope": 563, + "src": "5719:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 542, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5719:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5705:34:0" + }, + "returnParameters": { + "id": 548, + "nodeType": "ParameterList", + "parameters": [], + "src": "5770:0:0" + }, + "scope": 564, + "src": "5685:205:0", + "stateMutability": "nonpayable", + "superFunction": 1258, + "visibility": "external" + } + ], + "scope": 565, + "src": "737:5155:0" + } + ], + "src": "627:5265:0" + }, + "compiler": { + "name": "solc", + "version": "0.5.16+commit.9c3226ce.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.23", + "updatedAt": "2020-05-13T14:37:55.412Z", + "devdoc": { + "methods": { + "approve(address,uint256)": { + "details": "Approves another address to transfer the given token ID The zero address indicates there is no approved address. There can only be one approved address per token at a given time. Can only be called by the token owner or an approved operator.", + "params": { + "to": "address to be approved for the given token ID", + "tokenId": "uint256 ID of the token to be approved" + } + }, + "balanceOf(address)": { + "details": "Gets the balance of the specified address.", + "params": { + "owner": "address to query the balance of" + }, + "return": "uint256 representing the amount owned by the passed address" + }, + "getApproved(uint256)": { + "details": "Gets the approved address for a token ID, or zero if no address set Reverts if the token ID does not exist.", + "params": { + "tokenId": "uint256 ID of the token to query the approval of" + }, + "return": "address currently approved for the given token ID" + }, + "isApprovedForAll(address,address)": { + "details": "Tells whether an operator is approved by a given owner.", + "params": { + "operator": "operator address which you want to query the approval of", + "owner": "owner address which you want to query the approval of" + }, + "return": "bool whether the given operator is approved by the given owner" + }, + "name()": { + "details": "Gets the token name.", + "return": "string representing the token name" + }, + "ownerOf(uint256)": { + "details": "Gets the owner of the specified token ID.", + "params": { + "tokenId": "uint256 ID of the token to query the owner of" + }, + "return": "address currently marked as the owner of the given token ID" + }, + "safeTransferFrom(address,address,uint256)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg.sender to be the owner, approved, or operator", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "safeTransferFrom(address,address,uint256,bytes)": { + "details": "Safely transfers the ownership of a given token ID to another address If the target address is a contract, it must implement `onERC721Received`, which is called upon a safe transfer, and return the magic value `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`; otherwise, the transfer is reverted. Requires the msg.sender to be the owner, approved, or operator", + "params": { + "_data": "bytes data to send along with a safe transfer check", + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + }, + "setApprovalForAll(address,bool)": { + "details": "Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf.", + "params": { + "approved": "representing the status of the approval to be set", + "to": "operator address to set the approval" + } + }, + "supportsInterface(bytes4)": { + "details": "See `IERC165.supportsInterface`. * Time complexity O(1), guaranteed to always use less than 30 000 gas." + }, + "symbol()": { + "details": "Gets the token symbol.", + "return": "string representing the token symbol" + }, + "tokenByIndex(uint256)": { + "details": "Gets the token ID at a given index of all the tokens in this contract Reverts if the index is greater or equal to the total number of tokens.", + "params": { + "index": "uint256 representing the index to be accessed of the tokens list" + }, + "return": "uint256 token ID at the given index of the tokens list" + }, + "tokenOfOwnerByIndex(address,uint256)": { + "details": "Gets the token ID at a given index of the tokens list of the requested owner.", + "params": { + "index": "uint256 representing the index to be accessed of the requested tokens list", + "owner": "address owning the tokens list to be accessed" + }, + "return": "uint256 token ID at the given index of the tokens list owned by the requested address" + }, + "tokenURI(uint256)": { + "details": "Returns an URI for a given token ID. Throws if the token ID does not exist. May return an empty string.", + "params": { + "tokenId": "uint256 ID of the token to query" + } + }, + "totalSupply()": { + "details": "Gets the total amount of tokens stored by the contract.", + "return": "uint256 representing the total amount of tokens" + }, + "transferFrom(address,address,uint256)": { + "details": "Transfers the ownership of a given token ID to another address. Usage of this method is discouraged, use `safeTransferFrom` whenever possible. Requires the msg.sender to be the owner, approved, or operator.", + "params": { + "from": "current owner of the token", + "to": "address to receive the ownership of the given token ID", + "tokenId": "uint256 ID of the token to be transferred" + } + } + } + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/build/contracts/IAKAP.json b/build/contracts/IAKAP.json index b05a8ad..56e5fc9 100644 --- a/build/contracts/IAKAP.json +++ b/build/contracts/IAKAP.json @@ -6005,7 +6005,28 @@ "name": "solc", "version": "0.5.12+commit.7709ece9.Emscripten.clang" }, - "networks": {}, + "networks": { + "1": { + "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349", + "transactionHash": "0x8a1c2b27f7e1d4bfd4793e764337c1c253af79f803a6f113558cabb51c625899" + }, + "3": { + "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349", + "transactionHash": "0x66308ba90a40d3e29ee6f9cca0ec85f871cd0d383cf340c21e43686014f64aef" + }, + "4": { + "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349", + "transactionHash": "0x66308ba90a40d3e29ee6f9cca0ec85f871cd0d383cf340c21e43686014f64aef" + }, + "5": { + "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349", + "transactionHash": "0x66308ba90a40d3e29ee6f9cca0ec85f871cd0d383cf340c21e43686014f64aef" + }, + "42": { + "address": "0xaacCAAB0E85b1EfCEcdBA88F4399fa6CAb402349", + "transactionHash": "0x66308ba90a40d3e29ee6f9cca0ec85f871cd0d383cf340c21e43686014f64aef" + } + }, "schemaVersion": "3.0.19", "updatedAt": "2020-01-18T12:39:58.041Z", "devdoc": { diff --git a/contracts/AKAF.sol b/contracts/AKAF.sol new file mode 100644 index 0000000..a3d401b --- /dev/null +++ b/contracts/AKAF.sol @@ -0,0 +1,161 @@ +// Copyright (C) 2019 Christian Felde +// Copyright (C) 2019 Mohamed Elshami + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +pragma solidity ^0.5.0; + +import "./IAKAP.sol"; +import "@openzeppelin/contracts/token/ERC721/ERC721Full.sol"; + +contract AKAF is IAKAP, ERC721Full { + struct Node { + uint parentId; + uint expiry; + uint seeAlso; + address seeAddress; + bytes nodeBody; + } + + mapping(uint => Node) private nodes; + + constructor() ERC721Full("AKA Forever Registry", "AKAF") public { + // Create the special root node and assigned msg.sender as owner + uint nodeId = 0; + _mint(_msgSender(), nodeId); + nodes[nodeId].expiry = uint(-1); + emit Claim(_msgSender(), nodeId, nodeId, "", ClaimCase.NEW); + } + + function _msgSender() internal view returns (address payable) { + return msg.sender; + } + + modifier onlyExisting(uint nodeId) { + require(_exists(nodeId) && nodeId > 0, "AKAP: operator query for nonexistent node"); + + _; + } + + modifier onlyApproved(uint nodeId) { + require(_exists(nodeId) && _isApprovedOrOwner(_msgSender(), nodeId) && nodeId > 0, "AKAP: set value caller is not owner nor approved"); + + _; + } + + function hashOf(uint parentId, bytes memory label) public pure returns (uint id) { + require(label.length >= 1 && label.length <= 32, "AKAP: Invalid label length"); + + bytes32 labelHash = keccak256(label); + bytes32 nodeId = keccak256(abi.encode(parentId, labelHash)); + + require(nodeId > 0, "AKAP: Invalid node hash"); + + return uint(nodeId); + } + + function claim(uint parentId, bytes calldata label) external returns (uint status) { + // Claim logic is as found in AKAP, but with an expiry timestamp set to "forever". + // Owners of a node on an AKAF contract does hence not need to reclaim their nodes. + // Node owners may still explicitly expire a node if they wish. + + // Get hash/id of the node caller is claiming + uint nodeId = hashOf(parentId, label); + + bool isParentOwner = _isApprovedOrOwner(_msgSender(), parentId); + bool nodeExists = _exists(nodeId); + + if (nodeExists && _isApprovedOrOwner(_msgSender(), nodeId)) { + require(parentId == nodes[nodeId].parentId, "AKAP: Invalid parent hash"); + + // Caller is current owner/approved, extend lease.. + nodes[nodeId].expiry = uint(-1); + emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.RECLAIM); + + return 1; + } else if (!nodeExists && isParentOwner) { + // Node does not exist, allocate to caller.. + _mint(_msgSender(), nodeId); + nodes[nodeId].parentId = parentId; + nodes[nodeId].expiry = uint(-1); + emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.NEW); + + return 2; + } else if (nodeExists && nodes[nodeId].expiry <= now && isParentOwner) { + require(parentId == nodes[nodeId].parentId, "AKAP: Invalid parent hash"); + + // Node exists and is expired, allocate to caller and extend lease.. + _transferFrom(ownerOf(nodeId), _msgSender(), nodeId); + nodes[nodeId].expiry = uint(-1); + emit Claim(_msgSender(), nodeId, parentId, label, ClaimCase.TRANSFER); + + return 3; + } + + // No action + return 0; + } + + function exists(uint nodeId) external view returns (bool) { + return _exists(nodeId) && nodeId > 0; + } + + function isApprovedOrOwner(uint nodeId) external view returns (bool) { + return _isApprovedOrOwner(_msgSender(), nodeId); + } + + function parentOf(uint nodeId) external view onlyExisting(nodeId) returns (uint) { + return nodes[nodeId].parentId; + } + + function expiryOf(uint nodeId) external view onlyExisting(nodeId) returns (uint) { + return nodes[nodeId].expiry; + } + + function seeAlso(uint nodeId) external view onlyExisting(nodeId) returns (uint) { + return nodes[nodeId].seeAlso; + } + + function seeAddress(uint nodeId) external view onlyExisting(nodeId) returns (address) { + return nodes[nodeId].seeAddress; + } + + function nodeBody(uint nodeId) external view onlyExisting(nodeId) returns (bytes memory) { + return nodes[nodeId].nodeBody; + } + + function expireNode(uint nodeId) external onlyApproved(nodeId) { + nodes[nodeId].expiry = now; + emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.EXPIRY); + } + + function setSeeAlso(uint nodeId, uint value) external onlyApproved(nodeId) { + nodes[nodeId].seeAlso = value; + emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.SEE_ALSO); + } + + function setSeeAddress(uint nodeId, address value) external onlyApproved(nodeId) { + nodes[nodeId].seeAddress = value; + emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.SEE_ADDRESS); + } + + function setNodeBody(uint nodeId, bytes calldata value) external onlyApproved(nodeId) { + nodes[nodeId].nodeBody = value; + emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.NODE_BODY); + } + + function setTokenURI(uint nodeId, string calldata uri) external onlyApproved(nodeId) { + _setTokenURI(nodeId, uri); + emit AttributeChanged(_msgSender(), nodeId, NodeAttribute.TOKEN_URI); + } +} \ No newline at end of file diff --git a/contracts/IAKAP.sol b/contracts/IAKAP.sol index 93cbc25..61e5bc9 100644 --- a/contracts/IAKAP.sol +++ b/contracts/IAKAP.sol @@ -57,7 +57,7 @@ contract IAKAP { * If msg.sender is not the owner but is instead approved "spender" of node, the same logic applies. Only on * case 2 and 3 does msg.sender become owner of the node. On case 1 only the expiry is updated. * - * Whenever the return value is non-zero, the expiry of the node as been set to 52 weeks into the future. + * Whenever the return value is non-zero, the expiry of the node has been set to 52 weeks into the future. * * @param parentId Hash value of parent ID * @param label Label of node diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js index c05577c..f489554 100644 --- a/migrations/2_deploy_contracts.js +++ b/migrations/2_deploy_contracts.js @@ -1,5 +1,7 @@ var akap = artifacts.require("AKAP"); +var akaf = artifacts.require("AKAF"); module.exports = function(deployer, network, accounts) { deployer.deploy(akap); + deployer.deploy(akaf); }; diff --git a/package.json b/package.json new file mode 100644 index 0000000..1f80c68 --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "akap", + "version": "1.1.1", + "description": "AKA protocol, the LDAP of Ethereum", + "files": [ + "/contracts/*.sol", + "/build/contracts/*.json" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/cfelde/AKAP.git" + }, + "keywords": [ + "solidity", + "solidity-contracts", + "solidity-dapps", + "ethereum", + "ethereum-contract", + "ethereum-dapp", + "AKAP" + ], + "author": "Christian Felde, Mohamed Elshami", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/cfelde/AKAP/issues" + }, + "homepage": "https://akap.me", + "devDependencies": { + "@openzeppelin/test-helpers": "^0.5.3" + }, + "dependencies": { + "@openzeppelin/contracts": "2.3.0" + } +} diff --git a/test/akaf.js b/test/akaf.js new file mode 100644 index 0000000..80114d8 --- /dev/null +++ b/test/akaf.js @@ -0,0 +1,341 @@ +// Copyright (C) 2019 Christian Felde +// Copyright (C) 2019 Mohamed Elshami + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const {expectRevert} = require('@openzeppelin/test-helpers'); + +const akaf = artifacts.require("AKAF"); + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +contract("When testing AKAF, it:", async accounts => { + + it("should be possible to claim a node on special case root parent id", async () => { + // This is a case 2 test with special case parent.. + let instance = await akaf.deployed(); + + let nodeHash = await instance.hashOf(0x0, [0x1]); + + await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token"); + await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node"); + + assert.isFalse(await instance.exists(nodeHash)); + + await instance.claim(0x0, [0x1]); + + assert.isTrue(await instance.exists(nodeHash)); + + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + assert.isTrue(await instance.isApprovedOrOwner(nodeHash)); + assert.isFalse(await instance.isApprovedOrOwner(nodeHash, {from: accounts[1]})); + assert.equal(0x0, await instance.parentOf(nodeHash)); + assert.isTrue(await instance.expiryOf(nodeHash) > 0); + + assert.equal(0x0, await instance.seeAlso(nodeHash)); + assert.equal(0x0, await instance.seeAddress(nodeHash)); + assert.equal(null, await instance.nodeBody(nodeHash)); + }); + + it("should only be possible for the root owner to claim new root node children", async () => { + let instance = await akaf.deployed(); + + let parentHash = 0x0; + let nodeHash = await instance.hashOf(parentHash, [0x5]); + + await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token"); + await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node"); + + await instance.claim(parentHash, [0x5], {from: accounts[5]}); + + await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token"); + await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node"); + + await instance.setApprovalForAll(accounts[5], true); + await instance.claim(parentHash, [0x5], {from: accounts[5]}); + + assert.equal(accounts[5], await instance.ownerOf(nodeHash)); + assert.equal(0x0, await instance.parentOf(nodeHash)); + assert.isTrue(await instance.expiryOf(nodeHash) > 0); + + assert.equal(0x0, await instance.seeAlso(nodeHash)); + assert.equal(0x0, await instance.seeAddress(nodeHash)); + assert.equal(null, await instance.nodeBody(nodeHash)); + }); + + it("should be possible to claim a node on another owned node", async () => { + // This is a case 2 test with non-special parent case.. + let instance = await akaf.deployed(); + + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x2]); + + await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token"); + await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node"); + + await instance.claim(parentHash, [0x2]); + + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + assert.isTrue(parentHash.eq(await instance.parentOf(nodeHash))); + assert.isTrue(await instance.expiryOf(nodeHash) > 0); + + assert.equal(0x0, await instance.seeAlso(nodeHash)); + assert.equal(0x0, await instance.seeAddress(nodeHash)); + assert.equal(null, await instance.nodeBody(nodeHash)); + }); + + it("should be possible for owners of node to reclaim an existing node", async () => { + // This is a case 1 test with special case parent.. + let instance = await akaf.deployed(); + + let nodeHash = await instance.hashOf(0x0, [0x1]); + + let existingExpiry = await instance.expiryOf(nodeHash); + + await sleep(1000); + + await instance.claim(0x0, [0x1]); + + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + assert.equal(0x0, await instance.parentOf(nodeHash)); + assert.isTrue((await instance.expiryOf(nodeHash)).toString(10) === existingExpiry.toString(10)); + + assert.equal(0x0, await instance.seeAlso(nodeHash)); + assert.equal(0x0, await instance.seeAddress(nodeHash)); + assert.equal(null, await instance.nodeBody(nodeHash)); + }); + + it("should be possible for owners of node to reclaim an existing node with non-special case parent", async () => { + // This is a case 1 test with non-special parent case.. + let instance = await akaf.deployed(); + + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x2]); + + let existingExpiry = await instance.expiryOf(nodeHash); + + await sleep(1000); + + await instance.claim(parentHash, [0x2]); + + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + assert.isTrue(parentHash.eq(await instance.parentOf(nodeHash))); + assert.isTrue((await instance.expiryOf(nodeHash)).toString(10) === existingExpiry.toString(10)); + + assert.equal(0x0, await instance.seeAlso(nodeHash)); + assert.equal(0x0, await instance.seeAddress(nodeHash)); + assert.equal(null, await instance.nodeBody(nodeHash)); + }); + + it("should be possible for owners of node to update node attributes", async () => { + let instance = await akaf.deployed(); + + let nodeHash = await instance.hashOf(0x0, [0x1]); + + assert.equal(0x0, await instance.seeAlso(nodeHash)); + assert.equal(0x0, await instance.seeAddress(nodeHash)); + assert.equal(null, await instance.nodeBody(nodeHash)); + + await instance.setSeeAlso(nodeHash, 0x1); + await instance.setSeeAddress(nodeHash, accounts[1]); + await instance.setNodeBody(nodeHash, [0x1, 0x2, 0x3]); + await instance.setTokenURI(nodeHash, "akaf://abc"); + + assert.equal(0x1, await instance.seeAlso(nodeHash)); + assert.equal(accounts[1], await instance.seeAddress(nodeHash)); + assert.equal(0x010203, await instance.nodeBody(nodeHash)); + assert.equal("akaf://abc", await instance.tokenURI(nodeHash)); + }); + + it("should be possible for owners of node to reclaim without changing any node attributes", async () => { + // This is a case 1 test with special case parent.. + let instance = await akaf.deployed(); + + let nodeHash = await instance.hashOf(0x0, [0x1]); + + await instance.claim(0x0, [0x1]); + + assert.equal(0x1, await instance.seeAlso(nodeHash)); + assert.equal(accounts[1], await instance.seeAddress(nodeHash)); + assert.equal(0x010203, await instance.nodeBody(nodeHash)); + }); + + it("should not be possible for non-owners of a parent to reclaim an existing child node not owned by caller", async () => { + let instance = await akaf.deployed(); + + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x2]); + + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + await instance.claim(parentHash, [0x2], {from: accounts[1]}); + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + }); + + it("should not be possible for non-owners of a parent to claim a new child node", async () => { + let instance = await akaf.deployed(); + + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x3]); + + await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token"); + await instance.claim(parentHash, [0x3], {from: accounts[1]}); + await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token"); + }); + + it("should be possible for non-owners of a parent to reclaim an existing child node owned by them", async () => { + // This is a case 1 test.. + let instance = await akaf.deployed(); + + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x2]); + + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + await instance.transferFrom(accounts[0], accounts[1], nodeHash); + assert.equal(accounts[1], await instance.ownerOf(nodeHash)); + + let existingExpiry = await instance.expiryOf(nodeHash); + + await sleep(1000); + + await instance.claim(parentHash, [0x2], {from: accounts[1]}); + + assert.isTrue((await instance.expiryOf(nodeHash)).toString(10) === existingExpiry.toString(10)); + + await instance.transferFrom(accounts[1], accounts[0], nodeHash, {from: accounts[1]}); + }); + + it("should be possible for owners of node to reclaim an expired node on special case parent", async () => { + // This is a case 3 test with special case parent.. + let instance = await akaf.deployed(); + + let nodeHash = await instance.hashOf(0x0, [0x1]); + + await instance.expireNode(nodeHash); + + let existingExpiry = await instance.expiryOf(nodeHash); + + await sleep(1000); + + await instance.claim(0x0, [0x1]); + + assert.isTrue((await instance.expiryOf(nodeHash)).gt(existingExpiry)); + }); + + it("should be possible for owners of node to reclaim an expired node on non-special case parent", async () => { + // This is a case 3 test.. + let instance = await akaf.deployed(); + + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x2]); + + await instance.expireNode(nodeHash); + + let existingExpiry = await instance.expiryOf(nodeHash); + + await sleep(1000); + + await instance.claim(parentHash, [0x2]); + + assert.isTrue((await instance.expiryOf(nodeHash)).gt(existingExpiry)); + }); + + it("should be possible for non-owners of node to reclaim an expired node on special case parent", async () => { + // This is a case 3 test with special case parent.. + let instance = await akaf.deployed(); + + let nodeHash = await instance.hashOf(0x0, [0x1]); + + await instance.transferFrom(accounts[0], accounts[1], nodeHash); + assert.equal(accounts[1], await instance.ownerOf(nodeHash)); + + await instance.expireNode(nodeHash, {from: accounts[1]}); + + let existingExpiry = await instance.expiryOf(nodeHash); + + await sleep(1000); + + await instance.claim(0x0, [0x1]); + + assert.isTrue((await instance.expiryOf(nodeHash)).gt(existingExpiry)); + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + }); + + it("should be possible for non-owners of node to reclaim an expired node on non-special case parent", async () => { + // This is a case 3 test.. + let instance = await akaf.deployed(); + + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x2]); + + await instance.transferFrom(accounts[0], accounts[1], nodeHash); + assert.equal(accounts[1], await instance.ownerOf(nodeHash)); + + await instance.expireNode(nodeHash, {from: accounts[1]}); + + let existingExpiry = await instance.expiryOf(nodeHash); + + await sleep(1000); + + await instance.claim(parentHash, [0x2]); + + assert.isTrue((await instance.expiryOf(nodeHash)).gt(existingExpiry)); + assert.equal(accounts[0], await instance.ownerOf(nodeHash)); + }); + + it("should only be possible to use labels within limits", async () => { + let instance = await akaf.deployed(); + + let minLength = 1; + let maxLength = 32; + + await expectRevert(instance.claim(0x0, Array.apply(null, Array(minLength - 1)).map(function (x, i) { + return i + 10; + }), {from: accounts[5]}), "AKAP: Invalid label length"); + await expectRevert(instance.claim(0x0, Array.apply(null, Array(maxLength + 1)).map(function (x, i) { + return i + 10; + }), {from: accounts[5]}), "AKAP: Invalid label length"); + + instance.claim(0x0, Array.apply(null, Array(minLength)).map(function (x, i) { + return i + 10; + }), {from: accounts[5]}); + instance.claim(0x0, Array.apply(null, Array(maxLength)).map(function (x, i) { + return i + 10; + }), {from: accounts[5]}); + + assert.equal(accounts[5], await instance.ownerOf(await instance.hashOf(0x0, Array.apply(null, Array(minLength)).map(function (x, i) { + return i + 10; + }), {from: accounts[1]}))); + assert.equal(accounts[5], await instance.ownerOf(await instance.hashOf(0x0, Array.apply(null, Array(maxLength)).map(function (x, i) { + return i + 10; + }), {from: accounts[1]}))); + }); + +}); diff --git a/test/akaf_events.js b/test/akaf_events.js new file mode 100644 index 0000000..cac9c9b --- /dev/null +++ b/test/akaf_events.js @@ -0,0 +1,192 @@ +// Copyright (C) 2019 Christian Felde +// Copyright (C) 2019 Mohamed Elshami + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +const {expectEvent} = require('@openzeppelin/test-helpers'); + +const akaf = artifacts.require("AKAF"); + +contract("When testing AKAF events, it:", async accounts => { + + it("should emit a Claim event of type ClaimCase.NEW when an owner claims a node with special case parent", async () => { + // This is a case 2 test with special case parent.. + let instance = await akaf.deployed(); + let nodeHash = await instance.hashOf(0x0, [0x1]); + + let receipt = await instance.claim(0x0, [0x1]); + + let args = { + sender: accounts[0].toString(), + nodeId: nodeHash.toString(), + parentId: "0", + label: "0x01", + claimCase: "1" + }; + await expectEvent.inLogs(receipt.logs, "Claim", args); + }); + + it("should emit a Claim of type ClaimCase.RECLAIM event when owner claim existing node with special case parent", async () => { + // This is a case 1 test with special case parent.. + let instance = await akaf.deployed(); + let nodeHash = await instance.hashOf(0x0, [0x1]); + + let receipt = await instance.claim(0x0, [0x1]); + let args = { + sender: accounts[0].toString(), + nodeId: nodeHash.toString(), + parentId: "0", + label: "0x01", + claimCase: "0" + }; + await expectEvent.inLogs(receipt.logs, "Claim", args); + }); + + it("should emit a Claim event of type ClaimCase.NEW when an owner claims a node with non-special case parent", async () => { + // This is a case 2 test with non-special case parent.. + let instance = await akaf.deployed(); + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x1]); + + let receipt = await instance.claim(parentHash, [0x1]); + + let args = { + sender: accounts[0].toString(), + nodeId: nodeHash.toString(), + parentId: parentHash.toString(), + label: "0x01", + claimCase: "1" + }; + await expectEvent.inLogs(receipt.logs, "Claim", args); + }); + + it("should emit a Claim of type ClaimCase.RECLAIM event when owner claim existing node with non-special case parent", async () => { + // This is a case 1 test with non-special case parent.. + let instance = await akaf.deployed(); + let parentHash = await instance.hashOf(0x0, [0x1]); + let nodeHash = await instance.hashOf(parentHash, [0x1]); + + let receipt = await instance.claim(parentHash, [0x1]); + let args = { + sender: accounts[0].toString(), + nodeId: nodeHash.toString(), + parentId: parentHash.toString(), + label: "0x01", + claimCase: "0" + }; + await expectEvent.inLogs(receipt.logs, "Claim", args); + }); + + it("should emit a Claim of type ClaimCase.TRANSFER event when new owner claim existing node on special case owner", async () => { + // Test case 3 emits ClaimCase.TRANSFER event with special case parent.. + let instance = await akaf.deployed(); + let nodeHash = await instance.hashOf(0x0, [0x2]); + + await instance.claim(0x0, [0x2]); + await instance.transferFrom(accounts[0], accounts[1], nodeHash); + + let receipt = await instance.claim(0x0, [0x2]); + assert.equal(0, receipt.logs.length, "No events should be emitted, expect empty logs."); + + await instance.expireNode(nodeHash, {from: accounts[1]}); + + receipt = await instance.claim(0x0, [0x2]); + + let args = { + sender: accounts[0].toString(), + nodeId: nodeHash.toString(), + parentId: "0", + label: "0x02", + claimCase: "2" + }; + await expectEvent.inLogs(receipt.logs, "Claim", args); + }); + + it("should emit a Claim of type ClaimCase.TRANSFER event when new owner claim existing node on non-special case owner", async () => { + // Test case 3 emits ClaimCase.TRANSFER event with non-special case parent.. + let instance = await akaf.deployed(); + let parentHash = await instance.hashOf(0x0, [0x2]) + let nodeHash = await instance.hashOf(parentHash, [0x2]); + + await instance.claim(parentHash, [0x2]); + await instance.transferFrom(accounts[0], accounts[1], nodeHash); + + let receipt = await instance.claim(parentHash, [0x2]); + assert.equal(0, receipt.logs.length, "No events should be emitted, expect empty logs."); + + await instance.expireNode(nodeHash, {from: accounts[1]}); + + receipt = await instance.claim(parentHash, [0x2]); + + let args = { + sender: accounts[0].toString(), + nodeId: nodeHash.toString(), + parentId: parentHash.toString(), + label: "0x02", + claimCase: "2" + }; + await expectEvent.inLogs(receipt.logs, "Claim", args); + }); + + it("should emit AttributeChanged event when a node attribute is updated with special case parent", async () => { + let instance = await akaf.deployed(); + let nodeHash = await instance.hashOf(0x0, [0x1]); + + let receipt = await instance.expireNode(nodeHash); + let args = {sender: accounts[0].toString(), nodeId: nodeHash.toString(), attribute: "0"}; // NodeAttribute.EXPIRY + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + + receipt = await instance.setSeeAlso(nodeHash, 0x1); + args["attribute"] = "1"; // NodeAttribute.SEE_ALSO + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + + receipt = await instance.setSeeAddress(nodeHash, accounts[1]); + args["attribute"] = "2"; // NodeAttribute.SEE_ADDRESS + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + + receipt = await instance.setNodeBody(nodeHash, [0x1, 0x2, 0x3]); + args["attribute"] = "3"; // NodeAttribute.NODE_BODY + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + + receipt = await instance.setTokenURI(nodeHash, "akaf://abc"); + args["attribute"] = "4"; // NodeAttribute.TOKEN_URI + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + }); + + it("should emit AttributeChanged event when a node attribute is updated with non-special case parent", async () => { + let instance = await akaf.deployed(); + let parentHash = await instance.hashOf(0x0, [0x2]); + let nodeHash = await instance.hashOf(parentHash, [0x2]); + + let receipt = await instance.expireNode(nodeHash); + let args = {sender: accounts[0].toString(), nodeId: nodeHash.toString(), attribute: "0"}; // NodeAttribute.EXPIRY + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + + receipt = await instance.setSeeAlso(nodeHash, 0x1); + args["attribute"] = "1"; // NodeAttribute.SEE_ALSO + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + + receipt = await instance.setSeeAddress(nodeHash, accounts[1]); + args["attribute"] = "2"; // NodeAttribute.SEE_ADDRESS + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + + receipt = await instance.setNodeBody(nodeHash, [0x1, 0x2, 0x3]); + args["attribute"] = "3"; // NodeAttribute.NODE_BODY + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + + receipt = await instance.setTokenURI(nodeHash, "akaf://abc"); + args["attribute"] = "4"; // NodeAttribute.TOKEN_URI + await expectEvent.inLogs(receipt.logs, "AttributeChanged", args); + }); + +}); diff --git a/test/akap.js b/test/akap.js index 9ff7ba9..1e18cd2 100644 --- a/test/akap.js +++ b/test/akap.js @@ -53,6 +53,30 @@ contract("When testing AKAP, it:", async accounts => { assert.equal(null, await instance.nodeBody(nodeHash)); }); + it("should be possible for any account to claim new root node children", async () => { + let instance = await akap.deployed(); + + let parentHash = 0x0; + let nodeHash = await instance.hashOf(parentHash, [0x5]); + + await expectRevert(instance.ownerOf(nodeHash), "ERC721: owner query for nonexistent token"); + await expectRevert(instance.parentOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.expiryOf(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAlso(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.seeAddress(nodeHash), "AKAP: operator query for nonexistent node"); + await expectRevert(instance.nodeBody(nodeHash), "AKAP: operator query for nonexistent node"); + + await instance.claim(parentHash, [0x5], {from: accounts[5]}); + + assert.equal(accounts[5], await instance.ownerOf(nodeHash)); + assert.equal(0x0, await instance.parentOf(nodeHash)); + assert.isTrue(await instance.expiryOf(nodeHash) > 0); + + assert.equal(0x0, await instance.seeAlso(nodeHash)); + assert.equal(0x0, await instance.seeAddress(nodeHash)); + assert.equal(null, await instance.nodeBody(nodeHash)); + }); + it("should be possible to claim a node on another owned node", async () => { // This is a case 2 test with non-special parent case.. let instance = await akap.deployed(); diff --git a/truffle-config.js b/truffle-config.js index 938e034..17cc3b1 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -42,11 +42,11 @@ module.exports = { // tab if you use this network and you must also set the `host`, `port` and `network_id` // options below to some value. // - // development: { - // host: "127.0.0.1", // Localhost (default: none) - // port: 8545, // Standard Ethereum port (default: none) - // network_id: "*", // Any network (default: none) - // }, + development: { + host: "127.0.0.1", // Localhost (default: none) + port: 8545, // Standard Ethereum port (default: none) + network_id: "*", // Any network (default: none) + }, // Another network with more advanced options... // advanced: {