{"fileName":"TokenFaucet.sol","contractName":"TokenFaucet","source":"pragma solidity 0.5.11;\n\nimport \"openzeppelin-eth/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-eth/contracts/ownership/Ownable.sol\";\nimport \"openzeppelin-eth/contracts/token/ERC20/ERC20Detailed.sol\";\n\ncontract TokenFaucet is Ownable {\n    using SafeMath for uint256;\n\n    uint256 private _allowance = 1000;\n    uint256 private TEN = 10;\n\n    function allowance() public view returns (uint256) {\n        return _allowance;\n    }\n\n    function balanceAt(address _token) public view returns (uint256) {\n        return ERC20Detailed(_token).balanceOf(address(this));\n    }\n\n    function request(address _token) public {\n        ERC20Detailed token = ERC20Detailed(_token);\n\n        uint256 decimals = token.decimals();\n        uint256 balance = token.balanceOf(address(this));\n        uint256 parsedAllowance = _allowance.mul(TEN ** decimals);\n\n        if (balance < parsedAllowance) {\n            _transferTo(token, msg.sender, balance);\n        } else {\n            _transferTo(token, msg.sender, parsedAllowance);\n        }\n    }\n\n    function setAllowance(uint256 amount) public onlyOwner {\n        _allowance = amount;\n    }\n\n    function _transferTo(ERC20Detailed _token, address _recipient, uint256 _amount) internal {\n        _token.transfer(_recipient, _amount);\n    }\n\n    function() external {\n        revert(\"function: request(address)\");\n    }\n}\n","sourcePath":"contracts/misc/TokenFaucet.sol","sourceMap":"207:1153:3:-;;;307:4;278:33;;;;;;339:2;317:24;;;;;;207:1153;8:9:-1;5:2;;;30:1;27;20:12;5:2;207:1153:3;;;;;;;;;;","deployedSourceMap":"207:1153:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;207:1153:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1285:73;1315:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1285:73;207:1153;580:454;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;580:454:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;1040:91;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1040:91:3;;;;;;;;;;;;;;;;;:::i;:::-;;439:135;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;439:135:3;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1514:137:9;;;:::i;:::-;;750:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1070:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;545:142;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;545:142:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;348:85:3;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1822:107:9;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1822:107:9;;;;;;;;;;;;;;;;;;;:::i;:::-;;580:454:3;630:19;666:6;630:43;;684:16;703:5;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;703:16:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;703:16:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;703:16:3;;;;;;;;;;;;;;;;684:35;;;;729:15;747:5;:15;;;771:4;747:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;747:30:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;747:30:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;747:30:3;;;;;;;;;;;;;;;;729:48;;787:23;813:31;835:8;828:3;;;;:15;813:10;;;;:14;;:31;;;;:::i;:::-;787:57;;869:15;859:7;:25;855:173;;;900:39;912:5;919:10;931:7;900:11;:39;;:::i;:::-;855:173;;;970:47;982:5;989:10;1001:15;970:11;:47;;:::i;:::-;855:173;580:454;;;;;;:::o;1040:91::-;954:9:9;:7;:9;;:::i;:::-;946:18;;;;;;;;1118:6:3;1105:10;;:19;;;;;;;974:1:9;1040:91:3;;:::o;439:135::-;495:7;535:6;521:31;;;561:4;521:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;521:46:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;521:46:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;521:46:3;;;;;;;;;;;;;;;;514:53;;;;439:135;;;;:::o;1514:137:9:-;954:9;:7;:9;;:::i;:::-;946:18;;;;;;;;1612:1;1575:40;;1596:6;;;;;;;;;;;1575:40;;;;;;;;;;;;1642:1;1625:6;;:19;;;;;;;;;;;;;;;;;;974:1;1514:137;:::o;750:77::-;788:7;814:6;;;;;;;;;;;807:13;;;;750:77;;:::o;1070:90::-;1110:4;1147:6;;;;;;;;;;;1133:20;;:10;:20;;;1126:27;;;;1070:90;;:::o;545:142::-;1024:12:18;;;;;;;;;;;:31;;;;1040:15;:13;:15;;:::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;;;;;;1151:13;1129:35;;1174:14;1170:80;;;1213:4;1198:12;;:19;;;;;;;;;;;;;;;;;;1239:4;1225:11;;:18;;;;;;;;;;;;;;;;;;1170:80;619:6:9;610;;:15;;;;;;;;;;;;;;;;;;673:6;;;;;;;;;;;640:40;;669:1;640:40;;;;;;;;;;;;1256:1:18;1268:14;1264:55;;;1307:5;1292:12;;:20;;;;;;;;;;;;;;;;;;1264:55;545:142:9;;;:::o;348:85:3:-;390:7;416:10;;;;409:17;;;;348:85;;:::o;1822:107:9:-;954:9;:7;:9;;:::i;:::-;946:18;;;;;;;;1894:28;1913:8;1894:18;:28;;:::i;:::-;974:1;1822:107;;:::o;231:421:8:-;289:7;534:1;529;:6;525:45;;;558:1;551:8;;;;525:45;580:9;596:1;592;:5;580:17;;624:1;619;615;:5;;;;;;;;:10;607:19;;;;;;;;644:1;637:8;;;;;231:421;;;;;;:::o;1137:142:3:-;1236:6;:15;;;1252:10;1264:7;1236:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1236:36:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1236:36:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1236:36:3;;;;;;;;;;;;;;;;;1137:142;;;;:::o;1409:467:18:-;1456:4;1797:10;1842:7;1830:20;1824:26;;1870:1;1864:2;:7;1857:14;;;;;1409:467;;;:::o;2073:183:9:-;2166:1;2146:22;;:8;:22;;;;2138:31;;;;;;;;2213:8;2184:38;;2205:6;;;;;;;;;;;2184:38;;;;;;;;;;;;2241:8;2232:6;;:17;;;;;;;;;;;;;;;;;;2073:183;;:::o","abi":[{"constant":false,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"request","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAllowance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"balanceAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}],"ast":{"absolutePath":"contracts/misc/TokenFaucet.sol","exportedSymbols":{"TokenFaucet":[746]},"id":747,"nodeType":"SourceUnit","nodes":[{"id":613,"literals":["solidity","0.5",".11"],"nodeType":"PragmaDirective","src":"0:23:3"},{"absolutePath":"openzeppelin-eth/contracts/math/SafeMath.sol","file":"openzeppelin-eth/contracts/math/SafeMath.sol","id":614,"nodeType":"ImportDirective","scope":747,"sourceUnit":1307,"src":"25:54:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-eth/contracts/ownership/Ownable.sol","file":"openzeppelin-eth/contracts/ownership/Ownable.sol","id":615,"nodeType":"ImportDirective","scope":747,"sourceUnit":1426,"src":"80:58:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"openzeppelin-eth/contracts/token/ERC20/ERC20Detailed.sol","file":"openzeppelin-eth/contracts/token/ERC20/ERC20Detailed.sol","id":616,"nodeType":"ImportDirective","scope":747,"sourceUnit":1883,"src":"139:66:3","symbolAliases":[],"unitAlias":""},{"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":617,"name":"Ownable","nodeType":"UserDefinedTypeName","referencedDeclaration":1425,"src":"231:7:3","typeDescriptions":{"typeIdentifier":"t_contract$_Ownable_$1425","typeString":"contract Ownable"}},"id":618,"nodeType":"InheritanceSpecifier","src":"231:7:3"}],"contractDependencies":[1425,2628],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":746,"linearizedBaseContracts":[746,1425,2628],"name":"TokenFaucet","nodeType":"ContractDefinition","nodes":[{"id":621,"libraryName":{"contractScope":null,"id":619,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":1306,"src":"251:8:3","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$1306","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"245:27:3","typeName":{"id":620,"name":"uint256","nodeType":"ElementaryTypeName","src":"264:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":624,"name":"_allowance","nodeType":"VariableDeclaration","scope":746,"src":"278:33:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":622,"name":"uint256","nodeType":"ElementaryTypeName","src":"278:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"31303030","id":623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"307:4:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"visibility":"private"},{"constant":false,"id":627,"name":"TEN","nodeType":"VariableDeclaration","scope":746,"src":"317:24:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":625,"name":"uint256","nodeType":"ElementaryTypeName","src":"317:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3130","id":626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"339:2:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"visibility":"private"},{"body":{"id":634,"nodeType":"Block","src":"399:34:3","statements":[{"expression":{"argumentTypes":null,"id":632,"name":"_allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"416:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":631,"id":633,"nodeType":"Return","src":"409:17:3"}]},"documentation":null,"id":635,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":628,"nodeType":"ParameterList","parameters":[],"src":"366:2:3"},"returnParameters":{"id":631,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"name":"","nodeType":"VariableDeclaration","scope":635,"src":"390:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":629,"name":"uint256","nodeType":"ElementaryTypeName","src":"390:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"389:9:3"},"scope":746,"src":"348:85:3","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":651,"nodeType":"Block","src":"504:70:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":647,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"561:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_TokenFaucet_$746","typeString":"contract TokenFaucet"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TokenFaucet_$746","typeString":"contract TokenFaucet"}],"id":646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"553:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"553:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":643,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":637,"src":"535:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":642,"name":"ERC20Detailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"521:13:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Detailed_$1882_$","typeString":"type(contract ERC20Detailed)"}},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"521:21:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},"id":645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2097,"src":"521:31:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"521:46:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":641,"id":650,"nodeType":"Return","src":"514:53:3"}]},"documentation":null,"id":652,"implemented":true,"kind":"function","modifiers":[],"name":"balanceAt","nodeType":"FunctionDefinition","parameters":{"id":638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":637,"name":"_token","nodeType":"VariableDeclaration","scope":652,"src":"458:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":636,"name":"address","nodeType":"ElementaryTypeName","src":"458:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"457:16:3"},"returnParameters":{"id":641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":640,"name":"","nodeType":"VariableDeclaration","scope":652,"src":"495:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":639,"name":"uint256","nodeType":"ElementaryTypeName","src":"495:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"494:9:3"},"scope":746,"src":"439:135:3","stateMutability":"view","superFunction":null,"visibility":"public"},{"body":{"id":707,"nodeType":"Block","src":"620:414:3","statements":[{"assignments":[658],"declarations":[{"constant":false,"id":658,"name":"token","nodeType":"VariableDeclaration","scope":707,"src":"630:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"},"typeName":{"contractScope":null,"id":657,"name":"ERC20Detailed","nodeType":"UserDefinedTypeName","referencedDeclaration":1882,"src":"630:13:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},"value":null,"visibility":"internal"}],"id":662,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":660,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":654,"src":"666:6:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":659,"name":"ERC20Detailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1882,"src":"652:13:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Detailed_$1882_$","typeString":"type(contract ERC20Detailed)"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"652:21:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},"nodeType":"VariableDeclarationStatement","src":"630:43:3"},{"assignments":[664],"declarations":[{"constant":false,"id":664,"name":"decimals","nodeType":"VariableDeclaration","scope":707,"src":"684:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":663,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":668,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":665,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"703:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},"id":666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"decimals","nodeType":"MemberAccess","referencedDeclaration":1877,"src":"703:14:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint8_$","typeString":"function () view external returns (uint8)"}},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"703:16:3","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"684:35:3"},{"assignments":[670],"declarations":[{"constant":false,"id":670,"name":"balance","nodeType":"VariableDeclaration","scope":707,"src":"729:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"729:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":677,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":674,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3778,"src":"771:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_TokenFaucet_$746","typeString":"contract TokenFaucet"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TokenFaucet_$746","typeString":"contract TokenFaucet"}],"id":673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"763:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":"address"},"id":675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"763:13:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":671,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"747:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},"id":672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2097,"src":"747:15:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"747:30:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"729:48:3"},{"assignments":[679],"declarations":[{"constant":false,"id":679,"name":"parsedAllowance","nodeType":"VariableDeclaration","scope":707,"src":"787:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":678,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":686,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":682,"name":"TEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":627,"src":"828:3:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"id":683,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":664,"src":"835:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"828:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":680,"name":"_allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"813:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":1213,"src":"813:14:3","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"813:31:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"787:57:3"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":687,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"859:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":688,"name":"parsedAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":679,"src":"869:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"859:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":705,"nodeType":"Block","src":"956:72:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":699,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"982:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":700,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"989:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"989:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":702,"name":"parsedAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":679,"src":"1001:15:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":698,"name":"_transferTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"970:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20Detailed_$1882_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract ERC20Detailed,address,uint256)"}},"id":703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"970:47:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":704,"nodeType":"ExpressionStatement","src":"970:47:3"}]},"id":706,"nodeType":"IfStatement","src":"855:173:3","trueBody":{"id":697,"nodeType":"Block","src":"886:64:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":691,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":658,"src":"912:5:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":692,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3708,"src":"919:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"919:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":694,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"931:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":690,"name":"_transferTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":737,"src":"900:11:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ERC20Detailed_$1882_$_t_address_$_t_uint256_$returns$__$","typeString":"function (contract ERC20Detailed,address,uint256)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"900:39:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":696,"nodeType":"ExpressionStatement","src":"900:39:3"}]}}]},"documentation":null,"id":708,"implemented":true,"kind":"function","modifiers":[],"name":"request","nodeType":"FunctionDefinition","parameters":{"id":655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":654,"name":"_token","nodeType":"VariableDeclaration","scope":708,"src":"597:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":653,"name":"address","nodeType":"ElementaryTypeName","src":"597:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"596:16:3"},"returnParameters":{"id":656,"nodeType":"ParameterList","parameters":[],"src":"620:0:3"},"scope":746,"src":"580:454:3","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":719,"nodeType":"Block","src":"1095:36:3","statements":[{"expression":{"argumentTypes":null,"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":715,"name":"_allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":624,"src":"1105:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":716,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":710,"src":"1118:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1105:19:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":718,"nodeType":"ExpressionStatement","src":"1105:19:3"}]},"documentation":null,"id":720,"implemented":true,"kind":"function","modifiers":[{"arguments":null,"id":713,"modifierName":{"argumentTypes":null,"id":712,"name":"onlyOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1355,"src":"1085:9:3","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"1085:9:3"}],"name":"setAllowance","nodeType":"FunctionDefinition","parameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":710,"name":"amount","nodeType":"VariableDeclaration","scope":720,"src":"1062:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":709,"name":"uint256","nodeType":"ElementaryTypeName","src":"1062:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1061:16:3"},"returnParameters":{"id":714,"nodeType":"ParameterList","parameters":[],"src":"1095:0:3"},"scope":746,"src":"1040:91:3","stateMutability":"nonpayable","superFunction":null,"visibility":"public"},{"body":{"id":736,"nodeType":"Block","src":"1226:53:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":732,"name":"_recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":724,"src":"1252:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":733,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":726,"src":"1264:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":729,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"1236:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},"id":731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2065,"src":"1236:15:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1236:36:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":735,"nodeType":"ExpressionStatement","src":"1236:36:3"}]},"documentation":null,"id":737,"implemented":true,"kind":"function","modifiers":[],"name":"_transferTo","nodeType":"FunctionDefinition","parameters":{"id":727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":722,"name":"_token","nodeType":"VariableDeclaration","scope":737,"src":"1158:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"},"typeName":{"contractScope":null,"id":721,"name":"ERC20Detailed","nodeType":"UserDefinedTypeName","referencedDeclaration":1882,"src":"1158:13:3","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Detailed_$1882","typeString":"contract ERC20Detailed"}},"value":null,"visibility":"internal"},{"constant":false,"id":724,"name":"_recipient","nodeType":"VariableDeclaration","scope":737,"src":"1180:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":723,"name":"address","nodeType":"ElementaryTypeName","src":"1180:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":726,"name":"_amount","nodeType":"VariableDeclaration","scope":737,"src":"1200:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":725,"name":"uint256","nodeType":"ElementaryTypeName","src":"1200:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1157:59:3"},"returnParameters":{"id":728,"nodeType":"ParameterList","parameters":[],"src":"1226:0:3"},"scope":746,"src":"1137:142:3","stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},{"body":{"id":744,"nodeType":"Block","src":"1305:53:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"66756e6374696f6e3a2072657175657374286164647265737329","id":741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1322:28:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d58a8a501e22e99d3de861e84a78a739f1d54a2351a068da06b97ab437c253da","typeString":"literal_string \"function: request(address)\""},"value":"function: request(address)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d58a8a501e22e99d3de861e84a78a739f1d54a2351a068da06b97ab437c253da","typeString":"literal_string \"function: request(address)\""}],"id":740,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[3713,3714],"referencedDeclaration":3714,"src":"1315:6:3","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1315:36:3","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":743,"nodeType":"ExpressionStatement","src":"1315:36:3"}]},"documentation":null,"id":745,"implemented":true,"kind":"fallback","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":738,"nodeType":"ParameterList","parameters":[],"src":"1293:2:3"},"returnParameters":{"id":739,"nodeType":"ParameterList","parameters":[],"src":"1305:0:3"},"scope":746,"src":"1285:73:3","stateMutability":"nonpayable","superFunction":null,"visibility":"external"}],"scope":747,"src":"207:1153:3"}],"src":"0:1361:3"},"bytecode":"0x60806040526103e86066600050909055600a60676000509090553480156100265760006000fd5b5061002c565b610b948061003b6000396000f3fe60806040523480156100115760006000fd5b50600436106100985760003560e01c80638da5cb5b116100675780638da5cb5b146101e35780638f32d59b1461022d578063c4d66de81461024f578063de242ff414610294578063f2fde38b146102b257610098565b806327c78c421461010c5780633ba93f2614610151578063499b78a614610180578063715018a6146101d957610098565b5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f66756e6374696f6e3a207265717565737428616464726573732900000000000081526020015060200191505060405180910390fd5b005b61014f600480360360208110156101235760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102f7565b005b61017e600480360360208110156101685760006000fd5b81019080803590602001909291905050506104a1565b005b6101c3600480360360208110156101975760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104cc565b6040518082815260200191505060405180910390f35b6101e1610595565b005b6101eb610672565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102356106a1565b604051808215151515815260200191505060405180910390f35b610292600480360360208110156102665760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106fe565b005b61029c6108ca565b6040518082815260200191505060405180910390f35b6102f5600480360360208110156102c95760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108dc565b005b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156103455760006000fd5b505afa15801561035a573d600060003e3d6000fd5b505050506040513d60208110156103715760006000fd5b810190808051906020019092919050505060ff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104075760006000fd5b505afa15801561041c573d600060003e3d6000fd5b505050506040513d60208110156104335760006000fd5b810190808051906020019092919050505090506000610467836067600050540a60666000505461090a90919063ffffffff16565b9050808210156104875761048284338461094f63ffffffff16565b610499565b61049884338361094f63ffffffff16565b5b505050505b50565b6104af6106a163ffffffff16565b15156104bb5760006000fd5b8060666000508190909055505b5b50565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561054c5760006000fd5b505afa158015610561573d600060003e3d6000fd5b505050506040513d60208110156105785760006000fd5b81019080805190602001909291905050509050610590565b919050565b6105a36106a163ffffffff16565b15156105af5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061069e565b90565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490506106fb565b90565b600060019054906101000a900460ff16806107235750610722610a1b63ffffffff16565b5b8061073b5750600060009054906101000a900460ff16155b1515610792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610b32602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff1615905080156107e4576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b81603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35b80156108c5576000600060016101000a81548160ff0219169083151502179055505b505b50565b600060666000505490506108d9565b90565b6108ea6106a163ffffffff16565b15156108f65760006000fd5b61090581610a3363ffffffff16565b5b5b50565b6000600083141561091e5760009050610949565b6000828402905082848281151561093157fe5b0414151561093f5760006000fd5b8091505061094956505b92915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156109d75760006000fd5b505af11580156109ec573d600060003e3d6000fd5b505050506040513d6020811015610a035760006000fd5b8101908080519060200190929190505050505b505050565b60006000303b905060008114915050610a3056505b90565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a705760006000fd5b8073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a265627a7a7231582015ec9f2e3bff3a5cc985fc1f6e7d5afe93ab381f9dd56380dadead22db554a0664736f6c634300050b0032","deployedBytecode":"0x60806040523480156100115760006000fd5b50600436106100985760003560e01c80638da5cb5b116100675780638da5cb5b146101e35780638f32d59b1461022d578063c4d66de81461024f578063de242ff414610294578063f2fde38b146102b257610098565b806327c78c421461010c5780633ba93f2614610151578063499b78a614610180578063715018a6146101d957610098565b5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f66756e6374696f6e3a207265717565737428616464726573732900000000000081526020015060200191505060405180910390fd5b005b61014f600480360360208110156101235760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102f7565b005b61017e600480360360208110156101685760006000fd5b81019080803590602001909291905050506104a1565b005b6101c3600480360360208110156101975760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104cc565b6040518082815260200191505060405180910390f35b6101e1610595565b005b6101eb610672565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102356106a1565b604051808215151515815260200191505060405180910390f35b610292600480360360208110156102665760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106fe565b005b61029c6108ca565b6040518082815260200191505060405180910390f35b6102f5600480360360208110156102c95760006000fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108dc565b005b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156103455760006000fd5b505afa15801561035a573d600060003e3d6000fd5b505050506040513d60208110156103715760006000fd5b810190808051906020019092919050505060ff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156104075760006000fd5b505afa15801561041c573d600060003e3d6000fd5b505050506040513d60208110156104335760006000fd5b810190808051906020019092919050505090506000610467836067600050540a60666000505461090a90919063ffffffff16565b9050808210156104875761048284338461094f63ffffffff16565b610499565b61049884338361094f63ffffffff16565b5b505050505b50565b6104af6106a163ffffffff16565b15156104bb5760006000fd5b8060666000508190909055505b5b50565b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561054c5760006000fd5b505afa158015610561573d600060003e3d6000fd5b505050506040513d60208110156105785760006000fd5b81019080805190602001909291905050509050610590565b919050565b6105a36106a163ffffffff16565b15156105af5760006000fd5b600073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061069e565b90565b6000603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490506106fb565b90565b600060019054906101000a900460ff16806107235750610722610a1b63ffffffff16565b5b8061073b5750600060009054906101000a900460ff16155b1515610792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610b32602e913960400191505060405180910390fd5b6000600060019054906101000a900460ff1615905080156107e4576001600060016101000a81548160ff0219169083151502179055506001600060006101000a81548160ff0219169083151502179055505b81603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35b80156108c5576000600060016101000a81548160ff0219169083151502179055505b505b50565b600060666000505490506108d9565b90565b6108ea6106a163ffffffff16565b15156108f65760006000fd5b61090581610a3363ffffffff16565b5b5b50565b6000600083141561091e5760009050610949565b6000828402905082848281151561093157fe5b0414151561093f5760006000fd5b8091505061094956505b92915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156109d75760006000fd5b505af11580156109ec573d600060003e3d6000fd5b505050506040513d6020811015610a035760006000fd5b8101908080519060200190929190505050505b505050565b60006000303b905060008114915050610a3056505b90565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610a705760006000fd5b8073ffffffffffffffffffffffffffffffffffffffff16603360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380603360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5056fe436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564a265627a7a7231582015ec9f2e3bff3a5cc985fc1f6e7d5afe93ab381f9dd56380dadead22db554a0664736f6c634300050b0032","compiler":{"name":"solc","version":"0.5.11+commit.c082d0b4.Emscripten.clang","optimizer":{},"evmVersion":"constantinople"}}
