diff --git a/README.md b/README.md index 689dc5b..eec1316 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ # Chainlink Random Character Creation This repo is a starting point for creating: -1. NFTs built with provable RNG using the [Chainlink VRF](https://docs.chain.link/docs/get-a-random-number) +1. NFTs built with verifiable RNG using the [Chainlink VRF](https://docs.chain.link/docs/get-a-random-number) 2. Create dynamic NFTs that change based on real world data. [By using decentralized oracles to get data.](https://docs.chain.link/docs/make-a-http-get-request) +3. Adding your randomized NFTs to the [OpenSea Marketplace](https://opensea.io/) -We will easily create our own NFT on the Rinkeby Chain. We can edit the name of the character in the [`generate-character.js`](./scripts/generate-character.js) script. Right now, the character defaults to "Garfield the Chainlink Warrior". +We will easily create our own NFT on the Rinkeby Chain. We can edit the name of the character in the [`generate-character.js`](./scripts/generate-character.js) script. -This will create a character with 6 attributes from 0 - 18: +This will create a character with 6 attributes from 0 - 99: - uint256 strength; - uint256 dexterity; - uint256 constitution; diff --git a/build/contracts/DungeonsAndDragonsCharacter.json b/build/contracts/DungeonsAndDragonsCharacter.json index 5d03b04..a263ba2 100644 --- a/build/contracts/DungeonsAndDragonsCharacter.json +++ b/build/contracts/DungeonsAndDragonsCharacter.json @@ -818,22 +818,22 @@ "constant": true } ], - "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_VRFCoordinator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_LinkToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_keyhash\",\"type\":\"bytes32\"}],\"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\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LinkToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VRFCoordinator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"characters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"strength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dexterity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"constitution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"intelligence\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wisdom\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"charisma\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"experience\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCharacterOverView\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCharacterStats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomResult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"randomness\",\"type\":\"uint256\"}],\"name\":\"rawFulfillRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userProvidedSeed\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"requestNewRandomCharacter\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_seed\",\"type\":\"uint256\"}],\"name\":\"requestRandomness\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"requestRandomness(bytes32,uint256,uint256)\":{\"details\":\"The source of the seed data must be something which the oraclecannot anticipate. See \\\"SECURITY CONSIDERATIONS\\\" above.The fulfillRandomness method receives the output, once it's providedby the Oracle, and verified by the vrfCoordinator.The _keyHash must already be registered with the VRFCoordinator, andthe _fee must exceed the fee specified during registration of the_keyHash.The returned requestId can be used to distinguish responses to *concurrent requests. It is passed as the first argument tofulfillRandomness.\",\"params\":{\"_fee\":\"The amount of LINK to send with the request\",\"_keyHash\":\"ID of public key against which randomness is generated\",\"_seed\":\"Random seed from which output randomness is determined\"},\"returns\":{\"requestId\":\"which will be returned with the response to this request\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"constructor\":\"Constructor inherits VRFConsumerBase * Network: Rinkeby Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B LINK token address: 0xa36085f69e2889c224210f603d836748e7dc0088 Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311\",\"requestRandomness(bytes32,uint256,uint256)\":{\"notice\":\"requestRandomness initiates a request for VRF output given _seed\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol\":\"DungeonsAndDragonsCharacter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol\":{\"keccak256\":\"0xe40bbb15b1c3a0dbdfe800051055a391f8757753f4e0912bed15fc7ef3ea2f47\",\"urls\":[\"bzz-raw://5bcee50c74083f656c758a1e369d249a821c955086e33b77843d65cb04ce9665\",\"dweb:/ipfs/QmWNiBbX9JBHMyjL76Rx5pCeqnJ9xQpMdPfyZWe5yKDYSX\"]},\"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol\":{\"keccak256\":\"0x183dc62c0b4490931e4c847e9e6a0a1e84d4f2ddfe2ab5cff44c7f1b2c848582\",\"urls\":[\"bzz-raw://d1c3ba3193145f2df8c10395887ee7f2e2ad33418fe8f0e86110e8321e6a70e0\",\"dweb:/ipfs/QmeiwQm3tioeLPUmCpJSWeKUi7LcB8gQgaFX34xwF7fqFW\"]},\"@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol\":{\"keccak256\":\"0x49fd3481ccbfedaedc2072f3338a873009e497a15279c857239c59cbf417ab9a\",\"urls\":[\"bzz-raw://78114391bf17e3fcbaa66b5fe75458d1b0621f5ede7394ce5baaa6042ab922a5\",\"dweb:/ipfs/QmUkrvFsVuXPWjjUtT8SbDkicWcmEn6GsbXkoEsopj3g7y\"]},\"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol\":{\"keccak256\":\"0xdbf46b45a4c9f38ba71a0391aed0e7b108854b619f292d907ae537228868bda6\",\"urls\":[\"bzz-raw://3ae40466809630c4731e2e3a697d6885727c577aaf260766c8a2f534ad3f6ee8\",\"dweb:/ipfs/QmTzpN5yP4Y5jvQ1ohfXFrce3sjzUiSChYJgZj9VvhVohG\"]},\"@chainlink/contracts/src/v0.6/vendor/SafeMath.sol\":{\"keccak256\":\"0x95dbe2dd5ab8682b99bc3d7d297b621d4237442da160f78d3323ee5c4a06ded3\",\"urls\":[\"bzz-raw://d753308ff4eb43fba6f9ede371a33f707c5818350770dcb078a7d78ac8251361\",\"dweb:/ipfs/Qme64eYKWoTQiP3WhqGHoMqrENNZ9L8SdBLQ2hx5SmzUda\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xb046d18f9d09683ca1c0ed6d80c61da8a8a7d9b30bad70a17b898538683eff74\",\"urls\":[\"bzz-raw://4728713afa6ae36cc9e92c7107c796a313add3ec20f813be2cde76c814486b2a\",\"dweb:/ipfs/QmUJBTXvYaGDF5PVnd5pUvYerc9DRXvqANDzgCzAp3FkkA\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xfa152b6e88a1dc50780e8f1580426dc23ad2e1e2c2f086a088adf206a202f453\",\"urls\":[\"bzz-raw://5127b264994adab88fae419b1c493efc5acd07134c19ee5c0397e50018291ebf\",\"dweb:/ipfs/QmWwJZVhvdmvUCdimbb6R2Jiu59zjPqm6XTMchM6LaEHAp\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xfc398838759c3248bdca40f7bc060e789c8d715df22f9eee7494bcafe14fa1b8\",\"urls\":[\"bzz-raw://ca2e28a5681be0558b2de6a24c107299925f8bd9e3244e9a70b033d6eab782c8\",\"dweb:/ipfs/QmX5kRT4Gwq4GQYfEdxVsE7PALpGfQEuQJhsfpCap9inKm\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xaf936da92f3a9a4f98b237323b5eb1d813fb86c4d07a184beba7027cf0509ba3\",\"urls\":[\"bzz-raw://aaa210e132e06975eb9f20060db6ba7dee78f6fce691a1c2489525584de521c0\",\"dweb:/ipfs/QmRwzi4nUW3UWBwhY5ik2xW3JZo9NMLN5UyGi1xPpMQYrh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x3636662804cd8f474536b2875a9038a4c3fb91879f1bbff48af5c3f140fcd2f0\",\"urls\":[\"bzz-raw://9fab8521263fa581544000cb57335a3f2e6bcdfbb5579d3ceaa5acf741c67c4f\",\"dweb:/ipfs/QmZfXnMom7JSNtfyie5yGPN1SUC4SmHbz4ScVBH88URmA7\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xe7f984cedc00a138dc27f263c73c32ba9a4b2fd23b6c34ac46f46c074b943538\",\"urls\":[\"bzz-raw://0f4acda12f076fe7584921241ddbb5b460ca7cad6cb8a42252ac7f2a9f539127\",\"dweb:/ipfs/QmQmfhkEv9GrhdWe67QtXnU19AMuoEmy31QnHPkucdYLjZ\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x321ee37ef4925020aa818a03ec7fe48e057561f65ab009a84f6c20c86026ade7\",\"urls\":[\"bzz-raw://01f9d74a17a56024984251b97e428e24c9d3abffbae5bd290f0ec263c82e9694\",\"dweb:/ipfs/QmRryCuuXu2ukrDmatB8TqdEhPLiK6NBRt41RiPUaX1qKy\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x244e4b74b17716120cf28e58636f11c699b8c0c94628bd952a95cee038d7e32b\",\"urls\":[\"bzz-raw://198d566157120c526bd6b5086b32cae85a11389b8a538f533ba9f9447915da0e\",\"dweb:/ipfs/QmeE6d8KWERx7f1FVS5tMnitNJxBm2yWXRSEUBF7R6voLh\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0xb2a11b236f073662f5a196995863f51c11d006bf7c3de158b316dfa1506c4b79\",\"urls\":[\"bzz-raw://8651649cf0b9efa18c3b01c030276fa320d41adbdc286833417e7f36e357b2f3\",\"dweb:/ipfs/QmafhM2Nd1aP43QVB1eRRZaqRXQKswNfQcWi8U8xjrxCfN\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x79484115dbfa737054f73e041009a02eeb434dd81be5d684bf4255ad3b5ab558\",\"urls\":[\"bzz-raw://12c119699463450c2544f5b9d8709b5e9e9164c62948a79c3ec53423a051d969\",\"dweb:/ipfs/QmPJduzSAaekq447QeFqAp3E7dc8CnNk5ajofckJ4ahA7Q\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b506040516200493038038062004930833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082826040518060400160405280601b81526020017f44756e67656f6e73416e64447261676f6e7343686172616374657200000000008152506040518060400160405280600381526020017f4426440000000000000000000000000000000000000000000000000000000000815250620000e26301ffc9a760e01b6200033460201b60201c565b8160069080519060200190620000fa92919062000445565b5080600790805190602001906200011392919062000445565b506200012c6380ac58cd60e01b6200033460201b60201c565b62000144635b5e139f60e01b6200033460201b60201c565b6200015c63780e9d6360e01b6200033460201b60201c565b505081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000620001f46200043d60201b60201c565b905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e8190555067016345785d8a0000600f81905550505050620004f4565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620003d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200048857805160ff1916838001178555620004b9565b82800160010185558215620004b9579182015b82811115620004b85782518255916020019190600101906200049b565b5b509050620004c89190620004cc565b5090565b620004f191905b80821115620004ed576000816000905550600101620004d3565b5090565b90565b61442c80620005046000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80634f95b5f01161011a57806394985ddd116100ad578063b88d4fde1161007c578063b88d4fde14610d65578063c87b56dd14610e6a578063dc6cfe1014610f11578063e985e9c514610f67578063f2fde38b14610fe3576101fb565b806394985ddd14610c1857806395d89b4114610c505780639e317f1214610cd3578063a22cb46514610d15576101fb565b806370a08231116100e957806370a0823114610b2a578063715018a614610b8257806386481d4014610b8c5780638da5cb5b14610bce576101fb565b80634f95b5f0146109115780636352211e146109cd5780636c0360eb14610a3b5780636fe0c04614610abe576101fb565b80632f745c591161019257806342842e0e1161016157806342842e0e1461073f5780634810bc59146107ad5780634f6ccce7146108855780634f8e2fdf146108c7576101fb565b80632f745c59146105ce57806333b60863146106305780633bb3a24d1461067a57806342619f6614610721576101fb565b8063095ea7b3116101ce578063095ea7b31461042f578063162094c41461047d57806318160ddd1461054257806323b872dd14610560576101fb565b806301ffc9a71461020057806306396dbe1461026557806306fdde031461033e578063081812fc146103c1575b600080fd5b61024b6004803603602081101561021657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611027565b604051808215151515815260200191505060405180910390f35b6103286004803603604081101561027b57600080fd5b8101908080359060200190929190803590602001906401000000008111156102a257600080fd5b8201836020820111156102b457600080fd5b803590602001918460018302840111640100000000831117156102d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061108e565b6040518082815260200191505060405180910390f35b61034661125b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038657808201518184015260208101905061036b565b50505050905090810190601f1680156103b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed600480360360208110156103d757600080fd5b81019080803590602001909291905050506112fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047b6004803603604081101561044557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611398565b005b6105406004803603604081101561049357600080fd5b8101908080359060200190929190803590602001906401000000008111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111640100000000831117156104ee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114dc565b005b61054a611550565b6040518082815260200191505060405180910390f35b6105cc6004803603606081101561057657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611561565b005b61061a600480360360408110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d7565b6040518082815260200191505060405180910390f35b610638611632565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a66004803603602081101561069057600080fd5b8101908080359060200190929190505050611658565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e65780820151818401526020810190506106cb565b50505050905090810190601f1680156107135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61072961166a565b6040518082815260200191505060405180910390f35b6107ab6004803603606081101561075557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611670565b005b6107d9600480360360208110156107c357600080fd5b8101908080359060200190929190505050611690565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610843578082015181840152602081019050610828565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b6108b16004803603602081101561089b57600080fd5b810190808035906020019092919050505061177d565b6040518082815260200191505060405180910390f35b6108cf6117a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093d6004803603602081101561092757600080fd5b81019080803590602001909291905050506117c6565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561098f578082015181840152602081019050610974565b50505050905090810190601f1680156109bc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6109f9600480360360208110156109e357600080fd5b810190808035906020019092919050505061197d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a436119b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a83578082015181840152602081019050610a68565b50505050905090810190601f168015610ab05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610aea60048036036020811015610ad457600080fd5b8101908080359060200190929190505050611a56565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610b6c60048036036020811015610b4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b53565b6040518082815260200191505060405180910390f35b610b8a611c28565b005b610bb860048036036020811015610ba257600080fd5b8101908080359060200190929190505050611db3565b6040518082815260200191505060405180910390f35b610bd6611de3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c4e60048036036040811015610c2e57600080fd5b810190808035906020019092919080359060200190929190505050611e0d565b005b610c58611ede565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c98578082015181840152602081019050610c7d565b50505050905090810190601f168015610cc55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610cff60048036036020811015610ce957600080fd5b8101908080359060200190929190505050611f80565b6040518082815260200191505060405180910390f35b610d6360048036036040811015610d2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f98565b005b610e6860048036036080811015610d7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610de257600080fd5b820183602082011115610df457600080fd5b80359060200191846001830284011164010000000083111715610e1657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612150565b005b610e9660048036036020811015610e8057600080fd5b81019080803590602001909291905050506121c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ed6578082015181840152602081019050610ebb565b50505050905090810190601f168015610f035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f5160048036036060811015610f2757600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124b1565b6040518082815260200191505060405180910390f35b610fc960048036036040811015610f7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c3565b604051808215151515815260200191505060405180910390f35b61102560048036036020811015610ff957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612757565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f54600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561113257600080fd5b505afa158015611146573d6000803e3d6000fd5b505050506040513d602081101561115c57600080fd5b810190808051906020019092919050505010156111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806141f1602b913960400191505060405180910390fd5b60006111d5600e54600f54866124b1565b9050826014600083815260200190815260200160002090805190602001906111fe9291906140ad565b50336015600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508091505092915050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112f35780601f106112c8576101008083540402835291602001916112f3565b820191906000526020600020905b8154815290600101906020018083116112d657829003601f168201915b5050505050905090565b600061130882612967565b61135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142f5602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006113a38261197d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143a56021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611449612984565b73ffffffffffffffffffffffffffffffffffffffff161480611478575061147781611472612984565b6126c3565b5b6114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806142486038913960400191505060405180910390fd5b6114d7838361298c565b505050565b6114ed6114e7612984565b83612a45565b611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c66031913960400191505060405180910390fd5b61154c8282612b39565b5050565b600061155c6002612bc3565b905090565b61157261156c612984565b82612a45565b6115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c66031913960400191505060405180910390fd5b6115d2838383612bd8565b505050565b600061162a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e1b90919063ffffffff16565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611663826121c8565b9050919050565b60105481565b61168b83838360405180602001604052806000815250612150565b505050565b6013818154811061169d57fe5b9060005260206000209060080201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905088565b600080611794836002612e3590919063ffffffff16565b50905080915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000806000601385815481106117da57fe5b9060005260206000209060080201600701601386815481106117f857fe5b9060005260206000209060080201600501546013878154811061181757fe5b9060005260206000209060080201600401546013888154811061183657fe5b9060005260206000209060080201600301546013898154811061185557fe5b90600052602060002090600802016002015460138a8154811061187457fe5b90600052602060002090600802016001015460138b8154811061189357fe5b90600052602060002090600802016000015401010101016118b387611db3565b601388815481106118c057fe5b906000526020600020906008020160060154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119675780601f1061193c57610100808354040283529160200191611967565b820191906000526020600020905b81548152906001019060200180831161194a57829003601f168201915b5050505050935093509350935093509193509193565b60006119ad826040518060600160405280602981526020016142aa602991396002612e649092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4c5780601f10611a2157610100808354040283529160200191611a4c565b820191906000526020600020905b815481529060010190602001808311611a2f57829003601f168201915b5050505050905090565b600080600080600080600060138881548110611a6e57fe5b90600052602060002090600802016000015460138981548110611a8d57fe5b90600052602060002090600802016001015460138a81548110611aac57fe5b90600052602060002090600802016002015460138b81548110611acb57fe5b90600052602060002090600802016003015460138c81548110611aea57fe5b90600052602060002090600802016004015460138d81548110611b0957fe5b90600052602060002090600802016005015460138e81548110611b2857fe5b9060005260206000209060080201600601549650965096509650965096509650919395979092949650565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614280602a913960400191505060405180910390fd5b611c21600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e83565b9050919050565b611c30612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611ddc60138381548110611dc557fe5b906000526020600020906008020160060154612e98565b9050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c0081525060200191505060405180910390fd5b611eda8282612edd565b5050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f765780601f10611f4b57610100808354040283529160200191611f76565b820191906000526020600020905b815481529060010190602001808311611f5957829003601f168201915b5050505050905090565b600c6020528060005260406000206000915090505481565b611fa0612984565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061204e612984565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120fb612984565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61216161215b612984565b83612a45565b6121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c66031913960400191505060405180910390fd5b6121c28484848461318a565b50505050565b60606121d382612967565b612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614376602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122d15780601f106122a6576101008083540402835291602001916122d1565b820191906000526020600020905b8154815290600101906020018083116122b457829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561230057809150506124ac565b6000815111156123d957600981604051602001808380546001816001161561010002031660029004801561236b5780601f1061234957610100808354040283529182019161236b565b820191906000526020600020905b815481529060010190602001808311612357575b505082805190602001908083835b6020831061239c5780518252602082019150602081019050602083039250612379565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506124ac565b60096123e4846131fc565b60405160200180838054600181600116156101000203166002900480156124425780601f10612420576101008083540402835291820191612442565b820191906000526020600020905b81548152906001019060200180831161242e575b505082805190602001908083835b602083106124735780518252602082019150602081019050602083039250612450565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634000aea0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878660405160200180838152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c45780820151818401526020810190506125a9565b50505050905090810190601f1680156125f15780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561261257600080fd5b505af1158015612626573d6000803e3d6000fd5b505050506040513d602081101561263c57600080fd5b810190808051906020019092919050505050600061266f858430600c60008a815260200190815260200160002054613343565b90506126986001600c6000888152602001908152602001600020546133bd90919063ffffffff16565b600c6000878152602001908152602001600020819055506126b98582613445565b9150509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61275f612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141a76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061297d82600261347e90919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166129ff8361197d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5082612967565b612aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061421c602c913960400191505060405180910390fd5b6000612ab08361197d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b1f57508373ffffffffffffffffffffffffffffffffffffffff16612b07846112fd565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b305750612b2f81856126c3565b5b91505092915050565b612b4282612967565b612b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614321602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190612bbe9291906140ad565b505050565b6000612bd182600001613498565b9050919050565b8273ffffffffffffffffffffffffffffffffffffffff16612bf88261197d565b73ffffffffffffffffffffffffffffffffffffffff1614612c64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061434d6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141cd6024913960400191505060405180910390fd5b612cf58383836134a9565b612d0060008261298c565b612d5181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134ae90919063ffffffff16565b50612da381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134c890919063ffffffff16565b50612dba818360026134e29092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e2a8360000183613517565b60001c905092915050565b600080600080612e48866000018661359a565b915091508160001c8160001c8090509350935050509250929050565b6000612e77846000018460001b84613633565b60001c90509392505050565b6000612e9182600001613729565b9050919050565b60008060026001840181612ea857fe5b0490508291505b81811015612ed757809150600281828581612ec657fe5b040181612ecf57fe5b049050612eaf565b50919050565b600060138054905090506000601260648481612ef557fe5b0681612efd57fe5b0690506000601260646127108681612f1157fe5b0681612f1957fe5b0481612f2157fe5b06905060006012612710620f42408781612f3757fe5b0681612f3f57fe5b0481612f4757fe5b06905060006012620f42406305f5e1008881612f5f57fe5b0681612f6757fe5b0481612f6f57fe5b069050600060126305f5e1006402540be4008981612f8957fe5b0681612f9157fe5b0481612f9957fe5b069050600060126402540be40064e8d4a510008a81612fb457fe5b0681612fbc57fe5b0481612fc457fe5b06905060008090506013604051806101000160405280898152602001888152602001878152602001868152602001858152602001848152602001838152602001601460008e81526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130ab5780601f10613080576101008083540402835291602001916130ab565b820191906000526020600020905b81548152906001019060200180831161308e57829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701908051906020019061313e9291906140ad565b50505061317e601560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168961373a565b50505050505050505050565b613195848484612bd8565b6131a184848484613758565b6131f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141756032913960400191505060405180910390fd5b50505050565b60606000821415613244576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061333e565b600082905060005b6000821461326e578080600101915050600a828161326657fe5b04915061324c565b60608167ffffffffffffffff8111801561328757600080fd5b506040519080825280601f01601f1916602001820160405280156132ba5781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461333657600a84816132db57fe5b0660300160f81b828280600190039350815181106132f557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161332e57fe5b0493506132c9565b819450505050505b919050565b600084848484604051602001808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b60008082840190508381101561343b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b6000613490836000018360001b61399d565b905092915050565b600081600001805490509050919050565b505050565b60006134c0836000018360001b6139c0565b905092915050565b60006134da836000018360001b613aa8565b905092915050565b600061350e846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613b18565b90509392505050565b600081836000018054905011613578576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141536022913960400191505060405180910390fd5b82600001828154811061358757fe5b9060005260206000200154905092915050565b600080828460000180549050116135fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142d36022913960400191505060405180910390fd5b600084600001848154811061360d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906136fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136bf5780820151818401526020810190506136a4565b50505050905090810190601f1680156136ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061370d57fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b613754828260405180602001604052806000815250613bf4565b5050565b60006137798473ffffffffffffffffffffffffffffffffffffffff16613c65565b6137865760019050613995565b606061391c63150b7a0260e01b61379b612984565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561384b578082015181840152602081019050613830565b50505050905090810190601f1680156138785780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001614175603291398773ffffffffffffffffffffffffffffffffffffffff16613c789092919063ffffffff16565b9050600081806020019051602081101561393557600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114613a9c5760006001820390506000600186600001805490500390506000866000018281548110613a0b57fe5b9060005260206000200154905080876000018481548110613a2857fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613a6057fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613aa2565b60009150505b92915050565b6000613ab48383613c90565b613b0d578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613b12565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613bbf57846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613bed565b82856000016001830381548110613bd257fe5b90600052602060002090600202016001018190555060009150505b9392505050565b613bfe8383613cb3565b613c0b6000848484613758565b613c60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141756032913960400191505060405180910390fd5b505050565b600080823b905060008111915050919050565b6060613c878484600085613ea7565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613d5f81612967565b15613dd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613dde600083836134a9565b613e2f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134c890919063ffffffff16565b50613e46818360026134e29092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060613eb285613c65565b613f24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f745780518252602082019150602081019050602083039250613f51565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613fd6576040519150601f19603f3d011682016040523d82523d6000602084013e613fdb565b606091505b50915091508115613ff05780925050506140a5565b6000815111156140035780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561406a57808201518184015260208101905061404f565b50505050905090810190601f1680156140975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106140ee57805160ff191683800117855561411c565b8280016001018555821561411c579182015b8281111561411b578251825591602001919060010190614100565b5b509050614129919061412d565b5090565b61414f91905b8082111561414b576000816000905550600101614133565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742077697468206661756365744552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212209871b8388205397e9cad96393f904c6b76fb3fc97c432fcb451a5974a354c30064736f6c63430006060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80634f95b5f01161011a57806394985ddd116100ad578063b88d4fde1161007c578063b88d4fde14610d65578063c87b56dd14610e6a578063dc6cfe1014610f11578063e985e9c514610f67578063f2fde38b14610fe3576101fb565b806394985ddd14610c1857806395d89b4114610c505780639e317f1214610cd3578063a22cb46514610d15576101fb565b806370a08231116100e957806370a0823114610b2a578063715018a614610b8257806386481d4014610b8c5780638da5cb5b14610bce576101fb565b80634f95b5f0146109115780636352211e146109cd5780636c0360eb14610a3b5780636fe0c04614610abe576101fb565b80632f745c591161019257806342842e0e1161016157806342842e0e1461073f5780634810bc59146107ad5780634f6ccce7146108855780634f8e2fdf146108c7576101fb565b80632f745c59146105ce57806333b60863146106305780633bb3a24d1461067a57806342619f6614610721576101fb565b8063095ea7b3116101ce578063095ea7b31461042f578063162094c41461047d57806318160ddd1461054257806323b872dd14610560576101fb565b806301ffc9a71461020057806306396dbe1461026557806306fdde031461033e578063081812fc146103c1575b600080fd5b61024b6004803603602081101561021657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611027565b604051808215151515815260200191505060405180910390f35b6103286004803603604081101561027b57600080fd5b8101908080359060200190929190803590602001906401000000008111156102a257600080fd5b8201836020820111156102b457600080fd5b803590602001918460018302840111640100000000831117156102d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061108e565b6040518082815260200191505060405180910390f35b61034661125b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038657808201518184015260208101905061036b565b50505050905090810190601f1680156103b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed600480360360208110156103d757600080fd5b81019080803590602001909291905050506112fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047b6004803603604081101561044557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611398565b005b6105406004803603604081101561049357600080fd5b8101908080359060200190929190803590602001906401000000008111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111640100000000831117156104ee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114dc565b005b61054a611550565b6040518082815260200191505060405180910390f35b6105cc6004803603606081101561057657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611561565b005b61061a600480360360408110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d7565b6040518082815260200191505060405180910390f35b610638611632565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a66004803603602081101561069057600080fd5b8101908080359060200190929190505050611658565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e65780820151818401526020810190506106cb565b50505050905090810190601f1680156107135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61072961166a565b6040518082815260200191505060405180910390f35b6107ab6004803603606081101561075557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611670565b005b6107d9600480360360208110156107c357600080fd5b8101908080359060200190929190505050611690565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610843578082015181840152602081019050610828565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b6108b16004803603602081101561089b57600080fd5b810190808035906020019092919050505061177d565b6040518082815260200191505060405180910390f35b6108cf6117a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093d6004803603602081101561092757600080fd5b81019080803590602001909291905050506117c6565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561098f578082015181840152602081019050610974565b50505050905090810190601f1680156109bc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6109f9600480360360208110156109e357600080fd5b810190808035906020019092919050505061197d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a436119b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a83578082015181840152602081019050610a68565b50505050905090810190601f168015610ab05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610aea60048036036020811015610ad457600080fd5b8101908080359060200190929190505050611a56565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610b6c60048036036020811015610b4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b53565b6040518082815260200191505060405180910390f35b610b8a611c28565b005b610bb860048036036020811015610ba257600080fd5b8101908080359060200190929190505050611db3565b6040518082815260200191505060405180910390f35b610bd6611de3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c4e60048036036040811015610c2e57600080fd5b810190808035906020019092919080359060200190929190505050611e0d565b005b610c58611ede565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c98578082015181840152602081019050610c7d565b50505050905090810190601f168015610cc55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610cff60048036036020811015610ce957600080fd5b8101908080359060200190929190505050611f80565b6040518082815260200191505060405180910390f35b610d6360048036036040811015610d2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f98565b005b610e6860048036036080811015610d7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610de257600080fd5b820183602082011115610df457600080fd5b80359060200191846001830284011164010000000083111715610e1657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612150565b005b610e9660048036036020811015610e8057600080fd5b81019080803590602001909291905050506121c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ed6578082015181840152602081019050610ebb565b50505050905090810190601f168015610f035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f5160048036036060811015610f2757600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124b1565b6040518082815260200191505060405180910390f35b610fc960048036036040811015610f7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c3565b604051808215151515815260200191505060405180910390f35b61102560048036036020811015610ff957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612757565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f54600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561113257600080fd5b505afa158015611146573d6000803e3d6000fd5b505050506040513d602081101561115c57600080fd5b810190808051906020019092919050505010156111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806141f1602b913960400191505060405180910390fd5b60006111d5600e54600f54866124b1565b9050826014600083815260200190815260200160002090805190602001906111fe9291906140ad565b50336015600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508091505092915050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112f35780601f106112c8576101008083540402835291602001916112f3565b820191906000526020600020905b8154815290600101906020018083116112d657829003601f168201915b5050505050905090565b600061130882612967565b61135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142f5602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006113a38261197d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143a56021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611449612984565b73ffffffffffffffffffffffffffffffffffffffff161480611478575061147781611472612984565b6126c3565b5b6114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806142486038913960400191505060405180910390fd5b6114d7838361298c565b505050565b6114ed6114e7612984565b83612a45565b611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c66031913960400191505060405180910390fd5b61154c8282612b39565b5050565b600061155c6002612bc3565b905090565b61157261156c612984565b82612a45565b6115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c66031913960400191505060405180910390fd5b6115d2838383612bd8565b505050565b600061162a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e1b90919063ffffffff16565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611663826121c8565b9050919050565b60105481565b61168b83838360405180602001604052806000815250612150565b505050565b6013818154811061169d57fe5b9060005260206000209060080201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905088565b600080611794836002612e3590919063ffffffff16565b50905080915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000806000601385815481106117da57fe5b9060005260206000209060080201600701601386815481106117f857fe5b9060005260206000209060080201600501546013878154811061181757fe5b9060005260206000209060080201600401546013888154811061183657fe5b9060005260206000209060080201600301546013898154811061185557fe5b90600052602060002090600802016002015460138a8154811061187457fe5b90600052602060002090600802016001015460138b8154811061189357fe5b90600052602060002090600802016000015401010101016118b387611db3565b601388815481106118c057fe5b906000526020600020906008020160060154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119675780601f1061193c57610100808354040283529160200191611967565b820191906000526020600020905b81548152906001019060200180831161194a57829003601f168201915b5050505050935093509350935093509193509193565b60006119ad826040518060600160405280602981526020016142aa602991396002612e649092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4c5780601f10611a2157610100808354040283529160200191611a4c565b820191906000526020600020905b815481529060010190602001808311611a2f57829003601f168201915b5050505050905090565b600080600080600080600060138881548110611a6e57fe5b90600052602060002090600802016000015460138981548110611a8d57fe5b90600052602060002090600802016001015460138a81548110611aac57fe5b90600052602060002090600802016002015460138b81548110611acb57fe5b90600052602060002090600802016003015460138c81548110611aea57fe5b90600052602060002090600802016004015460138d81548110611b0957fe5b90600052602060002090600802016005015460138e81548110611b2857fe5b9060005260206000209060080201600601549650965096509650965096509650919395979092949650565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614280602a913960400191505060405180910390fd5b611c21600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e83565b9050919050565b611c30612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611ddc60138381548110611dc557fe5b906000526020600020906008020160060154612e98565b9050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c0081525060200191505060405180910390fd5b611eda8282612edd565b5050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f765780601f10611f4b57610100808354040283529160200191611f76565b820191906000526020600020905b815481529060010190602001808311611f5957829003601f168201915b5050505050905090565b600c6020528060005260406000206000915090505481565b611fa0612984565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061204e612984565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120fb612984565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61216161215b612984565b83612a45565b6121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806143c66031913960400191505060405180910390fd5b6121c28484848461318a565b50505050565b60606121d382612967565b612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614376602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122d15780601f106122a6576101008083540402835291602001916122d1565b820191906000526020600020905b8154815290600101906020018083116122b457829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561230057809150506124ac565b6000815111156123d957600981604051602001808380546001816001161561010002031660029004801561236b5780601f1061234957610100808354040283529182019161236b565b820191906000526020600020905b815481529060010190602001808311612357575b505082805190602001908083835b6020831061239c5780518252602082019150602081019050602083039250612379565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506124ac565b60096123e4846131fc565b60405160200180838054600181600116156101000203166002900480156124425780601f10612420576101008083540402835291820191612442565b820191906000526020600020905b81548152906001019060200180831161242e575b505082805190602001908083835b602083106124735780518252602082019150602081019050602083039250612450565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634000aea0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878660405160200180838152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c45780820151818401526020810190506125a9565b50505050905090810190601f1680156125f15780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561261257600080fd5b505af1158015612626573d6000803e3d6000fd5b505050506040513d602081101561263c57600080fd5b810190808051906020019092919050505050600061266f858430600c60008a815260200190815260200160002054613343565b90506126986001600c6000888152602001908152602001600020546133bd90919063ffffffff16565b600c6000878152602001908152602001600020819055506126b98582613445565b9150509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61275f612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141a76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061297d82600261347e90919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166129ff8361197d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5082612967565b612aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061421c602c913960400191505060405180910390fd5b6000612ab08361197d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b1f57508373ffffffffffffffffffffffffffffffffffffffff16612b07846112fd565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b305750612b2f81856126c3565b5b91505092915050565b612b4282612967565b612b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180614321602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190612bbe9291906140ad565b505050565b6000612bd182600001613498565b9050919050565b8273ffffffffffffffffffffffffffffffffffffffff16612bf88261197d565b73ffffffffffffffffffffffffffffffffffffffff1614612c64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602981526020018061434d6029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141cd6024913960400191505060405180910390fd5b612cf58383836134a9565b612d0060008261298c565b612d5181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134ae90919063ffffffff16565b50612da381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134c890919063ffffffff16565b50612dba818360026134e29092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e2a8360000183613517565b60001c905092915050565b600080600080612e48866000018661359a565b915091508160001c8160001c8090509350935050509250929050565b6000612e77846000018460001b84613633565b60001c90509392505050565b6000612e9182600001613729565b9050919050565b60008060026001840181612ea857fe5b0490508291505b81811015612ed757809150600281828581612ec657fe5b040181612ecf57fe5b049050612eaf565b50919050565b600060138054905090506000601260648481612ef557fe5b0681612efd57fe5b0690506000601260646127108681612f1157fe5b0681612f1957fe5b0481612f2157fe5b06905060006012612710620f42408781612f3757fe5b0681612f3f57fe5b0481612f4757fe5b06905060006012620f42406305f5e1008881612f5f57fe5b0681612f6757fe5b0481612f6f57fe5b069050600060126305f5e1006402540be4008981612f8957fe5b0681612f9157fe5b0481612f9957fe5b069050600060126402540be40064e8d4a510008a81612fb457fe5b0681612fbc57fe5b0481612fc457fe5b06905060008090506013604051806101000160405280898152602001888152602001878152602001868152602001858152602001848152602001838152602001601460008e81526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156130ab5780601f10613080576101008083540402835291602001916130ab565b820191906000526020600020905b81548152906001019060200180831161308e57829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701908051906020019061313e9291906140ad565b50505061317e601560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168961373a565b50505050505050505050565b613195848484612bd8565b6131a184848484613758565b6131f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141756032913960400191505060405180910390fd5b50505050565b60606000821415613244576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061333e565b600082905060005b6000821461326e578080600101915050600a828161326657fe5b04915061324c565b60608167ffffffffffffffff8111801561328757600080fd5b506040519080825280601f01601f1916602001820160405280156132ba5781602001600182028036833780820191505090505b50905060006001830390508593505b6000841461333657600a84816132db57fe5b0660300160f81b828280600190039350815181106132f557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a848161332e57fe5b0493506132c9565b819450505050505b919050565b600084848484604051602001808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b60008082840190508381101561343b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b6000613490836000018360001b61399d565b905092915050565b600081600001805490509050919050565b505050565b60006134c0836000018360001b6139c0565b905092915050565b60006134da836000018360001b613aa8565b905092915050565b600061350e846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613b18565b90509392505050565b600081836000018054905011613578576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141536022913960400191505060405180910390fd5b82600001828154811061358757fe5b9060005260206000200154905092915050565b600080828460000180549050116135fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142d36022913960400191505060405180910390fd5b600084600001848154811061360d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906136fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156136bf5780820151818401526020810190506136a4565b50505050905090810190601f1680156136ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061370d57fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b613754828260405180602001604052806000815250613bf4565b5050565b60006137798473ffffffffffffffffffffffffffffffffffffffff16613c65565b6137865760019050613995565b606061391c63150b7a0260e01b61379b612984565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561384b578082015181840152602081019050613830565b50505050905090810190601f1680156138785780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001614175603291398773ffffffffffffffffffffffffffffffffffffffff16613c789092919063ffffffff16565b9050600081806020019051602081101561393557600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114613a9c5760006001820390506000600186600001805490500390506000866000018281548110613a0b57fe5b9060005260206000200154905080876000018481548110613a2857fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613a6057fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613aa2565b60009150505b92915050565b6000613ab48383613c90565b613b0d578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613b12565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613bbf57846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613bed565b82856000016001830381548110613bd257fe5b90600052602060002090600202016001018190555060009150505b9392505050565b613bfe8383613cb3565b613c0b6000848484613758565b613c60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141756032913960400191505060405180910390fd5b505050565b600080823b905060008111915050919050565b6060613c878484600085613ea7565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d56576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613d5f81612967565b15613dd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613dde600083836134a9565b613e2f81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206134c890919063ffffffff16565b50613e46818360026134e29092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060613eb285613c65565b613f24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f745780518252602082019150602081019050602083039250613f51565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613fd6576040519150601f19603f3d011682016040523d82523d6000602084013e613fdb565b606091505b50915091508115613ff05780925050506140a5565b6000815111156140035780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561406a57808201518184015260208101905061404f565b50505050905090810190601f1680156140975780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106140ee57805160ff191683800117855561411c565b8280016001018555821561411c579182015b8281111561411b578251825591602001919060010190614100565b5b509050614129919061412d565b5090565b61414f91905b8082111561414b576000816000905550600101614133565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742077697468206661756365744552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a26469706673582212209871b8388205397e9cad96393f904c6b76fb3fc97c432fcb451a5974a354c30064736f6c63430006060033", + "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_VRFCoordinator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_LinkToken\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_keyhash\",\"type\":\"bytes32\"}],\"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\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LinkToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VRFCoordinator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"characters\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"strength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dexterity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"constitution\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"intelligence\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"wisdom\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"charisma\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"experience\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCharacterOverView\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCharacterStats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getLevel\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getTokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"randomResult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"randomness\",\"type\":\"uint256\"}],\"name\":\"rawFulfillRandomness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userProvidedSeed\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"requestNewRandomCharacter\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_seed\",\"type\":\"uint256\"}],\"name\":\"requestRandomness\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_tokenURI\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"baseURI()\":{\"details\":\"Returns the base URI set via {_setBaseURI}. This will be automatically added as a prefix in {tokenURI} to each token's URI, or to the token ID if no specific URI is set for that token ID.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"requestRandomness(bytes32,uint256,uint256)\":{\"details\":\"The source of the seed data must be something which the oraclecannot anticipate. See \\\"SECURITY CONSIDERATIONS\\\" above.The fulfillRandomness method receives the output, once it's providedby the Oracle, and verified by the vrfCoordinator.The _keyHash must already be registered with the VRFCoordinator, andthe _fee must exceed the fee specified during registration of the_keyHash.The returned requestId can be used to distinguish responses to *concurrent requests. It is passed as the first argument tofulfillRandomness.\",\"params\":{\"_fee\":\"The amount of LINK to send with the request\",\"_keyHash\":\"ID of public key against which randomness is generated\",\"_seed\":\"Random seed from which output randomness is determined\"},\"returns\":{\"requestId\":\"which will be returned with the response to this request\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}. * Time complexity O(1), guaranteed to always use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"constructor\":\"Constructor inherits VRFConsumerBase * Network: Rinkeby Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B LINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709 Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311\",\"requestRandomness(bytes32,uint256,uint256)\":{\"notice\":\"requestRandomness initiates a request for VRF output given _seed\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol\":\"DungeonsAndDragonsCharacter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol\":{\"keccak256\":\"0x9b588562f48266c3d4c0b60eae75190f751a31fca097484cebc9c273183cdffd\",\"urls\":[\"bzz-raw://9aa5676f0c5eb6a8dc41fa9f9a6e6d767e6a36a5e42ed23f4e9f9e5bddb4a8ad\",\"dweb:/ipfs/QmaDbCnRdkAZUHckfhyVMYDxMzQrpUpzDgaiGo41YxD4vM\"]},\"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol\":{\"keccak256\":\"0x183dc62c0b4490931e4c847e9e6a0a1e84d4f2ddfe2ab5cff44c7f1b2c848582\",\"urls\":[\"bzz-raw://d1c3ba3193145f2df8c10395887ee7f2e2ad33418fe8f0e86110e8321e6a70e0\",\"dweb:/ipfs/QmeiwQm3tioeLPUmCpJSWeKUi7LcB8gQgaFX34xwF7fqFW\"]},\"@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol\":{\"keccak256\":\"0x49fd3481ccbfedaedc2072f3338a873009e497a15279c857239c59cbf417ab9a\",\"urls\":[\"bzz-raw://78114391bf17e3fcbaa66b5fe75458d1b0621f5ede7394ce5baaa6042ab922a5\",\"dweb:/ipfs/QmUkrvFsVuXPWjjUtT8SbDkicWcmEn6GsbXkoEsopj3g7y\"]},\"@chainlink/contracts/src/v0.6/interfaces/LinkTokenInterface.sol\":{\"keccak256\":\"0xdbf46b45a4c9f38ba71a0391aed0e7b108854b619f292d907ae537228868bda6\",\"urls\":[\"bzz-raw://3ae40466809630c4731e2e3a697d6885727c577aaf260766c8a2f534ad3f6ee8\",\"dweb:/ipfs/QmTzpN5yP4Y5jvQ1ohfXFrce3sjzUiSChYJgZj9VvhVohG\"]},\"@chainlink/contracts/src/v0.6/vendor/SafeMath.sol\":{\"keccak256\":\"0x95dbe2dd5ab8682b99bc3d7d297b621d4237442da160f78d3323ee5c4a06ded3\",\"urls\":[\"bzz-raw://d753308ff4eb43fba6f9ede371a33f707c5818350770dcb078a7d78ac8251361\",\"dweb:/ipfs/Qme64eYKWoTQiP3WhqGHoMqrENNZ9L8SdBLQ2hx5SmzUda\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x4bd6402ca6b3419008c2b482aff54e66836e8cb4eba2680e42ac5884ae6424fc\",\"urls\":[\"bzz-raw://8f9f711fb8d0d92aeea1c327e3845d13ca1fa8f142e47f8723cd5b3106fb29a3\",\"dweb:/ipfs/QmVQUReDW9f4zGqhizwHnyU8EntMs95tbASdqkGncnikba\"]},\"@openzeppelin/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xb046d18f9d09683ca1c0ed6d80c61da8a8a7d9b30bad70a17b898538683eff74\",\"urls\":[\"bzz-raw://4728713afa6ae36cc9e92c7107c796a313add3ec20f813be2cde76c814486b2a\",\"dweb:/ipfs/QmUJBTXvYaGDF5PVnd5pUvYerc9DRXvqANDzgCzAp3FkkA\"]},\"@openzeppelin/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0xfa152b6e88a1dc50780e8f1580426dc23ad2e1e2c2f086a088adf206a202f453\",\"urls\":[\"bzz-raw://5127b264994adab88fae419b1c493efc5acd07134c19ee5c0397e50018291ebf\",\"dweb:/ipfs/QmWwJZVhvdmvUCdimbb6R2Jiu59zjPqm6XTMchM6LaEHAp\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xfc398838759c3248bdca40f7bc060e789c8d715df22f9eee7494bcafe14fa1b8\",\"urls\":[\"bzz-raw://ca2e28a5681be0558b2de6a24c107299925f8bd9e3244e9a70b033d6eab782c8\",\"dweb:/ipfs/QmX5kRT4Gwq4GQYfEdxVsE7PALpGfQEuQJhsfpCap9inKm\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xaf936da92f3a9a4f98b237323b5eb1d813fb86c4d07a184beba7027cf0509ba3\",\"urls\":[\"bzz-raw://aaa210e132e06975eb9f20060db6ba7dee78f6fce691a1c2489525584de521c0\",\"dweb:/ipfs/QmRwzi4nUW3UWBwhY5ik2xW3JZo9NMLN5UyGi1xPpMQYrh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol\":{\"keccak256\":\"0x3636662804cd8f474536b2875a9038a4c3fb91879f1bbff48af5c3f140fcd2f0\",\"urls\":[\"bzz-raw://9fab8521263fa581544000cb57335a3f2e6bcdfbb5579d3ceaa5acf741c67c4f\",\"dweb:/ipfs/QmZfXnMom7JSNtfyie5yGPN1SUC4SmHbz4ScVBH88URmA7\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0xe7f984cedc00a138dc27f263c73c32ba9a4b2fd23b6c34ac46f46c074b943538\",\"urls\":[\"bzz-raw://0f4acda12f076fe7584921241ddbb5b460ca7cad6cb8a42252ac7f2a9f539127\",\"dweb:/ipfs/QmQmfhkEv9GrhdWe67QtXnU19AMuoEmy31QnHPkucdYLjZ\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x321ee37ef4925020aa818a03ec7fe48e057561f65ab009a84f6c20c86026ade7\",\"urls\":[\"bzz-raw://01f9d74a17a56024984251b97e428e24c9d3abffbae5bd290f0ec263c82e9694\",\"dweb:/ipfs/QmRryCuuXu2ukrDmatB8TqdEhPLiK6NBRt41RiPUaX1qKy\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf5fa8cbdffa5ef8be49b246b5628facc30b71707e78a45d80d93b64eff3fe390\",\"urls\":[\"bzz-raw://774e78a9ff32792cc95db4d2ceaf3a7965bb7f0bea5e6cb7cff182b450d44b37\",\"dweb:/ipfs/QmRRMC4uj7eAcLW7chynA3sNEYULMFazdLwQHKHQPyzAbA\"]},\"@openzeppelin/contracts/utils/EnumerableMap.sol\":{\"keccak256\":\"0x244e4b74b17716120cf28e58636f11c699b8c0c94628bd952a95cee038d7e32b\",\"urls\":[\"bzz-raw://198d566157120c526bd6b5086b32cae85a11389b8a538f533ba9f9447915da0e\",\"dweb:/ipfs/QmeE6d8KWERx7f1FVS5tMnitNJxBm2yWXRSEUBF7R6voLh\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0xb2a11b236f073662f5a196995863f51c11d006bf7c3de158b316dfa1506c4b79\",\"urls\":[\"bzz-raw://8651649cf0b9efa18c3b01c030276fa320d41adbdc286833417e7f36e357b2f3\",\"dweb:/ipfs/QmafhM2Nd1aP43QVB1eRRZaqRXQKswNfQcWi8U8xjrxCfN\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x79484115dbfa737054f73e041009a02eeb434dd81be5d684bf4255ad3b5ab558\",\"urls\":[\"bzz-raw://12c119699463450c2544f5b9d8709b5e9e9164c62948a79c3ec53423a051d969\",\"dweb:/ipfs/QmPJduzSAaekq447QeFqAp3E7dc8CnNk5ajofckJ4ahA7Q\"]}},\"version\":1}", + "bytecode": "0x60806040523480156200001157600080fd5b50604051620048f4380380620048f4833981810160405260608110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505082826040518060400160405280601b81526020017f44756e67656f6e73416e64447261676f6e7343686172616374657200000000008152506040518060400160405280600381526020017f4426440000000000000000000000000000000000000000000000000000000000815250620000e26301ffc9a760e01b6200033460201b60201c565b8160069080519060200190620000fa92919062000445565b5080600790805190602001906200011392919062000445565b506200012c6380ac58cd60e01b6200033460201b60201c565b62000144635b5e139f60e01b6200033460201b60201c565b6200015c63780e9d6360e01b6200033460201b60201c565b505081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000620001f46200043d60201b60201c565b905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35082601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e8190555067016345785d8a0000600f81905550505050620004f4565b63ffffffff60e01b817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415620003d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200048857805160ff1916838001178555620004b9565b82800160010185558215620004b9579182015b82811115620004b85782518255916020019190600101906200049b565b5b509050620004c89190620004cc565b5090565b620004f191905b80821115620004ed576000816000905550600101620004d3565b5090565b90565b6143f080620005046000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80634f95b5f01161011a57806394985ddd116100ad578063b88d4fde1161007c578063b88d4fde14610d65578063c87b56dd14610e6a578063dc6cfe1014610f11578063e985e9c514610f67578063f2fde38b14610fe3576101fb565b806394985ddd14610c1857806395d89b4114610c505780639e317f1214610cd3578063a22cb46514610d15576101fb565b806370a08231116100e957806370a0823114610b2a578063715018a614610b8257806386481d4014610b8c5780638da5cb5b14610bce576101fb565b80634f95b5f0146109115780636352211e146109cd5780636c0360eb14610a3b5780636fe0c04614610abe576101fb565b80632f745c591161019257806342842e0e1161016157806342842e0e1461073f5780634810bc59146107ad5780634f6ccce7146108855780634f8e2fdf146108c7576101fb565b80632f745c59146105ce57806333b60863146106305780633bb3a24d1461067a57806342619f6614610721576101fb565b8063095ea7b3116101ce578063095ea7b31461042f578063162094c41461047d57806318160ddd1461054257806323b872dd14610560576101fb565b806301ffc9a71461020057806306396dbe1461026557806306fdde031461033e578063081812fc146103c1575b600080fd5b61024b6004803603602081101561021657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611027565b604051808215151515815260200191505060405180910390f35b6103286004803603604081101561027b57600080fd5b8101908080359060200190929190803590602001906401000000008111156102a257600080fd5b8201836020820111156102b457600080fd5b803590602001918460018302840111640100000000831117156102d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061108e565b6040518082815260200191505060405180910390f35b61034661125b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038657808201518184015260208101905061036b565b50505050905090810190601f1680156103b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed600480360360208110156103d757600080fd5b81019080803590602001909291905050506112fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047b6004803603604081101561044557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611398565b005b6105406004803603604081101561049357600080fd5b8101908080359060200190929190803590602001906401000000008111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111640100000000831117156104ee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114dc565b005b61054a611550565b6040518082815260200191505060405180910390f35b6105cc6004803603606081101561057657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611561565b005b61061a600480360360408110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d7565b6040518082815260200191505060405180910390f35b610638611632565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a66004803603602081101561069057600080fd5b8101908080359060200190929190505050611658565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e65780820151818401526020810190506106cb565b50505050905090810190601f1680156107135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61072961166a565b6040518082815260200191505060405180910390f35b6107ab6004803603606081101561075557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611670565b005b6107d9600480360360208110156107c357600080fd5b8101908080359060200190929190505050611690565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610843578082015181840152602081019050610828565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b6108b16004803603602081101561089b57600080fd5b810190808035906020019092919050505061177d565b6040518082815260200191505060405180910390f35b6108cf6117a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093d6004803603602081101561092757600080fd5b81019080803590602001909291905050506117c6565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561098f578082015181840152602081019050610974565b50505050905090810190601f1680156109bc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6109f9600480360360208110156109e357600080fd5b810190808035906020019092919050505061197d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a436119b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a83578082015181840152602081019050610a68565b50505050905090810190601f168015610ab05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610aea60048036036020811015610ad457600080fd5b8101908080359060200190929190505050611a56565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610b6c60048036036020811015610b4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b53565b6040518082815260200191505060405180910390f35b610b8a611c28565b005b610bb860048036036020811015610ba257600080fd5b8101908080359060200190929190505050611db3565b6040518082815260200191505060405180910390f35b610bd6611de3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c4e60048036036040811015610c2e57600080fd5b810190808035906020019092919080359060200190929190505050611e0d565b005b610c58611ede565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c98578082015181840152602081019050610c7d565b50505050905090810190601f168015610cc55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610cff60048036036020811015610ce957600080fd5b8101908080359060200190929190505050611f80565b6040518082815260200191505060405180910390f35b610d6360048036036040811015610d2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f98565b005b610e6860048036036080811015610d7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610de257600080fd5b820183602082011115610df457600080fd5b80359060200191846001830284011164010000000083111715610e1657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612150565b005b610e9660048036036020811015610e8057600080fd5b81019080803590602001909291905050506121c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ed6578082015181840152602081019050610ebb565b50505050905090810190601f168015610f035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f5160048036036060811015610f2757600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124b1565b6040518082815260200191505060405180910390f35b610fc960048036036040811015610f7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c3565b604051808215151515815260200191505060405180910390f35b61102560048036036020811015610ff957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612757565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f54600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561113257600080fd5b505afa158015611146573d6000803e3d6000fd5b505050506040513d602081101561115c57600080fd5b810190808051906020019092919050505010156111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806141b5602b913960400191505060405180910390fd5b60006111d5600e54600f54866124b1565b9050826014600083815260200190815260200160002090805190602001906111fe929190614071565b50336015600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508091505092915050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112f35780601f106112c8576101008083540402835291602001916112f3565b820191906000526020600020905b8154815290600101906020018083116112d657829003601f168201915b5050505050905090565b600061130882612967565b61135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142b9602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006113a38261197d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143696021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611449612984565b73ffffffffffffffffffffffffffffffffffffffff161480611478575061147781611472612984565b6126c3565b5b6114cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061420c6038913960400191505060405180910390fd5b6114d7838361298c565b505050565b6114ed6114e7612984565b83612a45565b611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b61154c8282612b39565b5050565b600061155c6002612bc3565b905090565b61157261156c612984565b82612a45565b6115c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b6115d2838383612bd8565b505050565b600061162a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e1b90919063ffffffff16565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611663826121c8565b9050919050565b60105481565b61168b83838360405180602001604052806000815250612150565b505050565b6013818154811061169d57fe5b9060005260206000209060080201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905088565b600080611794836002612e3590919063ffffffff16565b50905080915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000806000601385815481106117da57fe5b9060005260206000209060080201600701601386815481106117f857fe5b9060005260206000209060080201600501546013878154811061181757fe5b9060005260206000209060080201600401546013888154811061183657fe5b9060005260206000209060080201600301546013898154811061185557fe5b90600052602060002090600802016002015460138a8154811061187457fe5b90600052602060002090600802016001015460138b8154811061189357fe5b90600052602060002090600802016000015401010101016118b387611db3565b601388815481106118c057fe5b906000526020600020906008020160060154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119675780601f1061193c57610100808354040283529160200191611967565b820191906000526020600020905b81548152906001019060200180831161194a57829003601f168201915b5050505050935093509350935093509193509193565b60006119ad8260405180606001604052806029815260200161426e602991396002612e649092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4c5780601f10611a2157610100808354040283529160200191611a4c565b820191906000526020600020905b815481529060010190602001808311611a2f57829003601f168201915b5050505050905090565b600080600080600080600060138881548110611a6e57fe5b90600052602060002090600802016000015460138981548110611a8d57fe5b90600052602060002090600802016001015460138a81548110611aac57fe5b90600052602060002090600802016002015460138b81548110611acb57fe5b90600052602060002090600802016003015460138c81548110611aea57fe5b90600052602060002090600802016004015460138d81548110611b0957fe5b90600052602060002090600802016005015460138e81548110611b2857fe5b9060005260206000209060080201600601549650965096509650965096509650919395979092949650565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614244602a913960400191505060405180910390fd5b611c21600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e83565b9050919050565b611c30612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611ddc60138381548110611dc557fe5b906000526020600020906008020160060154612e98565b9050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c0081525060200191505060405180910390fd5b611eda8282612edd565b5050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f765780601f10611f4b57610100808354040283529160200191611f76565b820191906000526020600020905b815481529060010190602001808311611f5957829003601f168201915b5050505050905090565b600c6020528060005260406000206000915090505481565b611fa0612984565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061204e612984565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120fb612984565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61216161215b612984565b83612a45565b6121b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b6121c28484848461314e565b50505050565b60606121d382612967565b612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061433a602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122d15780601f106122a6576101008083540402835291602001916122d1565b820191906000526020600020905b8154815290600101906020018083116122b457829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561230057809150506124ac565b6000815111156123d957600981604051602001808380546001816001161561010002031660029004801561236b5780601f1061234957610100808354040283529182019161236b565b820191906000526020600020905b815481529060010190602001808311612357575b505082805190602001908083835b6020831061239c5780518252602082019150602081019050602083039250612379565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506124ac565b60096123e4846131c0565b60405160200180838054600181600116156101000203166002900480156124425780601f10612420576101008083540402835291820191612442565b820191906000526020600020905b81548152906001019060200180831161242e575b505082805190602001908083835b602083106124735780518252602082019150602081019050602083039250612450565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634000aea0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878660405160200180838152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c45780820151818401526020810190506125a9565b50505050905090810190601f1680156125f15780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561261257600080fd5b505af1158015612626573d6000803e3d6000fd5b505050506040513d602081101561263c57600080fd5b810190808051906020019092919050505050600061266f858430600c60008a815260200190815260200160002054613307565b90506126986001600c60008881526020019081526020016000205461338190919063ffffffff16565b600c6000878152602001908152602001600020819055506126b98582613409565b9150509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61275f612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061416b6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061297d82600261344290919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166129ff8361197d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5082612967565b612aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806141e0602c913960400191505060405180910390fd5b6000612ab08361197d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b1f57508373ffffffffffffffffffffffffffffffffffffffff16612b07846112fd565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b305750612b2f81856126c3565b5b91505092915050565b612b4282612967565b612b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142e5602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190612bbe929190614071565b505050565b6000612bd18260000161345c565b9050919050565b8273ffffffffffffffffffffffffffffffffffffffff16612bf88261197d565b73ffffffffffffffffffffffffffffffffffffffff1614612c64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143116029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141916024913960400191505060405180910390fd5b612cf583838361346d565b612d0060008261298c565b612d5181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061347290919063ffffffff16565b50612da381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061348c90919063ffffffff16565b50612dba818360026134a69092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e2a83600001836134db565b60001c905092915050565b600080600080612e48866000018661355e565b915091508160001c8160001c8090509350935050509250929050565b6000612e77846000018460001b846135f7565b60001c90509392505050565b6000612e91826000016136ed565b9050919050565b60008060026001840181612ea857fe5b0490508291505b81811015612ed757809150600281828581612ec657fe5b040181612ecf57fe5b049050612eaf565b50919050565b60006013805490509050600060648381612ef357fe5b069050600060646127108581612f0557fe5b0681612f0d57fe5b0490506000612710620f42408681612f2157fe5b0681612f2957fe5b0490506000620f42406305f5e1008781612f3f57fe5b0681612f4757fe5b04905060006305f5e1006402540be4008881612f5f57fe5b0681612f6757fe5b04905060006402540be40064e8d4a510008981612f8057fe5b0681612f8857fe5b04905060008090506013604051806101000160405280898152602001888152602001878152602001868152602001858152602001848152602001838152602001601460008e81526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561306f5780601f106130445761010080835404028352916020019161306f565b820191906000526020600020905b81548152906001019060200180831161305257829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007019080519060200190613102929190614071565b505050613142601560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896136fe565b50505050505050505050565b613159848484612bd8565b6131658484848461371c565b6131ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141396032913960400191505060405180910390fd5b50505050565b60606000821415613208576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613302565b600082905060005b60008214613232578080600101915050600a828161322a57fe5b049150613210565b60608167ffffffffffffffff8111801561324b57600080fd5b506040519080825280601f01601f19166020018201604052801561327e5781602001600182028036833780820191505090505b50905060006001830390508593505b600084146132fa57600a848161329f57fe5b0660300160f81b828280600190039350815181106132b957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84816132f257fe5b04935061328d565b819450505050505b919050565b600084848484604051602001808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b6000808284019050838110156133ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b6000613454836000018360001b613961565b905092915050565b600081600001805490509050919050565b505050565b6000613484836000018360001b613984565b905092915050565b600061349e836000018360001b613a6c565b905092915050565b60006134d2846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613adc565b90509392505050565b60008183600001805490501161353c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141176022913960400191505060405180910390fd5b82600001828154811061354b57fe5b9060005260206000200154905092915050565b600080828460000180549050116135c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142976022913960400191505060405180910390fd5b60008460000184815481106135d157fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906136be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613683578082015181840152602081019050613668565b50505050905090810190601f1680156136b05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106136d157fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b613718828260405180602001604052806000815250613bb8565b5050565b600061373d8473ffffffffffffffffffffffffffffffffffffffff16613c29565b61374a5760019050613959565b60606138e063150b7a0260e01b61375f612984565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561380f5780820151818401526020810190506137f4565b50505050905090810190601f16801561383c5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001614139603291398773ffffffffffffffffffffffffffffffffffffffff16613c3c9092919063ffffffff16565b905060008180602001905160208110156138f957600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114613a6057600060018203905060006001866000018054905003905060008660000182815481106139cf57fe5b90600052602060002001549050808760000184815481106139ec57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613a2457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613a66565b60009150505b92915050565b6000613a788383613c54565b613ad1578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613ad6565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613b8357846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613bb1565b82856000016001830381548110613b9657fe5b90600052602060002090600202016001018190555060009150505b9392505050565b613bc28383613c77565b613bcf600084848461371c565b613c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141396032913960400191505060405180910390fd5b505050565b600080823b905060008111915050919050565b6060613c4b8484600085613e6b565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613d2381612967565b15613d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613da26000838361346d565b613df381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061348c90919063ffffffff16565b50613e0a818360026134a69092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060613e7685613c29565b613ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f385780518252602082019150602081019050602083039250613f15565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f9a576040519150601f19603f3d011682016040523d82523d6000602084013e613f9f565b606091505b50915091508115613fb4578092505050614069565b600081511115613fc75780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561402e578082015181840152602081019050614013565b50505050905090810190601f16801561405b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106140b257805160ff19168380011785556140e0565b828001600101855582156140e0579182015b828111156140df5782518255916020019190600101906140c4565b5b5090506140ed91906140f1565b5090565b61411391905b8082111561410f5760008160009055506001016140f7565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742077697468206661756365744552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220ebc819fca625390394e437ca194a95627e5841dc52f998ad89b23a7184e39f1164736f6c63430006060033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80634f95b5f01161011a57806394985ddd116100ad578063b88d4fde1161007c578063b88d4fde14610d65578063c87b56dd14610e6a578063dc6cfe1014610f11578063e985e9c514610f67578063f2fde38b14610fe3576101fb565b806394985ddd14610c1857806395d89b4114610c505780639e317f1214610cd3578063a22cb46514610d15576101fb565b806370a08231116100e957806370a0823114610b2a578063715018a614610b8257806386481d4014610b8c5780638da5cb5b14610bce576101fb565b80634f95b5f0146109115780636352211e146109cd5780636c0360eb14610a3b5780636fe0c04614610abe576101fb565b80632f745c591161019257806342842e0e1161016157806342842e0e1461073f5780634810bc59146107ad5780634f6ccce7146108855780634f8e2fdf146108c7576101fb565b80632f745c59146105ce57806333b60863146106305780633bb3a24d1461067a57806342619f6614610721576101fb565b8063095ea7b3116101ce578063095ea7b31461042f578063162094c41461047d57806318160ddd1461054257806323b872dd14610560576101fb565b806301ffc9a71461020057806306396dbe1461026557806306fdde031461033e578063081812fc146103c1575b600080fd5b61024b6004803603602081101561021657600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611027565b604051808215151515815260200191505060405180910390f35b6103286004803603604081101561027b57600080fd5b8101908080359060200190929190803590602001906401000000008111156102a257600080fd5b8201836020820111156102b457600080fd5b803590602001918460018302840111640100000000831117156102d657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061108e565b6040518082815260200191505060405180910390f35b61034661125b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038657808201518184015260208101905061036b565b50505050905090810190601f1680156103b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103ed600480360360208110156103d757600080fd5b81019080803590602001909291905050506112fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61047b6004803603604081101561044557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611398565b005b6105406004803603604081101561049357600080fd5b8101908080359060200190929190803590602001906401000000008111156104ba57600080fd5b8201836020820111156104cc57600080fd5b803590602001918460018302840111640100000000831117156104ee57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506114dc565b005b61054a611550565b6040518082815260200191505060405180910390f35b6105cc6004803603606081101561057657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611561565b005b61061a600480360360408110156105e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115d7565b6040518082815260200191505060405180910390f35b610638611632565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106a66004803603602081101561069057600080fd5b8101908080359060200190929190505050611658565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106e65780820151818401526020810190506106cb565b50505050905090810190601f1680156107135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61072961166a565b6040518082815260200191505060405180910390f35b6107ab6004803603606081101561075557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611670565b005b6107d9600480360360208110156107c357600080fd5b8101908080359060200190929190505050611690565b6040518089815260200188815260200187815260200186815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610843578082015181840152602081019050610828565b50505050905090810190601f1680156108705780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b6108b16004803603602081101561089b57600080fd5b810190808035906020019092919050505061177d565b6040518082815260200191505060405180910390f35b6108cf6117a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61093d6004803603602081101561092757600080fd5b81019080803590602001909291905050506117c6565b6040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561098f578082015181840152602081019050610974565b50505050905090810190601f1680156109bc5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390f35b6109f9600480360360208110156109e357600080fd5b810190808035906020019092919050505061197d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a436119b4565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a83578082015181840152602081019050610a68565b50505050905090810190601f168015610ab05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610aea60048036036020811015610ad457600080fd5b8101908080359060200190929190505050611a56565b6040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390f35b610b6c60048036036020811015610b4057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b53565b6040518082815260200191505060405180910390f35b610b8a611c28565b005b610bb860048036036020811015610ba257600080fd5b8101908080359060200190929190505050611db3565b6040518082815260200191505060405180910390f35b610bd6611de3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c4e60048036036040811015610c2e57600080fd5b810190808035906020019092919080359060200190929190505050611e0d565b005b610c58611ede565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c98578082015181840152602081019050610c7d565b50505050905090810190601f168015610cc55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610cff60048036036020811015610ce957600080fd5b8101908080359060200190929190505050611f80565b6040518082815260200191505060405180910390f35b610d6360048036036040811015610d2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611f98565b005b610e6860048036036080811015610d7b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610de257600080fd5b820183602082011115610df457600080fd5b80359060200191846001830284011164010000000083111715610e1657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612150565b005b610e9660048036036020811015610e8057600080fd5b81019080803590602001909291905050506121c8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ed6578082015181840152602081019050610ebb565b50505050905090810190601f168015610f035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610f5160048036036060811015610f2757600080fd5b810190808035906020019092919080359060200190929190803590602001909291905050506124b1565b6040518082815260200191505060405180910390f35b610fc960048036036040811015610f7d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126c3565b604051808215151515815260200191505060405180910390f35b61102560048036036020811015610ff957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612757565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600f54600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561113257600080fd5b505afa158015611146573d6000803e3d6000fd5b505050506040513d602081101561115c57600080fd5b810190808051906020019092919050505010156111c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806141b5602b913960400191505060405180910390fd5b60006111d5600e54600f54866124b1565b9050826014600083815260200190815260200160002090805190602001906111fe929190614071565b50336015600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508091505092915050565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112f35780601f106112c8576101008083540402835291602001916112f3565b820191906000526020600020905b8154815290600101906020018083116112d657829003601f168201915b5050505050905090565b600061130882612967565b61135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142b9602c913960400191505060405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006113a38261197d565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561142a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806143696021913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16611449612984565b73ffffffffffffffffffffffffffffffffffffffff161480611478575061147781611472612984565b6126c3565b5b6114cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061420c6038913960400191505060405180910390fd5b6114d7838361298c565b505050565b6114ed6114e7612984565b83612a45565b611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b61154c8282612b39565b5050565b600061155c6002612bc3565b905090565b61157261156c612984565b82612a45565b6115c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b6115d2838383612bd8565b505050565b600061162a82600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e1b90919063ffffffff16565b905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611663826121c8565b9050919050565b60105481565b61168b83838360405180602001604052806000815250612150565b505050565b6013818154811061169d57fe5b9060005260206000209060080201600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117735780601f1061174857610100808354040283529160200191611773565b820191906000526020600020905b81548152906001019060200180831161175657829003601f168201915b5050505050905088565b600080611794836002612e3590919063ffffffff16565b50905080915050919050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606000806000601385815481106117da57fe5b9060005260206000209060080201600701601386815481106117f857fe5b9060005260206000209060080201600501546013878154811061181757fe5b9060005260206000209060080201600401546013888154811061183657fe5b9060005260206000209060080201600301546013898154811061185557fe5b90600052602060002090600802016002015460138a8154811061187457fe5b90600052602060002090600802016001015460138b8154811061189357fe5b90600052602060002090600802016000015401010101016118b387611db3565b601388815481106118c057fe5b906000526020600020906008020160060154838054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119675780601f1061193c57610100808354040283529160200191611967565b820191906000526020600020905b81548152906001019060200180831161194a57829003601f168201915b5050505050935093509350935093509193509193565b60006119ad8260405180606001604052806029815260200161426e602991396002612e649092919063ffffffff16565b9050919050565b606060098054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a4c5780601f10611a2157610100808354040283529160200191611a4c565b820191906000526020600020905b815481529060010190602001808311611a2f57829003601f168201915b5050505050905090565b600080600080600080600060138881548110611a6e57fe5b90600052602060002090600802016000015460138981548110611a8d57fe5b90600052602060002090600802016001015460138a81548110611aac57fe5b90600052602060002090600802016002015460138b81548110611acb57fe5b90600052602060002090600802016003015460138c81548110611aea57fe5b90600052602060002090600802016004015460138d81548110611b0957fe5b90600052602060002090600802016005015460138e81548110611b2857fe5b9060005260206000209060080201600601549650965096509650965096509650919395979092949650565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614244602a913960400191505060405180910390fd5b611c21600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612e83565b9050919050565b611c30612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611ddc60138381548110611dc557fe5b906000526020600020906008020160060154612e98565b9050919050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ed0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4f6e6c7920565246436f6f7264696e61746f722063616e2066756c66696c6c0081525060200191505060405180910390fd5b611eda8282612edd565b5050565b606060078054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f765780601f10611f4b57610100808354040283529160200191611f76565b820191906000526020600020905b815481529060010190602001808311611f5957829003601f168201915b5050505050905090565b600c6020528060005260406000206000915090505481565b611fa0612984565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612041576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4552433732313a20617070726f766520746f2063616c6c65720000000000000081525060200191505060405180910390fd5b806005600061204e612984565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166120fb612984565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051808215151515815260200191505060405180910390a35050565b61216161215b612984565b83612a45565b6121b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603181526020018061438a6031913960400191505060405180910390fd5b6121c28484848461314e565b50505050565b60606121d382612967565b612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061433a602f913960400191505060405180910390fd5b6060600860008481526020019081526020016000208054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122d15780601f106122a6576101008083540402835291602001916122d1565b820191906000526020600020905b8154815290600101906020018083116122b457829003601f168201915b5050505050905060006009805460018160011615610100020316600290049050141561230057809150506124ac565b6000815111156123d957600981604051602001808380546001816001161561010002031660029004801561236b5780601f1061234957610100808354040283529182019161236b565b820191906000526020600020905b815481529060010190602001808311612357575b505082805190602001908083835b6020831061239c5780518252602082019150602081019050602083039250612379565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150506124ac565b60096123e4846131c0565b60405160200180838054600181600116156101000203166002900480156124425780601f10612420576101008083540402835291820191612442565b820191906000526020600020905b81548152906001019060200180831161242e575b505082805190602001908083835b602083106124735780518252602082019150602081019050602083039250612450565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040529150505b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634000aea0600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685878660405160200180838152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156125c45780820151818401526020810190506125a9565b50505050905090810190601f1680156125f15780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561261257600080fd5b505af1158015612626573d6000803e3d6000fd5b505050506040513d602081101561263c57600080fd5b810190808051906020019092919050505050600061266f858430600c60008a815260200190815260200160002054613307565b90506126986001600c60008881526020019081526020016000205461338190919063ffffffff16565b600c6000878152602001908152602001600020819055506126b98582613409565b9150509392505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61275f612984565b73ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061416b6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600061297d82600261344290919063ffffffff16565b9050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166129ff8361197d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612a5082612967565b612aa5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806141e0602c913960400191505060405180910390fd5b6000612ab08361197d565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612b1f57508373ffffffffffffffffffffffffffffffffffffffff16612b07846112fd565b73ffffffffffffffffffffffffffffffffffffffff16145b80612b305750612b2f81856126c3565b5b91505092915050565b612b4282612967565b612b97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806142e5602c913960400191505060405180910390fd5b80600860008481526020019081526020016000209080519060200190612bbe929190614071565b505050565b6000612bd18260000161345c565b9050919050565b8273ffffffffffffffffffffffffffffffffffffffff16612bf88261197d565b73ffffffffffffffffffffffffffffffffffffffff1614612c64576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806143116029913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806141916024913960400191505060405180910390fd5b612cf583838361346d565b612d0060008261298c565b612d5181600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061347290919063ffffffff16565b50612da381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061348c90919063ffffffff16565b50612dba818360026134a69092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000612e2a83600001836134db565b60001c905092915050565b600080600080612e48866000018661355e565b915091508160001c8160001c8090509350935050509250929050565b6000612e77846000018460001b846135f7565b60001c90509392505050565b6000612e91826000016136ed565b9050919050565b60008060026001840181612ea857fe5b0490508291505b81811015612ed757809150600281828581612ec657fe5b040181612ecf57fe5b049050612eaf565b50919050565b60006013805490509050600060648381612ef357fe5b069050600060646127108581612f0557fe5b0681612f0d57fe5b0490506000612710620f42408681612f2157fe5b0681612f2957fe5b0490506000620f42406305f5e1008781612f3f57fe5b0681612f4757fe5b04905060006305f5e1006402540be4008881612f5f57fe5b0681612f6757fe5b04905060006402540be40064e8d4a510008981612f8057fe5b0681612f8857fe5b04905060008090506013604051806101000160405280898152602001888152602001878152602001868152602001858152602001848152602001838152602001601460008e81526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561306f5780601f106130445761010080835404028352916020019161306f565b820191906000526020600020905b81548152906001019060200180831161305257829003601f168201915b50505050508152509080600181540180825580915050600190039060005260206000209060080201600090919091909150600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007019080519060200190613102929190614071565b505050613142601560008c815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16896136fe565b50505050505050505050565b613159848484612bd8565b6131658484848461371c565b6131ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141396032913960400191505060405180910390fd5b50505050565b60606000821415613208576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050613302565b600082905060005b60008214613232578080600101915050600a828161322a57fe5b049150613210565b60608167ffffffffffffffff8111801561324b57600080fd5b506040519080825280601f01601f19166020018201604052801561327e5781602001600182028036833780820191505090505b50905060006001830390508593505b600084146132fa57600a848161329f57fe5b0660300160f81b828280600190039350815181106132b957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84816132f257fe5b04935061328d565b819450505050505b919050565b600084848484604051602001808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019450505050506040516020818303038152906040528051906020012060001c9050949350505050565b6000808284019050838110156133ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008282604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120905092915050565b6000613454836000018360001b613961565b905092915050565b600081600001805490509050919050565b505050565b6000613484836000018360001b613984565b905092915050565b600061349e836000018360001b613a6c565b905092915050565b60006134d2846000018460001b8473ffffffffffffffffffffffffffffffffffffffff1660001b613adc565b90509392505050565b60008183600001805490501161353c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806141176022913960400191505060405180910390fd5b82600001828154811061354b57fe5b9060005260206000200154905092915050565b600080828460000180549050116135c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806142976022913960400191505060405180910390fd5b60008460000184815481106135d157fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600080846001016000858152602001908152602001600020549050600081141583906136be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613683578082015181840152602081019050613668565b50505050905090810190601f1680156136b05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508460000160018203815481106136d157fe5b9060005260206000209060020201600101549150509392505050565b600081600001805490509050919050565b613718828260405180602001604052806000815250613bb8565b5050565b600061373d8473ffffffffffffffffffffffffffffffffffffffff16613c29565b61374a5760019050613959565b60606138e063150b7a0260e01b61375f612984565b888787604051602401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561380f5780820151818401526020810190506137f4565b50505050905090810190601f16801561383c5780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001614139603291398773ffffffffffffffffffffffffffffffffffffffff16613c3c9092919063ffffffff16565b905060008180602001905160208110156138f957600080fd5b8101908080519060200190929190505050905063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614925050505b949350505050565b600080836001016000848152602001908152602001600020541415905092915050565b60008083600101600084815260200190815260200160002054905060008114613a6057600060018203905060006001866000018054905003905060008660000182815481106139cf57fe5b90600052602060002001549050808760000184815481106139ec57fe5b9060005260206000200181905550600183018760010160008381526020019081526020016000208190555086600001805480613a2457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050613a66565b60009150505b92915050565b6000613a788383613c54565b613ad1578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613ad6565b600090505b92915050565b6000808460010160008581526020019081526020016000205490506000811415613b8357846000016040518060400160405280868152602001858152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550508460000180549050856001016000868152602001908152602001600020819055506001915050613bb1565b82856000016001830381548110613b9657fe5b90600052602060002090600202016001018190555060009150505b9392505050565b613bc28383613c77565b613bcf600084848461371c565b613c24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001806141396032913960400191505060405180910390fd5b505050565b600080823b905060008111915050919050565b6060613c4b8484600085613e6b565b90509392505050565b600080836001016000848152602001908152602001600020541415905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d1a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4552433732313a206d696e7420746f20746865207a65726f206164647265737381525060200191505060405180910390fd5b613d2381612967565b15613d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081525060200191505060405180910390fd5b613da26000838361346d565b613df381600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061348c90919063ffffffff16565b50613e0a818360026134a69092919063ffffffff16565b50808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6060613e7685613c29565b613ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000081525060200191505060405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b60208310613f385780518252602082019150602081019050602083039250613f15565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613f9a576040519150601f19603f3d011682016040523d82523d6000602084013e613f9f565b606091505b50915091508115613fb4578092505050614069565b600081511115613fc75780518082602001fd5b836040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561402e578082015181840152602081019050614013565b50505050905090810190601f16801561405b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106140b257805160ff19168380011785556140e0565b828001600101855582156140e0579182015b828111156140df5782518255916020019190600101906140c4565b5b5090506140ed91906140f1565b5090565b61411391905b8082111561410f5760008160009055506001016140f7565b5090565b9056fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734e6f7420656e6f756768204c494e4b202d2066696c6c20636f6e74726163742077697468206661756365744552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220ebc819fca625390394e437ca194a95627e5841dc52f998ad89b23a7184e39f1164736f6c63430006060033", "immutableReferences": {}, - "sourceMap": "326:4913:0:-:0;;;1520:352;5:9:-1;2:2;;;27:1;24;17:12;2:2;1520:352:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1520:352:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:15;1651:10;3567:365:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;751:40:9;418:10;770:20;;751:18;;;:40;;:::i;:::-;3647:4:12;3639:5;:12;;;;;;;;;;;;:::i;:::-;;3671:6;3661:7;:16;;;;;;;;;;;;:::i;:::-;;3765:40;2732:10;3784:20;;3765:18;;;:40;;:::i;:::-;3815:49;3064:10;3834:29;;3815:18;;;:49;;:::i;:::-;3874:51;3437:10;3893:31;;3874:18;;;:51;;:::i;:::-;3567:365;;6891:15:3;6874:14;;:32;;;;;;;;;;;;;;;;;;6938:5;6912:4;;:32;;;;;;;;;;;;;;;;;;6809:140;;865:17:8;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;1750:15:0::2;1733:14;;:32;;;;;;;;;;;;;;;;;;1787:10;1775:9;;:22;;;;;;;;;;;;;;;;;;1817:8;1807:7;:18;;;;1841:12;1835:3;:18;;;;1520:352:::0;;;326:4913;;1482:198:9;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;590:104:7:-;643:15;677:10;670:17;;590:104;:::o;326:4913:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "326:4913:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;326:4913:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;948:140:9;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;948:140:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1878:475:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1878:475:0;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;1878:475:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1878:475:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1878:475:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1878:475:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4488:90:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4488:90:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7095:209;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7095:209:12;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6653:381;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6653:381:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2480:266:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2480:266:0;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;2480:266:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2480:266:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2480:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2480:266:0;;;;;;;;;;;;;;;:::i;:::-;;6163:200:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7943:300;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7943:300:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5940:152;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5940:152:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;557:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2359:115;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2359:115:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2359:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;524:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8309:149:12;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8309:149:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;984:29:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;984:29:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;984:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:161:12;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6435:161:12;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;651:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3891:547;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3891:547:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3891:547:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4259:167:12;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4259:167:12;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5774:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5774:87:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4444:587:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4444:587:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3991:211:12;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3991:211:12;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1689:145:8;;;:::i;:::-;;3760:125:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3760:125:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1066:77:8;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7144:207:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7144:207:3;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4642:94:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4642:94:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:67:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6738:67:3;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7371:290:12;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7371:290:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8524:282;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8524:282:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;8524:282:12;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8524:282:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8524:282:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8524:282:12;;;;;;;;;;;;;;;:::i;:::-;;4802:740;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4802:740:12;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4802:740:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5871:656:3;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5871:656:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7727:154:12;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7727:154:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1983:240:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1983:240:8;;;;;;;;;;;;;;;;;;;:::i;:::-;;948:140:9;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;1878:475:0:-;1997:7;2070:3;;2037:4;;;;;;;;;;;:14;;;2060:4;2037:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2037:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2037:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2037:29:0;;;;;;;;;;;;;;;;:36;;2016:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2152:17;2172:49;2190:7;;2199:3;;2204:16;2172:17;:49::i;:::-;2152:69;;2267:4;2231:22;:33;2254:9;2231:33;;;;;;;;;;;:40;;;;;;;;;;;;:::i;:::-;;2310:10;2281:15;:26;2297:9;2281:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2337:9;2330:16;;;1878:475;;;;:::o;4488:90:12:-;4534:13;4566:5;4559:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4488:90;:::o;7095:209::-;7163:7;7190:16;7198:7;7190;:16::i;:::-;7182:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7273:15;:24;7289:7;7273:24;;;;;;;;;;;;;;;;;;;;;7266:31;;7095:209;;;:::o;6653:381::-;6733:13;6749:16;6757:7;6749;:16::i;:::-;6733:32;;6789:5;6783:11;;:2;:11;;;;6775:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6867:5;6851:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;6876:37;6893:5;6900:12;:10;:12::i;:::-;6876:16;:37::i;:::-;6851:62;6843:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7006:21;7015:2;7019:7;7006:8;:21::i;:::-;6653:381;;;:::o;2480:266:0:-;2581:41;2600:12;:10;:12::i;:::-;2614:7;2581:18;:41::i;:::-;2560:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2707:32;2720:7;2729:9;2707:12;:32::i;:::-;2480:266;;:::o;6163:200:12:-;6216:7;6335:21;:12;:19;:21::i;:::-;6328:28;;6163:200;:::o;7943:300::-;8102:41;8121:12;:10;:12::i;:::-;8135:7;8102:18;:41::i;:::-;8094:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8208:28;8218:4;8224:2;8228:7;8208:9;:28::i;:::-;7943:300;;;:::o;5940:152::-;6029:7;6055:30;6079:5;6055:13;:20;6069:5;6055:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;6048:37;;5940:152;;;;:::o;557:29:0:-;;;;;;;;;;;;;:::o;2359:115::-;2418:13;2450:17;2459:7;2450:8;:17::i;:::-;2443:24;;2359:115;;;:::o;524:27::-;;;;:::o;8309:149:12:-;8412:39;8429:4;8435:2;8439:7;8412:39;;;;;;;;;;;;:16;:39::i;:::-;8309:149;;;:::o;984:29:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6435:161:12:-;6502:7;6522:15;6543:22;6559:5;6543:12;:15;;:22;;;;:::i;:::-;6521:44;;;6582:7;6575:14;;;6435:161;;;:::o;651:24:0:-;;;;;;;;;;;;;:::o;3891:547::-;3996:13;4023:7;4044;4065;4118:10;4129:7;4118:19;;;;;;;;;;;;;;;;;;:24;;4318:10;4329:7;4318:19;;;;;;;;;;;;;;;;;;:28;;;4289:10;4300:7;4289:19;;;;;;;;;;;;;;;;;;:26;;;4254:10;4265:7;4254:19;;;;;;;;;;;;;;;;;;:32;;;4219:10;4230:7;4219:19;;;;;;;;;;;;;;;;;;:32;;;4187:10;4198:7;4187:19;;;;;;;;;;;;;;;;;;:29;;;4156:10;4167:7;4156:19;;;;;;;;;;;;;;;;;;:28;;;:60;:95;:130;:159;:190;4360:17;4369:7;4360:8;:17::i;:::-;4391:10;4402:7;4391:19;;;;;;;;;;;;;;;;;;:30;;;4097:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3891:547;;;;;:::o;4259:167:12:-;4323:7;4349:70;4366:7;4349:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4342:77;;4259:167;;;:::o;5774:87::-;5814:13;5846:8;5839:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5774:87;:::o;4444:587:0:-;4546:7;4567;4588;4609;4630;4651;4672;4725:10;4736:7;4725:19;;;;;;;;;;;;;;;;;;:28;;;4767:10;4778:7;4767:19;;;;;;;;;;;;;;;;;;:29;;;4810:10;4821:7;4810:19;;;;;;;;;;;;;;;;;;:32;;;4856:10;4867:7;4856:19;;;;;;;;;;;;;;;;;;:32;;;4902:10;4913:7;4902:19;;;;;;;;;;;;;;;;;;:26;;;4942:10;4953:7;4942:19;;;;;;;;;;;;;;;;;;:28;;;4984:10;4995:7;4984:19;;;;;;;;;;;;;;;;;;:30;;;4704:320;;;;;;;;;;;;;;4444:587;;;;;;;;;:::o;3991:211:12:-;4055:7;4099:1;4082:19;;:5;:19;;;;4074:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4166:29;:13;:20;4180:5;4166:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4159:36;;3991:211;;;:::o;1689:145:8:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;;;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6;;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;3760:125:0:-;3816:7;3842:36;3847:10;3858:7;3847:19;;;;;;;;;;;;;;;;;;:30;;;3842:4;:36::i;:::-;3835:43;;3760:125;;;:::o;1066:77:8:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;7144:207:3:-;7250:14;;;;;;;;;;;7236:28;;:10;:28;;;7228:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7306:40;7324:9;7335:10;7306:17;:40::i;:::-;7144:207;;:::o;4642:94:12:-;4690:13;4722:7;4715:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4642:94;:::o;6738:67:3:-;;;;;;;;;;;;;;;;;:::o;7371:290:12:-;7485:12;:10;:12::i;:::-;7473:24;;:8;:24;;;;7465:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7583:8;7538:18;:32;7557:12;:10;:12::i;:::-;7538:32;;;;;;;;;;;;;;;:42;7571:8;7538:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;7635:8;7606:48;;7621:12;:10;:12::i;:::-;7606:48;;;7645:8;7606:48;;;;;;;;;;;;;;;;;;;;;;7371:290;;:::o;8524:282::-;8655:41;8674:12;:10;:12::i;:::-;8688:7;8655:18;:41::i;:::-;8647:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8760:39;8774:4;8780:2;8784:7;8793:5;8760:13;:39::i;:::-;8524:282;;;;:::o;4802:740::-;4867:13;4900:16;4908:7;4900;:16::i;:::-;4892:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4979:23;5005:10;:19;5016:7;5005:19;;;;;;;;;;;4979:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5123:1;5103:8;5097:22;;;;;;;;;;;;;;;;:27;5093:74;;;5147:9;5140:16;;;;;5093:74;5295:1;5275:9;5269:23;:27;5265:110;;;5343:8;5353:9;5326:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5326:37:12;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5326:37:12;;;5312:52;;;;;5265:110;5505:8;5515:18;:7;:16;:18::i;:::-;5488:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5488:46:12;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5488:46:12;;;5474:61;;;4802:740;;;;:::o;5871:656:3:-;5965:17;5992:4;;;;;;;;;;;:20;;;6013:14;;;;;;;;;;;6029:4;6046:8;6056:5;6035:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6035:27:3;;;5992:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5992:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5992:71:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5992:71:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5992:71:3;;;;;;;;;;;;;;;;;6138:15;6157:66;6174:8;6184:5;6199:4;6206:6;:16;6213:8;6206:16;;;;;;;;;;;;6157;:66::i;:::-;6138:85;;6453:23;6474:1;6453:6;:16;6460:8;6453:16;;;;;;;;;;;;:20;;:23;;;;:::i;:::-;6434:6;:16;6441:8;6434:16;;;;;;;;;;;:42;;;;6490:32;6504:8;6514:7;6490:13;:32::i;:::-;6483:39;;;5871:656;;;;;:::o;7727:154:12:-;7816:4;7839:18;:25;7858:5;7839:25;;;;;;;;;;;;;;;:35;7865:8;7839:35;;;;;;;;;;;;;;;;;;;;;;;;;7832:42;;7727:154;;;;:::o;1983:240:8:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;;;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;;:17;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;10240:117:12:-;10297:4;10320:30;10342:7;10320:12;:21;;:30;;;;:::i;:::-;10313:37;;10240:117;;;:::o;590:104:7:-;643:15;677:10;670:17;;590:104;:::o;15896:155:12:-;15988:2;15961:15;:24;15977:7;15961:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16036:7;16032:2;16005:39;;16014:16;16022:7;16014;:16::i;:::-;16005:39;;;;;;;;;;;;15896:155;;:::o;10515:329::-;10600:4;10624:16;10632:7;10624;:16::i;:::-;10616:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10699:13;10715:16;10723:7;10715;:16::i;:::-;10699:32;;10760:5;10749:16;;:7;:16;;;:51;;;;10793:7;10769:31;;:20;10781:7;10769:11;:20::i;:::-;:31;;;10749:51;:87;;;;10804:32;10821:5;10828:7;10804:16;:32::i;:::-;10749:87;10741:96;;;10515:329;;;;:::o;14215:212::-;14314:16;14322:7;14314;:16::i;:::-;14306:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14411:9;14389:10;:19;14400:7;14389:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;14215:212;;:::o;7023:121:18:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;13509:559:12:-;13626:4;13606:24;;:16;13614:7;13606;:16::i;:::-;:24;;;13598:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13708:1;13694:16;;:2;:16;;;;13686:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13762:39;13783:4;13789:2;13793:7;13762:20;:39::i;:::-;13863:29;13880:1;13884:7;13863:8;:29::i;:::-;13903:35;13930:7;13903:13;:19;13917:4;13903:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;13948:30;13970:7;13948:13;:17;13962:2;13948:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;13989:29;14006:7;14015:2;13989:12;:16;;:29;;;;;:::i;:::-;;14053:7;14049:2;14034:27;;14043:4;14034:27;;;;;;;;;;;;13509:559;;;:::o;7649:135:19:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;7472:224:18:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:19:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;5037:200:0:-;5085:9;5106;5128:1;5123;5119;:5;5118:11;;;;;;5106:23;;5143:1;5139:5;;5154:77;5165:1;5161;:5;5154:77;;;5186:1;5182:5;;5219:1;5214;5210;5206;:5;;;;;;:9;5205:15;;;;;;5201:19;;5154:77;;;5037:200;;;;:::o;2752:1002::-;2868:13;2884:10;:17;;;;2868:33;;2911:16;2954:2;2947:3;2932:12;:18;;;;;;2931:25;;;;;;2911:46;;2967:17;3021:2;3014:3;3005:5;2990:12;:20;;;;;;2989:28;;;;;;2988:35;;;;;;2967:57;;3034:20;3095:2;3086:5;3075:7;3060:12;:22;;;;;;3059:32;;;;;;3058:39;;;;;;3034:64;;3108:20;3173:2;3162:7;3149:9;3134:12;:24;;;;;;3133:36;;;;;;3132:43;;;;;;3108:68;;3186:14;3249:2;3236:9;3221:11;3206:12;:26;;;;;;3205:40;;;;;;3204:47;;;;;;3186:66;;3262:16;3343:2;3316:11;3299:13;3284:12;:28;;;;;;3283:44;;;;;;3282:63;;;;;;3262:84;;3356:18;3377:1;3356:22;;3389:10;3418:265;;;;;;;;3445:8;3418:265;;;;3471:9;3418:265;;;;3498:12;3418:265;;;;3528:12;3418:265;;;;3558:6;3418:265;;;;3582:8;3418:265;;;;3608:10;3418:265;;;;3636:22;:33;3659:9;3636:33;;;;;;;;;;;3418:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3389:304;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;3389:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;3703:44;3713:15;:26;3729:9;3713:26;;;;;;;;;;;;;;;;;;;;;3741:5;3703:9;:44::i;:::-;2752:1002;;;;;;;;;;:::o;9668:269:12:-;9781:28;9791:4;9797:2;9801:7;9781:9;:28::i;:::-;9827:48;9850:4;9856:2;9860:7;9869:5;9827:22;:48::i;:::-;9819:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:269;;;;:::o;202:723:20:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;691:17:20;;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;124:4;108:14;100:6;87:42;155:4;147:6;143:17;133:27;;0:164;691:17:20;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;1095:231:4:-;1225:7;1279:8;1289:9;1300:10;1312:6;1268:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1268:51:4;;;1258:62;;;;;;1250:71;;1242:79;;1095:231;;;;;;:::o;822:162:6:-;880:7;895:9;911:1;907;:5;895:17;;931:1;926;:6;;918:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:1;971:8;;;822:162;;;;:::o;1706:171:4:-;1798:7;1847:8;1857:13;1830:41;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1830:41:4;;;1820:52;;;;;;1813:59;;1706:171;;;;:::o;6791:149:18:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;16647:93:12:-;;;;:::o;6764:135:19:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:18:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:19:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;4934:274:18:-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5774:36:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:19:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;11175:108:12:-;11250:26;11260:2;11264:7;11250:26;;;;;;;;;;;;:9;:26::i;:::-;11175:108;;:::o;15301:589::-;15421:4;15446:15;:2;:13;;;:15::i;:::-;15441:58;;15484:4;15477:11;;;;15441:58;15508:23;15534:246;15586:45;;;15645:12;:10;:12::i;:::-;15671:4;15689:7;15710:5;15550:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15550:175:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15550:175:12;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;15550:175:12;15534:246;;;;;;;;;;;;;;;;;:2;:15;;;;:246;;;;;:::i;:::-;15508:272;;15790:13;15817:10;15806:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15806:32:12;;;;;;;;;;;;;;;;15790:48;;1068:10;15866:16;;15856:26;;;:6;:26;;;;15848:35;;;;15301:589;;;;;;;:::o;4270:123:18:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;2183:1512:19:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1732:23:19;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:18:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2135:57:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;11504:247:12:-;11599:18;11605:2;11609:7;11599:5;:18::i;:::-;11635:54;11666:1;11670:2;11674:7;11683:5;11635:22;:54::i;:::-;11627:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:247;;;:::o;718:413:17:-;778:4;981:12;1090:7;1078:20;1070:28;;1123:1;1116:4;:8;1109:15;;;718:413;;;:::o;3573:194::-;3676:12;3707:53;3730:6;3738:4;3744:1;3747:12;3707:22;:53::i;:::-;3700:60;;3573:194;;;;;:::o;3776:127:19:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;12073:393:12:-;12166:1;12152:16;;:2;:16;;;;12144:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12224:16;12232:7;12224;:16::i;:::-;12223:17;12215:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12284:45;12313:1;12317:2;12321:7;12284:20;:45::i;:::-;12340:30;12362:7;12340:13;:17;12354:2;12340:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;12381:29;12398:7;12407:2;12381:12;:16;;:29;;;;;:::i;:::-;;12451:7;12447:2;12426:33;;12443:1;12426:33;;;;;;;;;;;;12073:393;;:::o;4920:958:17:-;5050:12;5082:18;5093:6;5082:10;:18::i;:::-;5074:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5205:12;5219:23;5246:6;:11;;5266:8;5277:4;5246:36;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5246:36:17;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;5204:78:17;;;;5296:7;5292:580;;;5326:10;5319:17;;;;;;5292:580;5457:1;5437:10;:17;:21;5433:429;;;5695:10;5689:17;5755:15;5742:10;5738:2;5734:19;5727:44;5644:145;5834:12;5827:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5827:20:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:958;;;;;;;:::o;326:4913:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "// contracts/DungeonsAndDragonsCharacter.sol\n// SPDX-License-Identifier: MIT\npragma solidity ^0.6.6;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\ncontract DungeonsAndDragonsCharacter is ERC721, VRFConsumerBase, Ownable {\n using SafeMath for uint256;\n using Strings for string;\n\n bytes32 internal keyHash;\n uint256 internal fee;\n uint256 public randomResult;\n address public VRFCoordinator;\n // rinkeby: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\n address public LinkToken;\n // rinkeby: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709a\n\n struct Character {\n uint256 strength;\n uint256 dexterity;\n uint256 constitution;\n uint256 intelligence;\n uint256 wisdom;\n uint256 charisma;\n uint256 experience;\n string name;\n }\n\n Character[] public characters;\n\n mapping(bytes32 => string) requestToCharacterName;\n mapping(bytes32 => address) requestToSender;\n mapping(bytes32 => uint256) requestToTokenId;\n\n /**\n * Constructor inherits VRFConsumerBase\n *\n * Network: Rinkeby\n * Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\n * LINK token address: 0xa36085f69e2889c224210f603d836748e7dc0088\n * Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311\n */\n constructor(address _VRFCoordinator, address _LinkToken, bytes32 _keyhash)\n public\n VRFConsumerBase(_VRFCoordinator, _LinkToken)\n ERC721(\"DungeonsAndDragonsCharacter\", \"D&D\")\n { \n VRFCoordinator = _VRFCoordinator;\n LinkToken = _LinkToken;\n keyHash = _keyhash;\n fee = 0.1 * 10**18; // 0.1 LINK\n }\n\n function requestNewRandomCharacter(\n uint256 userProvidedSeed,\n string memory name\n ) public returns (bytes32) {\n require(\n LINK.balanceOf(address(this)) >= fee,\n \"Not enough LINK - fill contract with faucet\"\n );\n bytes32 requestId = requestRandomness(keyHash, fee, userProvidedSeed);\n requestToCharacterName[requestId] = name;\n requestToSender[requestId] = msg.sender;\n return requestId;\n }\n\n function getTokenURI(uint256 tokenId) public view returns (string memory) {\n return tokenURI(tokenId);\n }\n\n function setTokenURI(uint256 tokenId, string memory _tokenURI) public {\n require(\n _isApprovedOrOwner(_msgSender(), tokenId),\n \"ERC721: transfer caller is not owner nor approved\"\n );\n _setTokenURI(tokenId, _tokenURI);\n }\n\n function fulfillRandomness(bytes32 requestId, uint256 randomNumber)\n internal\n override\n {\n uint256 newId = characters.length;\n uint256 strength = ((randomNumber % 100) % 18);\n uint256 dexterity = (((randomNumber % 10000) / 100) % 18);\n uint256 constitution = (((randomNumber % 1000000) / 10000) % 18);\n uint256 intelligence = (((randomNumber % 100000000) / 1000000) % 18);\n uint256 wisdom = (((randomNumber % 10000000000) / 100000000) % 18);\n uint256 charisma = (((randomNumber % 1000000000000) / 10000000000) %\n 18);\n uint256 experience = 0;\n\n characters.push(\n Character(\n strength,\n dexterity,\n constitution,\n intelligence,\n wisdom,\n charisma,\n experience,\n requestToCharacterName[requestId]\n )\n );\n _safeMint(requestToSender[requestId], newId);\n }\n\n function getLevel(uint256 tokenId) public view returns (uint256) {\n return sqrt(characters[tokenId].experience);\n }\n\n function getCharacterOverView(uint256 tokenId)\n public\n view\n returns (\n string memory,\n uint256,\n uint256,\n uint256\n )\n {\n return (\n characters[tokenId].name,\n characters[tokenId].strength + characters[tokenId].dexterity + characters[tokenId].constitution + characters[tokenId].intelligence + characters[tokenId].wisdom + characters[tokenId].charisma,\n getLevel(tokenId),\n characters[tokenId].experience\n );\n }\n\n function getCharacterStats(uint256 tokenId)\n public\n view\n returns (\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256\n )\n {\n return (\n characters[tokenId].strength,\n characters[tokenId].dexterity,\n characters[tokenId].constitution,\n characters[tokenId].intelligence,\n characters[tokenId].wisdom,\n characters[tokenId].charisma,\n characters[tokenId].experience\n );\n }\n\n function sqrt(uint256 x) internal view returns (uint256 y) {\n uint256 z = (x + 1) / 2;\n y = x;\n while (z < y) {\n y = z;\n z = (x / z + z) / 2;\n }\n }\n}\n", + "sourceMap": "326:4863:0:-:0;;;1520:352;5:9:-1;2:2;;;27:1;24;17:12;2:2;1520:352:0;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1520:352:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:15;1651:10;3567:365:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;751:40:8;418:10;770:20;;751:18;;;:40;;:::i;:::-;3647:4:11;3639:5;:12;;;;;;;;;;;;:::i;:::-;;3671:6;3661:7;:16;;;;;;;;;;;;:::i;:::-;;3765:40;2732:10;3784:20;;3765:18;;;:40;;:::i;:::-;3815:49;3064:10;3834:29;;3815:18;;;:49;;:::i;:::-;3874:51;3437:10;3893:31;;3874:18;;;:51;;:::i;:::-;3567:365;;6891:15:2;6874:14;;:32;;;;;;;;;;;;;;;;;;6938:5;6912:4;;:32;;;;;;;;;;;;;;;;;;6809:140;;865:17:7;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;831:159;1750:15:0::2;1733:14;;:32;;;;;;;;;;;;;;;;;;1787:10;1775:9;;:22;;;;;;;;;;;;;;;;;;1817:8;1807:7;:18;;;;1841:12;1835:3;:18;;;;1520:352:::0;;;326:4863;;1482:198:8;1580:10;1565:25;;:11;:25;;;;;1557:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1669:4;1633:20;:33;1654:11;1633:33;;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1482:198;:::o;590:104:6:-;643:15;677:10;670:17;;590:104;:::o;326:4863:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "326:4863:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;326:4863:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;948:140:8;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;948:140:8;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1878:475:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1878:475:0;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;1878:475:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1878:475:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1878:475:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1878:475:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4488:90:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4488:90:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7095:209;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7095:209:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6653:381;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6653:381:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2480:266:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2480:266:0;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;2480:266:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2480:266:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2480:266:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2480:266:0;;;;;;;;;;;;;;;:::i;:::-;;6163:200:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7943:300;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7943:300:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5940:152;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5940:152:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;557:29:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2359:115;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2359:115:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2359:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;524:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8309:149:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;8309:149:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;984:29:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;984:29:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;984:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6435:161:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6435:161:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;651:24:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3841:547;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3841:547:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3841:547:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4259:167:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4259:167:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5774:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5774:87:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4394:587:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4394:587:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3991:211:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3991:211:11;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1689:145:7;;;:::i;:::-;;3710:125:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3710:125:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1066:77:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7144:207:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7144:207:2;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4642:94:11;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4642:94:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6738:67:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;6738:67:2;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7371:290:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7371:290:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8524:282;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8524:282:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;14;11:28;8:2;;;52:1;49;42:12;8:2;8524:282:11;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8524:282:11;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8524:282:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8524:282:11;;;;;;;;;;;;;;;:::i;:::-;;4802:740;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;4802:740:11;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4802:740:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5871:656:2;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5871:656:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7727:154:11;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;7727:154:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1983:240:7;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1983:240:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;948:140:8;1025:4;1048:20;:33;1069:11;1048:33;;;;;;;;;;;;;;;;;;;;;;;;;;;1041:40;;948:140;;;:::o;1878:475:0:-;1997:7;2070:3;;2037:4;;;;;;;;;;;:14;;;2060:4;2037:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2037:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2037:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;2037:29:0;;;;;;;;;;;;;;;;:36;;2016:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2152:17;2172:49;2190:7;;2199:3;;2204:16;2172:17;:49::i;:::-;2152:69;;2267:4;2231:22;:33;2254:9;2231:33;;;;;;;;;;;:40;;;;;;;;;;;;:::i;:::-;;2310:10;2281:15;:26;2297:9;2281:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2337:9;2330:16;;;1878:475;;;;:::o;4488:90:11:-;4534:13;4566:5;4559:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4488:90;:::o;7095:209::-;7163:7;7190:16;7198:7;7190;:16::i;:::-;7182:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7273:15;:24;7289:7;7273:24;;;;;;;;;;;;;;;;;;;;;7266:31;;7095:209;;;:::o;6653:381::-;6733:13;6749:16;6757:7;6749;:16::i;:::-;6733:32;;6789:5;6783:11;;:2;:11;;;;6775:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6867:5;6851:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;6876:37;6893:5;6900:12;:10;:12::i;:::-;6876:16;:37::i;:::-;6851:62;6843:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7006:21;7015:2;7019:7;7006:8;:21::i;:::-;6653:381;;;:::o;2480:266:0:-;2581:41;2600:12;:10;:12::i;:::-;2614:7;2581:18;:41::i;:::-;2560:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2707:32;2720:7;2729:9;2707:12;:32::i;:::-;2480:266;;:::o;6163:200:11:-;6216:7;6335:21;:12;:19;:21::i;:::-;6328:28;;6163:200;:::o;7943:300::-;8102:41;8121:12;:10;:12::i;:::-;8135:7;8102:18;:41::i;:::-;8094:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8208:28;8218:4;8224:2;8228:7;8208:9;:28::i;:::-;7943:300;;;:::o;5940:152::-;6029:7;6055:30;6079:5;6055:13;:20;6069:5;6055:20;;;;;;;;;;;;;;;:23;;:30;;;;:::i;:::-;6048:37;;5940:152;;;;:::o;557:29:0:-;;;;;;;;;;;;;:::o;2359:115::-;2418:13;2450:17;2459:7;2450:8;:17::i;:::-;2443:24;;2359:115;;;:::o;524:27::-;;;;:::o;8309:149:11:-;8412:39;8429:4;8435:2;8439:7;8412:39;;;;;;;;;;;;:16;:39::i;:::-;8309:149;;;:::o;984:29:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6435:161:11:-;6502:7;6522:15;6543:22;6559:5;6543:12;:15;;:22;;;;:::i;:::-;6521:44;;;6582:7;6575:14;;;6435:161;;;:::o;651:24:0:-;;;;;;;;;;;;;:::o;3841:547::-;3946:13;3973:7;3994;4015;4068:10;4079:7;4068:19;;;;;;;;;;;;;;;;;;:24;;4268:10;4279:7;4268:19;;;;;;;;;;;;;;;;;;:28;;;4239:10;4250:7;4239:19;;;;;;;;;;;;;;;;;;:26;;;4204:10;4215:7;4204:19;;;;;;;;;;;;;;;;;;:32;;;4169:10;4180:7;4169:19;;;;;;;;;;;;;;;;;;:32;;;4137:10;4148:7;4137:19;;;;;;;;;;;;;;;;;;:29;;;4106:10;4117:7;4106:19;;;;;;;;;;;;;;;;;;:28;;;:60;:95;:130;:159;:190;4310:17;4319:7;4310:8;:17::i;:::-;4341:10;4352:7;4341:19;;;;;;;;;;;;;;;;;;:30;;;4047:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3841:547;;;;;:::o;4259:167:11:-;4323:7;4349:70;4366:7;4349:70;;;;;;;;;;;;;;;;;:12;:16;;:70;;;;;:::i;:::-;4342:77;;4259:167;;;:::o;5774:87::-;5814:13;5846:8;5839:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5774:87;:::o;4394:587:0:-;4496:7;4517;4538;4559;4580;4601;4622;4675:10;4686:7;4675:19;;;;;;;;;;;;;;;;;;:28;;;4717:10;4728:7;4717:19;;;;;;;;;;;;;;;;;;:29;;;4760:10;4771:7;4760:19;;;;;;;;;;;;;;;;;;:32;;;4806:10;4817:7;4806:19;;;;;;;;;;;;;;;;;;:32;;;4852:10;4863:7;4852:19;;;;;;;;;;;;;;;;;;:26;;;4892:10;4903:7;4892:19;;;;;;;;;;;;;;;;;;:28;;;4934:10;4945:7;4934:19;;;;;;;;;;;;;;;;;;:30;;;4654:320;;;;;;;;;;;;;;4394:587;;;;;;;;;:::o;3991:211:11:-;4055:7;4099:1;4082:19;;:5;:19;;;;4074:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4166:29;:13;:20;4180:5;4166:20;;;;;;;;;;;;;;;:27;:29::i;:::-;4159:36;;3991:211;;;:::o;1689:145:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;;;;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6;;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;3710:125:0:-;3766:7;3792:36;3797:10;3808:7;3797:19;;;;;;;;;;;;;;;;;;:30;;;3792:4;:36::i;:::-;3785:43;;3710:125;;;:::o;1066:77:7:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;7144:207:2:-;7250:14;;;;;;;;;;;7236:28;;:10;:28;;;7228:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7306:40;7324:9;7335:10;7306:17;:40::i;:::-;7144:207;;:::o;4642:94:11:-;4690:13;4722:7;4715:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4642:94;:::o;6738:67:2:-;;;;;;;;;;;;;;;;;:::o;7371:290:11:-;7485:12;:10;:12::i;:::-;7473:24;;:8;:24;;;;7465:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7583:8;7538:18;:32;7557:12;:10;:12::i;:::-;7538:32;;;;;;;;;;;;;;;:42;7571:8;7538:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;7635:8;7606:48;;7621:12;:10;:12::i;:::-;7606:48;;;7645:8;7606:48;;;;;;;;;;;;;;;;;;;;;;7371:290;;:::o;8524:282::-;8655:41;8674:12;:10;:12::i;:::-;8688:7;8655:18;:41::i;:::-;8647:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8760:39;8774:4;8780:2;8784:7;8793:5;8760:13;:39::i;:::-;8524:282;;;;:::o;4802:740::-;4867:13;4900:16;4908:7;4900;:16::i;:::-;4892:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4979:23;5005:10;:19;5016:7;5005:19;;;;;;;;;;;4979:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5123:1;5103:8;5097:22;;;;;;;;;;;;;;;;:27;5093:74;;;5147:9;5140:16;;;;;5093:74;5295:1;5275:9;5269:23;:27;5265:110;;;5343:8;5353:9;5326:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5326:37:11;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5326:37:11;;;5312:52;;;;;5265:110;5505:8;5515:18;:7;:16;:18::i;:::-;5488:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5488:46:11;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5488:46:11;;;5474:61;;;4802:740;;;;:::o;5871:656:2:-;5965:17;5992:4;;;;;;;;;;;:20;;;6013:14;;;;;;;;;;;6029:4;6046:8;6056:5;6035:27;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6035:27:2;;;5992:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5992:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5992:71:2;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5992:71:2;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;5992:71:2;;;;;;;;;;;;;;;;;6138:15;6157:66;6174:8;6184:5;6199:4;6206:6;:16;6213:8;6206:16;;;;;;;;;;;;6157;:66::i;:::-;6138:85;;6453:23;6474:1;6453:6;:16;6460:8;6453:16;;;;;;;;;;;;:20;;:23;;;;:::i;:::-;6434:6;:16;6441:8;6434:16;;;;;;;;;;;:42;;;;6490:32;6504:8;6514:7;6490:13;:32::i;:::-;6483:39;;;5871:656;;;;;:::o;7727:154:11:-;7816:4;7839:18;:25;7858:5;7839:25;;;;;;;;;;;;;;;:35;7865:8;7839:35;;;;;;;;;;;;;;;;;;;;;;;;;7832:42;;7727:154;;;;:::o;1983:240:7:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;;;;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;;:17;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;10240:117:11:-;10297:4;10320:30;10342:7;10320:12;:21;;:30;;;;:::i;:::-;10313:37;;10240:117;;;:::o;590:104:6:-;643:15;677:10;670:17;;590:104;:::o;15896:155:11:-;15988:2;15961:15;:24;15977:7;15961:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16036:7;16032:2;16005:39;;16014:16;16022:7;16014;:16::i;:::-;16005:39;;;;;;;;;;;;15896:155;;:::o;10515:329::-;10600:4;10624:16;10632:7;10624;:16::i;:::-;10616:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10699:13;10715:16;10723:7;10715;:16::i;:::-;10699:32;;10760:5;10749:16;;:7;:16;;;:51;;;;10793:7;10769:31;;:20;10781:7;10769:11;:20::i;:::-;:31;;;10749:51;:87;;;;10804:32;10821:5;10828:7;10804:16;:32::i;:::-;10749:87;10741:96;;;10515:329;;;;:::o;14215:212::-;14314:16;14322:7;14314;:16::i;:::-;14306:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14411:9;14389:10;:19;14400:7;14389:19;;;;;;;;;;;:31;;;;;;;;;;;;:::i;:::-;;14215:212;;:::o;7023:121:17:-;7092:7;7118:19;7126:3;:10;;7118:7;:19::i;:::-;7111:26;;7023:121;;;:::o;13509:559:11:-;13626:4;13606:24;;:16;13614:7;13606;:16::i;:::-;:24;;;13598:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13708:1;13694:16;;:2;:16;;;;13686:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13762:39;13783:4;13789:2;13793:7;13762:20;:39::i;:::-;13863:29;13880:1;13884:7;13863:8;:29::i;:::-;13903:35;13930:7;13903:13;:19;13917:4;13903:19;;;;;;;;;;;;;;;:26;;:35;;;;:::i;:::-;;13948:30;13970:7;13948:13;:17;13962:2;13948:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;13989:29;14006:7;14015:2;13989:12;:16;;:29;;;;;:::i;:::-;;14053:7;14049:2;14034:27;;14043:4;14034:27;;;;;;;;;;;;13509:559;;;:::o;7649:135:18:-;7720:7;7754:22;7758:3;:10;;7770:5;7754:3;:22::i;:::-;7746:31;;7739:38;;7649:135;;;;:::o;7472:224:17:-;7552:7;7561;7581:11;7594:13;7611:22;7615:3;:10;;7627:5;7611:3;:22::i;:::-;7580:53;;;;7659:3;7651:12;;7681:5;7673:14;;7643:46;;;;;;;;;7472:224;;;;;:::o;8115:202::-;8222:7;8264:44;8269:3;:10;;8289:3;8281:12;;8295;8264:4;:44::i;:::-;8256:53;;8241:69;;8115:202;;;;;:::o;7205:112:18:-;7265:7;7291:19;7299:3;:10;;7291:7;:19::i;:::-;7284:26;;7205:112;;;:::o;4987:200:0:-;5035:9;5056;5078:1;5073;5069;:5;5068:11;;;;;;5056:23;;5093:1;5089:5;;5104:77;5115:1;5111;:5;5104:77;;;5136:1;5132:5;;5169:1;5164;5160;5156;:5;;;;;;:9;5155:15;;;;;;5151:19;;5104:77;;;4987:200;;;;:::o;2752:952::-;2868:13;2884:10;:17;;;;2868:33;;2911:16;2946:3;2931:12;:18;;;;;;2911:39;;2960:17;3006:3;2997:5;2982:12;:20;;;;;;2981:28;;;;;;2960:51;;3021:20;3072:5;3061:7;3046:12;:22;;;;;;3045:32;;;;;;3021:58;;3089:20;3142:7;3129:9;3114:12;:24;;;;;;3113:36;;;;;;3089:62;;3161:14;3210:9;3195:11;3180:12;:26;;;;;;3179:40;;;;;;3161:60;;3231:16;3284:11;3267:13;3252:12;:28;;;;;;3251:44;;;;;;3231:65;;3306:18;3327:1;3306:22;;3339:10;3368:265;;;;;;;;3395:8;3368:265;;;;3421:9;3368:265;;;;3448:12;3368:265;;;;3478:12;3368:265;;;;3508:6;3368:265;;;;3532:8;3368:265;;;;3558:10;3368:265;;;;3586:22;:33;3609:9;3586:33;;;;;;;;;;;3368:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3339:304;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;3339:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;3653:44;3663:15;:26;3679:9;3663:26;;;;;;;;;;;;;;;;;;;;;3691:5;3653:9;:44::i;:::-;2752:952;;;;;;;;;;:::o;9668:269:11:-;9781:28;9791:4;9797:2;9801:7;9781:9;:28::i;:::-;9827:48;9850:4;9856:2;9860:7;9869:5;9827:22;:48::i;:::-;9819:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:269;;;;:::o;202:723:19:-;258:13;484:1;475:5;:10;471:51;;;501:10;;;;;;;;;;;;;;;;;;;;;471:51;531:12;546:5;531:20;;561:14;585:75;600:1;592:4;:9;585:75;;617:8;;;;;;;647:2;639:10;;;;;;;;;585:75;;;669:19;701:6;691:17;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;691:17:19;;;;;;;;;;;;;;;;;;;;;;;;;;29:1:-1;21:6;17:14;124:4;108:14;100:6;87:42;155:4;147:6;143:17;133:27;;0:164;691:17:19;;;;669:39;;718:13;743:1;734:6;:10;718:26;;761:5;754:12;;776:112;791:1;783:4;:9;776:112;;849:2;842:4;:9;;;;;;837:2;:14;826:27;;808:6;815:7;;;;;;;808:15;;;;;;;;;;;:45;;;;;;;;;;;875:2;867:10;;;;;;;;;776:112;;;911:6;897:21;;;;;;202:723;;;;:::o;1095:231:3:-;1225:7;1279:8;1289:9;1300:10;1312:6;1268:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1268:51:3;;;1258:62;;;;;;1250:71;;1242:79;;1095:231;;;;;;:::o;822:162:5:-;880:7;895:9;911:1;907;:5;895:17;;931:1;926;:6;;918:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;978:1;971:8;;;822:162;;;;:::o;1706:171:3:-;1798:7;1847:8;1857:13;1830:41;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1830:41:3;;;1820:52;;;;;;1813:59;;1706:171;;;;:::o;6791:149:17:-;6875:4;6898:35;6908:3;:10;;6928:3;6920:12;;6898:9;:35::i;:::-;6891:42;;6791:149;;;;:::o;4483:108::-;4539:7;4565:3;:12;;:19;;;;4558:26;;4483:108;;;:::o;16647:93:11:-;;;;:::o;6764:135:18:-;6834:4;6857:35;6865:3;:10;;6885:5;6877:14;;6857:7;:35::i;:::-;6850:42;;6764:135;;;;:::o;6467:129::-;6534:4;6557:32;6562:3;:10;;6582:5;6574:14;;6557:4;:32::i;:::-;6550:39;;6467:129;;;;:::o;6239:174:17:-;6328:4;6351:55;6356:3;:10;;6376:3;6368:12;;6398:5;6390:14;;6382:23;;6351:4;:55::i;:::-;6344:62;;6239:174;;;;;:::o;4423:201:18:-;4490:7;4538:5;4517:3;:11;;:18;;;;:26;4509:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4599:3;:11;;4611:5;4599:18;;;;;;;;;;;;;;;;4592:25;;4423:201;;;;:::o;4934:274:17:-;5001:7;5010;5059:5;5037:3;:12;;:19;;;;:27;5029:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5114:22;5139:3;:12;;5152:5;5139:19;;;;;;;;;;;;;;;;;;5114:44;;5176:5;:10;;;5188:5;:12;;;5168:33;;;;;4934:274;;;;;:::o;5615:315::-;5709:7;5728:16;5747:3;:12;;:17;5760:3;5747:17;;;;;;;;;;;;5728:36;;5794:1;5782:8;:13;;5797:12;5774:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5774:36:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5863:3;:12;;5887:1;5876:8;:12;5863:26;;;;;;;;;;;;;;;;;;:33;;;5856:40;;;5615:315;;;;;:::o;3984:107:18:-;4040:7;4066:3;:11;;:18;;;;4059:25;;3984:107;;;:::o;11175:108:11:-;11250:26;11260:2;11264:7;11250:26;;;;;;;;;;;;:9;:26::i;:::-;11175:108;;:::o;15301:589::-;15421:4;15446:15;:2;:13;;;:15::i;:::-;15441:58;;15484:4;15477:11;;;;15441:58;15508:23;15534:246;15586:45;;;15645:12;:10;:12::i;:::-;15671:4;15689:7;15710:5;15550:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15550:175:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15550:175:11;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;15550:175:11;15534:246;;;;;;;;;;;;;;;;;:2;:15;;;;:246;;;;;:::i;:::-;15508:272;;15790:13;15817:10;15806:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;15806:32:11;;;;;;;;;;;;;;;;15790:48;;1068:10;15866:16;;15856:26;;;:6;:26;;;;15848:35;;;;15301:589;;;;;;;:::o;4270:123:17:-;4341:4;4385:1;4364:3;:12;;:17;4377:3;4364:17;;;;;;;;;;;;:22;;4357:29;;4270:123;;;;:::o;2183:1512:18:-;2249:4;2365:18;2386:3;:12;;:19;2399:5;2386:19;;;;;;;;;;;;2365:40;;2434:1;2420:10;:15;2416:1273;;2777:21;2814:1;2801:10;:14;2777:38;;2829:17;2870:1;2849:3;:11;;:18;;;;:22;2829:42;;3111:17;3131:3;:11;;3143:9;3131:22;;;;;;;;;;;;;;;;3111:42;;3274:9;3245:3;:11;;3257:13;3245:26;;;;;;;;;;;;;;;:38;;;;3391:1;3375:13;:17;3349:3;:12;;:23;3362:9;3349:23;;;;;;;;;;;:43;;;;3498:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;3590:3;:12;;:19;3603:5;3590:19;;;;;;;;;;;3583:26;;;3631:4;3624:11;;;;;;;;2416:1273;3673:5;3666:12;;;2183:1512;;;;;:::o;1611:404::-;1674:4;1695:21;1705:3;1710:5;1695:9;:21::i;:::-;1690:319;;1732:3;:11;;1749:5;1732:23;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1732:23:18;;;;;;;;;;;;;;;;;;;1912:3;:11;;:18;;;;1890:3;:12;;:19;1903:5;1890:19;;;;;;;;;;;:40;;;;1951:4;1944:11;;;;1690:319;1993:5;1986:12;;1611:404;;;;;:::o;1828:678:17:-;1904:4;2018:16;2037:3;:12;;:17;2050:3;2037:17;;;;;;;;;;;;2018:36;;2081:1;2069:8;:13;2065:435;;;2135:3;:12;;2153:38;;;;;;;;2170:3;2153:38;;;;2183:5;2153:38;;;2135:57;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2135:57:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2347:3;:12;;:19;;;;2327:3;:12;;:17;2340:3;2327:17;;;;;;;;;;;:39;;;;2387:4;2380:11;;;;;2065:435;2458:5;2422:3;:12;;2446:1;2435:8;:12;2422:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2484:5;2477:12;;;1828:678;;;;;;:::o;11504:247:11:-;11599:18;11605:2;11609:7;11599:5;:18::i;:::-;11635:54;11666:1;11670:2;11674:7;11683:5;11635:22;:54::i;:::-;11627:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11504:247;;;:::o;718:413:16:-;778:4;981:12;1090:7;1078:20;1070:28;;1123:1;1116:4;:8;1109:15;;;718:413;;;:::o;3573:194::-;3676:12;3707:53;3730:6;3738:4;3744:1;3747:12;3707:22;:53::i;:::-;3700:60;;3573:194;;;;;:::o;3776:127:18:-;3849:4;3895:1;3872:3;:12;;:19;3885:5;3872:19;;;;;;;;;;;;:24;;3865:31;;3776:127;;;;:::o;12073:393:11:-;12166:1;12152:16;;:2;:16;;;;12144:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12224:16;12232:7;12224;:16::i;:::-;12223:17;12215:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12284:45;12313:1;12317:2;12321:7;12284:20;:45::i;:::-;12340:30;12362:7;12340:13;:17;12354:2;12340:17;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;;12381:29;12398:7;12407:2;12381:12;:16;;:29;;;;;:::i;:::-;;12451:7;12447:2;12426:33;;12443:1;12426:33;;;;;;;;;;;;12073:393;;:::o;4920:958:16:-;5050:12;5082:18;5093:6;5082:10;:18::i;:::-;5074:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5205:12;5219:23;5246:6;:11;;5266:8;5277:4;5246:36;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5246:36:16;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;5204:78:16;;;;5296:7;5292:580;;;5326:10;5319:17;;;;;;5292:580;5457:1;5437:10;:17;:21;5433:429;;;5695:10;5689:17;5755:15;5742:10;5738:2;5734:19;5727:44;5644:145;5834:12;5827:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5827:20:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:958;;;;;;;:::o;326:4863:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "// contracts/DungeonsAndDragonsCharacter.sol\n// SPDX-License-Identifier: MIT\npragma solidity ^0.6.6;\n\nimport \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport \"@chainlink/contracts/src/v0.6/VRFConsumerBase.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Strings.sol\";\n\ncontract DungeonsAndDragonsCharacter is ERC721, VRFConsumerBase, Ownable {\n using SafeMath for uint256;\n using Strings for string;\n\n bytes32 internal keyHash;\n uint256 internal fee;\n uint256 public randomResult;\n address public VRFCoordinator;\n // rinkeby: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\n address public LinkToken;\n // rinkeby: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709a\n\n struct Character {\n uint256 strength;\n uint256 dexterity;\n uint256 constitution;\n uint256 intelligence;\n uint256 wisdom;\n uint256 charisma;\n uint256 experience;\n string name;\n }\n\n Character[] public characters;\n\n mapping(bytes32 => string) requestToCharacterName;\n mapping(bytes32 => address) requestToSender;\n mapping(bytes32 => uint256) requestToTokenId;\n\n /**\n * Constructor inherits VRFConsumerBase\n *\n * Network: Rinkeby\n * Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\n * LINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709\n * Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311\n */\n constructor(address _VRFCoordinator, address _LinkToken, bytes32 _keyhash)\n public\n VRFConsumerBase(_VRFCoordinator, _LinkToken)\n ERC721(\"DungeonsAndDragonsCharacter\", \"D&D\")\n { \n VRFCoordinator = _VRFCoordinator;\n LinkToken = _LinkToken;\n keyHash = _keyhash;\n fee = 0.1 * 10**18; // 0.1 LINK\n }\n\n function requestNewRandomCharacter(\n uint256 userProvidedSeed,\n string memory name\n ) public returns (bytes32) {\n require(\n LINK.balanceOf(address(this)) >= fee,\n \"Not enough LINK - fill contract with faucet\"\n );\n bytes32 requestId = requestRandomness(keyHash, fee, userProvidedSeed);\n requestToCharacterName[requestId] = name;\n requestToSender[requestId] = msg.sender;\n return requestId;\n }\n\n function getTokenURI(uint256 tokenId) public view returns (string memory) {\n return tokenURI(tokenId);\n }\n\n function setTokenURI(uint256 tokenId, string memory _tokenURI) public {\n require(\n _isApprovedOrOwner(_msgSender(), tokenId),\n \"ERC721: transfer caller is not owner nor approved\"\n );\n _setTokenURI(tokenId, _tokenURI);\n }\n\n function fulfillRandomness(bytes32 requestId, uint256 randomNumber)\n internal\n override\n {\n uint256 newId = characters.length;\n uint256 strength = (randomNumber % 100);\n uint256 dexterity = ((randomNumber % 10000) / 100 );\n uint256 constitution = ((randomNumber % 1000000) / 10000 );\n uint256 intelligence = ((randomNumber % 100000000) / 1000000 );\n uint256 wisdom = ((randomNumber % 10000000000) / 100000000 );\n uint256 charisma = ((randomNumber % 1000000000000) / 10000000000);\n uint256 experience = 0;\n\n characters.push(\n Character(\n strength,\n dexterity,\n constitution,\n intelligence,\n wisdom,\n charisma,\n experience,\n requestToCharacterName[requestId]\n )\n );\n _safeMint(requestToSender[requestId], newId);\n }\n\n function getLevel(uint256 tokenId) public view returns (uint256) {\n return sqrt(characters[tokenId].experience);\n }\n\n function getCharacterOverView(uint256 tokenId)\n public\n view\n returns (\n string memory,\n uint256,\n uint256,\n uint256\n )\n {\n return (\n characters[tokenId].name,\n characters[tokenId].strength + characters[tokenId].dexterity + characters[tokenId].constitution + characters[tokenId].intelligence + characters[tokenId].wisdom + characters[tokenId].charisma,\n getLevel(tokenId),\n characters[tokenId].experience\n );\n }\n\n function getCharacterStats(uint256 tokenId)\n public\n view\n returns (\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256,\n uint256\n )\n {\n return (\n characters[tokenId].strength,\n characters[tokenId].dexterity,\n characters[tokenId].constitution,\n characters[tokenId].intelligence,\n characters[tokenId].wisdom,\n characters[tokenId].charisma,\n characters[tokenId].experience\n );\n }\n\n function sqrt(uint256 x) internal view returns (uint256 y) {\n uint256 z = (x + 1) / 2;\n y = x;\n while (z < y) {\n y = z;\n z = (x / z + z) / 2;\n }\n }\n}\n", "sourcePath": "/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol", "ast": { "absolutePath": "/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol", "exportedSymbols": { "DungeonsAndDragonsCharacter": [ - 458 + 440 ] }, - "id": 459, + "id": 441, "nodeType": "SourceUnit", "nodes": [ { @@ -852,8 +852,8 @@ "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 459, - "sourceUnit": 2348, + "scope": 441, + "sourceUnit": 2232, "src": "102:57:0", "symbolAliases": [], "unitAlias": "" @@ -863,8 +863,8 @@ "file": "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol", "id": 3, "nodeType": "ImportDirective", - "scope": 459, - "sourceUnit": 737, + "scope": 441, + "sourceUnit": 621, "src": "160:59:0", "symbolAliases": [], "unitAlias": "" @@ -874,8 +874,8 @@ "file": "@openzeppelin/contracts/access/Ownable.sol", "id": 4, "nodeType": "ImportDirective", - "scope": 459, - "sourceUnit": 1153, + "scope": 441, + "sourceUnit": 1037, "src": "220:52:0", "symbolAliases": [], "unitAlias": "" @@ -885,8 +885,8 @@ "file": "@openzeppelin/contracts/utils/Strings.sol", "id": 5, "nodeType": "ImportDirective", - "scope": 459, - "sourceUnit": 3672, + "scope": 441, + "sourceUnit": 3556, "src": "273:51:0", "symbolAliases": [], "unitAlias": "" @@ -901,10 +901,10 @@ "id": 6, "name": "ERC721", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2347, + "referencedDeclaration": 2231, "src": "366:6:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721_$2347", + "typeIdentifier": "t_contract$_ERC721_$2231", "typeString": "contract ERC721" } }, @@ -919,10 +919,10 @@ "id": 8, "name": "VRFConsumerBase", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 736, + "referencedDeclaration": 620, "src": "374:15:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_VRFConsumerBase_$736", + "typeIdentifier": "t_contract$_VRFConsumerBase_$620", "typeString": "contract VRFConsumerBase" } }, @@ -937,10 +937,10 @@ "id": 10, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1152, + "referencedDeclaration": 1036, "src": "391:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$1152", + "typeIdentifier": "t_contract$_Ownable_$1036", "typeString": "contract Ownable" } }, @@ -950,33 +950,33 @@ } ], "contractDependencies": [ - 736, - 786, - 1043, - 1152, - 1208, - 1220, + 620, + 670, + 927, + 1036, + 1092, + 1104, + 2231, 2347, - 2463, - 2494, - 2521 + 2378, + 2405 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 458, + "id": 440, "linearizedBaseContracts": [ - 458, - 1152, - 736, - 786, + 440, + 1036, + 620, + 670, + 2231, + 2378, + 2405, 2347, - 2494, - 2521, - 2463, - 1208, - 1220, - 1043 + 1092, + 1104, + 927 ], "name": "DungeonsAndDragonsCharacter", "nodeType": "ContractDefinition", @@ -988,10 +988,10 @@ "id": 12, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1416, + "referencedDeclaration": 1300, "src": "411:8:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1416", + "typeIdentifier": "t_contract$_SafeMath_$1300", "typeString": "library SafeMath" } }, @@ -1015,10 +1015,10 @@ "id": 15, "name": "Strings", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3671, + "referencedDeclaration": 3555, "src": "443:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Strings_$3671", + "typeIdentifier": "t_contract$_Strings_$3555", "typeString": "library Strings" } }, @@ -1042,7 +1042,7 @@ "name": "keyHash", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "468:24:0", "stateVariable": true, "storageLocation": "default", @@ -1070,7 +1070,7 @@ "name": "fee", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "498:20:0", "stateVariable": true, "storageLocation": "default", @@ -1099,7 +1099,7 @@ "name": "randomResult", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "524:27:0", "stateVariable": true, "storageLocation": "default", @@ -1128,7 +1128,7 @@ "name": "VRFCoordinator", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "557:29:0", "stateVariable": true, "storageLocation": "default", @@ -1158,7 +1158,7 @@ "name": "LinkToken", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "651:24:0", "stateVariable": true, "storageLocation": "default", @@ -1411,7 +1411,7 @@ ], "name": "Character", "nodeType": "StructDefinition", - "scope": 458, + "scope": 440, "src": "742:236:0", "visibility": "public" }, @@ -1423,7 +1423,7 @@ "name": "characters", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "984:29:0", "stateVariable": true, "storageLocation": "default", @@ -1463,7 +1463,7 @@ "name": "requestToCharacterName", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "1020:49:0", "stateVariable": true, "storageLocation": "default", @@ -1510,7 +1510,7 @@ "name": "requestToSender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "1075:43:0", "stateVariable": true, "storageLocation": "default", @@ -1558,7 +1558,7 @@ "name": "requestToTokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "1124:44:0", "stateVariable": true, "storageLocation": "default", @@ -1873,7 +1873,7 @@ "id": 60, "nodeType": "StructuredDocumentation", "src": "1175:340:0", - "text": "Constructor inherits VRFConsumerBase\n * Network: Rinkeby\nChainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\nLINK token address: 0xa36085f69e2889c224210f603d836748e7dc0088\nKey Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311" + "text": "Constructor inherits VRFConsumerBase\n * Network: Rinkeby\nChainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\nLINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709\nKey Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311" }, "id": 98, "implemented": true, @@ -1915,10 +1915,10 @@ "name": "VRFConsumerBase", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 736, + "referencedDeclaration": 620, "src": "1618:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_VRFConsumerBase_$736_$", + "typeIdentifier": "t_type$_t_contract$_VRFConsumerBase_$620_$", "typeString": "type(contract VRFConsumerBase)" } }, @@ -1971,10 +1971,10 @@ "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2347, + "referencedDeclaration": 2231, "src": "1671:6:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC721_$2347_$", + "typeIdentifier": "t_type$_t_contract$_ERC721_$2231_$", "typeString": "type(contract ERC721)" } }, @@ -2084,7 +2084,7 @@ "parameters": [], "src": "1720:0:0" }, - "scope": 458, + "scope": 440, "src": "1520:352:0", "stateMutability": "nonpayable", "virtual": false, @@ -2126,7 +2126,7 @@ "referencedDeclaration": -28, "src": "2060:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$458", + "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$440", "typeString": "contract DungeonsAndDragonsCharacter" } } @@ -2134,7 +2134,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$458", + "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$440", "typeString": "contract DungeonsAndDragonsCharacter" } ], @@ -2189,10 +2189,10 @@ "name": "LINK", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 690, + "referencedDeclaration": 574, "src": "2037:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_LinkTokenInterface_$881", + "typeIdentifier": "t_contract$_LinkTokenInterface_$765", "typeString": "contract LinkTokenInterface" } }, @@ -2203,7 +2203,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 813, + "referencedDeclaration": 697, "src": "2037:14:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -2406,7 +2406,7 @@ "name": "requestRandomness", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, + "referencedDeclaration": 572, "src": "2172:17:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", @@ -2721,7 +2721,7 @@ ], "src": "1996:9:0" }, - "scope": 458, + "scope": 440, "src": "1878:475:0", "stateMutability": "nonpayable", "virtual": false, @@ -2762,7 +2762,7 @@ "name": "tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1647, + "referencedDeclaration": 1531, "src": "2450:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", @@ -2870,7 +2870,7 @@ ], "src": "2417:15:0" }, - "scope": 458, + "scope": 440, "src": "2359:115:0", "stateMutability": "view", "virtual": false, @@ -2898,7 +2898,7 @@ "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, + "referencedDeclaration": 915, "src": "2600:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", @@ -2949,7 +2949,7 @@ "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1980, + "referencedDeclaration": 1864, "src": "2581:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", @@ -3080,7 +3080,7 @@ "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2244, + "referencedDeclaration": 2128, "src": "2707:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", @@ -3186,7 +3186,7 @@ "parameters": [], "src": "2550:0:0" }, - "scope": 458, + "scope": 440, "src": "2480:266:0", "stateMutability": "nonpayable", "virtual": false, @@ -3194,12 +3194,12 @@ }, { "baseFunctions": [ - 633 + 517 ], "body": { - "id": 294, + "id": 276, "nodeType": "Block", - "src": "2858:896:0", + "src": "2858:846:0", "statements": [ { "assignments": [ @@ -3213,7 +3213,7 @@ "name": "newId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, + "scope": 276, "src": "2868:13:0", "stateVariable": false, "storageLocation": "default", @@ -3280,7 +3280,7 @@ "name": "strength", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, + "scope": 276, "src": "2911:16:0", "stateVariable": false, "storageLocation": "default", @@ -3302,7 +3302,7 @@ "visibility": "internal" } ], - "id": 200, + "id": 197, "initialValue": { "argumentTypes": null, "components": [ @@ -3312,7 +3312,112 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 193, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "2931:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313030", + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2946:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "2931:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 196, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2930:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2911:39:0" + }, + { + "assignments": [ + 199 + ], + "declarations": [ + { + "constant": false, + "id": 199, + "mutability": "mutable", + "name": "dexterity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 276, + "src": "2960:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { "id": 198, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2960:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 207, + "initialValue": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -3326,19 +3431,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 195, + "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 193, + "id": 200, "name": "randomNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 182, - "src": "2932:12:0", + "src": "2982:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3346,443 +3451,17 @@ }, "nodeType": "BinaryOperation", "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "313030", - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2947:3:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_100_by_1", - "typeString": "int_const 100" - }, - "value": "100" - }, - "src": "2932:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 196, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2931:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3138", - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2954:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "src": "2931:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 199, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2930:27:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2911:46:0" - }, - { - "assignments": [ - 202 - ], - "declarations": [ - { - "constant": false, - "id": 202, - "mutability": "mutable", - "name": "dexterity", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 294, - "src": "2967:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 201, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2967:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 213, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 211, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 203, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "2990:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3130303030", - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3005:5:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10000" - }, - "src": "2990:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 206, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2989:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "313030", - "id": 207, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3014:3:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_100_by_1", - "typeString": "int_const 100" - }, - "value": "100" - }, - "src": "2989:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 209, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2988:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3138", - "id": 210, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3021:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "src": "2988:35:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 212, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2987:37:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2967:57:0" - }, - { - "assignments": [ - 215 - ], - "declarations": [ - { - "constant": false, - "id": 215, - "mutability": "mutable", - "name": "constitution", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 294, - "src": "3034:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 214, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3034:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 226, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 216, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3060:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31303030303030", - "id": 217, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3075:7:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1000000" - }, - "src": "3060:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 219, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3059:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", "rightExpression": { "argumentTypes": null, "hexValue": "3130303030", - "id": 220, + "id": 201, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3086:5:0", + "src": "2997:5:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10000_by_1", @@ -3790,83 +3469,83 @@ }, "value": "10000" }, - "src": "3059:32:0", + "src": "2982:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 222, + "id": 203, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3058:34:0", + "src": "2981:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "hexValue": "3138", - "id": 223, + "hexValue": "313030", + "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3095:2:0", + "src": "3006:3:0", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" }, - "value": "18" + "value": "100" }, - "src": "3058:39:0", + "src": "2981:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 225, + "id": 206, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3057:41:0", + "src": "2980:31:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3034:64:0" + "src": "2960:51:0" }, { "assignments": [ - 228 + 209 ], "declarations": [ { "constant": false, - "id": 228, + "id": 209, "mutability": "mutable", - "name": "intelligence", + "name": "constitution", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, - "src": "3108:20:0", + "scope": 276, + "src": "3021:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3874,10 +3553,10 @@ "typeString": "uint256" }, "typeName": { - "id": 227, + "id": 208, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3108:7:0", + "src": "3021:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3887,7 +3566,7 @@ "visibility": "internal" } ], - "id": 239, + "id": 217, "initialValue": { "argumentTypes": null, "components": [ @@ -3897,7 +3576,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 237, + "id": 215, "isConstant": false, "isLValue": false, "isPure": false, @@ -3911,91 +3590,37 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 234, + "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 229, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3134:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "313030303030303030", - "id": 230, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3149:9:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_100000000_by_1", - "typeString": "int_const 100000000" - }, - "value": "100000000" - }, - "src": "3134:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 232, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3133:26:0", + "id": 210, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3046:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "/", + "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 233, + "id": 211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3162:7:0", + "src": "3061:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -4003,83 +3628,83 @@ }, "value": "1000000" }, - "src": "3133:36:0", + "src": "3046:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 235, + "id": 213, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3132:38:0", + "src": "3045:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "hexValue": "3138", - "id": 236, + "hexValue": "3130303030", + "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3173:2:0", + "src": "3072:5:0", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" }, - "value": "18" + "value": "10000" }, - "src": "3132:43:0", + "src": "3045:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 238, + "id": 216, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3131:45:0", + "src": "3044:35:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3108:68:0" + "src": "3021:58:0" }, { "assignments": [ - 241 + 219 ], "declarations": [ { "constant": false, - "id": 241, + "id": 219, "mutability": "mutable", - "name": "wisdom", + "name": "intelligence", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, - "src": "3186:14:0", + "scope": 276, + "src": "3089:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4087,10 +3712,10 @@ "typeString": "uint256" }, "typeName": { - "id": 240, + "id": 218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3186:7:0", + "src": "3089:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4100,7 +3725,7 @@ "visibility": "internal" } ], - "id": 252, + "id": 227, "initialValue": { "argumentTypes": null, "components": [ @@ -4110,7 +3735,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 250, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, @@ -4124,91 +3749,37 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 247, + "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 242, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3206:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3130303030303030303030", - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3221:11:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10000000000_by_1", - "typeString": "int_const 10000000000" - }, - "value": "10000000000" - }, - "src": "3206:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 245, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3205:28:0", + "id": 220, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3114:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "/", + "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "313030303030303030", - "id": 246, + "id": 221, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3236:9:0", + "src": "3129:9:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100000000_by_1", @@ -4216,83 +3787,83 @@ }, "value": "100000000" }, - "src": "3205:40:0", + "src": "3114:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 248, + "id": 223, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3204:42:0", + "src": "3113:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "hexValue": "3138", - "id": 249, + "hexValue": "31303030303030", + "id": 224, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3249:2:0", + "src": "3142:7:0", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" }, - "value": "18" + "value": "1000000" }, - "src": "3204:47:0", + "src": "3113:36:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 251, + "id": 226, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3203:49:0", + "src": "3112:39:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3186:66:0" + "src": "3089:62:0" }, { "assignments": [ - 254 + 229 ], "declarations": [ { "constant": false, - "id": 254, + "id": 229, "mutability": "mutable", - "name": "charisma", + "name": "wisdom", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, - "src": "3262:16:0", + "scope": 276, + "src": "3161:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4300,10 +3871,10 @@ "typeString": "uint256" }, "typeName": { - "id": 253, + "id": 228, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3262:7:0", + "src": "3161:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4313,7 +3884,7 @@ "visibility": "internal" } ], - "id": 265, + "id": 237, "initialValue": { "argumentTypes": null, "components": [ @@ -4323,7 +3894,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 263, + "id": 235, "isConstant": false, "isLValue": false, "isPure": false, @@ -4337,91 +3908,37 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 260, + "id": 232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 255, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3284:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31303030303030303030303030", - "id": 256, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3299:13:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000_by_1", - "typeString": "int_const 1000000000000" - }, - "value": "1000000000000" - }, - "src": "3284:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 258, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3283:30:0", + "id": 230, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3180:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "/", + "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "3130303030303030303030", - "id": 259, + "id": 231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3316:11:0", + "src": "3195:11:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10000000000_by_1", @@ -4429,83 +3946,83 @@ }, "value": "10000000000" }, - "src": "3283:44:0", + "src": "3180:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 261, + "id": 233, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3282:46:0", + "src": "3179:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "hexValue": "3138", - "id": 262, + "hexValue": "313030303030303030", + "id": 234, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3343:2:0", + "src": "3210:9:0", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" }, - "value": "18" + "value": "100000000" }, - "src": "3282:63:0", + "src": "3179:40:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 264, + "id": 236, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3281:65:0", + "src": "3178:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3262:84:0" + "src": "3161:60:0" }, { "assignments": [ - 267 + 239 ], "declarations": [ { "constant": false, - "id": 267, + "id": 239, "mutability": "mutable", - "name": "experience", + "name": "charisma", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, - "src": "3356:18:0", + "scope": 276, + "src": "3231:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4513,10 +4030,10 @@ "typeString": "uint256" }, "typeName": { - "id": 266, + "id": 238, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3356:7:0", + "src": "3231:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4526,18 +4043,177 @@ "visibility": "internal" } ], - "id": 269, + "id": 247, + "initialValue": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 240, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3252:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030303030303030", + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3267:13:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000_by_1", + "typeString": "int_const 1000000000000" + }, + "value": "1000000000000" + }, + "src": "3252:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 243, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3251:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130303030303030303030", + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3284:11:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000_by_1", + "typeString": "int_const 10000000000" + }, + "value": "10000000000" + }, + "src": "3251:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 246, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3250:46:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3231:65:0" + }, + { + "assignments": [ + 249 + ], + "declarations": [ + { + "constant": false, + "id": 249, + "mutability": "mutable", + "name": "experience", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 276, + "src": "3306:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 248, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3306:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 251, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 268, + "id": 250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3377:1:0", + "src": "3327:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4546,7 +4222,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3356:22:0" + "src": "3306:22:0" }, { "expression": { @@ -4557,12 +4233,12 @@ "arguments": [ { "argumentTypes": null, - "id": 274, + "id": 256, "name": "strength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 192, - "src": "3445:8:0", + "src": "3395:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4570,12 +4246,12 @@ }, { "argumentTypes": null, - "id": 275, + "id": 257, "name": "dexterity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "3471:9:0", + "referencedDeclaration": 199, + "src": "3421:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4583,12 +4259,12 @@ }, { "argumentTypes": null, - "id": 276, + "id": 258, "name": "constitution", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 215, - "src": "3498:12:0", + "referencedDeclaration": 209, + "src": "3448:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4596,12 +4272,12 @@ }, { "argumentTypes": null, - "id": 277, + "id": 259, "name": "intelligence", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 228, - "src": "3528:12:0", + "referencedDeclaration": 219, + "src": "3478:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4609,12 +4285,12 @@ }, { "argumentTypes": null, - "id": 278, + "id": 260, "name": "wisdom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 241, - "src": "3558:6:0", + "referencedDeclaration": 229, + "src": "3508:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4622,12 +4298,12 @@ }, { "argumentTypes": null, - "id": 279, + "id": 261, "name": "charisma", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "3582:8:0", + "referencedDeclaration": 239, + "src": "3532:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4635,12 +4311,12 @@ }, { "argumentTypes": null, - "id": 280, + "id": 262, "name": "experience", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 267, - "src": "3608:10:0", + "referencedDeclaration": 249, + "src": "3558:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4650,26 +4326,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 281, + "id": 263, "name": "requestToCharacterName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51, - "src": "3636:22:0", + "src": "3586:22:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", "typeString": "mapping(bytes32 => string storage ref)" } }, - "id": 283, + "id": 265, "indexExpression": { "argumentTypes": null, - "id": 282, + "id": 264, "name": "requestId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, - "src": "3659:9:0", + "src": "3609:9:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4680,7 +4356,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3636:33:0", + "src": "3586:33:0", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -4722,18 +4398,18 @@ "typeString": "string storage ref" } ], - "id": 273, + "id": 255, "name": "Character", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "3418:9:0", + "src": "3368:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Character_$44_storage_ptr_$", "typeString": "type(struct DungeonsAndDragonsCharacter.Character storage pointer)" } }, - "id": 284, + "id": 266, "isConstant": false, "isLValue": false, "isPure": false, @@ -4741,7 +4417,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3418:265:0", + "src": "3368:265:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_memory_ptr", @@ -4758,18 +4434,18 @@ ], "expression": { "argumentTypes": null, - "id": 270, + "id": 252, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "3389:10:0", + "src": "3339:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 272, + "id": 254, "isConstant": false, "isLValue": false, "isPure": false, @@ -4777,13 +4453,13 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3389:15:0", + "src": "3339:15:0", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Character_$44_storage_$returns$__$", "typeString": "function (struct DungeonsAndDragonsCharacter.Character storage ref)" } }, - "id": 285, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -4791,16 +4467,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3389:304:0", + "src": "3339:304:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 286, + "id": 268, "nodeType": "ExpressionStatement", - "src": "3389:304:0" + "src": "3339:304:0" }, { "expression": { @@ -4810,26 +4486,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 288, + "id": 270, "name": "requestToSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 55, - "src": "3713:15:0", + "src": "3663:15:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, - "id": 290, + "id": 272, "indexExpression": { "argumentTypes": null, - "id": 289, + "id": 271, "name": "requestId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, - "src": "3729:9:0", + "src": "3679:9:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4840,7 +4516,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3713:26:0", + "src": "3663:26:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4848,12 +4524,12 @@ }, { "argumentTypes": null, - "id": 291, + "id": 273, "name": "newId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 187, - "src": "3741:5:0", + "src": "3691:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4871,21 +4547,21 @@ "typeString": "uint256" } ], - "id": 287, + "id": 269, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [ - 1995, - 2024 + 1879, + 1908 ], - "referencedDeclaration": 1995, - "src": "3703:9:0", + "referencedDeclaration": 1879, + "src": "3653:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 292, + "id": 274, "isConstant": false, "isLValue": false, "isPure": false, @@ -4893,21 +4569,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3703:44:0", + "src": "3653:44:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 293, + "id": 275, "nodeType": "ExpressionStatement", - "src": "3703:44:0" + "src": "3653:44:0" } ] }, "documentation": null, - "id": 295, + "id": 277, "implemented": true, "kind": "function", "modifiers": [], @@ -4930,7 +4606,7 @@ "name": "requestId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 295, + "scope": 277, "src": "2779:17:0", "stateVariable": false, "storageLocation": "default", @@ -4958,7 +4634,7 @@ "name": "randomNumber", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 295, + "scope": 277, "src": "2798:20:0", "stateVariable": false, "storageLocation": "default", @@ -4988,17 +4664,17 @@ "parameters": [], "src": "2858:0:0" }, - "scope": 458, - "src": "2752:1002:0", + "scope": 440, + "src": "2752:952:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { - "id": 309, + "id": 291, "nodeType": "Block", - "src": "3825:60:0", + "src": "3775:60:0", "statements": [ { "expression": { @@ -5010,26 +4686,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 303, + "id": 285, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "3847:10:0", + "src": "3797:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 305, + "id": 287, "indexExpression": { "argumentTypes": null, - "id": 304, + "id": 286, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "3858:7:0", + "referencedDeclaration": 279, + "src": "3808:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5040,13 +4716,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3847:19:0", + "src": "3797:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 306, + "id": 288, "isConstant": false, "isLValue": true, "isPure": false, @@ -5054,7 +4730,7 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "3847:30:0", + "src": "3797:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5068,18 +4744,18 @@ "typeString": "uint256" } ], - "id": 302, + "id": 284, "name": "sqrt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3842:4:0", + "referencedDeclaration": 439, + "src": "3792:4:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 307, + "id": 289, "isConstant": false, "isLValue": false, "isPure": false, @@ -5087,23 +4763,23 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3842:36:0", + "src": "3792:36:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 301, - "id": 308, + "functionReturnParameters": 283, + "id": 290, "nodeType": "Return", - "src": "3835:43:0" + "src": "3785:43:0" } ] }, "documentation": null, "functionSelector": "86481d40", - "id": 310, + "id": 292, "implemented": true, "kind": "function", "modifiers": [], @@ -5111,18 +4787,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 298, + "id": 280, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 297, + "id": 279, "mutability": "mutable", "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 310, - "src": "3778:15:0", + "scope": 292, + "src": "3728:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5130,10 +4806,10 @@ "typeString": "uint256" }, "typeName": { - "id": 296, + "id": 278, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3778:7:0", + "src": "3728:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5143,21 +4819,21 @@ "visibility": "internal" } ], - "src": "3777:17:0" + "src": "3727:17:0" }, "returnParameters": { - "id": 301, + "id": 283, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 300, + "id": 282, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 310, - "src": "3816:7:0", + "scope": 292, + "src": "3766:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5165,10 +4841,10 @@ "typeString": "uint256" }, "typeName": { - "id": 299, + "id": 281, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3816:7:0", + "src": "3766:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5178,19 +4854,19 @@ "visibility": "internal" } ], - "src": "3815:9:0" + "src": "3765:9:0" }, - "scope": 458, - "src": "3760:125:0", + "scope": 440, + "src": "3710:125:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 365, + "id": 347, "nodeType": "Block", - "src": "4087:351:0", + "src": "4037:351:0", "statements": [ { "expression": { @@ -5202,26 +4878,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 323, + "id": 305, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4118:10:0", + "src": "4068:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 325, + "id": 307, "indexExpression": { "argumentTypes": null, - "id": 324, + "id": 306, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4129:7:0", + "referencedDeclaration": 294, + "src": "4079:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5232,13 +4908,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:19:0", + "src": "4068:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 326, + "id": 308, "isConstant": false, "isLValue": true, "isPure": false, @@ -5246,7 +4922,7 @@ "memberName": "name", "nodeType": "MemberAccess", "referencedDeclaration": 43, - "src": "4118:24:0", + "src": "4068:24:0", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -5258,7 +4934,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 355, + "id": 337, "isConstant": false, "isLValue": false, "isPure": false, @@ -5269,7 +4945,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 350, + "id": 332, "isConstant": false, "isLValue": false, "isPure": false, @@ -5280,7 +4956,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 345, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, @@ -5291,7 +4967,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 340, + "id": 322, "isConstant": false, "isLValue": false, "isPure": false, @@ -5302,7 +4978,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 335, + "id": 317, "isConstant": false, "isLValue": false, "isPure": false, @@ -5313,26 +4989,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 327, + "id": 309, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4156:10:0", + "src": "4106:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 329, + "id": 311, "indexExpression": { "argumentTypes": null, - "id": 328, + "id": 310, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4167:7:0", + "referencedDeclaration": 294, + "src": "4117:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5343,13 +5019,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4156:19:0", + "src": "4106:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 330, + "id": 312, "isConstant": false, "isLValue": true, "isPure": false, @@ -5357,7 +5033,7 @@ "memberName": "strength", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "4156:28:0", + "src": "4106:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5371,26 +5047,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 331, + "id": 313, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4187:10:0", + "src": "4137:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 333, + "id": 315, "indexExpression": { "argumentTypes": null, - "id": 332, + "id": 314, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4198:7:0", + "referencedDeclaration": 294, + "src": "4148:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5401,13 +5077,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4187:19:0", + "src": "4137:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 334, + "id": 316, "isConstant": false, "isLValue": true, "isPure": false, @@ -5415,13 +5091,13 @@ "memberName": "dexterity", "nodeType": "MemberAccess", "referencedDeclaration": 31, - "src": "4187:29:0", + "src": "4137:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:60:0", + "src": "4106:60:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5435,26 +5111,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 336, + "id": 318, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4219:10:0", + "src": "4169:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 338, + "id": 320, "indexExpression": { "argumentTypes": null, - "id": 337, + "id": 319, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4230:7:0", + "referencedDeclaration": 294, + "src": "4180:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5465,13 +5141,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4219:19:0", + "src": "4169:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 339, + "id": 321, "isConstant": false, "isLValue": true, "isPure": false, @@ -5479,13 +5155,13 @@ "memberName": "constitution", "nodeType": "MemberAccess", "referencedDeclaration": 33, - "src": "4219:32:0", + "src": "4169:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:95:0", + "src": "4106:95:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5499,26 +5175,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 341, + "id": 323, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4254:10:0", + "src": "4204:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 343, + "id": 325, "indexExpression": { "argumentTypes": null, - "id": 342, + "id": 324, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4265:7:0", + "referencedDeclaration": 294, + "src": "4215:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5529,13 +5205,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4254:19:0", + "src": "4204:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 344, + "id": 326, "isConstant": false, "isLValue": true, "isPure": false, @@ -5543,13 +5219,13 @@ "memberName": "intelligence", "nodeType": "MemberAccess", "referencedDeclaration": 35, - "src": "4254:32:0", + "src": "4204:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:130:0", + "src": "4106:130:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5563,26 +5239,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 346, + "id": 328, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4289:10:0", + "src": "4239:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 348, + "id": 330, "indexExpression": { "argumentTypes": null, - "id": 347, + "id": 329, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4300:7:0", + "referencedDeclaration": 294, + "src": "4250:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5593,13 +5269,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4289:19:0", + "src": "4239:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 349, + "id": 331, "isConstant": false, "isLValue": true, "isPure": false, @@ -5607,13 +5283,13 @@ "memberName": "wisdom", "nodeType": "MemberAccess", "referencedDeclaration": 37, - "src": "4289:26:0", + "src": "4239:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:159:0", + "src": "4106:159:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5627,26 +5303,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 351, + "id": 333, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4318:10:0", + "src": "4268:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 353, + "id": 335, "indexExpression": { "argumentTypes": null, - "id": 352, + "id": 334, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4329:7:0", + "referencedDeclaration": 294, + "src": "4279:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5657,13 +5333,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4318:19:0", + "src": "4268:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 354, + "id": 336, "isConstant": false, "isLValue": true, "isPure": false, @@ -5671,13 +5347,13 @@ "memberName": "charisma", "nodeType": "MemberAccess", "referencedDeclaration": 39, - "src": "4318:28:0", + "src": "4268:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:190:0", + "src": "4106:190:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5688,12 +5364,12 @@ "arguments": [ { "argumentTypes": null, - "id": 357, + "id": 339, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4369:7:0", + "referencedDeclaration": 294, + "src": "4319:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5707,18 +5383,18 @@ "typeString": "uint256" } ], - "id": 356, + "id": 338, "name": "getLevel", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 310, - "src": "4360:8:0", + "referencedDeclaration": 292, + "src": "4310:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 358, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, @@ -5726,7 +5402,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4360:17:0", + "src": "4310:17:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -5739,26 +5415,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 359, + "id": 341, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4391:10:0", + "src": "4341:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 361, + "id": 343, "indexExpression": { "argumentTypes": null, - "id": 360, + "id": 342, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4402:7:0", + "referencedDeclaration": 294, + "src": "4352:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5769,13 +5445,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4391:19:0", + "src": "4341:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 362, + "id": 344, "isConstant": false, "isLValue": true, "isPure": false, @@ -5783,36 +5459,36 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "4391:30:0", + "src": "4341:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 363, + "id": 345, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4104:327:0", + "src": "4054:327:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_string_storage_$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(string storage ref,uint256,uint256,uint256)" } }, - "functionReturnParameters": 322, - "id": 364, + "functionReturnParameters": 304, + "id": 346, "nodeType": "Return", - "src": "4097:334:0" + "src": "4047:334:0" } ] }, "documentation": null, "functionSelector": "4f95b5f0", - "id": 366, + "id": 348, "implemented": true, "kind": "function", "modifiers": [], @@ -5820,18 +5496,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 313, + "id": 295, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 312, + "id": 294, "mutability": "mutable", "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "3921:15:0", + "scope": 348, + "src": "3871:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5839,10 +5515,10 @@ "typeString": "uint256" }, "typeName": { - "id": 311, + "id": 293, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3921:7:0", + "src": "3871:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5852,21 +5528,21 @@ "visibility": "internal" } ], - "src": "3920:17:0" + "src": "3870:17:0" }, "returnParameters": { - "id": 322, + "id": 304, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 315, + "id": 297, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "3996:13:0", + "scope": 348, + "src": "3946:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5874,10 +5550,10 @@ "typeString": "string" }, "typeName": { - "id": 314, + "id": 296, "name": "string", "nodeType": "ElementaryTypeName", - "src": "3996:6:0", + "src": "3946:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -5888,13 +5564,13 @@ }, { "constant": false, - "id": 317, + "id": 299, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "4023:7:0", + "scope": 348, + "src": "3973:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5902,10 +5578,10 @@ "typeString": "uint256" }, "typeName": { - "id": 316, + "id": 298, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4023:7:0", + "src": "3973:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5916,13 +5592,13 @@ }, { "constant": false, - "id": 319, + "id": 301, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "4044:7:0", + "scope": 348, + "src": "3994:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5930,10 +5606,10 @@ "typeString": "uint256" }, "typeName": { - "id": 318, + "id": 300, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4044:7:0", + "src": "3994:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5944,13 +5620,13 @@ }, { "constant": false, - "id": 321, + "id": 303, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "4065:7:0", + "scope": 348, + "src": "4015:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5958,10 +5634,10 @@ "typeString": "uint256" }, "typeName": { - "id": 320, + "id": 302, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4065:7:0", + "src": "4015:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5971,19 +5647,19 @@ "visibility": "internal" } ], - "src": "3982:100:0" + "src": "3932:100:0" }, - "scope": 458, - "src": "3891:547:0", + "scope": 440, + "src": "3841:547:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 415, + "id": 397, "nodeType": "Block", - "src": "4694:337:0", + "src": "4644:337:0", "statements": [ { "expression": { @@ -5995,26 +5671,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 385, + "id": 367, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4725:10:0", + "src": "4675:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 387, + "id": 369, "indexExpression": { "argumentTypes": null, - "id": 386, + "id": 368, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4736:7:0", + "referencedDeclaration": 350, + "src": "4686:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6025,13 +5701,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4725:19:0", + "src": "4675:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 388, + "id": 370, "isConstant": false, "isLValue": true, "isPure": false, @@ -6039,7 +5715,7 @@ "memberName": "strength", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "4725:28:0", + "src": "4675:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6051,26 +5727,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 389, + "id": 371, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4767:10:0", + "src": "4717:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 391, + "id": 373, "indexExpression": { "argumentTypes": null, - "id": 390, + "id": 372, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4778:7:0", + "referencedDeclaration": 350, + "src": "4728:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6081,13 +5757,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4767:19:0", + "src": "4717:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 392, + "id": 374, "isConstant": false, "isLValue": true, "isPure": false, @@ -6095,7 +5771,7 @@ "memberName": "dexterity", "nodeType": "MemberAccess", "referencedDeclaration": 31, - "src": "4767:29:0", + "src": "4717:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6107,26 +5783,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 393, + "id": 375, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4810:10:0", + "src": "4760:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 395, + "id": 377, "indexExpression": { "argumentTypes": null, - "id": 394, + "id": 376, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4821:7:0", + "referencedDeclaration": 350, + "src": "4771:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6137,13 +5813,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4810:19:0", + "src": "4760:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 396, + "id": 378, "isConstant": false, "isLValue": true, "isPure": false, @@ -6151,7 +5827,7 @@ "memberName": "constitution", "nodeType": "MemberAccess", "referencedDeclaration": 33, - "src": "4810:32:0", + "src": "4760:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6163,26 +5839,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 397, + "id": 379, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4856:10:0", + "src": "4806:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 399, + "id": 381, "indexExpression": { "argumentTypes": null, - "id": 398, + "id": 380, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4867:7:0", + "referencedDeclaration": 350, + "src": "4817:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6193,13 +5869,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4856:19:0", + "src": "4806:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 400, + "id": 382, "isConstant": false, "isLValue": true, "isPure": false, @@ -6207,7 +5883,7 @@ "memberName": "intelligence", "nodeType": "MemberAccess", "referencedDeclaration": 35, - "src": "4856:32:0", + "src": "4806:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6219,26 +5895,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 401, + "id": 383, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4902:10:0", + "src": "4852:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 403, + "id": 385, "indexExpression": { "argumentTypes": null, - "id": 402, + "id": 384, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4913:7:0", + "referencedDeclaration": 350, + "src": "4863:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6249,13 +5925,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4902:19:0", + "src": "4852:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 404, + "id": 386, "isConstant": false, "isLValue": true, "isPure": false, @@ -6263,7 +5939,7 @@ "memberName": "wisdom", "nodeType": "MemberAccess", "referencedDeclaration": 37, - "src": "4902:26:0", + "src": "4852:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6275,26 +5951,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 405, + "id": 387, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4942:10:0", + "src": "4892:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 407, + "id": 389, "indexExpression": { "argumentTypes": null, - "id": 406, + "id": 388, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4953:7:0", + "referencedDeclaration": 350, + "src": "4903:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6305,13 +5981,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4942:19:0", + "src": "4892:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 408, + "id": 390, "isConstant": false, "isLValue": true, "isPure": false, @@ -6319,7 +5995,7 @@ "memberName": "charisma", "nodeType": "MemberAccess", "referencedDeclaration": 39, - "src": "4942:28:0", + "src": "4892:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6331,26 +6007,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 409, + "id": 391, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4984:10:0", + "src": "4934:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 411, + "id": 393, "indexExpression": { "argumentTypes": null, - "id": 410, + "id": 392, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4995:7:0", + "referencedDeclaration": 350, + "src": "4945:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6361,13 +6037,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4984:19:0", + "src": "4934:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 412, + "id": 394, "isConstant": false, "isLValue": true, "isPure": false, @@ -6375,36 +6051,36 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "4984:30:0", + "src": "4934:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 413, + "id": 395, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4711:313:0", + "src": "4661:313:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256,uint256)" } }, - "functionReturnParameters": 384, - "id": 414, + "functionReturnParameters": 366, + "id": 396, "nodeType": "Return", - "src": "4704:320:0" + "src": "4654:320:0" } ] }, "documentation": null, "functionSelector": "6fe0c046", - "id": 416, + "id": 398, "implemented": true, "kind": "function", "modifiers": [], @@ -6412,18 +6088,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 369, + "id": 351, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 368, + "id": 350, "mutability": "mutable", "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4471:15:0", + "scope": 398, + "src": "4421:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6431,10 +6107,10 @@ "typeString": "uint256" }, "typeName": { - "id": 367, + "id": 349, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4471:7:0", + "src": "4421:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6444,21 +6120,21 @@ "visibility": "internal" } ], - "src": "4470:17:0" + "src": "4420:17:0" }, "returnParameters": { - "id": 384, + "id": 366, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 371, + "id": 353, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4546:7:0", + "scope": 398, + "src": "4496:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6466,10 +6142,10 @@ "typeString": "uint256" }, "typeName": { - "id": 370, + "id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4546:7:0", + "src": "4496:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6480,13 +6156,13 @@ }, { "constant": false, - "id": 373, + "id": 355, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4567:7:0", + "scope": 398, + "src": "4517:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6494,10 +6170,10 @@ "typeString": "uint256" }, "typeName": { - "id": 372, + "id": 354, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4567:7:0", + "src": "4517:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6508,13 +6184,13 @@ }, { "constant": false, - "id": 375, + "id": 357, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4588:7:0", + "scope": 398, + "src": "4538:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6522,10 +6198,10 @@ "typeString": "uint256" }, "typeName": { - "id": 374, + "id": 356, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4588:7:0", + "src": "4538:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6536,13 +6212,13 @@ }, { "constant": false, - "id": 377, + "id": 359, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4609:7:0", + "scope": 398, + "src": "4559:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6550,10 +6226,10 @@ "typeString": "uint256" }, "typeName": { - "id": 376, + "id": 358, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4609:7:0", + "src": "4559:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6564,13 +6240,13 @@ }, { "constant": false, - "id": 379, + "id": 361, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4630:7:0", + "scope": 398, + "src": "4580:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6578,10 +6254,10 @@ "typeString": "uint256" }, "typeName": { - "id": 378, + "id": 360, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4630:7:0", + "src": "4580:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6592,13 +6268,13 @@ }, { "constant": false, - "id": 381, + "id": 363, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4651:7:0", + "scope": 398, + "src": "4601:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6606,10 +6282,10 @@ "typeString": "uint256" }, "typeName": { - "id": 380, + "id": 362, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4651:7:0", + "src": "4601:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6620,13 +6296,13 @@ }, { "constant": false, - "id": 383, + "id": 365, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4672:7:0", + "scope": 398, + "src": "4622:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6634,10 +6310,10 @@ "typeString": "uint256" }, "typeName": { - "id": 382, + "id": 364, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4672:7:0", + "src": "4622:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6647,34 +6323,34 @@ "visibility": "internal" } ], - "src": "4532:157:0" + "src": "4482:157:0" }, - "scope": 458, - "src": "4444:587:0", + "scope": 440, + "src": "4394:587:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 456, + "id": 438, "nodeType": "Block", - "src": "5096:141:0", + "src": "5046:141:0", "statements": [ { "assignments": [ - 424 + 406 ], "declarations": [ { "constant": false, - "id": 424, + "id": 406, "mutability": "mutable", "name": "z", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 456, - "src": "5106:9:0", + "scope": 438, + "src": "5056:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6682,10 +6358,10 @@ "typeString": "uint256" }, "typeName": { - "id": 423, + "id": 405, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5106:7:0", + "src": "5056:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6695,14 +6371,14 @@ "visibility": "internal" } ], - "id": 431, + "id": 413, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 430, + "id": 412, "isConstant": false, "isLValue": false, "isPure": false, @@ -6716,19 +6392,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 427, + "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 425, + "id": 407, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "5119:1:0", + "referencedDeclaration": 400, + "src": "5069:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6739,14 +6415,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 426, + "id": 408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5123:1:0", + "src": "5073:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -6754,21 +6430,21 @@ }, "value": "1" }, - "src": "5119:5:0", + "src": "5069:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 428, + "id": 410, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5118:7:0", + "src": "5068:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6779,14 +6455,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 429, + "id": 411, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5128:1:0", + "src": "5078:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -6794,31 +6470,31 @@ }, "value": "2" }, - "src": "5118:11:0", + "src": "5068:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "5106:23:0" + "src": "5056:23:0" }, { "expression": { "argumentTypes": null, - "id": 434, + "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 432, + "id": 414, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "5139:1:0", + "referencedDeclaration": 403, + "src": "5089:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6828,49 +6504,49 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 433, + "id": 415, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "5143:1:0", + "referencedDeclaration": 400, + "src": "5093:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5139:5:0", + "src": "5089:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 435, + "id": 417, "nodeType": "ExpressionStatement", - "src": "5139:5:0" + "src": "5089:5:0" }, { "body": { - "id": 454, + "id": 436, "nodeType": "Block", - "src": "5168:63:0", + "src": "5118:63:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 441, + "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 439, + "id": 421, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "5182:1:0", + "referencedDeclaration": 403, + "src": "5132:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6880,43 +6556,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 440, + "id": 422, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5186:1:0", + "referencedDeclaration": 406, + "src": "5136:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5182:5:0", + "src": "5132:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 442, + "id": 424, "nodeType": "ExpressionStatement", - "src": "5182:5:0" + "src": "5132:5:0" }, { "expression": { "argumentTypes": null, - "id": 452, + "id": 434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 443, + "id": 425, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5201:1:0", + "referencedDeclaration": 406, + "src": "5151:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6930,7 +6606,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 451, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, @@ -6944,7 +6620,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 448, + "id": 430, "isConstant": false, "isLValue": false, "isPure": false, @@ -6955,19 +6631,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 446, + "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 444, + "id": 426, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "5206:1:0", + "referencedDeclaration": 400, + "src": "5156:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6977,18 +6653,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 445, + "id": 427, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5210:1:0", + "referencedDeclaration": 406, + "src": "5160:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5206:5:0", + "src": "5156:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6998,32 +6674,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 447, + "id": 429, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5214:1:0", + "referencedDeclaration": 406, + "src": "5164:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5206:9:0", + "src": "5156:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 449, + "id": 431, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5205:11:0", + "src": "5155:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7034,14 +6710,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 450, + "id": 432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5219:1:0", + "src": "5169:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -7049,21 +6725,21 @@ }, "value": "2" }, - "src": "5205:15:0", + "src": "5155:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5201:19:0", + "src": "5151:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 453, + "id": 435, "nodeType": "ExpressionStatement", - "src": "5201:19:0" + "src": "5151:19:0" } ] }, @@ -7073,19 +6749,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 438, + "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 436, + "id": 418, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5161:1:0", + "referencedDeclaration": 406, + "src": "5111:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7095,31 +6771,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 437, + "id": 419, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "5165:1:0", + "referencedDeclaration": 403, + "src": "5115:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5161:5:0", + "src": "5111:5:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 455, + "id": 437, "nodeType": "WhileStatement", - "src": "5154:77:0" + "src": "5104:77:0" } ] }, "documentation": null, - "id": 457, + "id": 439, "implemented": true, "kind": "function", "modifiers": [], @@ -7127,18 +6803,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 419, + "id": 401, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 418, + "id": 400, "mutability": "mutable", "name": "x", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 457, - "src": "5051:9:0", + "scope": 439, + "src": "5001:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7146,10 +6822,10 @@ "typeString": "uint256" }, "typeName": { - "id": 417, + "id": 399, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5051:7:0", + "src": "5001:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7159,21 +6835,21 @@ "visibility": "internal" } ], - "src": "5050:11:0" + "src": "5000:11:0" }, "returnParameters": { - "id": 422, + "id": 404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 421, + "id": 403, "mutability": "mutable", "name": "y", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 457, - "src": "5085:9:0", + "scope": 439, + "src": "5035:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7181,10 +6857,10 @@ "typeString": "uint256" }, "typeName": { - "id": 420, + "id": 402, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5085:7:0", + "src": "5035:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7194,29 +6870,29 @@ "visibility": "internal" } ], - "src": "5084:11:0" + "src": "5034:11:0" }, - "scope": 458, - "src": "5037:200:0", + "scope": 440, + "src": "4987:200:0", "stateMutability": "view", "virtual": false, "visibility": "internal" } ], - "scope": 459, - "src": "326:4913:0" + "scope": 441, + "src": "326:4863:0" } ], - "src": "77:5163:0" + "src": "77:5113:0" }, "legacyAST": { "absolutePath": "/Users/patrick/code/dungeons-and-dragons-nft/contracts/DungeonsAndDragonsCharacter.sol", "exportedSymbols": { "DungeonsAndDragonsCharacter": [ - 458 + 440 ] }, - "id": 459, + "id": 441, "nodeType": "SourceUnit", "nodes": [ { @@ -7235,8 +6911,8 @@ "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol", "id": 2, "nodeType": "ImportDirective", - "scope": 459, - "sourceUnit": 2348, + "scope": 441, + "sourceUnit": 2232, "src": "102:57:0", "symbolAliases": [], "unitAlias": "" @@ -7246,8 +6922,8 @@ "file": "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol", "id": 3, "nodeType": "ImportDirective", - "scope": 459, - "sourceUnit": 737, + "scope": 441, + "sourceUnit": 621, "src": "160:59:0", "symbolAliases": [], "unitAlias": "" @@ -7257,8 +6933,8 @@ "file": "@openzeppelin/contracts/access/Ownable.sol", "id": 4, "nodeType": "ImportDirective", - "scope": 459, - "sourceUnit": 1153, + "scope": 441, + "sourceUnit": 1037, "src": "220:52:0", "symbolAliases": [], "unitAlias": "" @@ -7268,8 +6944,8 @@ "file": "@openzeppelin/contracts/utils/Strings.sol", "id": 5, "nodeType": "ImportDirective", - "scope": 459, - "sourceUnit": 3672, + "scope": 441, + "sourceUnit": 3556, "src": "273:51:0", "symbolAliases": [], "unitAlias": "" @@ -7284,10 +6960,10 @@ "id": 6, "name": "ERC721", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2347, + "referencedDeclaration": 2231, "src": "366:6:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC721_$2347", + "typeIdentifier": "t_contract$_ERC721_$2231", "typeString": "contract ERC721" } }, @@ -7302,10 +6978,10 @@ "id": 8, "name": "VRFConsumerBase", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 736, + "referencedDeclaration": 620, "src": "374:15:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_VRFConsumerBase_$736", + "typeIdentifier": "t_contract$_VRFConsumerBase_$620", "typeString": "contract VRFConsumerBase" } }, @@ -7320,10 +6996,10 @@ "id": 10, "name": "Ownable", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1152, + "referencedDeclaration": 1036, "src": "391:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Ownable_$1152", + "typeIdentifier": "t_contract$_Ownable_$1036", "typeString": "contract Ownable" } }, @@ -7333,33 +7009,33 @@ } ], "contractDependencies": [ - 736, - 786, - 1043, - 1152, - 1208, - 1220, + 620, + 670, + 927, + 1036, + 1092, + 1104, + 2231, 2347, - 2463, - 2494, - 2521 + 2378, + 2405 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 458, + "id": 440, "linearizedBaseContracts": [ - 458, - 1152, - 736, - 786, + 440, + 1036, + 620, + 670, + 2231, + 2378, + 2405, 2347, - 2494, - 2521, - 2463, - 1208, - 1220, - 1043 + 1092, + 1104, + 927 ], "name": "DungeonsAndDragonsCharacter", "nodeType": "ContractDefinition", @@ -7371,10 +7047,10 @@ "id": 12, "name": "SafeMath", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1416, + "referencedDeclaration": 1300, "src": "411:8:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$1416", + "typeIdentifier": "t_contract$_SafeMath_$1300", "typeString": "library SafeMath" } }, @@ -7398,10 +7074,10 @@ "id": 15, "name": "Strings", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3671, + "referencedDeclaration": 3555, "src": "443:7:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Strings_$3671", + "typeIdentifier": "t_contract$_Strings_$3555", "typeString": "library Strings" } }, @@ -7425,7 +7101,7 @@ "name": "keyHash", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "468:24:0", "stateVariable": true, "storageLocation": "default", @@ -7453,7 +7129,7 @@ "name": "fee", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "498:20:0", "stateVariable": true, "storageLocation": "default", @@ -7482,7 +7158,7 @@ "name": "randomResult", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "524:27:0", "stateVariable": true, "storageLocation": "default", @@ -7511,7 +7187,7 @@ "name": "VRFCoordinator", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "557:29:0", "stateVariable": true, "storageLocation": "default", @@ -7541,7 +7217,7 @@ "name": "LinkToken", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "651:24:0", "stateVariable": true, "storageLocation": "default", @@ -7794,7 +7470,7 @@ ], "name": "Character", "nodeType": "StructDefinition", - "scope": 458, + "scope": 440, "src": "742:236:0", "visibility": "public" }, @@ -7806,7 +7482,7 @@ "name": "characters", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "984:29:0", "stateVariable": true, "storageLocation": "default", @@ -7846,7 +7522,7 @@ "name": "requestToCharacterName", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "1020:49:0", "stateVariable": true, "storageLocation": "default", @@ -7893,7 +7569,7 @@ "name": "requestToSender", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "1075:43:0", "stateVariable": true, "storageLocation": "default", @@ -7941,7 +7617,7 @@ "name": "requestToTokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 458, + "scope": 440, "src": "1124:44:0", "stateVariable": true, "storageLocation": "default", @@ -8256,7 +7932,7 @@ "id": 60, "nodeType": "StructuredDocumentation", "src": "1175:340:0", - "text": "Constructor inherits VRFConsumerBase\n * Network: Rinkeby\nChainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\nLINK token address: 0xa36085f69e2889c224210f603d836748e7dc0088\nKey Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311" + "text": "Constructor inherits VRFConsumerBase\n * Network: Rinkeby\nChainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B\nLINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709\nKey Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311" }, "id": 98, "implemented": true, @@ -8298,10 +7974,10 @@ "name": "VRFConsumerBase", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 736, + "referencedDeclaration": 620, "src": "1618:15:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_VRFConsumerBase_$736_$", + "typeIdentifier": "t_type$_t_contract$_VRFConsumerBase_$620_$", "typeString": "type(contract VRFConsumerBase)" } }, @@ -8354,10 +8030,10 @@ "name": "ERC721", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2347, + "referencedDeclaration": 2231, "src": "1671:6:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC721_$2347_$", + "typeIdentifier": "t_type$_t_contract$_ERC721_$2231_$", "typeString": "type(contract ERC721)" } }, @@ -8467,7 +8143,7 @@ "parameters": [], "src": "1720:0:0" }, - "scope": 458, + "scope": 440, "src": "1520:352:0", "stateMutability": "nonpayable", "virtual": false, @@ -8509,7 +8185,7 @@ "referencedDeclaration": -28, "src": "2060:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$458", + "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$440", "typeString": "contract DungeonsAndDragonsCharacter" } } @@ -8517,7 +8193,7 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$458", + "typeIdentifier": "t_contract$_DungeonsAndDragonsCharacter_$440", "typeString": "contract DungeonsAndDragonsCharacter" } ], @@ -8572,10 +8248,10 @@ "name": "LINK", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 690, + "referencedDeclaration": 574, "src": "2037:4:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_LinkTokenInterface_$881", + "typeIdentifier": "t_contract$_LinkTokenInterface_$765", "typeString": "contract LinkTokenInterface" } }, @@ -8586,7 +8262,7 @@ "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", - "referencedDeclaration": 813, + "referencedDeclaration": 697, "src": "2037:14:0", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", @@ -8789,7 +8465,7 @@ "name": "requestRandomness", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, + "referencedDeclaration": 572, "src": "2172:17:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", @@ -9104,7 +8780,7 @@ ], "src": "1996:9:0" }, - "scope": 458, + "scope": 440, "src": "1878:475:0", "stateMutability": "nonpayable", "virtual": false, @@ -9145,7 +8821,7 @@ "name": "tokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1647, + "referencedDeclaration": 1531, "src": "2450:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", @@ -9253,7 +8929,7 @@ ], "src": "2417:15:0" }, - "scope": 458, + "scope": 440, "src": "2359:115:0", "stateMutability": "view", "virtual": false, @@ -9281,7 +8957,7 @@ "name": "_msgSender", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1031, + "referencedDeclaration": 915, "src": "2600:10:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", @@ -9332,7 +9008,7 @@ "name": "_isApprovedOrOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1980, + "referencedDeclaration": 1864, "src": "2581:18:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", @@ -9463,7 +9139,7 @@ "name": "_setTokenURI", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2244, + "referencedDeclaration": 2128, "src": "2707:12:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", @@ -9569,7 +9245,7 @@ "parameters": [], "src": "2550:0:0" }, - "scope": 458, + "scope": 440, "src": "2480:266:0", "stateMutability": "nonpayable", "virtual": false, @@ -9577,12 +9253,12 @@ }, { "baseFunctions": [ - 633 + 517 ], "body": { - "id": 294, + "id": 276, "nodeType": "Block", - "src": "2858:896:0", + "src": "2858:846:0", "statements": [ { "assignments": [ @@ -9596,7 +9272,7 @@ "name": "newId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, + "scope": 276, "src": "2868:13:0", "stateVariable": false, "storageLocation": "default", @@ -9663,7 +9339,7 @@ "name": "strength", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, + "scope": 276, "src": "2911:16:0", "stateVariable": false, "storageLocation": "default", @@ -9685,7 +9361,7 @@ "visibility": "internal" } ], - "id": 200, + "id": 197, "initialValue": { "argumentTypes": null, "components": [ @@ -9695,7 +9371,112 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 193, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "2931:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "313030", + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2946:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "2931:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 196, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2930:20:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2911:39:0" + }, + { + "assignments": [ + 199 + ], + "declarations": [ + { + "constant": false, + "id": 199, + "mutability": "mutable", + "name": "dexterity", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 276, + "src": "2960:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { "id": 198, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2960:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 207, + "initialValue": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -9709,19 +9490,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 195, + "id": 202, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 193, + "id": 200, "name": "randomNumber", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 182, - "src": "2932:12:0", + "src": "2982:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9729,443 +9510,17 @@ }, "nodeType": "BinaryOperation", "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "313030", - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2947:3:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_100_by_1", - "typeString": "int_const 100" - }, - "value": "100" - }, - "src": "2932:18:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 196, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2931:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3138", - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2954:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "src": "2931:25:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 199, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2930:27:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2911:46:0" - }, - { - "assignments": [ - 202 - ], - "declarations": [ - { - "constant": false, - "id": 202, - "mutability": "mutable", - "name": "dexterity", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 294, - "src": "2967:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 201, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2967:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 213, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 211, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 203, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "2990:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3130303030", - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3005:5:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10000" - }, - "src": "2990:20:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 206, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2989:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "argumentTypes": null, - "hexValue": "313030", - "id": 207, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3014:3:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_100_by_1", - "typeString": "int_const 100" - }, - "value": "100" - }, - "src": "2989:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 209, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2988:30:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3138", - "id": 210, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3021:2:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "src": "2988:35:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 212, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2987:37:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2967:57:0" - }, - { - "assignments": [ - 215 - ], - "declarations": [ - { - "constant": false, - "id": 215, - "mutability": "mutable", - "name": "constitution", - "nodeType": "VariableDeclaration", - "overrides": null, - "scope": 294, - "src": "3034:20:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 214, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3034:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 226, - "initialValue": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 216, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3060:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31303030303030", - "id": 217, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3075:7:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1000000" - }, - "src": "3060:22:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 219, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3059:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", "rightExpression": { "argumentTypes": null, "hexValue": "3130303030", - "id": 220, + "id": 201, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3086:5:0", + "src": "2997:5:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10000_by_1", @@ -10173,83 +9528,83 @@ }, "value": "10000" }, - "src": "3059:32:0", + "src": "2982:20:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 222, + "id": 203, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3058:34:0", + "src": "2981:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "hexValue": "3138", - "id": 223, + "hexValue": "313030", + "id": 204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3095:2:0", + "src": "3006:3:0", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" }, - "value": "18" + "value": "100" }, - "src": "3058:39:0", + "src": "2981:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 225, + "id": 206, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3057:41:0", + "src": "2980:31:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3034:64:0" + "src": "2960:51:0" }, { "assignments": [ - 228 + 209 ], "declarations": [ { "constant": false, - "id": 228, + "id": 209, "mutability": "mutable", - "name": "intelligence", + "name": "constitution", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, - "src": "3108:20:0", + "scope": 276, + "src": "3021:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10257,10 +9612,10 @@ "typeString": "uint256" }, "typeName": { - "id": 227, + "id": 208, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3108:7:0", + "src": "3021:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10270,7 +9625,7 @@ "visibility": "internal" } ], - "id": 239, + "id": 217, "initialValue": { "argumentTypes": null, "components": [ @@ -10280,7 +9635,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 237, + "id": 215, "isConstant": false, "isLValue": false, "isPure": false, @@ -10294,91 +9649,37 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 234, + "id": 212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 229, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3134:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "313030303030303030", - "id": 230, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3149:9:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_100000000_by_1", - "typeString": "int_const 100000000" - }, - "value": "100000000" - }, - "src": "3134:24:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 232, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3133:26:0", + "id": 210, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3046:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "/", + "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "31303030303030", - "id": 233, + "id": 211, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3162:7:0", + "src": "3061:7:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1000000_by_1", @@ -10386,83 +9687,83 @@ }, "value": "1000000" }, - "src": "3133:36:0", + "src": "3046:22:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 235, + "id": 213, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3132:38:0", + "src": "3045:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "hexValue": "3138", - "id": 236, + "hexValue": "3130303030", + "id": 214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3173:2:0", + "src": "3072:5:0", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" }, - "value": "18" + "value": "10000" }, - "src": "3132:43:0", + "src": "3045:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 238, + "id": 216, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3131:45:0", + "src": "3044:35:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3108:68:0" + "src": "3021:58:0" }, { "assignments": [ - 241 + 219 ], "declarations": [ { "constant": false, - "id": 241, + "id": 219, "mutability": "mutable", - "name": "wisdom", + "name": "intelligence", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, - "src": "3186:14:0", + "scope": 276, + "src": "3089:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10470,10 +9771,10 @@ "typeString": "uint256" }, "typeName": { - "id": 240, + "id": 218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3186:7:0", + "src": "3089:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10483,7 +9784,7 @@ "visibility": "internal" } ], - "id": 252, + "id": 227, "initialValue": { "argumentTypes": null, "components": [ @@ -10493,7 +9794,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 250, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, @@ -10507,91 +9808,37 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 247, + "id": 222, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 242, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3206:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3130303030303030303030", - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3221:11:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10000000000_by_1", - "typeString": "int_const 10000000000" - }, - "value": "10000000000" - }, - "src": "3206:26:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 245, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3205:28:0", + "id": 220, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3114:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "/", + "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "313030303030303030", - "id": 246, + "id": 221, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3236:9:0", + "src": "3129:9:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_100000000_by_1", @@ -10599,83 +9846,83 @@ }, "value": "100000000" }, - "src": "3205:40:0", + "src": "3114:24:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 248, + "id": 223, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3204:42:0", + "src": "3113:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "hexValue": "3138", - "id": 249, + "hexValue": "31303030303030", + "id": 224, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3249:2:0", + "src": "3142:7:0", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" }, - "value": "18" + "value": "1000000" }, - "src": "3204:47:0", + "src": "3113:36:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 251, + "id": 226, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3203:49:0", + "src": "3112:39:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3186:66:0" + "src": "3089:62:0" }, { "assignments": [ - 254 + 229 ], "declarations": [ { "constant": false, - "id": 254, + "id": 229, "mutability": "mutable", - "name": "charisma", + "name": "wisdom", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, - "src": "3262:16:0", + "scope": 276, + "src": "3161:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10683,10 +9930,10 @@ "typeString": "uint256" }, "typeName": { - "id": 253, + "id": 228, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3262:7:0", + "src": "3161:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10696,7 +9943,7 @@ "visibility": "internal" } ], - "id": 265, + "id": 237, "initialValue": { "argumentTypes": null, "components": [ @@ -10706,7 +9953,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 263, + "id": 235, "isConstant": false, "isLValue": false, "isPure": false, @@ -10720,91 +9967,37 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 260, + "id": 232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 255, - "name": "randomNumber", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "3284:12:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31303030303030303030303030", - "id": 256, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3299:13:0", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000_by_1", - "typeString": "int_const 1000000000000" - }, - "value": "1000000000000" - }, - "src": "3284:28:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 258, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3283:30:0", + "id": 230, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3180:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "/", + "operator": "%", "rightExpression": { "argumentTypes": null, "hexValue": "3130303030303030303030", - "id": 259, + "id": 231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3316:11:0", + "src": "3195:11:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10000000000_by_1", @@ -10812,83 +10005,83 @@ }, "value": "10000000000" }, - "src": "3283:44:0", + "src": "3180:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 261, + "id": 233, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3282:46:0", + "src": "3179:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": "%", + "operator": "/", "rightExpression": { "argumentTypes": null, - "hexValue": "3138", - "id": 262, + "hexValue": "313030303030303030", + "id": 234, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3343:2:0", + "src": "3210:9:0", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" }, - "value": "18" + "value": "100000000" }, - "src": "3282:63:0", + "src": "3179:40:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 264, + "id": 236, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3281:65:0", + "src": "3178:43:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3262:84:0" + "src": "3161:60:0" }, { "assignments": [ - 267 + 239 ], "declarations": [ { "constant": false, - "id": 267, + "id": 239, "mutability": "mutable", - "name": "experience", + "name": "charisma", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 294, - "src": "3356:18:0", + "scope": 276, + "src": "3231:16:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -10896,10 +10089,10 @@ "typeString": "uint256" }, "typeName": { - "id": 266, + "id": 238, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3356:7:0", + "src": "3231:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10909,18 +10102,177 @@ "visibility": "internal" } ], - "id": 269, + "id": 247, + "initialValue": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 240, + "name": "randomNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3252:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030303030303030303030", + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3267:13:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000_by_1", + "typeString": "int_const 1000000000000" + }, + "value": "1000000000000" + }, + "src": "3252:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 243, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3251:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130303030303030303030", + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3284:11:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000_by_1", + "typeString": "int_const 10000000000" + }, + "value": "10000000000" + }, + "src": "3251:44:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 246, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3250:46:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3231:65:0" + }, + { + "assignments": [ + 249 + ], + "declarations": [ + { + "constant": false, + "id": 249, + "mutability": "mutable", + "name": "experience", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 276, + "src": "3306:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 248, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3306:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 251, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 268, + "id": 250, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3377:1:0", + "src": "3327:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -10929,7 +10281,7 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3356:22:0" + "src": "3306:22:0" }, { "expression": { @@ -10940,12 +10292,12 @@ "arguments": [ { "argumentTypes": null, - "id": 274, + "id": 256, "name": "strength", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 192, - "src": "3445:8:0", + "src": "3395:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10953,12 +10305,12 @@ }, { "argumentTypes": null, - "id": 275, + "id": 257, "name": "dexterity", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 202, - "src": "3471:9:0", + "referencedDeclaration": 199, + "src": "3421:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10966,12 +10318,12 @@ }, { "argumentTypes": null, - "id": 276, + "id": 258, "name": "constitution", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 215, - "src": "3498:12:0", + "referencedDeclaration": 209, + "src": "3448:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10979,12 +10331,12 @@ }, { "argumentTypes": null, - "id": 277, + "id": 259, "name": "intelligence", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 228, - "src": "3528:12:0", + "referencedDeclaration": 219, + "src": "3478:12:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -10992,12 +10344,12 @@ }, { "argumentTypes": null, - "id": 278, + "id": 260, "name": "wisdom", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 241, - "src": "3558:6:0", + "referencedDeclaration": 229, + "src": "3508:6:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11005,12 +10357,12 @@ }, { "argumentTypes": null, - "id": 279, + "id": 261, "name": "charisma", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "3582:8:0", + "referencedDeclaration": 239, + "src": "3532:8:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11018,12 +10370,12 @@ }, { "argumentTypes": null, - "id": 280, + "id": 262, "name": "experience", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 267, - "src": "3608:10:0", + "referencedDeclaration": 249, + "src": "3558:10:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11033,26 +10385,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 281, + "id": 263, "name": "requestToCharacterName", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51, - "src": "3636:22:0", + "src": "3586:22:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", "typeString": "mapping(bytes32 => string storage ref)" } }, - "id": 283, + "id": 265, "indexExpression": { "argumentTypes": null, - "id": 282, + "id": 264, "name": "requestId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, - "src": "3659:9:0", + "src": "3609:9:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -11063,7 +10415,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3636:33:0", + "src": "3586:33:0", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -11105,18 +10457,18 @@ "typeString": "string storage ref" } ], - "id": 273, + "id": 255, "name": "Character", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 44, - "src": "3418:9:0", + "src": "3368:9:0", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Character_$44_storage_ptr_$", "typeString": "type(struct DungeonsAndDragonsCharacter.Character storage pointer)" } }, - "id": 284, + "id": 266, "isConstant": false, "isLValue": false, "isPure": false, @@ -11124,7 +10476,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3418:265:0", + "src": "3368:265:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_memory_ptr", @@ -11141,18 +10493,18 @@ ], "expression": { "argumentTypes": null, - "id": 270, + "id": 252, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "3389:10:0", + "src": "3339:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 272, + "id": 254, "isConstant": false, "isLValue": false, "isPure": false, @@ -11160,13 +10512,13 @@ "memberName": "push", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3389:15:0", + "src": "3339:15:0", "typeDescriptions": { "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_Character_$44_storage_$returns$__$", "typeString": "function (struct DungeonsAndDragonsCharacter.Character storage ref)" } }, - "id": 285, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -11174,16 +10526,16 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3389:304:0", + "src": "3339:304:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 286, + "id": 268, "nodeType": "ExpressionStatement", - "src": "3389:304:0" + "src": "3339:304:0" }, { "expression": { @@ -11193,26 +10545,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 288, + "id": 270, "name": "requestToSender", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 55, - "src": "3713:15:0", + "src": "3663:15:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, - "id": 290, + "id": 272, "indexExpression": { "argumentTypes": null, - "id": 289, + "id": 271, "name": "requestId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 180, - "src": "3729:9:0", + "src": "3679:9:0", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -11223,7 +10575,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3713:26:0", + "src": "3663:26:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -11231,12 +10583,12 @@ }, { "argumentTypes": null, - "id": 291, + "id": 273, "name": "newId", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 187, - "src": "3741:5:0", + "src": "3691:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11254,21 +10606,21 @@ "typeString": "uint256" } ], - "id": 287, + "id": 269, "name": "_safeMint", "nodeType": "Identifier", "overloadedDeclarations": [ - 1995, - 2024 + 1879, + 1908 ], - "referencedDeclaration": 1995, - "src": "3703:9:0", + "referencedDeclaration": 1879, + "src": "3653:9:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, - "id": 292, + "id": 274, "isConstant": false, "isLValue": false, "isPure": false, @@ -11276,21 +10628,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3703:44:0", + "src": "3653:44:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 293, + "id": 275, "nodeType": "ExpressionStatement", - "src": "3703:44:0" + "src": "3653:44:0" } ] }, "documentation": null, - "id": 295, + "id": 277, "implemented": true, "kind": "function", "modifiers": [], @@ -11313,7 +10665,7 @@ "name": "requestId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 295, + "scope": 277, "src": "2779:17:0", "stateVariable": false, "storageLocation": "default", @@ -11341,7 +10693,7 @@ "name": "randomNumber", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 295, + "scope": 277, "src": "2798:20:0", "stateVariable": false, "storageLocation": "default", @@ -11371,17 +10723,17 @@ "parameters": [], "src": "2858:0:0" }, - "scope": 458, - "src": "2752:1002:0", + "scope": 440, + "src": "2752:952:0", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" }, { "body": { - "id": 309, + "id": 291, "nodeType": "Block", - "src": "3825:60:0", + "src": "3775:60:0", "statements": [ { "expression": { @@ -11393,26 +10745,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 303, + "id": 285, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "3847:10:0", + "src": "3797:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 305, + "id": 287, "indexExpression": { "argumentTypes": null, - "id": 304, + "id": 286, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "3858:7:0", + "referencedDeclaration": 279, + "src": "3808:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11423,13 +10775,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3847:19:0", + "src": "3797:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 306, + "id": 288, "isConstant": false, "isLValue": true, "isPure": false, @@ -11437,7 +10789,7 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "3847:30:0", + "src": "3797:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11451,18 +10803,18 @@ "typeString": "uint256" } ], - "id": 302, + "id": 284, "name": "sqrt", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3842:4:0", + "referencedDeclaration": 439, + "src": "3792:4:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 307, + "id": 289, "isConstant": false, "isLValue": false, "isPure": false, @@ -11470,23 +10822,23 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3842:36:0", + "src": "3792:36:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 301, - "id": 308, + "functionReturnParameters": 283, + "id": 290, "nodeType": "Return", - "src": "3835:43:0" + "src": "3785:43:0" } ] }, "documentation": null, "functionSelector": "86481d40", - "id": 310, + "id": 292, "implemented": true, "kind": "function", "modifiers": [], @@ -11494,18 +10846,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 298, + "id": 280, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 297, + "id": 279, "mutability": "mutable", "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 310, - "src": "3778:15:0", + "scope": 292, + "src": "3728:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11513,10 +10865,10 @@ "typeString": "uint256" }, "typeName": { - "id": 296, + "id": 278, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3778:7:0", + "src": "3728:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11526,21 +10878,21 @@ "visibility": "internal" } ], - "src": "3777:17:0" + "src": "3727:17:0" }, "returnParameters": { - "id": 301, + "id": 283, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 300, + "id": 282, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 310, - "src": "3816:7:0", + "scope": 292, + "src": "3766:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -11548,10 +10900,10 @@ "typeString": "uint256" }, "typeName": { - "id": 299, + "id": 281, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3816:7:0", + "src": "3766:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11561,19 +10913,19 @@ "visibility": "internal" } ], - "src": "3815:9:0" + "src": "3765:9:0" }, - "scope": 458, - "src": "3760:125:0", + "scope": 440, + "src": "3710:125:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 365, + "id": 347, "nodeType": "Block", - "src": "4087:351:0", + "src": "4037:351:0", "statements": [ { "expression": { @@ -11585,26 +10937,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 323, + "id": 305, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4118:10:0", + "src": "4068:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 325, + "id": 307, "indexExpression": { "argumentTypes": null, - "id": 324, + "id": 306, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4129:7:0", + "referencedDeclaration": 294, + "src": "4079:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11615,13 +10967,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:19:0", + "src": "4068:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 326, + "id": 308, "isConstant": false, "isLValue": true, "isPure": false, @@ -11629,7 +10981,7 @@ "memberName": "name", "nodeType": "MemberAccess", "referencedDeclaration": 43, - "src": "4118:24:0", + "src": "4068:24:0", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -11641,7 +10993,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 355, + "id": 337, "isConstant": false, "isLValue": false, "isPure": false, @@ -11652,7 +11004,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 350, + "id": 332, "isConstant": false, "isLValue": false, "isPure": false, @@ -11663,7 +11015,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 345, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, @@ -11674,7 +11026,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 340, + "id": 322, "isConstant": false, "isLValue": false, "isPure": false, @@ -11685,7 +11037,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 335, + "id": 317, "isConstant": false, "isLValue": false, "isPure": false, @@ -11696,26 +11048,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 327, + "id": 309, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4156:10:0", + "src": "4106:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 329, + "id": 311, "indexExpression": { "argumentTypes": null, - "id": 328, + "id": 310, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4167:7:0", + "referencedDeclaration": 294, + "src": "4117:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11726,13 +11078,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4156:19:0", + "src": "4106:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 330, + "id": 312, "isConstant": false, "isLValue": true, "isPure": false, @@ -11740,7 +11092,7 @@ "memberName": "strength", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "4156:28:0", + "src": "4106:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11754,26 +11106,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 331, + "id": 313, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4187:10:0", + "src": "4137:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 333, + "id": 315, "indexExpression": { "argumentTypes": null, - "id": 332, + "id": 314, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4198:7:0", + "referencedDeclaration": 294, + "src": "4148:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11784,13 +11136,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4187:19:0", + "src": "4137:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 334, + "id": 316, "isConstant": false, "isLValue": true, "isPure": false, @@ -11798,13 +11150,13 @@ "memberName": "dexterity", "nodeType": "MemberAccess", "referencedDeclaration": 31, - "src": "4187:29:0", + "src": "4137:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:60:0", + "src": "4106:60:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11818,26 +11170,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 336, + "id": 318, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4219:10:0", + "src": "4169:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 338, + "id": 320, "indexExpression": { "argumentTypes": null, - "id": 337, + "id": 319, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4230:7:0", + "referencedDeclaration": 294, + "src": "4180:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11848,13 +11200,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4219:19:0", + "src": "4169:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 339, + "id": 321, "isConstant": false, "isLValue": true, "isPure": false, @@ -11862,13 +11214,13 @@ "memberName": "constitution", "nodeType": "MemberAccess", "referencedDeclaration": 33, - "src": "4219:32:0", + "src": "4169:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:95:0", + "src": "4106:95:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11882,26 +11234,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 341, + "id": 323, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4254:10:0", + "src": "4204:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 343, + "id": 325, "indexExpression": { "argumentTypes": null, - "id": 342, + "id": 324, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4265:7:0", + "referencedDeclaration": 294, + "src": "4215:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11912,13 +11264,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4254:19:0", + "src": "4204:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 344, + "id": 326, "isConstant": false, "isLValue": true, "isPure": false, @@ -11926,13 +11278,13 @@ "memberName": "intelligence", "nodeType": "MemberAccess", "referencedDeclaration": 35, - "src": "4254:32:0", + "src": "4204:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:130:0", + "src": "4106:130:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11946,26 +11298,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 346, + "id": 328, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4289:10:0", + "src": "4239:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 348, + "id": 330, "indexExpression": { "argumentTypes": null, - "id": 347, + "id": 329, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4300:7:0", + "referencedDeclaration": 294, + "src": "4250:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -11976,13 +11328,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4289:19:0", + "src": "4239:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 349, + "id": 331, "isConstant": false, "isLValue": true, "isPure": false, @@ -11990,13 +11342,13 @@ "memberName": "wisdom", "nodeType": "MemberAccess", "referencedDeclaration": 37, - "src": "4289:26:0", + "src": "4239:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:159:0", + "src": "4106:159:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12010,26 +11362,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 351, + "id": 333, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4318:10:0", + "src": "4268:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 353, + "id": 335, "indexExpression": { "argumentTypes": null, - "id": 352, + "id": 334, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4329:7:0", + "referencedDeclaration": 294, + "src": "4279:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12040,13 +11392,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4318:19:0", + "src": "4268:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 354, + "id": 336, "isConstant": false, "isLValue": true, "isPure": false, @@ -12054,13 +11406,13 @@ "memberName": "charisma", "nodeType": "MemberAccess", "referencedDeclaration": 39, - "src": "4318:28:0", + "src": "4268:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4156:190:0", + "src": "4106:190:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12071,12 +11423,12 @@ "arguments": [ { "argumentTypes": null, - "id": 357, + "id": 339, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4369:7:0", + "referencedDeclaration": 294, + "src": "4319:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12090,18 +11442,18 @@ "typeString": "uint256" } ], - "id": 356, + "id": 338, "name": "getLevel", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 310, - "src": "4360:8:0", + "referencedDeclaration": 292, + "src": "4310:8:0", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256) view returns (uint256)" } }, - "id": 358, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, @@ -12109,7 +11461,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4360:17:0", + "src": "4310:17:0", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -12122,26 +11474,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 359, + "id": 341, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4391:10:0", + "src": "4341:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 361, + "id": 343, "indexExpression": { "argumentTypes": null, - "id": 360, + "id": 342, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 312, - "src": "4402:7:0", + "referencedDeclaration": 294, + "src": "4352:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12152,13 +11504,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4391:19:0", + "src": "4341:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 362, + "id": 344, "isConstant": false, "isLValue": true, "isPure": false, @@ -12166,36 +11518,36 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "4391:30:0", + "src": "4341:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 363, + "id": 345, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4104:327:0", + "src": "4054:327:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_string_storage_$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(string storage ref,uint256,uint256,uint256)" } }, - "functionReturnParameters": 322, - "id": 364, + "functionReturnParameters": 304, + "id": 346, "nodeType": "Return", - "src": "4097:334:0" + "src": "4047:334:0" } ] }, "documentation": null, "functionSelector": "4f95b5f0", - "id": 366, + "id": 348, "implemented": true, "kind": "function", "modifiers": [], @@ -12203,18 +11555,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 313, + "id": 295, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 312, + "id": 294, "mutability": "mutable", "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "3921:15:0", + "scope": 348, + "src": "3871:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12222,10 +11574,10 @@ "typeString": "uint256" }, "typeName": { - "id": 311, + "id": 293, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3921:7:0", + "src": "3871:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12235,21 +11587,21 @@ "visibility": "internal" } ], - "src": "3920:17:0" + "src": "3870:17:0" }, "returnParameters": { - "id": 322, + "id": 304, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 315, + "id": 297, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "3996:13:0", + "scope": 348, + "src": "3946:13:0", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -12257,10 +11609,10 @@ "typeString": "string" }, "typeName": { - "id": 314, + "id": 296, "name": "string", "nodeType": "ElementaryTypeName", - "src": "3996:6:0", + "src": "3946:6:0", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -12271,13 +11623,13 @@ }, { "constant": false, - "id": 317, + "id": 299, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "4023:7:0", + "scope": 348, + "src": "3973:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12285,10 +11637,10 @@ "typeString": "uint256" }, "typeName": { - "id": 316, + "id": 298, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4023:7:0", + "src": "3973:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12299,13 +11651,13 @@ }, { "constant": false, - "id": 319, + "id": 301, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "4044:7:0", + "scope": 348, + "src": "3994:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12313,10 +11665,10 @@ "typeString": "uint256" }, "typeName": { - "id": 318, + "id": 300, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4044:7:0", + "src": "3994:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12327,13 +11679,13 @@ }, { "constant": false, - "id": 321, + "id": 303, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 366, - "src": "4065:7:0", + "scope": 348, + "src": "4015:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12341,10 +11693,10 @@ "typeString": "uint256" }, "typeName": { - "id": 320, + "id": 302, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4065:7:0", + "src": "4015:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12354,19 +11706,19 @@ "visibility": "internal" } ], - "src": "3982:100:0" + "src": "3932:100:0" }, - "scope": 458, - "src": "3891:547:0", + "scope": 440, + "src": "3841:547:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 415, + "id": 397, "nodeType": "Block", - "src": "4694:337:0", + "src": "4644:337:0", "statements": [ { "expression": { @@ -12378,26 +11730,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 385, + "id": 367, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4725:10:0", + "src": "4675:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 387, + "id": 369, "indexExpression": { "argumentTypes": null, - "id": 386, + "id": 368, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4736:7:0", + "referencedDeclaration": 350, + "src": "4686:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12408,13 +11760,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4725:19:0", + "src": "4675:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 388, + "id": 370, "isConstant": false, "isLValue": true, "isPure": false, @@ -12422,7 +11774,7 @@ "memberName": "strength", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "4725:28:0", + "src": "4675:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12434,26 +11786,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 389, + "id": 371, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4767:10:0", + "src": "4717:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 391, + "id": 373, "indexExpression": { "argumentTypes": null, - "id": 390, + "id": 372, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4778:7:0", + "referencedDeclaration": 350, + "src": "4728:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12464,13 +11816,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4767:19:0", + "src": "4717:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 392, + "id": 374, "isConstant": false, "isLValue": true, "isPure": false, @@ -12478,7 +11830,7 @@ "memberName": "dexterity", "nodeType": "MemberAccess", "referencedDeclaration": 31, - "src": "4767:29:0", + "src": "4717:29:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12490,26 +11842,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 393, + "id": 375, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4810:10:0", + "src": "4760:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 395, + "id": 377, "indexExpression": { "argumentTypes": null, - "id": 394, + "id": 376, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4821:7:0", + "referencedDeclaration": 350, + "src": "4771:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12520,13 +11872,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4810:19:0", + "src": "4760:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 396, + "id": 378, "isConstant": false, "isLValue": true, "isPure": false, @@ -12534,7 +11886,7 @@ "memberName": "constitution", "nodeType": "MemberAccess", "referencedDeclaration": 33, - "src": "4810:32:0", + "src": "4760:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12546,26 +11898,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 397, + "id": 379, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4856:10:0", + "src": "4806:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 399, + "id": 381, "indexExpression": { "argumentTypes": null, - "id": 398, + "id": 380, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4867:7:0", + "referencedDeclaration": 350, + "src": "4817:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12576,13 +11928,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4856:19:0", + "src": "4806:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 400, + "id": 382, "isConstant": false, "isLValue": true, "isPure": false, @@ -12590,7 +11942,7 @@ "memberName": "intelligence", "nodeType": "MemberAccess", "referencedDeclaration": 35, - "src": "4856:32:0", + "src": "4806:32:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12602,26 +11954,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 401, + "id": 383, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4902:10:0", + "src": "4852:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 403, + "id": 385, "indexExpression": { "argumentTypes": null, - "id": 402, + "id": 384, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4913:7:0", + "referencedDeclaration": 350, + "src": "4863:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12632,13 +11984,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4902:19:0", + "src": "4852:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 404, + "id": 386, "isConstant": false, "isLValue": true, "isPure": false, @@ -12646,7 +11998,7 @@ "memberName": "wisdom", "nodeType": "MemberAccess", "referencedDeclaration": 37, - "src": "4902:26:0", + "src": "4852:26:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12658,26 +12010,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 405, + "id": 387, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4942:10:0", + "src": "4892:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 407, + "id": 389, "indexExpression": { "argumentTypes": null, - "id": 406, + "id": 388, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4953:7:0", + "referencedDeclaration": 350, + "src": "4903:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12688,13 +12040,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4942:19:0", + "src": "4892:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 408, + "id": 390, "isConstant": false, "isLValue": true, "isPure": false, @@ -12702,7 +12054,7 @@ "memberName": "charisma", "nodeType": "MemberAccess", "referencedDeclaration": 39, - "src": "4942:28:0", + "src": "4892:28:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12714,26 +12066,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 409, + "id": 391, "name": "characters", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47, - "src": "4984:10:0", + "src": "4934:10:0", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Character_$44_storage_$dyn_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref[] storage ref" } }, - "id": 411, + "id": 393, "indexExpression": { "argumentTypes": null, - "id": 410, + "id": 392, "name": "tokenId", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "4995:7:0", + "referencedDeclaration": 350, + "src": "4945:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12744,13 +12096,13 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4984:19:0", + "src": "4934:19:0", "typeDescriptions": { "typeIdentifier": "t_struct$_Character_$44_storage", "typeString": "struct DungeonsAndDragonsCharacter.Character storage ref" } }, - "id": 412, + "id": 394, "isConstant": false, "isLValue": true, "isPure": false, @@ -12758,36 +12110,36 @@ "memberName": "experience", "nodeType": "MemberAccess", "referencedDeclaration": 41, - "src": "4984:30:0", + "src": "4934:30:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 413, + "id": 395, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4711:313:0", + "src": "4661:313:0", "typeDescriptions": { "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", "typeString": "tuple(uint256,uint256,uint256,uint256,uint256,uint256,uint256)" } }, - "functionReturnParameters": 384, - "id": 414, + "functionReturnParameters": 366, + "id": 396, "nodeType": "Return", - "src": "4704:320:0" + "src": "4654:320:0" } ] }, "documentation": null, "functionSelector": "6fe0c046", - "id": 416, + "id": 398, "implemented": true, "kind": "function", "modifiers": [], @@ -12795,18 +12147,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 369, + "id": 351, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 368, + "id": 350, "mutability": "mutable", "name": "tokenId", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4471:15:0", + "scope": 398, + "src": "4421:15:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12814,10 +12166,10 @@ "typeString": "uint256" }, "typeName": { - "id": 367, + "id": 349, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4471:7:0", + "src": "4421:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12827,21 +12179,21 @@ "visibility": "internal" } ], - "src": "4470:17:0" + "src": "4420:17:0" }, "returnParameters": { - "id": 384, + "id": 366, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 371, + "id": 353, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4546:7:0", + "scope": 398, + "src": "4496:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12849,10 +12201,10 @@ "typeString": "uint256" }, "typeName": { - "id": 370, + "id": 352, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4546:7:0", + "src": "4496:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12863,13 +12215,13 @@ }, { "constant": false, - "id": 373, + "id": 355, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4567:7:0", + "scope": 398, + "src": "4517:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12877,10 +12229,10 @@ "typeString": "uint256" }, "typeName": { - "id": 372, + "id": 354, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4567:7:0", + "src": "4517:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12891,13 +12243,13 @@ }, { "constant": false, - "id": 375, + "id": 357, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4588:7:0", + "scope": 398, + "src": "4538:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12905,10 +12257,10 @@ "typeString": "uint256" }, "typeName": { - "id": 374, + "id": 356, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4588:7:0", + "src": "4538:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12919,13 +12271,13 @@ }, { "constant": false, - "id": 377, + "id": 359, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4609:7:0", + "scope": 398, + "src": "4559:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12933,10 +12285,10 @@ "typeString": "uint256" }, "typeName": { - "id": 376, + "id": 358, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4609:7:0", + "src": "4559:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12947,13 +12299,13 @@ }, { "constant": false, - "id": 379, + "id": 361, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4630:7:0", + "scope": 398, + "src": "4580:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12961,10 +12313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 378, + "id": 360, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4630:7:0", + "src": "4580:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -12975,13 +12327,13 @@ }, { "constant": false, - "id": 381, + "id": 363, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4651:7:0", + "scope": 398, + "src": "4601:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -12989,10 +12341,10 @@ "typeString": "uint256" }, "typeName": { - "id": 380, + "id": 362, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4651:7:0", + "src": "4601:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13003,13 +12355,13 @@ }, { "constant": false, - "id": 383, + "id": 365, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 416, - "src": "4672:7:0", + "scope": 398, + "src": "4622:7:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13017,10 +12369,10 @@ "typeString": "uint256" }, "typeName": { - "id": 382, + "id": 364, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4672:7:0", + "src": "4622:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13030,34 +12382,34 @@ "visibility": "internal" } ], - "src": "4532:157:0" + "src": "4482:157:0" }, - "scope": 458, - "src": "4444:587:0", + "scope": 440, + "src": "4394:587:0", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { - "id": 456, + "id": 438, "nodeType": "Block", - "src": "5096:141:0", + "src": "5046:141:0", "statements": [ { "assignments": [ - 424 + 406 ], "declarations": [ { "constant": false, - "id": 424, + "id": 406, "mutability": "mutable", "name": "z", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 456, - "src": "5106:9:0", + "scope": 438, + "src": "5056:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13065,10 +12417,10 @@ "typeString": "uint256" }, "typeName": { - "id": 423, + "id": 405, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5106:7:0", + "src": "5056:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13078,14 +12430,14 @@ "visibility": "internal" } ], - "id": 431, + "id": 413, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 430, + "id": 412, "isConstant": false, "isLValue": false, "isPure": false, @@ -13099,19 +12451,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 427, + "id": 409, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 425, + "id": 407, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "5119:1:0", + "referencedDeclaration": 400, + "src": "5069:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13122,14 +12474,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 426, + "id": 408, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5123:1:0", + "src": "5073:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -13137,21 +12489,21 @@ }, "value": "1" }, - "src": "5119:5:0", + "src": "5069:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 428, + "id": 410, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5118:7:0", + "src": "5068:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13162,14 +12514,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 429, + "id": 411, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5128:1:0", + "src": "5078:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -13177,31 +12529,31 @@ }, "value": "2" }, - "src": "5118:11:0", + "src": "5068:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "5106:23:0" + "src": "5056:23:0" }, { "expression": { "argumentTypes": null, - "id": 434, + "id": 416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 432, + "id": 414, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "5139:1:0", + "referencedDeclaration": 403, + "src": "5089:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13211,49 +12563,49 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 433, + "id": 415, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "5143:1:0", + "referencedDeclaration": 400, + "src": "5093:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5139:5:0", + "src": "5089:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 435, + "id": 417, "nodeType": "ExpressionStatement", - "src": "5139:5:0" + "src": "5089:5:0" }, { "body": { - "id": 454, + "id": 436, "nodeType": "Block", - "src": "5168:63:0", + "src": "5118:63:0", "statements": [ { "expression": { "argumentTypes": null, - "id": 441, + "id": 423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 439, + "id": 421, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "5182:1:0", + "referencedDeclaration": 403, + "src": "5132:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13263,43 +12615,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 440, + "id": 422, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5186:1:0", + "referencedDeclaration": 406, + "src": "5136:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5182:5:0", + "src": "5132:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 442, + "id": 424, "nodeType": "ExpressionStatement", - "src": "5182:5:0" + "src": "5132:5:0" }, { "expression": { "argumentTypes": null, - "id": 452, + "id": 434, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 443, + "id": 425, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5201:1:0", + "referencedDeclaration": 406, + "src": "5151:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13313,7 +12665,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 451, + "id": 433, "isConstant": false, "isLValue": false, "isPure": false, @@ -13327,7 +12679,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 448, + "id": 430, "isConstant": false, "isLValue": false, "isPure": false, @@ -13338,19 +12690,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 446, + "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 444, + "id": 426, "name": "x", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "5206:1:0", + "referencedDeclaration": 400, + "src": "5156:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13360,18 +12712,18 @@ "operator": "/", "rightExpression": { "argumentTypes": null, - "id": 445, + "id": 427, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5210:1:0", + "referencedDeclaration": 406, + "src": "5160:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5206:5:0", + "src": "5156:5:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13381,32 +12733,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 447, + "id": 429, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5214:1:0", + "referencedDeclaration": 406, + "src": "5164:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5206:9:0", + "src": "5156:9:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 449, + "id": 431, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "5205:11:0", + "src": "5155:11:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13417,14 +12769,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 450, + "id": 432, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5219:1:0", + "src": "5169:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -13432,21 +12784,21 @@ }, "value": "2" }, - "src": "5205:15:0", + "src": "5155:15:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5201:19:0", + "src": "5151:19:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 453, + "id": 435, "nodeType": "ExpressionStatement", - "src": "5201:19:0" + "src": "5151:19:0" } ] }, @@ -13456,19 +12808,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 438, + "id": 420, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 436, + "id": 418, "name": "z", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "5161:1:0", + "referencedDeclaration": 406, + "src": "5111:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13478,31 +12830,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 437, + "id": 419, "name": "y", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "5165:1:0", + "referencedDeclaration": 403, + "src": "5115:1:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "5161:5:0", + "src": "5111:5:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 455, + "id": 437, "nodeType": "WhileStatement", - "src": "5154:77:0" + "src": "5104:77:0" } ] }, "documentation": null, - "id": 457, + "id": 439, "implemented": true, "kind": "function", "modifiers": [], @@ -13510,18 +12862,18 @@ "nodeType": "FunctionDefinition", "overrides": null, "parameters": { - "id": 419, + "id": 401, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 418, + "id": 400, "mutability": "mutable", "name": "x", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 457, - "src": "5051:9:0", + "scope": 439, + "src": "5001:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13529,10 +12881,10 @@ "typeString": "uint256" }, "typeName": { - "id": 417, + "id": 399, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5051:7:0", + "src": "5001:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13542,21 +12894,21 @@ "visibility": "internal" } ], - "src": "5050:11:0" + "src": "5000:11:0" }, "returnParameters": { - "id": 422, + "id": 404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 421, + "id": 403, "mutability": "mutable", "name": "y", "nodeType": "VariableDeclaration", "overrides": null, - "scope": 457, - "src": "5085:9:0", + "scope": 439, + "src": "5035:9:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -13564,10 +12916,10 @@ "typeString": "uint256" }, "typeName": { - "id": 420, + "id": 402, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5085:7:0", + "src": "5035:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -13577,20 +12929,20 @@ "visibility": "internal" } ], - "src": "5084:11:0" + "src": "5034:11:0" }, - "scope": 458, - "src": "5037:200:0", + "scope": 440, + "src": "4987:200:0", "stateMutability": "view", "virtual": false, "visibility": "internal" } ], - "scope": 459, - "src": "326:4913:0" + "scope": 441, + "src": "326:4863:0" } ], - "src": "77:5163:0" + "src": "77:5113:0" }, "compiler": { "name": "solc", @@ -13695,8 +13047,8 @@ } }, "links": {}, - "address": "0x916906De91BFE79116b14548aC27cb66dC04f42E", - "transactionHash": "0xe18e7f09805d534ca7ef19e46e8c51e4649c526dbb3d99c617be13343b78da0a" + "address": "0x096B27a49d2E622932aEEA342F28c8E46BC99C3f", + "transactionHash": "0x99575cff6e01056ac1c68c9e57eff932cc6ef11d1df1ad66d4f462d46ebc9873" }, "42": { "events": { @@ -13801,7 +13153,7 @@ } }, "schemaVersion": "3.2.5", - "updatedAt": "2020-11-25T02:10:33.927Z", + "updatedAt": "2020-11-25T02:35:12.040Z", "networkType": "ethereum", "devdoc": { "methods": { @@ -13880,7 +13232,7 @@ }, "userdoc": { "methods": { - "constructor": "Constructor inherits VRFConsumerBase * Network: Rinkeby Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B LINK token address: 0xa36085f69e2889c224210f603d836748e7dc0088 Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311", + "constructor": "Constructor inherits VRFConsumerBase * Network: Rinkeby Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B LINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709 Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311", "requestRandomness(bytes32,uint256,uint256)": { "notice": "requestRandomness initiates a request for VRF output given _seed" } diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index 5d8b399..2d27482 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -1419,8 +1419,8 @@ "4": { "events": {}, "links": {}, - "address": "0x746eD7554253A9C5Ab5A6800F19010B247cb97fC", - "transactionHash": "0xa8ae9bd1b3783cf04b048085b5170af45630f9feaf184685cce10c2f0cd96d14" + "address": "0xc3e7A50d2Bc7755FeE541AFD9377499baE705E21", + "transactionHash": "0x3dfcd6c004ab0de57ce17f791386654c64427c5eca9ece4cb46ecc849a7120a4" }, "42": { "events": {}, @@ -1430,7 +1430,7 @@ } }, "schemaVersion": "3.2.5", - "updatedAt": "2020-11-25T02:10:33.933Z", + "updatedAt": "2020-11-25T02:35:12.044Z", "networkType": "ethereum", "devdoc": { "methods": {} diff --git a/contracts/DungeonsAndDragonsCharacter.sol b/contracts/DungeonsAndDragonsCharacter.sol index 4e81b51..343e67d 100644 --- a/contracts/DungeonsAndDragonsCharacter.sol +++ b/contracts/DungeonsAndDragonsCharacter.sol @@ -41,7 +41,7 @@ contract DungeonsAndDragonsCharacter is ERC721, VRFConsumerBase, Ownable { * * Network: Rinkeby * Chainlink VRF Coordinator address: 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B - * LINK token address: 0xa36085f69e2889c224210f603d836748e7dc0088 + * LINK token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709 * Key Hash: 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311 */ constructor(address _VRFCoordinator, address _LinkToken, bytes32 _keyhash) @@ -86,13 +86,12 @@ contract DungeonsAndDragonsCharacter is ERC721, VRFConsumerBase, Ownable { override { uint256 newId = characters.length; - uint256 strength = ((randomNumber % 100) % 18); - uint256 dexterity = (((randomNumber % 10000) / 100) % 18); - uint256 constitution = (((randomNumber % 1000000) / 10000) % 18); - uint256 intelligence = (((randomNumber % 100000000) / 1000000) % 18); - uint256 wisdom = (((randomNumber % 10000000000) / 100000000) % 18); - uint256 charisma = (((randomNumber % 1000000000000) / 10000000000) % - 18); + uint256 strength = (randomNumber % 100); + uint256 dexterity = ((randomNumber % 10000) / 100 ); + uint256 constitution = ((randomNumber % 1000000) / 10000 ); + uint256 intelligence = ((randomNumber % 100000000) / 1000000 ); + uint256 wisdom = ((randomNumber % 10000000000) / 100000000 ); + uint256 charisma = ((randomNumber % 1000000000000) / 10000000000); uint256 experience = 0; characters.push( diff --git a/contracts/RandomNFT.sol b/contracts/RandomNFT.sol deleted file mode 100644 index 3d9fa20..0000000 --- a/contracts/RandomNFT.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.6.6; - -import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; -import "@chainlink/contracts/src/v0.6/VRFConsumerBase.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; - -contract RandomNFT is ERC721, VRFConsumerBase, Ownable { - address public VRFCoordinator = 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B; - address public LinkToken = 0x01BE23585060835E02B77ef475b0Cc51aA1e0709; - uint256 power; - bytes32 internal keyHash; - uint256 internal fee; - - constructor() public - VRFConsumerBase(VRFCoordinator, LinkToken) - ERC721("randomNFT", "rNFT"){ - power = 0; - keyHash = 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311; - fee = 0.1 * 10**18; // 0.1 LINK - _safeMint(msg.sender, 0); - } - - function requestRandomPower(uint256 seed) public{ - require( - LINK.balanceOf(address(this)) >= fee, - "Not enough LINK - fill contract with faucet" - ); - requestRandomness(keyHash, fee, seed); - } - - function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override { - power = randomness % 100; - } -} \ No newline at end of file diff --git a/metadata/elf.json b/metadata/elf.json new file mode 100644 index 0000000..cabf05b --- /dev/null +++ b/metadata/elf.json @@ -0,0 +1,35 @@ +{ + "name": "Sergey the Elf", + "description": "Inspiring, Based, Mythical, Oracle loving creature. Leading the new world and helping teach about superior digital agreements. Also is good with a bow!", + "image": "https://ipfs.io/ipfs/QmTgqnhFBMkfT9s8PHKcdXBn1f5bG3Q5hmBaR4U6hoTvb1?filename=Chainlink_Elf.png", + "attributes": [ + { + "trait_type": "Strength", + "value": 63 + }, + { + "trait_type": "Dexterity", + "value": 10 + }, + { + "trait_type": "Constitution", + "value": 7 + }, + { + "trait_type": "Intelligence", + "value": 6 + }, + { + "trait_type": "Wisdom", + "value": 51 + }, + { + "trait_type": "Charisma", + "value": 80 + }, + { + "trait_type": "Experience", + "value": 0 + } + ] +} \ No newline at end of file diff --git a/metadata/knight.json b/metadata/knight.json new file mode 100644 index 0000000..25bd4b7 --- /dev/null +++ b/metadata/knight.json @@ -0,0 +1,35 @@ +{ + "name": "Julian the Knight", + "description": "Defender against Flash Loan attacks, protector of #Defi protocols. Helping keep the smart contract kingdom secure, reliable, and safe. Also is an amazing artist. ", + "image": "https://ipfs.io/ipfs/QmZGQA92ri1jfzSu61JRaNQXYg1bLuM7p8YT83DzFA2KLH?filename=Chainlink_Knight.png", + "attributes": [ + { + "trait_type": "Strength", + "value": 67 + }, + { + "trait_type": "Dexterity", + "value": 94 + }, + { + "trait_type": "Constitution", + "value": 34 + }, + { + "trait_type": "Intelligence", + "value": 81 + }, + { + "trait_type": "Wisdom", + "value": 45 + }, + { + "trait_type": "Charisma", + "value": 4 + }, + { + "trait_type": "Experience", + "value": 0 + } + ] +} \ No newline at end of file diff --git a/metadata/orc.json b/metadata/orc.json new file mode 100644 index 0000000..db356d4 --- /dev/null +++ b/metadata/orc.json @@ -0,0 +1,35 @@ +{ + "name": "Pepe the Orc", + "description": "This green tweeting machine is one of the most exciting and excited creatures on the planet. Don't let his looks fool you, he loves to love new technology and help others get involved. Loves watching 'JSON Parser", + "image": "https://ipfs.io/ipfs/QmW1toapYs7M29rzLXTENn3pbvwe8ioikX1PwzACzjfdHP?filename=Chainlink_Orc.png", + "attributes": [ + { + "trait_type": "Strength", + "value": 90 + }, + { + "trait_type": "Dexterity", + "value": 16 + }, + { + "trait_type": "Constitution", + "value": 76 + }, + { + "trait_type": "Intelligence", + "value": 54 + }, + { + "trait_type": "Wisdom", + "value": 85 + }, + { + "trait_type": "Charisma", + "value": 3 + }, + { + "trait_type": "Experience", + "value": 0 + } + ] +} \ No newline at end of file diff --git a/metadata/witch.json b/metadata/witch.json new file mode 100644 index 0000000..766643e --- /dev/null +++ b/metadata/witch.json @@ -0,0 +1,35 @@ +{ + "name": "Ari the Witch", + "description": "Brilliant spell-slinger and magical with cryptography. Often uses Jewles in his h-index potions. ", + "image": "https://ipfs.io/ipfs/QmPMwQtFpEdKrUjpQJfoTeZS1aVSeuJT6Mof7uV29AcUpF?filename=Chainlink_Witch.png", + "attributes": [ + { + "trait_type": "Strength", + "value": 43 + }, + { + "trait_type": "Dexterity", + "value": 26 + }, + { + "trait_type": "Constitution", + "value": 61 + }, + { + "trait_type": "Intelligence", + "value": 74 + }, + { + "trait_type": "Wisdom", + "value": 48 + }, + { + "trait_type": "Charisma", + "value": 70 + }, + { + "trait_type": "Experience", + "value": 0 + } + ] +} \ No newline at end of file diff --git a/migrations/2_mycontract_migration.js b/migrations/2_mycontract_migration.js index ad639d1..d3bd281 100644 --- a/migrations/2_mycontract_migration.js +++ b/migrations/2_mycontract_migration.js @@ -1,6 +1,6 @@ const DungeonsAndDragonsCharacter = artifacts.require('DungeonsAndDragonsCharacter') const RINKEBY_VRF_COORDINATOR = '0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B' -const RINKEBY_LINKTOKEN = '0xa36085f69e2889c224210f603d836748e7dc0088' +const RINKEBY_LINKTOKEN = '0x01be23585060835e02b77ef475b0cc51aa1e0709' const RINKEBY_KEYHASH = '0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311' module.exports = async (deployer, network, [defaultAccount]) => { diff --git a/scripts/fund-contract.js b/scripts/fund-contract.js index 380678d..ca1475c 100644 --- a/scripts/fund-contract.js +++ b/scripts/fund-contract.js @@ -8,17 +8,17 @@ const LinkTokenInterface = artifacts.require('LinkTokenInterface') can be retrieved by calling the withdrawLink() function. */ -const payment = process.env.TRUFFLE_CL_BOX_PAYMENT || '1000000000000000000' +const payment = process.env.TRUFFLE_CL_BOX_PAYMENT || '3000000000000000000' module.exports = async callback => { try { const dnd = await DungeonsAndDragonsCharacter.deployed() + const tokenAddress = await dnd.LinkToken() console.log("Chainlink Token Address: ", tokenAddress) const token = await LinkTokenInterface.at(tokenAddress) console.log('Funding contract:', dnd.address) const tx = await token.transfer(dnd.address, payment) - console.log(tx) callback(tx.tx) } catch (err) { callback(err) diff --git a/scripts/generate-character.js b/scripts/generate-character.js index 024c16c..c770617 100644 --- a/scripts/generate-character.js +++ b/scripts/generate-character.js @@ -2,10 +2,10 @@ const DungeonsAndDragons = artifacts.require('DungeonsAndDragonsCharacter') module.exports = async callback => { const dnd = await DungeonsAndDragons.deployed() - console.log('Creating request on contract:', dnd.address) - const tx = await dnd.requestNewRandomCharacter(77, "Julian the Knight") - const tx2 = await dnd.requestNewRandomCharacter(7777777, "Sergey the Elf") - const tx3 = await dnd.requestNewRandomCharacter(7, "Ari the Witch") - const tx4 = await dnd.requestNewRandomCharacter(777, "Pepe the Orc") + console.log('Creating requests on contract:', dnd.address) + // const tx = await dnd.requestNewRandomCharacter(77, "Julian the Knight") + // const tx2 = await dnd.requestNewRandomCharacter(7777777, "Sergey the Elf") + const tx3 = await dnd.requestNewRandomCharacter(7, "Ari the Wizard") + // const tx4 = await dnd.requestNewRandomCharacter(777, "Pepe the Orc") callback(tx.tx) } diff --git a/scripts/set-token-uri.js b/scripts/set-token-uri.js index 564a3a3..c7f3a1e 100644 --- a/scripts/set-token-uri.js +++ b/scripts/set-token-uri.js @@ -3,7 +3,10 @@ const TOKENID = 0 module.exports = async callback => { const dnd = await DungeonsAndDragons.deployed() console.log('Let\'s set the tokenURI of your character') - const tx = await dnd.setTokenURI(TOKENID, "ipfs_url_here") + // const tx = await dnd.setTokenURI(0, "https://ipfs.io/ipfs/QmVKfktQ2hLwPEiGaymEajLQGavGGZDSYkwhdo7M17J2z4?filename=knight.json") + const tx = await dnd.setTokenURI(1, "https://ipfs.io/ipfs/QmTzQzKymQcv2BhGuVNmfLGePoD43rhQEM5eSkxsLFTB9c?filename=elf.json") + const tx1 = await dnd.setTokenURI(2, "https://ipfs.io/ipfs/QmREDfvFTT24qC4u7wVXXujtiuP1RfvtHyupwdfGPQDyQi?filename=witch.json") + const tx2 = await dnd.setTokenURI(3, "https://ipfs.io/ipfs/QmS2u1bPTQdAnDYrXE7qzLxyB6sYx2rN6oo8XkYP6sxbd6?filename=orc.json") console.log(tx) callback(tx.tx) }