diff --git a/build/contracts/AuthorizedIssuer.json b/build/contracts/AuthorizedIssuer.json index 59df64e..6b86b47 100644 --- a/build/contracts/AuthorizedIssuer.json +++ b/build/contracts/AuthorizedIssuer.json @@ -970,7 +970,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, @@ -1266,7 +1266,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, @@ -1449,7 +1449,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, @@ -1926,7 +1926,7 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, @@ -2526,5 +2526,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.888Z" + "updatedAt": "2018-01-14T10:53:22.990Z" } \ No newline at end of file diff --git a/build/contracts/BadgeForceToken.json b/build/contracts/BadgeForceToken.json index 0d65528..4ff5c57 100644 --- a/build/contracts/BadgeForceToken.json +++ b/build/contracts/BadgeForceToken.json @@ -353,7 +353,7 @@ "absolutePath": "BadgeForceToken/contracts/BadgeForceToken.sol", "exportedSymbols": { "BadgeForceToken": [ - 1733 + 1789 ] } }, @@ -367,94 +367,94 @@ ".18" ] }, - "id": 1667, + "id": 1723, "name": "PragmaDirective", "src": "0:24:7" }, { "attributes": { - "SourceUnit": 2404, + "SourceUnit": 2460, "absolutePath": "zeppelin-solidity/contracts/token/StandardToken.sol", "file": "zeppelin-solidity/contracts/token/StandardToken.sol", - "scope": 1734, + "scope": 1790, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1668, + "id": 1724, "name": "ImportDirective", "src": "26:61:7" }, { "attributes": { - "SourceUnit": 2086, + "SourceUnit": 2142, "absolutePath": "zeppelin-solidity/contracts/token/DetailedERC20.sol", "file": "zeppelin-solidity/contracts/token/DetailedERC20.sol", - "scope": 1734, + "scope": 1790, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1669, + "id": 1725, "name": "ImportDirective", "src": "88:61:7" }, { "attributes": { - "SourceUnit": 2052, + "SourceUnit": 2108, "absolutePath": "zeppelin-solidity/contracts/token/BurnableToken.sol", "file": "zeppelin-solidity/contracts/token/BurnableToken.sol", - "scope": 1734, + "scope": 1790, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1670, + "id": 1726, "name": "ImportDirective", "src": "150:61:7" }, { "attributes": { - "SourceUnit": 1911, + "SourceUnit": 1967, "absolutePath": "zeppelin-solidity/contracts/math/SafeMath.sol", "file": "zeppelin-solidity/contracts/math/SafeMath.sol", - "scope": 1734, + "scope": 1790, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1671, + "id": 1727, "name": "ImportDirective", "src": "212:55:7" }, { "attributes": { "contractDependencies": [ - 1996, - 2051, - 2085, - 2128, - 2157, - 2403 + 2052, + 2107, + 2141, + 2184, + 2213, + 2459 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 1733, - 2051, - 2085, - 2403, - 1996, - 2128, - 2157 + 1789, + 2107, + 2141, + 2459, + 2052, + 2184, + 2213 ], "name": "BadgeForceToken", - "scope": 1734 + "scope": 1790 }, "children": [ { @@ -468,15 +468,15 @@ "attributes": { "contractScope": null, "name": "StandardToken", - "referencedDeclaration": 2403, + "referencedDeclaration": 2459, "type": "contract StandardToken" }, - "id": 1672, + "id": 1728, "name": "UserDefinedTypeName", "src": "297:13:7" } ], - "id": 1673, + "id": 1729, "name": "InheritanceSpecifier", "src": "297:13:7" }, @@ -491,15 +491,15 @@ "attributes": { "contractScope": null, "name": "DetailedERC20", - "referencedDeclaration": 2085, + "referencedDeclaration": 2141, "type": "contract DetailedERC20" }, - "id": 1674, + "id": 1730, "name": "UserDefinedTypeName", "src": "312:13:7" } ], - "id": 1675, + "id": 1731, "name": "InheritanceSpecifier", "src": "312:13:7" }, @@ -514,15 +514,15 @@ "attributes": { "contractScope": null, "name": "BurnableToken", - "referencedDeclaration": 2051, + "referencedDeclaration": 2107, "type": "contract BurnableToken" }, - "id": 1676, + "id": 1732, "name": "UserDefinedTypeName", "src": "327:13:7" } ], - "id": 1677, + "id": 1733, "name": "InheritanceSpecifier", "src": "327:13:7" }, @@ -530,7 +530,7 @@ "attributes": { "constant": true, "name": "INITIAL_SUPPLY", - "scope": 1733, + "scope": 1789, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -542,7 +542,7 @@ "name": "uint256", "type": "uint256" }, - "id": 1678, + "id": 1734, "name": "ElementaryTypeName", "src": "352:7:7" }, @@ -589,7 +589,7 @@ "type": "int_const 1", "value": "1" }, - "id": 1679, + "id": 1735, "name": "Literal", "src": "393:1:7" }, @@ -632,7 +632,7 @@ "type": "int_const 10", "value": "10" }, - "id": 1680, + "id": 1736, "name": "Literal", "src": "396:2:7" }, @@ -649,22 +649,22 @@ "type": "int_const 9", "value": "9" }, - "id": 1681, + "id": 1737, "name": "Literal", "src": "400:1:7" } ], - "id": 1682, + "id": 1738, "name": "BinaryOperation", "src": "396:5:7" } ], - "id": 1683, + "id": 1739, "name": "TupleExpression", "src": "395:7:7" } ], - "id": 1684, + "id": 1740, "name": "BinaryOperation", "src": "393:9:7" }, @@ -707,7 +707,7 @@ "type": "int_const 10", "value": "10" }, - "id": 1685, + "id": 1741, "name": "Literal", "src": "404:2:7" }, @@ -724,27 +724,27 @@ "type": "int_const 18", "value": "18" }, - "id": 1686, + "id": 1742, "name": "Literal", "src": "408:2:7" } ], - "id": 1687, + "id": 1743, "name": "BinaryOperation", "src": "404:6:7" } ], - "id": 1688, + "id": 1744, "name": "TupleExpression", "src": "403:8:7" } ], - "id": 1689, + "id": 1745, "name": "BinaryOperation", "src": "393:18:7" } ], - "id": 1690, + "id": 1746, "name": "VariableDeclaration", "src": "352:59:7" }, @@ -752,7 +752,7 @@ "attributes": { "constant": false, "name": "issueBurnRate", - "scope": 1733, + "scope": 1789, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -765,12 +765,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1691, + "id": 1747, "name": "ElementaryTypeName", "src": "461:7:7" } ], - "id": 1692, + "id": 1748, "name": "VariableDeclaration", "src": "461:28:7" }, @@ -781,7 +781,7 @@ "isConstructor": true, "name": "BadgeForceToken", "payable": false, - "scope": 1733, + "scope": 1789, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -794,7 +794,7 @@ ] }, "children": [], - "id": 1693, + "id": 1749, "name": "ParameterList", "src": "520:2:7" }, @@ -805,7 +805,7 @@ ] }, "children": [], - "id": 1699, + "id": 1755, "name": "ParameterList", "src": "567:0:7" }, @@ -817,11 +817,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2085, + "referencedDeclaration": 2141, "type": "type(contract DetailedERC20)", "value": "DetailedERC20" }, - "id": 1694, + "id": 1750, "name": "Identifier", "src": "523:13:7" }, @@ -838,7 +838,7 @@ "type": "literal_string \"BadgeForceToken\"", "value": "BadgeForceToken" }, - "id": 1695, + "id": 1751, "name": "Literal", "src": "537:17:7" }, @@ -855,7 +855,7 @@ "type": "literal_string \"BFT\"", "value": "BFT" }, - "id": 1696, + "id": 1752, "name": "Literal", "src": "556:5:7" }, @@ -872,12 +872,12 @@ "type": "int_const 18", "value": "18" }, - "id": 1697, + "id": 1753, "name": "Literal", "src": "563:2:7" } ], - "id": 1698, + "id": 1754, "name": "ModifierInvocation", "src": "523:43:7" }, @@ -912,11 +912,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 1700, + "id": 1756, "name": "Identifier", "src": "577:8:7" }, @@ -938,21 +938,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1701, + "id": 1757, "name": "Identifier", "src": "586:3:7" } ], - "id": 1702, + "id": 1758, "name": "MemberAccess", "src": "586:10:7" } ], - "id": 1703, + "id": 1759, "name": "IndexAccess", "src": "577:20:7" }, @@ -962,21 +962,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1690, + "referencedDeclaration": 1746, "type": "uint256", "value": "INITIAL_SUPPLY" }, - "id": 1704, + "id": 1760, "name": "Identifier", "src": "600:14:7" } ], - "id": 1705, + "id": 1761, "name": "Assignment", "src": "577:37:7" } ], - "id": 1706, + "id": 1762, "name": "ExpressionStatement", "src": "577:37:7" }, @@ -999,11 +999,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2132, + "referencedDeclaration": 2188, "type": "uint256", "value": "totalSupply" }, - "id": 1707, + "id": 1763, "name": "Identifier", "src": "625:11:7" }, @@ -1013,21 +1013,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1690, + "referencedDeclaration": 1746, "type": "uint256", "value": "INITIAL_SUPPLY" }, - "id": 1708, + "id": 1764, "name": "Identifier", "src": "639:14:7" } ], - "id": 1709, + "id": 1765, "name": "Assignment", "src": "625:28:7" } ], - "id": 1710, + "id": 1766, "name": "ExpressionStatement", "src": "625:28:7" }, @@ -1050,11 +1050,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1692, + "referencedDeclaration": 1748, "type": "uint256", "value": "issueBurnRate" }, - "id": 1711, + "id": 1767, "name": "Identifier", "src": "663:13:7" }, @@ -1071,27 +1071,27 @@ "type": "int_const 100000", "value": "100000" }, - "id": 1712, + "id": 1768, "name": "Literal", "src": "679:6:7" } ], - "id": 1713, + "id": 1769, "name": "Assignment", "src": "663:22:7" } ], - "id": 1714, + "id": 1770, "name": "ExpressionStatement", "src": "663:22:7" } ], - "id": 1715, + "id": 1771, "name": "Block", "src": "567:128:7" } ], - "id": 1716, + "id": 1772, "name": "FunctionDefinition", "src": "496:199:7" }, @@ -1105,7 +1105,7 @@ ], "name": "burnForIssue", "payable": false, - "scope": 1733, + "scope": 1789, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1118,7 +1118,7 @@ ] }, "children": [], - "id": 1717, + "id": 1773, "name": "ParameterList", "src": "722:2:7" }, @@ -1128,7 +1128,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 1732, + "scope": 1788, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1141,17 +1141,17 @@ "name": "bool", "type": "bool" }, - "id": 1718, + "id": 1774, "name": "ElementaryTypeName", "src": "741:4:7" } ], - "id": 1719, + "id": 1775, "name": "VariableDeclaration", "src": "741:12:7" } ], - "id": 1720, + "id": 1776, "name": "ParameterList", "src": "740:14:7" }, @@ -1185,11 +1185,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2050, + "referencedDeclaration": 2106, "type": "function (uint256)", "value": "burn" }, - "id": 1721, + "id": 1777, "name": "Identifier", "src": "765:4:7" }, @@ -1225,7 +1225,7 @@ "isPure": false, "lValueRequested": false, "member_name": "div", - "referencedDeclaration": 1865, + "referencedDeclaration": 1921, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -1235,16 +1235,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1910, + "referencedDeclaration": 1966, "type": "type(library SafeMath)", "value": "SafeMath" }, - "id": 1722, + "id": 1778, "name": "Identifier", "src": "770:8:7" } ], - "id": 1723, + "id": 1779, "name": "MemberAccess", "src": "770:12:7" }, @@ -1261,7 +1261,7 @@ "type": "int_const 1", "value": "1" }, - "id": 1724, + "id": 1780, "name": "Literal", "src": "783:1:7" }, @@ -1271,32 +1271,32 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1692, + "referencedDeclaration": 1748, "type": "uint256", "value": "issueBurnRate" }, - "id": 1725, + "id": 1781, "name": "Identifier", "src": "786:13:7" } ], - "id": 1726, + "id": 1782, "name": "FunctionCall", "src": "770:30:7" } ], - "id": 1727, + "id": 1783, "name": "FunctionCall", "src": "765:36:7" } ], - "id": 1728, + "id": 1784, "name": "ExpressionStatement", "src": "765:36:7" }, { "attributes": { - "functionReturnParameters": 1720 + "functionReturnParameters": 1776 }, "children": [ { @@ -1312,32 +1312,32 @@ "type": "bool", "value": "true" }, - "id": 1729, + "id": 1785, "name": "Literal", "src": "818:4:7" } ], - "id": 1730, + "id": 1786, "name": "Return", "src": "811:11:7" } ], - "id": 1731, + "id": 1787, "name": "Block", "src": "755:74:7" } ], - "id": 1732, + "id": 1788, "name": "FunctionDefinition", "src": "701:128:7" } ], - "id": 1733, + "id": 1789, "name": "ContractDefinition", "src": "269:562:7" } ], - "id": 1734, + "id": 1790, "name": "SourceUnit", "src": "0:831:7" }, @@ -1347,5 +1347,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.895Z" + "updatedAt": "2018-01-14T10:53:22.999Z" } \ No newline at end of file diff --git a/build/contracts/BadgeLibrary.json b/build/contracts/BadgeLibrary.json index 9447f52..0faeeb7 100644 --- a/build/contracts/BadgeLibrary.json +++ b/build/contracts/BadgeLibrary.json @@ -94,7 +94,7 @@ "absolutePath": "BadgeLibrary/contracts/BadgeLibrary.sol", "exportedSymbols": { "BadgeLibrary": [ - 1812 + 1868 ] } }, @@ -108,7 +108,7 @@ ".17" ] }, - "id": 1735, + "id": 1791, "name": "PragmaDirective", "src": "0:24:8" }, @@ -124,17 +124,17 @@ "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 1812 + 1868 ], "name": "BadgeLibrary", - "scope": 1813 + "scope": 1869 }, "children": [ { "attributes": { "canonicalName": "BadgeLibrary.Badge", "name": "Badge", - "scope": 1812, + "scope": 1868, "visibility": "public" }, "children": [ @@ -142,7 +142,7 @@ "attributes": { "constant": false, "name": "issuer", - "scope": 1746, + "scope": 1802, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -155,12 +155,12 @@ "name": "address", "type": "address" }, - "id": 1736, + "id": 1792, "name": "ElementaryTypeName", "src": "142:7:8" } ], - "id": 1737, + "id": 1793, "name": "VariableDeclaration", "src": "142:14:8" }, @@ -168,7 +168,7 @@ "attributes": { "constant": false, "name": "description", - "scope": 1746, + "scope": 1802, "stateVariable": false, "storageLocation": "default", "type": "string storage pointer", @@ -181,12 +181,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 1738, + "id": 1794, "name": "ElementaryTypeName", "src": "166:6:8" } ], - "id": 1739, + "id": 1795, "name": "VariableDeclaration", "src": "166:18:8" }, @@ -194,7 +194,7 @@ "attributes": { "constant": false, "name": "name", - "scope": 1746, + "scope": 1802, "stateVariable": false, "storageLocation": "default", "type": "string storage pointer", @@ -207,12 +207,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 1740, + "id": 1796, "name": "ElementaryTypeName", "src": "194:6:8" } ], - "id": 1741, + "id": 1797, "name": "VariableDeclaration", "src": "194:11:8" }, @@ -220,7 +220,7 @@ "attributes": { "constant": false, "name": "image", - "scope": 1746, + "scope": 1802, "stateVariable": false, "storageLocation": "default", "type": "string storage pointer", @@ -233,12 +233,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 1742, + "id": 1798, "name": "ElementaryTypeName", "src": "215:6:8" } ], - "id": 1743, + "id": 1799, "name": "VariableDeclaration", "src": "215:12:8" }, @@ -246,7 +246,7 @@ "attributes": { "constant": false, "name": "version", - "scope": 1746, + "scope": 1802, "stateVariable": false, "storageLocation": "default", "type": "string storage pointer", @@ -259,17 +259,17 @@ "name": "string", "type": "string storage pointer" }, - "id": 1744, + "id": 1800, "name": "ElementaryTypeName", "src": "237:6:8" } ], - "id": 1745, + "id": 1801, "name": "VariableDeclaration", "src": "237:14:8" } ], - "id": 1746, + "id": 1802, "name": "StructDefinition", "src": "119:140:8" }, @@ -277,7 +277,7 @@ "attributes": { "canonicalName": "BadgeLibrary.Credential", "name": "Credential", - "scope": 1812, + "scope": 1868, "visibility": "public" }, "children": [ @@ -285,7 +285,7 @@ "attributes": { "constant": false, "name": "badge", - "scope": 1757, + "scope": 1813, "stateVariable": false, "storageLocation": "default", "type": "struct BadgeLibrary.Badge storage pointer", @@ -297,15 +297,15 @@ "attributes": { "contractScope": null, "name": "Badge", - "referencedDeclaration": 1746, + "referencedDeclaration": 1802, "type": "struct BadgeLibrary.Badge storage pointer" }, - "id": 1747, + "id": 1803, "name": "UserDefinedTypeName", "src": "352:5:8" } ], - "id": 1748, + "id": 1804, "name": "VariableDeclaration", "src": "352:11:8" }, @@ -313,7 +313,7 @@ "attributes": { "constant": false, "name": "expires", - "scope": 1757, + "scope": 1813, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -326,12 +326,12 @@ "name": "uint", "type": "uint256" }, - "id": 1749, + "id": 1805, "name": "ElementaryTypeName", "src": "373:4:8" } ], - "id": 1750, + "id": 1806, "name": "VariableDeclaration", "src": "373:12:8" }, @@ -339,7 +339,7 @@ "attributes": { "constant": false, "name": "recipient", - "scope": 1757, + "scope": 1813, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -352,12 +352,12 @@ "name": "address", "type": "address" }, - "id": 1751, + "id": 1807, "name": "ElementaryTypeName", "src": "395:7:8" } ], - "id": 1752, + "id": 1808, "name": "VariableDeclaration", "src": "395:17:8" }, @@ -365,7 +365,7 @@ "attributes": { "constant": false, "name": "txnKey", - "scope": 1757, + "scope": 1813, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -378,12 +378,12 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1753, + "id": 1809, "name": "ElementaryTypeName", "src": "422:7:8" } ], - "id": 1754, + "id": 1810, "name": "VariableDeclaration", "src": "422:14:8" }, @@ -391,7 +391,7 @@ "attributes": { "constant": false, "name": "active", - "scope": 1757, + "scope": 1813, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -404,17 +404,17 @@ "name": "bool", "type": "bool" }, - "id": 1755, + "id": 1811, "name": "ElementaryTypeName", "src": "446:4:8" } ], - "id": 1756, + "id": 1812, "name": "VariableDeclaration", "src": "446:11:8" } ], - "id": 1757, + "id": 1813, "name": "StructDefinition", "src": "324:140:8" }, @@ -428,7 +428,7 @@ ], "name": "getBadgeNameHash", "payable": false, - "scope": 1812, + "scope": 1868, "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -440,7 +440,7 @@ "attributes": { "constant": false, "name": "_badgename", - "scope": 1769, + "scope": 1825, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -453,17 +453,17 @@ "name": "string", "type": "string storage pointer" }, - "id": 1758, + "id": 1814, "name": "ElementaryTypeName", "src": "543:6:8" } ], - "id": 1759, + "id": 1815, "name": "VariableDeclaration", "src": "543:17:8" } ], - "id": 1760, + "id": 1816, "name": "ParameterList", "src": "542:19:8" }, @@ -473,7 +473,7 @@ "attributes": { "constant": false, "name": "_hash", - "scope": 1769, + "scope": 1825, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -486,17 +486,17 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1761, + "id": 1817, "name": "ElementaryTypeName", "src": "583:7:8" } ], - "id": 1762, + "id": 1818, "name": "VariableDeclaration", "src": "583:13:8" } ], - "id": 1763, + "id": 1819, "name": "ParameterList", "src": "582:15:8" }, @@ -504,7 +504,7 @@ "children": [ { "attributes": { - "functionReturnParameters": 1763 + "functionReturnParameters": 1819 }, "children": [ { @@ -533,11 +533,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2409, + "referencedDeclaration": 2465, "type": "function () pure returns (bytes32)", "value": "keccak256" }, - "id": 1764, + "id": 1820, "name": "Identifier", "src": "615:9:8" }, @@ -547,31 +547,31 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1759, + "referencedDeclaration": 1815, "type": "string memory", "value": "_badgename" }, - "id": 1765, + "id": 1821, "name": "Identifier", "src": "625:10:8" } ], - "id": 1766, + "id": 1822, "name": "FunctionCall", "src": "615:21:8" } ], - "id": 1767, + "id": 1823, "name": "Return", "src": "608:28:8" } ], - "id": 1768, + "id": 1824, "name": "Block", "src": "598:45:8" } ], - "id": 1769, + "id": 1825, "name": "FunctionDefinition", "src": "517:126:8" }, @@ -585,7 +585,7 @@ ], "name": "getBadgeLinkHash", "payable": false, - "scope": 1812, + "scope": 1868, "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -597,7 +597,7 @@ "attributes": { "constant": false, "name": "_name", - "scope": 1784, + "scope": 1840, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -610,12 +610,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 1770, + "id": 1826, "name": "ElementaryTypeName", "src": "722:6:8" } ], - "id": 1771, + "id": 1827, "name": "VariableDeclaration", "src": "722:12:8" }, @@ -623,7 +623,7 @@ "attributes": { "constant": false, "name": "_issuer", - "scope": 1784, + "scope": 1840, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -636,17 +636,17 @@ "name": "address", "type": "address" }, - "id": 1772, + "id": 1828, "name": "ElementaryTypeName", "src": "736:7:8" } ], - "id": 1773, + "id": 1829, "name": "VariableDeclaration", "src": "736:15:8" } ], - "id": 1774, + "id": 1830, "name": "ParameterList", "src": "721:31:8" }, @@ -656,7 +656,7 @@ "attributes": { "constant": false, "name": "hash", - "scope": 1784, + "scope": 1840, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -669,17 +669,17 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1775, + "id": 1831, "name": "ElementaryTypeName", "src": "774:7:8" } ], - "id": 1776, + "id": 1832, "name": "VariableDeclaration", "src": "774:12:8" } ], - "id": 1777, + "id": 1833, "name": "ParameterList", "src": "773:14:8" }, @@ -687,7 +687,7 @@ "children": [ { "attributes": { - "functionReturnParameters": 1777 + "functionReturnParameters": 1833 }, "children": [ { @@ -720,11 +720,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2409, + "referencedDeclaration": 2465, "type": "function () pure returns (bytes32)", "value": "keccak256" }, - "id": 1778, + "id": 1834, "name": "Identifier", "src": "805:9:8" }, @@ -734,11 +734,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1771, + "referencedDeclaration": 1827, "type": "string memory", "value": "_name" }, - "id": 1779, + "id": 1835, "name": "Identifier", "src": "815:5:8" }, @@ -748,31 +748,31 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1773, + "referencedDeclaration": 1829, "type": "address", "value": "_issuer" }, - "id": 1780, + "id": 1836, "name": "Identifier", "src": "822:7:8" } ], - "id": 1781, + "id": 1837, "name": "FunctionCall", "src": "805:25:8" } ], - "id": 1782, + "id": 1838, "name": "Return", "src": "798:32:8" } ], - "id": 1783, + "id": 1839, "name": "Block", "src": "788:49:8" } ], - "id": 1784, + "id": 1840, "name": "FunctionDefinition", "src": "696:141:8" }, @@ -786,7 +786,7 @@ ], "name": "getIntegrityHash", "payable": false, - "scope": 1812, + "scope": 1868, "stateMutability": "pure", "superFunction": null, "visibility": "public" @@ -798,7 +798,7 @@ "attributes": { "constant": false, "name": "issuer", - "scope": 1811, + "scope": 1867, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -811,12 +811,12 @@ "name": "address", "type": "address" }, - "id": 1785, + "id": 1841, "name": "ElementaryTypeName", "src": "936:7:8" } ], - "id": 1786, + "id": 1842, "name": "VariableDeclaration", "src": "936:14:8" }, @@ -824,7 +824,7 @@ "attributes": { "constant": false, "name": "description", - "scope": 1811, + "scope": 1867, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -837,12 +837,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 1787, + "id": 1843, "name": "ElementaryTypeName", "src": "961:6:8" } ], - "id": 1788, + "id": 1844, "name": "VariableDeclaration", "src": "961:18:8" }, @@ -850,7 +850,7 @@ "attributes": { "constant": false, "name": "name", - "scope": 1811, + "scope": 1867, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -863,12 +863,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 1789, + "id": 1845, "name": "ElementaryTypeName", "src": "990:6:8" } ], - "id": 1790, + "id": 1846, "name": "VariableDeclaration", "src": "990:11:8" }, @@ -876,7 +876,7 @@ "attributes": { "constant": false, "name": "image", - "scope": 1811, + "scope": 1867, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -889,12 +889,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 1791, + "id": 1847, "name": "ElementaryTypeName", "src": "1012:6:8" } ], - "id": 1792, + "id": 1848, "name": "VariableDeclaration", "src": "1012:12:8" }, @@ -902,7 +902,7 @@ "attributes": { "constant": false, "name": "version", - "scope": 1811, + "scope": 1867, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -915,12 +915,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 1793, + "id": 1849, "name": "ElementaryTypeName", "src": "1035:6:8" } ], - "id": 1794, + "id": 1850, "name": "VariableDeclaration", "src": "1035:14:8" }, @@ -928,7 +928,7 @@ "attributes": { "constant": false, "name": "recipient", - "scope": 1811, + "scope": 1867, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -941,17 +941,17 @@ "name": "address", "type": "address" }, - "id": 1795, + "id": 1851, "name": "ElementaryTypeName", "src": "1059:7:8" } ], - "id": 1796, + "id": 1852, "name": "VariableDeclaration", "src": "1059:17:8" } ], - "id": 1797, + "id": 1853, "name": "ParameterList", "src": "926:156:8" }, @@ -961,7 +961,7 @@ "attributes": { "constant": false, "name": "_hash", - "scope": 1811, + "scope": 1867, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -974,17 +974,17 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1798, + "id": 1854, "name": "ElementaryTypeName", "src": "1103:7:8" } ], - "id": 1799, + "id": 1855, "name": "VariableDeclaration", "src": "1103:13:8" } ], - "id": 1800, + "id": 1856, "name": "ParameterList", "src": "1102:15:8" }, @@ -992,7 +992,7 @@ "children": [ { "attributes": { - "functionReturnParameters": 1800 + "functionReturnParameters": 1856 }, "children": [ { @@ -1041,11 +1041,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2409, + "referencedDeclaration": 2465, "type": "function () pure returns (bytes32)", "value": "keccak256" }, - "id": 1801, + "id": 1857, "name": "Identifier", "src": "1140:9:8" }, @@ -1055,11 +1055,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1786, + "referencedDeclaration": 1842, "type": "address", "value": "issuer" }, - "id": 1802, + "id": 1858, "name": "Identifier", "src": "1167:6:8" }, @@ -1069,11 +1069,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1788, + "referencedDeclaration": 1844, "type": "string memory", "value": "description" }, - "id": 1803, + "id": 1859, "name": "Identifier", "src": "1192:11:8" }, @@ -1083,11 +1083,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1790, + "referencedDeclaration": 1846, "type": "string memory", "value": "name" }, - "id": 1804, + "id": 1860, "name": "Identifier", "src": "1222:4:8" }, @@ -1097,11 +1097,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1792, + "referencedDeclaration": 1848, "type": "string memory", "value": "image" }, - "id": 1805, + "id": 1861, "name": "Identifier", "src": "1245:5:8" }, @@ -1111,11 +1111,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1794, + "referencedDeclaration": 1850, "type": "string memory", "value": "version" }, - "id": 1806, + "id": 1862, "name": "Identifier", "src": "1269:7:8" }, @@ -1125,41 +1125,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1796, + "referencedDeclaration": 1852, "type": "address", "value": "recipient" }, - "id": 1807, + "id": 1863, "name": "Identifier", "src": "1295:9:8" } ], - "id": 1808, + "id": 1864, "name": "FunctionCall", "src": "1140:174:8" } ], - "id": 1809, + "id": 1865, "name": "Return", "src": "1133:181:8" } ], - "id": 1810, + "id": 1866, "name": "Block", "src": "1123:198:8" } ], - "id": 1811, + "id": 1867, "name": "FunctionDefinition", "src": "901:420:8" } ], - "id": 1812, + "id": 1868, "name": "ContractDefinition", "src": "26:1297:8" } ], - "id": 1813, + "id": 1869, "name": "SourceUnit", "src": "0:1323:8" }, @@ -1169,5 +1169,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.896Z" + "updatedAt": "2018-01-14T10:53:22.999Z" } \ No newline at end of file diff --git a/build/contracts/BadgeManager.json b/build/contracts/BadgeManager.json index 78fea02..6e19b40 100644 --- a/build/contracts/BadgeManager.json +++ b/build/contracts/BadgeManager.json @@ -1,6 +1,68 @@ { "contractName": "BadgeManager", "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_issuer", + "type": "address" + } + ], + "name": "getBadgeLinkHash", + "outputs": [ + { + "name": "hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "issuer", + "type": "address" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "image", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "recipient", + "type": "address" + } + ], + "name": "getIntegrityHash", + "outputs": [ + { + "name": "_hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [], @@ -194,6 +256,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "_badgename", + "type": "string" + } + ], + "name": "getBadgeNameHash", + "outputs": [ + { + "name": "_hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [], @@ -322,18 +403,18 @@ "type": "event" } ], - "bytecode": "0x6060604052341561000f57600080fd5b604051602080611d808339810160405280805190602001909190505080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050611d038061007d6000396000f3006060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806324ddd51a146100bf5780633557b6c3146100e85780633b57391a1461014b57806359c293f1146101845780635c9d3a94146101c357806372ee19a2146102e957806377002fcf1461035e5780637c59fda014610575578063b61092211461059e578063be47aa0914610613578063f851a4401461064c578063f9afc242146106a1575b600080fd5b34156100ca57600080fd5b6100d261072c565b6040518082815260200191505060405180910390f35b34156100f357600080fd5b610109600480803590602001909190505061073c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561015657600080fd5b610182600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610819565b005b341561018f57600080fd5b6101a56004808035906020019091905050610a9d565b60405180826000191660001916815260200191505060405180910390f35b34156101ce57600080fd5b6102e7600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610ac4565b005b34156102f457600080fd5b610344600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f3d565b604051808215151515815260200191505060405180910390f35b341561036957600080fd5b610383600480803560001916906020019091905050611097565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b838110156104015780820151818401526020810190506103e6565b50505050905090810190601f16801561042e5780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b8381101561046757808201518184015260208101905061044c565b50505050905090810190601f1680156104945780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156104cd5780820151818401526020810190506104b2565b50505050905090810190601f1680156104fa5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610533578082015181840152602081019050610518565b50505050905090810190601f1680156105605780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b341561058057600080fd5b61058861146b565b6040518082815260200191505060405180910390f35b34156105a957600080fd5b6105f9600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611478565b604051808215151515815260200191505060405180910390f35b341561061e57600080fd5b61064a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118ac565b005b341561065757600080fd5b61065f611a3f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106ac57600080fd5b6106d8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a64565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000600360020180549050905090565b60006001600060028481548110151561075157fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff161561080f576002828154811015156107dc57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610814565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156108e957600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001600280548060010182816109279190611abb565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000600360020182815481101515610ab157fe5b9060005260206000209001549050919050565b600080610acf611ae7565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610b795750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610bf657600080fd5b87610c0081610f3d565b1515610c0b57600080fd5b73__BadgeLibrary__________________________63c1eabde98a6000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c9a578082015181840152602081019050610c7f565b50505050905090810190601f168015610cc75780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515610ce357600080fd5b6102c65a03f41515610cf457600080fd5b505050604051805190509550600160036002018054806001018281610d199190611b45565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610df8929190611b71565b506040820151816002019080519060200190610e15929190611b71565b506060820151816003019080519060200190610e32929190611b71565b506080820151816004019080519060200190610e4f929190611b71565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ef7578082015181840152602081019050610edc565b50505050905090810190601f168015610f245780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008073__BadgeLibrary__________________________63c1eabde9846000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610fcf578082015181840152602081019050610fb4565b50505050905090810190601f168015610ffc5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561101857600080fd5b6102c65a03f4151561102957600080fd5b5050506040518051905090506000600360020180549050148061108f5750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561107c57fe5b9060005260206000209001546000191614155b915050919050565b60006110a1611bf1565b6110a9611bf1565b6110b1611bf1565b6110b9611bf1565b6110c1611ae7565b86600060036002018054905011801561111c5750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561110a57fe5b90600052602060002090015460001916145b151561112757600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112405780601f1061121557610100808354040283529160200191611240565b820191906000526020600020905b81548152906001019060200180831161122357829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112e25780601f106112b7576101008083540402835291602001916112e2565b820191906000526020600020905b8154815290600101906020018083116112c557829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113845780601f1061135957610100808354040283529160200191611384565b820191906000526020600020905b81548152906001019060200180831161136757829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114265780601f106113fb57610100808354040283529160200191611426565b820191906000526020600020905b81548152906001019060200180831161140957829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806115285750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156115a557600080fd5b73__BadgeLibrary__________________________63c1eabde9886000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611634578082015181840152602081019050611619565b50505050905090810190601f1680156116615780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561167d57600080fd5b6102c65a03f4151561168e57600080fd5b50505060405180519050945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156116d857fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561171c57fe5b9060005260206000209001816000191690555060036002018054809190600190036117479190611c05565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061179e9190611c31565b6002820160006117ae9190611c31565b6003820160006117be9190611c31565b6004820160006117ce9190611c31565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611863578082015181840152602081019050611848565b50505050905090810190601f1680156118905780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561197c57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b815481835581811511611ae257818360005260206000209182019101611ae19190611c79565b5b505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001611b18611c9e565b8152602001611b25611c9e565b8152602001611b32611c9e565b8152602001611b3f611c9e565b81525090565b815481835581811511611b6c57818360005260206000209182019101611b6b9190611cb2565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611bb257805160ff1916838001178555611be0565b82800160010185558215611be0579182015b82811115611bdf578251825591602001919060010190611bc4565b5b509050611bed9190611c79565b5090565b602060405190810160405280600081525090565b815481835581811511611c2c57818360005260206000209182019101611c2b9190611cb2565b5b505050565b50805460018160011615610100020316600290046000825580601f10611c575750611c76565b601f016020900490600052602060002090810190611c759190611c79565b5b50565b611c9b91905b80821115611c97576000816000905550600101611c7f565b5090565b90565b602060405190810160405280600081525090565b611cd491905b80821115611cd0576000816000905550600101611cb8565b5090565b905600a165627a7a723058208303134cd8b59c526a1d70eff1a00e23338d1710eecb4c33cc5e0ba1631f7ffa0029", - "deployedBytecode": "0x6060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806324ddd51a146100bf5780633557b6c3146100e85780633b57391a1461014b57806359c293f1146101845780635c9d3a94146101c357806372ee19a2146102e957806377002fcf1461035e5780637c59fda014610575578063b61092211461059e578063be47aa0914610613578063f851a4401461064c578063f9afc242146106a1575b600080fd5b34156100ca57600080fd5b6100d261072c565b6040518082815260200191505060405180910390f35b34156100f357600080fd5b610109600480803590602001909190505061073c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561015657600080fd5b610182600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610819565b005b341561018f57600080fd5b6101a56004808035906020019091905050610a9d565b60405180826000191660001916815260200191505060405180910390f35b34156101ce57600080fd5b6102e7600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610ac4565b005b34156102f457600080fd5b610344600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f3d565b604051808215151515815260200191505060405180910390f35b341561036957600080fd5b610383600480803560001916906020019091905050611097565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b838110156104015780820151818401526020810190506103e6565b50505050905090810190601f16801561042e5780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b8381101561046757808201518184015260208101905061044c565b50505050905090810190601f1680156104945780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156104cd5780820151818401526020810190506104b2565b50505050905090810190601f1680156104fa5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610533578082015181840152602081019050610518565b50505050905090810190601f1680156105605780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b341561058057600080fd5b61058861146b565b6040518082815260200191505060405180910390f35b34156105a957600080fd5b6105f9600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611478565b604051808215151515815260200191505060405180910390f35b341561061e57600080fd5b61064a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506118ac565b005b341561065757600080fd5b61065f611a3f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106ac57600080fd5b6106d8600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a64565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000600360020180549050905090565b60006001600060028481548110151561075157fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff161561080f576002828154811015156107dc57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610814565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156108e957600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001600280548060010182816109279190611abb565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000600360020182815481101515610ab157fe5b9060005260206000209001549050919050565b600080610acf611ae7565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610b795750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610bf657600080fd5b87610c0081610f3d565b1515610c0b57600080fd5b73__BadgeLibrary__________________________63c1eabde98a6000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c9a578082015181840152602081019050610c7f565b50505050905090810190601f168015610cc75780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515610ce357600080fd5b6102c65a03f41515610cf457600080fd5b505050604051805190509550600160036002018054806001018281610d199190611b45565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610df8929190611b71565b506040820151816002019080519060200190610e15929190611b71565b506060820151816003019080519060200190610e32929190611b71565b506080820151816004019080519060200190610e4f929190611b71565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ef7578082015181840152602081019050610edc565b50505050905090810190601f168015610f245780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008073__BadgeLibrary__________________________63c1eabde9846000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610fcf578082015181840152602081019050610fb4565b50505050905090810190601f168015610ffc5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561101857600080fd5b6102c65a03f4151561102957600080fd5b5050506040518051905090506000600360020180549050148061108f5750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561107c57fe5b9060005260206000209001546000191614155b915050919050565b60006110a1611bf1565b6110a9611bf1565b6110b1611bf1565b6110b9611bf1565b6110c1611ae7565b86600060036002018054905011801561111c5750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561110a57fe5b90600052602060002090015460001916145b151561112757600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112405780601f1061121557610100808354040283529160200191611240565b820191906000526020600020905b81548152906001019060200180831161122357829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112e25780601f106112b7576101008083540402835291602001916112e2565b820191906000526020600020905b8154815290600101906020018083116112c557829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113845780601f1061135957610100808354040283529160200191611384565b820191906000526020600020905b81548152906001019060200180831161136757829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114265780601f106113fb57610100808354040283529160200191611426565b820191906000526020600020905b81548152906001019060200180831161140957829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806115285750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156115a557600080fd5b73__BadgeLibrary__________________________63c1eabde9886000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611634578082015181840152602081019050611619565b50505050905090810190601f1680156116615780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561167d57600080fd5b6102c65a03f4151561168e57600080fd5b50505060405180519050945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156116d857fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561171c57fe5b9060005260206000209001816000191690555060036002018054809190600190036117479190611c05565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061179e9190611c31565b6002820160006117ae9190611c31565b6003820160006117be9190611c31565b6004820160006117ce9190611c31565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611863578082015181840152602081019050611848565b50505050905090810190601f1680156118905780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561197c57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b815481835581811511611ae257818360005260206000209182019101611ae19190611c79565b5b505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001611b18611c9e565b8152602001611b25611c9e565b8152602001611b32611c9e565b8152602001611b3f611c9e565b81525090565b815481835581811511611b6c57818360005260206000209182019101611b6b9190611cb2565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611bb257805160ff1916838001178555611be0565b82800160010185558215611be0579182015b82811115611bdf578251825591602001919060010190611bc4565b5b509050611bed9190611c79565b5090565b602060405190810160405280600081525090565b815481835581811511611c2c57818360005260206000209182019101611c2b9190611cb2565b5b505050565b50805460018160011615610100020316600290046000825580601f10611c575750611c76565b601f016020900490600052602060002090810190611c759190611c79565b5b50565b611c9b91905b80821115611c97576000816000905550600101611c7f565b5090565b90565b602060405190810160405280600081525090565b611cd491905b80821115611cd0576000816000905550600101611cb8565b5090565b905600a165627a7a723058208303134cd8b59c526a1d70eff1a00e23338d1710eecb4c33cc5e0ba1631f7ffa0029", - "sourceMap": "111:4420:1:-;;;476:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;548:16;601::0;593:5;;:24;;;;;;;;;;;;;;;;;;524:100;476:92:1;111:4420;;;;;;", - "deployedSourceMap": "111:4420:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;4395:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1892:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;710:284;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3782:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:673:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;109:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:129:1;3525:10;3558;:25;;:32;;;;3551:39;;3468:129;:::o;2378:272:0:-;2441:15;2472:21;:53;2494:22;2517:6;2494:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:53;;;;;;;;;;;;;;;:66;;;;;;;;;;;;2468:176;;;2561:22;2584:6;2561:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:37;;;;2468:176;160:42;2622:11;;2378:272;;;;:::o;1500:247::-;1562:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;1620:78;;;;;;;;;1638:10;1620:78;;;;;;1690:1;1650:22;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:10;1650:39;;;;;;;;;;;;;;;;;;;;;;:41;1620:78;;;;1693:4;1620:78;;;;;1584:21;:33;1606:10;1584:33;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:32;1729:10;1708:32;;;;;;;;;;;;;;;;;;;;;;1500:247;;;:::o;4395:133:1:-;4456:13;4488:10;:25;;4514:6;4488:33;;;;;;;;;;;;;;;;;;;4481:40;;4395:133;;;:::o;1892:669::-;2088:21;2158:10;2228:31;;:::i;:::-;2032:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2056:5:1;670:15;679:5;670:8;:15::i;:::-;662:24;;;;;;;;2112:12;:29;2142:5;2112:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2088:60:1;;2217:1;2171:10;:25;;:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;2202:13;2171:45;;;;;;;;;;;:47;2158:60;;2262:142;;;;;;;;;2302:4;2262:142;;;;;;2321:12;2262:142;;;;2347:5;2262:142;;;;2366:6;2262:142;;;;2386:8;2262:142;;;2228:176;;2449:5;2414:10;:17;;:32;2432:13;2414:32;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2501:5;2464:10;:19;;:34;2484:13;2464:34;;;;;;;;;;;;;;;;;:42;;;;2541:5;:12;;;2516:38;;;2529:5;:10;;;2516:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:1:0;1892:669:1;;;;;;;;;:::o;710:284::-;766:11;789:21;813:12;:29;843:5;813:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;789:60:1;;903:1;867:10;:25;;:32;;;;:37;:119;;;;973:13;908:78;;;:10;:25;;934:10;:19;;:34;954:13;934:34;;;;;;;;;;;;;;;;;;908:61;;;;;;;;;;;;;;;;;;;:78;;;;;867:119;859:128;;710:284;;;;:::o;3782:472::-;3893:14;3917:18;;:::i;:::-;3945:12;;:::i;:::-;3967;;:::i;:::-;3989:14;;:::i;:::-;4020:31;;:::i;:::-;3844:14;1470:1;1435:10;:25;;:32;;;;:36;:120;;;;;1541:14;1475:80;;;:10;:25;;1501:10;:19;;:35;1521:14;1501:35;;;;;;;;;;;;;;;;;;1475:62;;;;;;;;;;;;;;;;;;;:80;;;;1435:120;1427:129;;;;;;;;4054:10;:17;;:33;4072:14;4054:33;;;;;;;;;;;;;;;;;4020:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4118:5;:12;;;4144:5;:17;;;4175:5;:10;;;4199:5;:11;;;4224:5;:13;;;4097:150;;;;;;;;;;;;;;;;;;;;;;3782:472;;;;;;;;;:::o;2790:135:0:-;2851:19;2889:22;:29;;;;2882:36;;2790:135;:::o;2656:673:1:-;2737:12;2765:21;2835:16;2898:17;2706:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2789:12:1;:29;2819:5;2789:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:60:1;;2854:10;:19;;:34;2874:13;2854:34;;;;;;;;;;;;;;;;;;2835:53;;2918:10;:25;;2977:1;2944:10;:25;;:32;;;;:34;2918:61;;;;;;;;;;;;;;;;;;;2898:81;;3022:11;2989:10;:19;;:30;3009:9;2989:30;;;;;;;;;;;;;;;;;:44;;;;3084:9;3043:10;:25;;3069:11;3043:38;;;;;;;;;;;;;;;;;;:50;;;;;;;3103:10;:25;;:34;;;;;;;;;;;;:::i;:::-;;3154:10;:17;;:32;3172:13;3154:32;;;;;;;;;;;;;;;;;;3147:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;3203:10;:19;;:34;3223:13;3203:34;;;;;;;;;;;;;;;;;3196:41;;;3248:53;3261:5;3268:10;:25;;:32;;;;3248:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3318:4:1;3311:11;;2656:673;;;;;;;;:::o;1945:190:0:-;2012:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;2080:5;2034:21;:30;2056:7;2034:30;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;2095:33;2120:7;2095:33;;;;;;;;;;;;;;;;;;;;;;1945:190;;;:::o;109:20::-;;;;;;;;;;;;;:::o;370:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;111:4420:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.17;\n\nimport \"BadgeLibrary/contracts/BadgeLibrary.sol\";\n\nimport \"./AuthorizedIssuer.sol\";\n\ncontract BadgeManager is AuthorizedIssuer {\n\n /// @notice mapping of badgename hash to badge\n /// @notice array of badge hash names\n struct Vault {\n mapping (bytes32=>BadgeLibrary.Badge) badges;\n mapping (bytes32=>uint) indexMap;\n bytes32[] badgeHashNames;\n }\n\n /// @notice storage for earnable badges\n Vault badgeVault;\n\n function BadgeManager(address _adminWalletAddr) public AuthorizedIssuer(_adminWalletAddr) {}\n\n /// @notice makes sure badge is unique\n modifier uniqueBadge(string _name) {\n require(isUnique(_name));\n _;\n }\n\n function isUnique(string _name) public constant returns(bool unique) {\n bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_name);\n return (badgeVault.badgeHashNames.length == 0 || badgeVault.badgeHashNames[badgeVault.indexMap[badgeNameHash]] != badgeNameHash);\n }\n\n /// @notice checks if a badge exists by name\n modifier badgeExists(string _name) {\n bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_name);\n require(badgeVault.badgeHashNames.length > 0 && badgeVault.badgeHashNames[badgeVault.indexMap[badgeNameHash]] == badgeNameHash);\n _;\n }\n\n /// @notice checks if a badge exists by name\n modifier badgeNameHashExists(bytes32 _badgeNameHash) {\n require(badgeVault.badgeHashNames.length > 0 && badgeVault.badgeHashNames[badgeVault.indexMap[_badgeNameHash]] == _badgeNameHash);\n _;\n }\n\n event BadgeCreated(\n string _name,\n address indexed _issuer\n );\n /// @notice create a new badge store it in the badging map\n /// @param _description Description of the badge\n /// @param _name name of the badge\n /// @param _image badge image\n /// @param _version badge version\n function createBadge(\n string _description,\n string _name,\n string _image,\n string _version)\n authorized(msg.sender) uniqueBadge(_name) public\n {\n bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_name);\n uint index = badgeVault.badgeHashNames.push(badgeNameHash)-1;\n BadgeLibrary.Badge memory badge = BadgeLibrary.Badge(\n address(this),\n _description,\n _name,\n _image,\n _version\n );\n badgeVault.badges[badgeNameHash] = badge;\n badgeVault.indexMap[badgeNameHash] = index;\n BadgeCreated(badge.name, badge.issuer);\n }\n\n event BadgeDeleted(string _name, uint count);\n /// @notice delete a created badge\n function deleteBadge(string _name)\n authorized(msg.sender)\n public returns(bool success)\n {\n bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_name);\n uint rowToDelete = badgeVault.indexMap[badgeNameHash];\n bytes32 rowToMove = badgeVault.badgeHashNames[badgeVault.badgeHashNames.length-1];\n badgeVault.indexMap[rowToMove] = rowToDelete;\n badgeVault.badgeHashNames[rowToDelete] = rowToMove;\n badgeVault.badgeHashNames.length--;\n delete badgeVault.badges[badgeNameHash];\n delete badgeVault.indexMap[badgeNameHash];\n\n BadgeDeleted(_name, badgeVault.badgeHashNames.length);\n return true;\n }\n\n // @notice get the number of badges (used by frontend as iterator index to retrieve each badge) authorized(_sig, _v, _r, _s)\n function getNumberOfBadges()\n constant public returns(uint count)\n {\n return badgeVault.badgeHashNames.length;\n }\n\n /// @notice get a badge by it's index (should be used by frontend in a loop to get all the badges)\n /// @param _badgeNameHash name of the badge to get inside the badge map\n function getBadge(bytes32 _badgeNameHash) badgeNameHashExists(_badgeNameHash) constant public returns(\n address issuer,\n string description,\n string bName,\n string image,\n string version\n ) {\n BadgeLibrary.Badge memory badge = badgeVault.badges[_badgeNameHash];\n return (\n badge.issuer,\n badge.description,\n badge.name,\n badge.image,\n badge.version\n );\n }\n\n /// @notice helper function for UI to retrieve all names then retrieve the badges\n /// @param _index index of the name you want\n function getNameByIndex(uint _index) constant public returns(bytes32 _name) {\n return badgeVault.badgeHashNames[_index];\n }\n\n}\n", + "bytecode": "0x6060604052341561000f57600080fd5b6040516020806120868339810160405280805190602001909190505080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506120098061007d6000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063164f0a4e146100e05780631ddb6af61461017857806324ddd51a146102f85780633557b6c3146103215780633b57391a1461038457806359c293f1146103bd5780635c9d3a94146103fc57806372ee19a21461052257806377002fcf146105975780637c59fda0146107ae578063b6109221146107d7578063be47aa091461084c578063c1eabde914610885578063f851a440146108fe578063f9afc24214610953575b600080fd5b34156100eb57600080fd5b61015a600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109de565b60405180826000191660001916815260200191505060405180910390f35b341561018357600080fd5b6102da600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a8e565b60405180826000191660001916815260200191505060405180910390f35b341561030357600080fd5b61030b610c84565b6040518082815260200191505060405180910390f35b341561032c57600080fd5b6103426004808035906020019091905050610c94565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038f57600080fd5b6103bb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d71565b005b34156103c857600080fd5b6103de6004808035906020019091905050610ff5565b60405180826000191660001916815260200191505060405180910390f35b341561040757600080fd5b610520600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061101c565b005b341561052d57600080fd5b61057d600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506113ab565b604051808215151515815260200191505060405180910390f35b34156105a257600080fd5b6105bc60048080356000191690602001909190505061141b565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561063a57808201518184015260208101905061061f565b50505050905090810190601f1680156106675780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156106a0578082015181840152602081019050610685565b50505050905090810190601f1680156106cd5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156107065780820151818401526020810190506106eb565b50505050905090810190601f1680156107335780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561076c578082015181840152602081019050610751565b50505050905090810190601f1680156107995780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156107b957600080fd5b6107c16117ef565b6040518082815260200191505060405180910390f35b34156107e257600080fd5b610832600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506117fc565b604051808215151515815260200191505060405180910390f35b341561085757600080fd5b610883600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b46565b005b341561089057600080fd5b6108e0600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611cd9565b60405180826000191660001916815260200191505060405180910390f35b341561090957600080fd5b610911611d45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095e57600080fd5b61098a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d6a565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b600082826040518083805190602001908083835b602083101515610a1757805182526020820191506020810190506020830392506109f2565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905092915050565b6000868686868686604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186805190602001908083835b602083101515610b0c5780518252602082019150602081019050602083039250610ae7565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515610b5f5780518252602082019150602081019050602083039250610b3a565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515610bb25780518252602082019150602081019050602083039250610b8d565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515610c055780518252602082019150602081019050602083039250610be0565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019650505050505050604051809103902090509695505050505050565b6000600360020180549050905090565b600060016000600284815481101515610ca957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615610d6757600282815481101515610d3457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610d6c565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610e4157600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff168152602001600160028054806001018281610e7f9190611dc1565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060036002018281548110151561100957fe5b9060005260206000209001549050919050565b600080611027611ded565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806110d15750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561114e57600080fd5b87611158816113ab565b151561116357600080fd5b61116c89611cd9565b95506001600360020180548060010182816111879190611e4b565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611266929190611e77565b506040820151816002019080519060200190611283929190611e77565b5060608201518160030190805190602001906112a0929190611e77565b5060808201518160040190805190602001906112bd929190611e77565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b8381101561136557808201518184015260208101905061134a565b50505050905090810190601f1680156113925780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b6000806113b783611cd9565b9050600060036002018054905014806114135750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561140057fe5b9060005260206000209001546000191614155b915050919050565b6000611425611ef7565b61142d611ef7565b611435611ef7565b61143d611ef7565b611445611ded565b8660006003600201805490501180156114a05750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561148e57fe5b90600052602060002090015460001916145b15156114ab57600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115c45780601f10611599576101008083540402835291602001916115c4565b820191906000526020600020905b8154815290600101906020018083116115a757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116665780601f1061163b57610100808354040283529160200191611666565b820191906000526020600020905b81548152906001019060200180831161164957829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117085780601f106116dd57610100808354040283529160200191611708565b820191906000526020600020905b8154815290600101906020018083116116eb57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117aa5780601f1061177f576101008083540402835291602001916117aa565b820191906000526020600020905b81548152906001019060200180831161178d57829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806118ac5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561192957600080fd5b61193287611cd9565b9450600360010160008660001916600019168152602001908152602001600020549350600360020160016003600201805490500381548110151561197257fe5b90600052602060002090015492508360036001016000856000191660001916815260200190815260200160002081905550826003600201858154811015156119b657fe5b9060005260206000209001816000191690555060036002018054809190600190036119e19190611f0b565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611a389190611f37565b600282016000611a489190611f37565b600382016000611a589190611f37565b600482016000611a689190611f37565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611afd578082015181840152602081019050611ae2565b50505050905090810190601f168015611b2a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611c1657600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000816040518082805190602001908083835b602083101515611d115780518252602082019150602081019050602083039250611cec565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b815481835581811511611de857818360005260206000209182019101611de79190611f7f565b5b505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001611e1e611fa4565b8152602001611e2b611fa4565b8152602001611e38611fa4565b8152602001611e45611fa4565b81525090565b815481835581811511611e7257818360005260206000209182019101611e719190611fb8565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611eb857805160ff1916838001178555611ee6565b82800160010185558215611ee6579182015b82811115611ee5578251825591602001919060010190611eca565b5b509050611ef39190611f7f565b5090565b602060405190810160405280600081525090565b815481835581811511611f3257818360005260206000209182019101611f319190611fb8565b5b505050565b50805460018160011615610100020316600290046000825580601f10611f5d5750611f7c565b601f016020900490600052602060002090810190611f7b9190611f7f565b5b50565b611fa191905b80821115611f9d576000816000905550600101611f85565b5090565b90565b602060405190810160405280600081525090565b611fda91905b80821115611fd6576000816000905550600101611fbe565b5090565b905600a165627a7a7230582098d3dc5536929cc0790d66b25ca7159b7620e1effdc73b175d53706957253da70029", + "deployedBytecode": "0x6060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063164f0a4e146100e05780631ddb6af61461017857806324ddd51a146102f85780633557b6c3146103215780633b57391a1461038457806359c293f1146103bd5780635c9d3a94146103fc57806372ee19a21461052257806377002fcf146105975780637c59fda0146107ae578063b6109221146107d7578063be47aa091461084c578063c1eabde914610885578063f851a440146108fe578063f9afc24214610953575b600080fd5b34156100eb57600080fd5b61015a600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109de565b60405180826000191660001916815260200191505060405180910390f35b341561018357600080fd5b6102da600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610a8e565b60405180826000191660001916815260200191505060405180910390f35b341561030357600080fd5b61030b610c84565b6040518082815260200191505060405180910390f35b341561032c57600080fd5b6103426004808035906020019091905050610c94565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561038f57600080fd5b6103bb600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d71565b005b34156103c857600080fd5b6103de6004808035906020019091905050610ff5565b60405180826000191660001916815260200191505060405180910390f35b341561040757600080fd5b610520600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061101c565b005b341561052d57600080fd5b61057d600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506113ab565b604051808215151515815260200191505060405180910390f35b34156105a257600080fd5b6105bc60048080356000191690602001909190505061141b565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561063a57808201518184015260208101905061061f565b50505050905090810190601f1680156106675780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156106a0578082015181840152602081019050610685565b50505050905090810190601f1680156106cd5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156107065780820151818401526020810190506106eb565b50505050905090810190601f1680156107335780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b8381101561076c578082015181840152602081019050610751565b50505050905090810190601f1680156107995780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156107b957600080fd5b6107c16117ef565b6040518082815260200191505060405180910390f35b34156107e257600080fd5b610832600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506117fc565b604051808215151515815260200191505060405180910390f35b341561085757600080fd5b610883600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b46565b005b341561089057600080fd5b6108e0600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611cd9565b60405180826000191660001916815260200191505060405180910390f35b341561090957600080fd5b610911611d45565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095e57600080fd5b61098a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d6a565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b600082826040518083805190602001908083835b602083101515610a1757805182526020820191506020810190506020830392506109f2565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905092915050565b6000868686868686604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186805190602001908083835b602083101515610b0c5780518252602082019150602081019050602083039250610ae7565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515610b5f5780518252602082019150602081019050602083039250610b3a565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515610bb25780518252602082019150602081019050602083039250610b8d565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515610c055780518252602082019150602081019050602083039250610be0565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019650505050505050604051809103902090509695505050505050565b6000600360020180549050905090565b600060016000600284815481101515610ca957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615610d6757600282815481101515610d3457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050610d6c565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610e4157600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff168152602001600160028054806001018281610e7f9190611dc1565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060036002018281548110151561100957fe5b9060005260206000209001549050919050565b600080611027611ded565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806110d15750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561114e57600080fd5b87611158816113ab565b151561116357600080fd5b61116c89611cd9565b95506001600360020180548060010182816111879190611e4b565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611266929190611e77565b506040820151816002019080519060200190611283929190611e77565b5060608201518160030190805190602001906112a0929190611e77565b5060808201518160040190805190602001906112bd929190611e77565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b8381101561136557808201518184015260208101905061134a565b50505050905090810190601f1680156113925780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b6000806113b783611cd9565b9050600060036002018054905014806114135750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561140057fe5b9060005260206000209001546000191614155b915050919050565b6000611425611ef7565b61142d611ef7565b611435611ef7565b61143d611ef7565b611445611ded565b8660006003600201805490501180156114a05750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561148e57fe5b90600052602060002090015460001916145b15156114ab57600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115c45780601f10611599576101008083540402835291602001916115c4565b820191906000526020600020905b8154815290600101906020018083116115a757829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116665780601f1061163b57610100808354040283529160200191611666565b820191906000526020600020905b81548152906001019060200180831161164957829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117085780601f106116dd57610100808354040283529160200191611708565b820191906000526020600020905b8154815290600101906020018083116116eb57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117aa5780601f1061177f576101008083540402835291602001916117aa565b820191906000526020600020905b81548152906001019060200180831161178d57829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806118ac5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561192957600080fd5b61193287611cd9565b9450600360010160008660001916600019168152602001908152602001600020549350600360020160016003600201805490500381548110151561197257fe5b90600052602060002090015492508360036001016000856000191660001916815260200190815260200160002081905550826003600201858154811015156119b657fe5b9060005260206000209001816000191690555060036002018054809190600190036119e19190611f0b565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611a389190611f37565b600282016000611a489190611f37565b600382016000611a589190611f37565b600482016000611a689190611f37565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611afd578082015181840152602081019050611ae2565b50505050905090810190601f168015611b2a5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611c1657600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000816040518082805190602001908083835b602083101515611d115780518252602082019150602081019050602083039250611cec565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b815481835581811511611de857818360005260206000209182019101611de79190611f7f565b5b505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001611e1e611fa4565b8152602001611e2b611fa4565b8152602001611e38611fa4565b8152602001611e45611fa4565b81525090565b815481835581811511611e7257818360005260206000209182019101611e719190611fb8565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611eb857805160ff1916838001178555611ee6565b82800160010185558215611ee6579182015b82811115611ee5578251825591602001919060010190611eca565b5b509050611ef39190611f7f565b5090565b602060405190810160405280600081525090565b815481835581811511611f3257818360005260206000209182019101611f319190611fb8565b5b505050565b50805460018160011615610100020316600290046000825580601f10611f5d5750611f7c565b601f016020900490600052602060002090810190611f7b9190611f7f565b5b50565b611fa191905b80821115611f9d576000816000905550600101611f85565b5090565b90565b602060405190810160405280600081525090565b611fda91905b80821115611fd6576000816000905550600101611fbe565b5090565b905600a165627a7a7230582098d3dc5536929cc0790d66b25ca7159b7620e1effdc73b175d53706957253da70029", + "sourceMap": "60:5567:1:-;;;822:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;894:16;601::0;593:5;;:24;;;;;;;;;;;;;;;;;;524:100;822:92:1;60:5567;;;;;;", + "deployedSourceMap": "60:5567:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5010:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5215:410;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3736:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;4650:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2212:630;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1056:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4050:459;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:660:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4831:126:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;109:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5010:141:1;5088:12;5129:5;5136:7;5119:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5112:32:1;;5010:141;;;;:::o;5215:410::-;5413:13;5476:6;5500:11;5529:4;5551:5;5574:7;5599:9;5449:169;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5442:176:1;;5215:410;;;;;;;;:::o;3736:129::-;3793:10;3826;:25;;:32;;;;3819:39;;3736:129;:::o;2378:272:0:-;2441:15;2472:21;:53;2494:22;2517:6;2494:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:53;;;;;;;;;;;;;;;:66;;;;;;;;;;;;2468:176;;;2561:22;2584:6;2561:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:37;;;;2468:176;160:42;2622:11;;2378:272;;;;:::o;1500:247::-;1562:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;1620:78;;;;;;;;;1638:10;1620:78;;;;;;1690:1;1650:22;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:10;1650:39;;;;;;;;;;;;;;;;;;;;;;:41;1620:78;;;;1693:4;1620:78;;;;;1584:21;:33;1606:10;1584:33;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:32;1729:10;1708:32;;;;;;;;;;;;;;;;;;;;;;1500:247;;;:::o;4650:133:1:-;4711:13;4743:10;:25;;4769:6;4743:33;;;;;;;;;;;;;;;;;;;4736:40;;4650:133;;;:::o;2212:630::-;2408:21;2465:10;2535:18;;:::i;:::-;2352:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2376:5:1;1016:15;1025:5;1016:8;:15::i;:::-;1008:24;;;;;;;;2432:23;2449:5;2432:16;:23::i;:::-;2408:47;;2524:1;2478:10;:25;;:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;2509:13;2478:45;;;;;;;;;;;:47;2465:60;;2556:129;;;;;;;;;2583:4;2556:129;;;;;;2602:12;2556:129;;;;2628:5;2556:129;;;;2647:6;2556:129;;;;2667:8;2556:129;;;2535:150;;2730:5;2695:10;:17;;:32;2713:13;2695:32;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2782:5;2745:10;:19;;:34;2765:13;2745:34;;;;;;;;;;;;;;;;;:42;;;;2822:5;:12;;;2797:38;;;2810:5;:10;;;2797:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:1:0;2212:630:1;;;;;;;;;:::o;1056:271::-;1112:11;1135:21;1159:23;1176:5;1159:16;:23::i;:::-;1135:47;;1236:1;1200:10;:25;;:32;;;;:37;:119;;;;1306:13;1241:78;;;:10;:25;;1267:10;:19;;:34;1287:13;1267:34;;;;;;;;;;;;;;;;;;1241:61;;;;;;;;;;;;;;;;;;;:78;;;;;1200:119;1192:128;;1056:271;;;;:::o;4050:459::-;4161:14;4185:18;;:::i;:::-;4213:12;;:::i;:::-;4235;;:::i;:::-;4257:14;;:::i;:::-;4288:18;;:::i;:::-;4112:14;1790:1;1755:10;:25;;:32;;;;:36;:120;;;;;1861:14;1795:80;;;:10;:25;;1821:10;:19;;:35;1841:14;1821:35;;;;;;;;;;;;;;;;;;1795:62;;;;;;;;;;;;;;;;;;;:80;;;;1755:120;1747:129;;;;;;;;4309:10;:17;;:33;4327:14;4309:33;;;;;;;;;;;;;;;;;4288:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4373:5;:12;;;4399:5;:17;;;4430:5;:10;;;4454:5;:11;;;4479:5;:13;;;4352:150;;;;;;;;;;;;;;;;;;;;;;4050:459;;;;;;;;;:::o;2790:135:0:-;2851:19;2889:22;:29;;;;2882:36;;2790:135;:::o;2937:660:1:-;3018:12;3046:21;3103:16;3166:17;2987:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;3070:23:1;3087:5;3070:16;:23::i;:::-;3046:47;;3122:10;:19;;:34;3142:13;3122:34;;;;;;;;;;;;;;;;;;3103:53;;3186:10;:25;;3245:1;3212:10;:25;;:32;;;;:34;3186:61;;;;;;;;;;;;;;;;;;;3166:81;;3290:11;3257:10;:19;;:30;3277:9;3257:30;;;;;;;;;;;;;;;;;:44;;;;3352:9;3311:10;:25;;3337:11;3311:38;;;;;;;;;;;;;;;;;;:50;;;;;;;3371:10;:25;;:34;;;;;;;;;;;;:::i;:::-;;3422:10;:17;;:32;3440:13;3422:32;;;;;;;;;;;;;;;;;;3415:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;3471:10;:19;;:34;3491:13;3471:34;;;;;;;;;;;;;;;;;3464:41;;;3516:53;3529:5;3536:10;:25;;:32;;;;3516:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3586:4:1;3579:11;;2937:660;;;;;;;;:::o;1945:190:0:-;2012:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;2080:5;2034:21;:30;2056:7;2034:30;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;2095:33;2120:7;2095:33;;;;;;;;;;;;;;;;;;;;;;1945:190;;;:::o;4831:126:1:-;4897:13;4939:10;4929:21;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;4922:28:1;;4831:126;;;:::o;109:20:0:-;;;;;;;;;;;;;:::o;370:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;60:5567:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.17;\n\nimport \"./AuthorizedIssuer.sol\";\n\ncontract BadgeManager is AuthorizedIssuer {\n /// @notice represents simple details about a earnable badge\n struct Badge {\n address issuer;\n string description;\n string name;\n string image;\n string version;\n }\n\n /// @notice represents details of an issued badge\n struct Credential {\n Badge badge;\n uint expires;\n address recipient;\n bytes32 txnKey;\n bool active;\n }\n\n /// @notice mapping of badgename hash to badge\n /// @notice array of badge hash names\n struct Vault {\n mapping (bytes32=> Badge) badges;\n mapping (bytes32=>uint) indexMap;\n bytes32[] badgeHashNames;\n }\n\n /// @notice storage for earnable badges\n Vault badgeVault;\n\n function BadgeManager(address _adminWalletAddr) public AuthorizedIssuer(_adminWalletAddr) {}\n\n /// @notice makes sure badge is unique\n modifier uniqueBadge(string _name) {\n require(isUnique(_name));\n _;\n }\n\n function isUnique(string _name) public constant returns(bool unique) {\n bytes32 badgeNameHash = getBadgeNameHash(_name);\n return (badgeVault.badgeHashNames.length == 0 || badgeVault.badgeHashNames[badgeVault.indexMap[badgeNameHash]] != badgeNameHash);\n }\n\n /// @notice checks if a badge exists by name\n modifier badgeExists(string _name) {\n bytes32 badgeNameHash = getBadgeNameHash(_name);\n require(badgeVault.badgeHashNames.length > 0 && badgeVault.badgeHashNames[badgeVault.indexMap[badgeNameHash]] == badgeNameHash);\n _;\n }\n\n /// @notice checks if a badge exists by name\n modifier badgeNameHashExists(bytes32 _badgeNameHash) {\n require(badgeVault.badgeHashNames.length > 0 && badgeVault.badgeHashNames[badgeVault.indexMap[_badgeNameHash]] == _badgeNameHash);\n _;\n }\n\n event BadgeCreated(\n string _name,\n address indexed _issuer\n );\n /// @notice create a new badge store it in the badging map\n /// @param _description Description of the badge\n /// @param _name name of the badge\n /// @param _image badge image\n /// @param _version badge version\n function createBadge(\n string _description,\n string _name,\n string _image,\n string _version)\n authorized(msg.sender) uniqueBadge(_name) public\n {\n bytes32 badgeNameHash = getBadgeNameHash(_name);\n uint index = badgeVault.badgeHashNames.push(badgeNameHash)-1;\n Badge memory badge = Badge(\n address(this),\n _description,\n _name,\n _image,\n _version\n );\n badgeVault.badges[badgeNameHash] = badge;\n badgeVault.indexMap[badgeNameHash] = index;\n BadgeCreated(badge.name, badge.issuer);\n }\n\n event BadgeDeleted(string _name, uint count);\n /// @notice delete a created badge\n function deleteBadge(string _name)\n authorized(msg.sender)\n public returns(bool success)\n {\n bytes32 badgeNameHash = getBadgeNameHash(_name);\n uint rowToDelete = badgeVault.indexMap[badgeNameHash];\n bytes32 rowToMove = badgeVault.badgeHashNames[badgeVault.badgeHashNames.length-1];\n badgeVault.indexMap[rowToMove] = rowToDelete;\n badgeVault.badgeHashNames[rowToDelete] = rowToMove;\n badgeVault.badgeHashNames.length--;\n delete badgeVault.badges[badgeNameHash];\n delete badgeVault.indexMap[badgeNameHash];\n\n BadgeDeleted(_name, badgeVault.badgeHashNames.length);\n return true;\n }\n\n // @notice get the number of badges (used by frontend as iterator index to retrieve each badge) authorized(_sig, _v, _r, _s)\n function getNumberOfBadges()\n constant public returns(uint count)\n {\n return badgeVault.badgeHashNames.length;\n }\n\n /// @notice get a badge by it's index (should be used by frontend in a loop to get all the badges)\n /// @param _badgeNameHash name of the badge to get inside the badge map\n function getBadge(bytes32 _badgeNameHash) badgeNameHashExists(_badgeNameHash) constant public returns(\n address issuer,\n string description,\n string bName,\n string image,\n string version\n ) {\n Badge memory badge = badgeVault.badges[_badgeNameHash];\n return (\n badge.issuer,\n badge.description,\n badge.name,\n badge.image,\n badge.version\n );\n }\n\n /// @notice helper function for UI to retrieve all names then retrieve the badges\n /// @param _index index of the name you want\n function getNameByIndex(uint _index) constant public returns(bytes32 _name) {\n return badgeVault.badgeHashNames[_index];\n }\n\n /// @notice compute hash of badgename\n function getBadgeNameHash(string _badgename) pure public returns (bytes32 _hash) {\n return keccak256(_badgename);\n }\n\n /// @notice compute hash for badge linking\n function getBadgeLinkHash(string _name, address _issuer) pure public returns (bytes32 hash) {\n return keccak256(_name, _issuer);\n }\n\n /// @notice compute integrity hash of credential data\n function getIntegrityHash(\n address issuer,\n string description,\n string name,\n string image,\n string version,\n address recipient\n ) pure public returns(bytes32 _hash)\n {\n return keccak256(\n issuer,\n description,\n name,\n image,\n version,\n recipient\n );\n }\n}\n", "sourcePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/BadgeManager.sol", "ast": { "attributes": { "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/BadgeManager.sol", "exportedSymbols": { "BadgeManager": [ - 535 + 601 ] } }, @@ -351,35 +432,20 @@ "name": "PragmaDirective", "src": "0:24:1" }, - { - "attributes": { - "SourceUnit": 1813, - "absolutePath": "BadgeLibrary/contracts/BadgeLibrary.sol", - "file": "BadgeLibrary/contracts/BadgeLibrary.sol", - "scope": 536, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 179, - "name": "ImportDirective", - "src": "26:49:1" - }, { "attributes": { "SourceUnit": 177, "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/AuthorizedIssuer.sol", "file": "./AuthorizedIssuer.sol", - "scope": 536, + "scope": 602, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 180, + "id": 179, "name": "ImportDirective", - "src": "77:32:1" + "src": "26:32:1" }, { "attributes": { @@ -390,11 +456,11 @@ "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 535, + 601, 176 ], "name": "BadgeManager", - "scope": 536 + "scope": 602 }, "children": [ { @@ -411,565 +477,624 @@ "referencedDeclaration": 176, "type": "contract AuthorizedIssuer" }, - "id": 181, + "id": 180, "name": "UserDefinedTypeName", - "src": "136:16:1" + "src": "85:16:1" } ], - "id": 182, + "id": 181, "name": "InheritanceSpecifier", - "src": "136:16:1" + "src": "85:16:1" }, { "attributes": { - "canonicalName": "BadgeManager.Vault", - "name": "Vault", - "scope": 535, + "canonicalName": "BadgeManager.Badge", + "name": "Badge", + "scope": 601, "visibility": "public" }, "children": [ { "attributes": { "constant": false, - "name": "badges", - "scope": 194, + "name": "issuer", + "scope": 192, "stateVariable": false, "storageLocation": "default", - "type": "mapping(bytes32 => struct BadgeLibrary.Badge storage ref)", + "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { - "type": "mapping(bytes32 => struct BadgeLibrary.Badge storage ref)" + "name": "address", + "type": "address" }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 183, - "name": "ElementaryTypeName", - "src": "285:7:1" - }, - { - "attributes": { - "contractScope": null, - "name": "BadgeLibrary.Badge", - "referencedDeclaration": 1746, - "type": "struct BadgeLibrary.Badge storage pointer" - }, - "id": 184, - "name": "UserDefinedTypeName", - "src": "294:18:1" - } - ], - "id": 185, - "name": "Mapping", - "src": "276:37:1" + "id": 182, + "name": "ElementaryTypeName", + "src": "196:7:1" } ], - "id": 186, + "id": 183, "name": "VariableDeclaration", - "src": "276:44:1" + "src": "196:14:1" }, { "attributes": { "constant": false, - "name": "indexMap", - "scope": 194, + "name": "description", + "scope": 192, "stateVariable": false, "storageLocation": "default", - "type": "mapping(bytes32 => uint256)", + "type": "string storage pointer", "value": null, "visibility": "internal" }, "children": [ { "attributes": { - "type": "mapping(bytes32 => uint256)" + "name": "string", + "type": "string storage pointer" }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 187, - "name": "ElementaryTypeName", - "src": "339:7:1" - }, - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 188, - "name": "ElementaryTypeName", - "src": "348:4:1" - } - ], - "id": 189, - "name": "Mapping", - "src": "330:23:1" + "id": 184, + "name": "ElementaryTypeName", + "src": "220:6:1" } ], - "id": 190, + "id": 185, "name": "VariableDeclaration", - "src": "330:32:1" + "src": "220:18:1" }, { "attributes": { "constant": false, - "name": "badgeHashNames", - "scope": 194, + "name": "name", + "scope": 192, "stateVariable": false, "storageLocation": "default", - "type": "bytes32[] storage pointer", + "type": "string storage pointer", "value": null, "visibility": "internal" }, "children": [ { "attributes": { - "length": null, - "type": "bytes32[] storage pointer" + "name": "string", + "type": "string storage pointer" }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 191, - "name": "ElementaryTypeName", - "src": "372:7:1" - } - ], - "id": 192, - "name": "ArrayTypeName", - "src": "372:9:1" + "id": 186, + "name": "ElementaryTypeName", + "src": "248:6:1" } ], - "id": 193, + "id": 187, "name": "VariableDeclaration", - "src": "372:24:1" - } - ], - "id": 194, - "name": "StructDefinition", - "src": "253:150:1" - }, - { - "attributes": { - "constant": false, - "name": "badgeVault", - "scope": 535, - "stateVariable": true, - "storageLocation": "default", - "type": "struct BadgeManager.Vault storage ref", - "value": null, - "visibility": "internal" - }, - "children": [ + "src": "248:11:1" + }, { "attributes": { - "contractScope": null, - "name": "Vault", - "referencedDeclaration": 194, - "type": "struct BadgeManager.Vault storage pointer" + "constant": false, + "name": "image", + "scope": 192, + "stateVariable": false, + "storageLocation": "default", + "type": "string storage pointer", + "value": null, + "visibility": "internal" }, - "id": 195, - "name": "UserDefinedTypeName", - "src": "453:5:1" + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 188, + "name": "ElementaryTypeName", + "src": "269:6:1" + } + ], + "id": 189, + "name": "VariableDeclaration", + "src": "269:12:1" + }, + { + "attributes": { + "constant": false, + "name": "version", + "scope": 192, + "stateVariable": false, + "storageLocation": "default", + "type": "string storage pointer", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 190, + "name": "ElementaryTypeName", + "src": "291:6:1" + } + ], + "id": 191, + "name": "VariableDeclaration", + "src": "291:14:1" } ], - "id": 196, - "name": "VariableDeclaration", - "src": "453:16:1" + "id": 192, + "name": "StructDefinition", + "src": "173:139:1" }, { "attributes": { - "constant": false, - "implemented": true, - "isConstructor": true, - "name": "BadgeManager", - "payable": false, - "scope": 535, - "stateMutability": "nonpayable", - "superFunction": null, + "canonicalName": "BadgeManager.Credential", + "name": "Credential", + "scope": 601, "visibility": "public" }, "children": [ { + "attributes": { + "constant": false, + "name": "badge", + "scope": 203, + "stateVariable": false, + "storageLocation": "default", + "type": "struct BadgeManager.Badge storage pointer", + "value": null, + "visibility": "internal" + }, "children": [ { "attributes": { - "constant": false, - "name": "_adminWalletAddr", - "scope": 205, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" + "contractScope": null, + "name": "Badge", + "referencedDeclaration": 192, + "type": "struct BadgeManager.Badge storage pointer" }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 197, - "name": "ElementaryTypeName", - "src": "498:7:1" - } - ], - "id": 198, - "name": "VariableDeclaration", - "src": "498:24:1" + "id": 193, + "name": "UserDefinedTypeName", + "src": "400:5:1" } ], - "id": 199, - "name": "ParameterList", - "src": "497:26:1" + "id": 194, + "name": "VariableDeclaration", + "src": "400:11:1" }, { "attributes": { - "parameters": [ - null - ] + "constant": false, + "name": "expires", + "scope": 203, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" }, - "children": [], - "id": 203, - "name": "ParameterList", - "src": "566:0:1" - }, - { "children": [ { "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 176, - "type": "type(contract AuthorizedIssuer)", - "value": "AuthorizedIssuer" - }, - "id": 200, - "name": "Identifier", - "src": "531:16:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 198, - "type": "address", - "value": "_adminWalletAddr" + "name": "uint", + "type": "uint256" }, - "id": 201, - "name": "Identifier", - "src": "548:16:1" + "id": 195, + "name": "ElementaryTypeName", + "src": "421:4:1" } ], - "id": 202, - "name": "ModifierInvocation", - "src": "531:34:1" + "id": 196, + "name": "VariableDeclaration", + "src": "421:12:1" }, { "attributes": { - "statements": [ - null - ] - }, - "children": [], - "id": 204, - "name": "Block", - "src": "566:2:1" - } - ], - "id": 205, - "name": "FunctionDefinition", - "src": "476:92:1" - }, - { - "attributes": { - "name": "uniqueBadge", - "visibility": "internal" - }, - "children": [ - { + "constant": false, + "name": "recipient", + "scope": 203, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, "children": [ { "attributes": { - "constant": false, - "name": "_name", - "scope": 217, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" + "name": "address", + "type": "address" }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string storage pointer" - }, - "id": 206, - "name": "ElementaryTypeName", - "src": "638:6:1" - } - ], - "id": 207, - "name": "VariableDeclaration", - "src": "638:12:1" + "id": 197, + "name": "ElementaryTypeName", + "src": "443:7:1" } ], - "id": 208, - "name": "ParameterList", - "src": "637:14:1" + "id": 198, + "name": "VariableDeclaration", + "src": "443:17:1" }, { + "attributes": { + "constant": false, + "name": "txnKey", + "scope": 203, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, "children": [ { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 2418, - "type": "function (bool) pure", - "value": "require" - }, - "id": 209, - "name": "Identifier", - "src": "662:7:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 249, - "type": "function (string memory) view returns (bool)", - "value": "isUnique" - }, - "id": 210, - "name": "Identifier", - "src": "670:8:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 207, - "type": "string memory", - "value": "_name" - }, - "id": 211, - "name": "Identifier", - "src": "679:5:1" - } - ], - "id": 212, - "name": "FunctionCall", - "src": "670:15:1" - } - ], - "id": 213, - "name": "FunctionCall", - "src": "662:24:1" - } - ], - "id": 214, - "name": "ExpressionStatement", - "src": "662:24:1" - }, + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 199, + "name": "ElementaryTypeName", + "src": "470:7:1" + } + ], + "id": 200, + "name": "VariableDeclaration", + "src": "470:14:1" + }, + { + "attributes": { + "constant": false, + "name": "active", + "scope": 203, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ { - "id": 215, - "name": "PlaceholderStatement", - "src": "696:1:1" + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 201, + "name": "ElementaryTypeName", + "src": "494:4:1" } ], - "id": 216, - "name": "Block", - "src": "652:52:1" + "id": 202, + "name": "VariableDeclaration", + "src": "494:11:1" } ], - "id": 217, - "name": "ModifierDefinition", - "src": "617:87:1" + "id": 203, + "name": "StructDefinition", + "src": "372:140:1" }, { "attributes": { - "constant": true, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "isUnique", - "payable": false, - "scope": 535, - "stateMutability": "view", - "superFunction": null, + "canonicalName": "BadgeManager.Vault", + "name": "Vault", + "scope": 601, "visibility": "public" }, "children": [ { + "attributes": { + "constant": false, + "name": "badges", + "scope": 215, + "stateVariable": false, + "storageLocation": "default", + "type": "mapping(bytes32 => struct BadgeManager.Badge storage ref)", + "value": null, + "visibility": "internal" + }, "children": [ { "attributes": { - "constant": false, - "name": "_name", - "scope": 249, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" + "type": "mapping(bytes32 => struct BadgeManager.Badge storage ref)" }, "children": [ { "attributes": { - "name": "string", - "type": "string storage pointer" + "name": "bytes32", + "type": "bytes32" }, - "id": 218, + "id": 204, "name": "ElementaryTypeName", - "src": "728:6:1" + "src": "643:7:1" + }, + { + "attributes": { + "contractScope": null, + "name": "Badge", + "referencedDeclaration": 192, + "type": "struct BadgeManager.Badge storage pointer" + }, + "id": 205, + "name": "UserDefinedTypeName", + "src": "653:5:1" } ], - "id": 219, - "name": "VariableDeclaration", - "src": "728:12:1" + "id": 206, + "name": "Mapping", + "src": "634:25:1" } ], - "id": 220, - "name": "ParameterList", - "src": "727:14:1" + "id": 207, + "name": "VariableDeclaration", + "src": "634:32:1" }, { + "attributes": { + "constant": false, + "name": "indexMap", + "scope": 215, + "stateVariable": false, + "storageLocation": "default", + "type": "mapping(bytes32 => uint256)", + "value": null, + "visibility": "internal" + }, "children": [ { "attributes": { - "constant": false, - "name": "unique", - "scope": 249, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" + "type": "mapping(bytes32 => uint256)" }, "children": [ { "attributes": { - "name": "bool", - "type": "bool" + "name": "bytes32", + "type": "bytes32" + }, + "id": 208, + "name": "ElementaryTypeName", + "src": "685:7:1" + }, + { + "attributes": { + "name": "uint", + "type": "uint256" }, - "id": 221, + "id": 209, "name": "ElementaryTypeName", - "src": "766:4:1" + "src": "694:4:1" } ], - "id": 222, - "name": "VariableDeclaration", - "src": "766:11:1" + "id": 210, + "name": "Mapping", + "src": "676:23:1" } ], - "id": 223, - "name": "ParameterList", - "src": "765:13:1" + "id": 211, + "name": "VariableDeclaration", + "src": "676:32:1" }, { + "attributes": { + "constant": false, + "name": "badgeHashNames", + "scope": 215, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32[] storage pointer", + "value": null, + "visibility": "internal" + }, "children": [ { "attributes": { - "assignments": [ - 225 - ] + "length": null, + "type": "bytes32[] storage pointer" }, "children": [ { "attributes": { - "constant": false, - "name": "badgeNameHash", - "scope": 249, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" + "name": "bytes32", + "type": "bytes32" }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 224, - "name": "ElementaryTypeName", - "src": "789:7:1" - } - ], - "id": 225, - "name": "VariableDeclaration", - "src": "789:21:1" - }, + "id": 212, + "name": "ElementaryTypeName", + "src": "718:7:1" + } + ], + "id": 213, + "name": "ArrayTypeName", + "src": "718:9:1" + } + ], + "id": 214, + "name": "VariableDeclaration", + "src": "718:24:1" + } + ], + "id": 215, + "name": "StructDefinition", + "src": "611:138:1" + }, + { + "attributes": { + "constant": false, + "name": "badgeVault", + "scope": 601, + "stateVariable": true, + "storageLocation": "default", + "type": "struct BadgeManager.Vault storage ref", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Vault", + "referencedDeclaration": 215, + "type": "struct BadgeManager.Vault storage pointer" + }, + "id": 216, + "name": "UserDefinedTypeName", + "src": "799:5:1" + } + ], + "id": 217, + "name": "VariableDeclaration", + "src": "799:16:1" + }, + { + "attributes": { + "constant": false, + "implemented": true, + "isConstructor": true, + "name": "BadgeManager", + "payable": false, + "scope": 601, + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_adminWalletAddr", + "scope": 226, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 218, + "name": "ElementaryTypeName", + "src": "844:7:1" + } + ], + "id": 219, + "name": "VariableDeclaration", + "src": "844:24:1" + } + ], + "id": 220, + "name": "ParameterList", + "src": "843:26:1" + }, + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 224, + "name": "ParameterList", + "src": "912:0:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 176, + "type": "type(contract AuthorizedIssuer)", + "value": "AuthorizedIssuer" + }, + "id": 221, + "name": "Identifier", + "src": "877:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 219, + "type": "address", + "value": "_adminWalletAddr" + }, + "id": 222, + "name": "Identifier", + "src": "894:16:1" + } + ], + "id": 223, + "name": "ModifierInvocation", + "src": "877:34:1" + }, + { + "attributes": { + "statements": [ + null + ] + }, + "children": [], + "id": 225, + "name": "Block", + "src": "912:2:1" + } + ], + "id": 226, + "name": "FunctionDefinition", + "src": "822:92:1" + }, + { + "attributes": { + "name": "uniqueBadge", + "visibility": "internal" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_name", + "scope": 238, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 227, + "name": "ElementaryTypeName", + "src": "984:6:1" + } + ], + "id": 228, + "name": "VariableDeclaration", + "src": "984:12:1" + } + ], + "id": 229, + "name": "ParameterList", + "src": "983:14:1" + }, + { + "children": [ + { + "children": [ { "attributes": { "argumentTypes": null, @@ -981,7 +1106,7 @@ "names": [ null ], - "type": "bytes32", + "type": "tuple()", "type_conversion": false }, "children": [ @@ -989,65 +1114,277 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" + "typeIdentifier": "t_bool", + "typeString": "bool" } ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 2474, + "type": "function (bool) pure", + "value": "require" + }, + "id": 230, + "name": "Identifier", + "src": "1008:7:1" + }, + { + "attributes": { + "argumentTypes": null, "isConstant": false, "isLValue": false, "isPure": false, + "isStructConstructorCall": false, "lValueRequested": false, - "member_name": "getBadgeNameHash", - "referencedDeclaration": 1769, - "type": "function (string memory) pure returns (bytes32)" + "names": [ + null + ], + "type": "bool", + "type_conversion": false }, "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 269, + "type": "function (string memory) view returns (bool)", + "value": "isUnique" + }, + "id": 231, + "name": "Identifier", + "src": "1016:8:1" + }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], - "referencedDeclaration": 1812, - "type": "type(library BadgeLibrary)", - "value": "BadgeLibrary" + "referencedDeclaration": 228, + "type": "string memory", + "value": "_name" }, - "id": 226, + "id": 232, "name": "Identifier", - "src": "813:12:1" + "src": "1025:5:1" } ], - "id": 227, - "name": "MemberAccess", - "src": "813:29:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 219, - "type": "string memory", - "value": "_name" - }, - "id": 228, - "name": "Identifier", - "src": "843:5:1" + "id": 233, + "name": "FunctionCall", + "src": "1016:15:1" } ], - "id": 229, + "id": 234, "name": "FunctionCall", - "src": "813:36:1" + "src": "1008:24:1" } ], - "id": 230, - "name": "VariableDeclarationStatement", - "src": "789:60:1" + "id": 235, + "name": "ExpressionStatement", + "src": "1008:24:1" }, + { + "id": 236, + "name": "PlaceholderStatement", + "src": "1042:1:1" + } + ], + "id": 237, + "name": "Block", + "src": "998:52:1" + } + ], + "id": 238, + "name": "ModifierDefinition", + "src": "963:87:1" + }, + { + "attributes": { + "constant": true, + "implemented": true, + "isConstructor": false, + "modifiers": [ + null + ], + "name": "isUnique", + "payable": false, + "scope": 601, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ { "attributes": { - "functionReturnParameters": 223 + "constant": false, + "name": "_name", + "scope": 269, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 239, + "name": "ElementaryTypeName", + "src": "1074:6:1" + } + ], + "id": 240, + "name": "VariableDeclaration", + "src": "1074:12:1" + } + ], + "id": 241, + "name": "ParameterList", + "src": "1073:14:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "unique", + "scope": 269, + "stateVariable": false, + "storageLocation": "default", + "type": "bool", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bool", + "type": "bool" + }, + "id": 242, + "name": "ElementaryTypeName", + "src": "1112:4:1" + } + ], + "id": 243, + "name": "VariableDeclaration", + "src": "1112:11:1" + } + ], + "id": 244, + "name": "ParameterList", + "src": "1111:13:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 246 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "badgeNameHash", + "scope": 269, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 245, + "name": "ElementaryTypeName", + "src": "1135:7:1" + } + ], + "id": 246, + "name": "VariableDeclaration", + "src": "1135:21:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 558, + "type": "function (string memory) pure returns (bytes32)", + "value": "getBadgeNameHash" + }, + "id": 247, + "name": "Identifier", + "src": "1159:16:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 240, + "type": "string memory", + "value": "_name" + }, + "id": 248, + "name": "Identifier", + "src": "1176:5:1" + } + ], + "id": 249, + "name": "FunctionCall", + "src": "1159:23:1" + } + ], + "id": 250, + "name": "VariableDeclarationStatement", + "src": "1135:47:1" + }, + { + "attributes": { + "functionReturnParameters": 244 }, "children": [ { @@ -1111,7 +1448,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -1121,23 +1458,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 231, + "id": 251, "name": "Identifier", - "src": "867:10:1" + "src": "1200:10:1" } ], - "id": 232, + "id": 252, "name": "MemberAccess", - "src": "867:25:1" + "src": "1200:25:1" } ], - "id": 233, + "id": 253, "name": "MemberAccess", - "src": "867:32:1" + "src": "1200:32:1" }, { "attributes": { @@ -1152,14 +1489,14 @@ "type": "int_const 0", "value": "0" }, - "id": 234, + "id": 254, "name": "Literal", - "src": "903:1:1" + "src": "1236:1:1" } ], - "id": 235, + "id": 255, "name": "BinaryOperation", - "src": "867:37:1" + "src": "1200:37:1" }, { "attributes": { @@ -1194,7 +1531,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -1204,18 +1541,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 236, + "id": 256, "name": "Identifier", - "src": "908:10:1" + "src": "1241:10:1" } ], - "id": 237, + "id": 257, "name": "MemberAccess", - "src": "908:25:1" + "src": "1241:25:1" }, { "attributes": { @@ -1235,7 +1572,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 190, + "referencedDeclaration": 211, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -1245,18 +1582,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 238, + "id": 258, "name": "Identifier", - "src": "934:10:1" + "src": "1267:10:1" } ], - "id": 239, + "id": 259, "name": "MemberAccess", - "src": "934:19:1" + "src": "1267:19:1" }, { "attributes": { @@ -1264,23 +1601,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 225, + "referencedDeclaration": 246, "type": "bytes32", "value": "badgeNameHash" }, - "id": 240, + "id": 260, "name": "Identifier", - "src": "954:13:1" + "src": "1287:13:1" } ], - "id": 241, + "id": 261, "name": "IndexAccess", - "src": "934:34:1" + "src": "1267:34:1" } ], - "id": 242, + "id": 262, "name": "IndexAccess", - "src": "908:61:1" + "src": "1241:61:1" }, { "attributes": { @@ -1288,43 +1625,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 225, + "referencedDeclaration": 246, "type": "bytes32", "value": "badgeNameHash" }, - "id": 243, + "id": 263, "name": "Identifier", - "src": "973:13:1" + "src": "1306:13:1" } ], - "id": 244, + "id": 264, "name": "BinaryOperation", - "src": "908:78:1" + "src": "1241:78:1" } ], - "id": 245, + "id": 265, "name": "BinaryOperation", - "src": "867:119:1" + "src": "1200:119:1" } ], - "id": 246, + "id": 266, "name": "TupleExpression", - "src": "866:121:1" + "src": "1199:121:1" } ], - "id": 247, + "id": 267, "name": "Return", - "src": "859:128:1" + "src": "1192:128:1" } ], - "id": 248, + "id": 268, "name": "Block", - "src": "779:215:1" + "src": "1125:202:1" } ], - "id": 249, + "id": 269, "name": "FunctionDefinition", - "src": "710:284:1" + "src": "1056:271:1" }, { "attributes": { @@ -1338,7 +1675,7 @@ "attributes": { "constant": false, "name": "_name", - "scope": 280, + "scope": 299, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1351,26 +1688,26 @@ "name": "string", "type": "string storage pointer" }, - "id": 250, + "id": 270, "name": "ElementaryTypeName", - "src": "1070:6:1" + "src": "1403:6:1" } ], - "id": 251, + "id": 271, "name": "VariableDeclaration", - "src": "1070:12:1" + "src": "1403:12:1" } ], - "id": 252, + "id": 272, "name": "ParameterList", - "src": "1069:14:1" + "src": "1402:14:1" }, { "children": [ { "attributes": { "assignments": [ - 254 + 274 ] }, "children": [ @@ -1378,7 +1715,7 @@ "attributes": { "constant": false, "name": "badgeNameHash", - "scope": 280, + "scope": 299, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1391,14 +1728,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 253, + "id": 273, "name": "ElementaryTypeName", - "src": "1094:7:1" + "src": "1427:7:1" } ], - "id": 254, + "id": 274, "name": "VariableDeclaration", - "src": "1094:21:1" + "src": "1427:21:1" }, { "attributes": { @@ -1423,33 +1760,16 @@ "typeString": "string memory" } ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getBadgeNameHash", - "referencedDeclaration": 1769, - "type": "function (string memory) pure returns (bytes32)" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 558, + "type": "function (string memory) pure returns (bytes32)", + "value": "getBadgeNameHash" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1812, - "type": "type(library BadgeLibrary)", - "value": "BadgeLibrary" - }, - "id": 255, - "name": "Identifier", - "src": "1118:12:1" - } - ], - "id": 256, - "name": "MemberAccess", - "src": "1118:29:1" + "id": 275, + "name": "Identifier", + "src": "1451:16:1" }, { "attributes": { @@ -1457,23 +1777,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 251, + "referencedDeclaration": 271, "type": "string memory", "value": "_name" }, - "id": 257, + "id": 276, "name": "Identifier", - "src": "1148:5:1" + "src": "1468:5:1" } ], - "id": 258, + "id": 277, "name": "FunctionCall", - "src": "1118:36:1" + "src": "1451:23:1" } ], - "id": 259, + "id": 278, "name": "VariableDeclarationStatement", - "src": "1094:60:1" + "src": "1427:47:1" }, { "children": [ @@ -1503,13 +1823,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 260, + "id": 279, "name": "Identifier", - "src": "1164:7:1" + "src": "1484:7:1" }, { "attributes": { @@ -1561,7 +1881,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -1571,23 +1891,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 261, + "id": 280, "name": "Identifier", - "src": "1172:10:1" + "src": "1492:10:1" } ], - "id": 262, + "id": 281, "name": "MemberAccess", - "src": "1172:25:1" + "src": "1492:25:1" } ], - "id": 263, + "id": 282, "name": "MemberAccess", - "src": "1172:32:1" + "src": "1492:32:1" }, { "attributes": { @@ -1602,14 +1922,14 @@ "type": "int_const 0", "value": "0" }, - "id": 264, + "id": 283, "name": "Literal", - "src": "1207:1:1" + "src": "1527:1:1" } ], - "id": 265, + "id": 284, "name": "BinaryOperation", - "src": "1172:36:1" + "src": "1492:36:1" }, { "attributes": { @@ -1644,7 +1964,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -1654,18 +1974,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 266, + "id": 285, "name": "Identifier", - "src": "1212:10:1" + "src": "1532:10:1" } ], - "id": 267, + "id": 286, "name": "MemberAccess", - "src": "1212:25:1" + "src": "1532:25:1" }, { "attributes": { @@ -1685,7 +2005,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 190, + "referencedDeclaration": 211, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -1695,18 +2015,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 268, + "id": 287, "name": "Identifier", - "src": "1238:10:1" + "src": "1558:10:1" } ], - "id": 269, + "id": 288, "name": "MemberAccess", - "src": "1238:19:1" + "src": "1558:19:1" }, { "attributes": { @@ -1714,23 +2034,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 254, + "referencedDeclaration": 274, "type": "bytes32", "value": "badgeNameHash" }, - "id": 270, + "id": 289, "name": "Identifier", - "src": "1258:13:1" + "src": "1578:13:1" } ], - "id": 271, + "id": 290, "name": "IndexAccess", - "src": "1238:34:1" + "src": "1558:34:1" } ], - "id": 272, + "id": 291, "name": "IndexAccess", - "src": "1212:61:1" + "src": "1532:61:1" }, { "attributes": { @@ -1738,48 +2058,48 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 254, + "referencedDeclaration": 274, "type": "bytes32", "value": "badgeNameHash" }, - "id": 273, + "id": 292, "name": "Identifier", - "src": "1277:13:1" + "src": "1597:13:1" } ], - "id": 274, + "id": 293, "name": "BinaryOperation", - "src": "1212:78:1" + "src": "1532:78:1" } ], - "id": 275, + "id": 294, "name": "BinaryOperation", - "src": "1172:118:1" + "src": "1492:118:1" } ], - "id": 276, + "id": 295, "name": "FunctionCall", - "src": "1164:127:1" + "src": "1484:127:1" } ], - "id": 277, + "id": 296, "name": "ExpressionStatement", - "src": "1164:127:1" + "src": "1484:127:1" }, { - "id": 278, + "id": 297, "name": "PlaceholderStatement", - "src": "1301:1:1" + "src": "1621:1:1" } ], - "id": 279, + "id": 298, "name": "Block", - "src": "1084:225:1" + "src": "1417:212:1" } ], - "id": 280, + "id": 299, "name": "ModifierDefinition", - "src": "1049:260:1" + "src": "1382:247:1" }, { "attributes": { @@ -1793,7 +2113,7 @@ "attributes": { "constant": false, "name": "_badgeNameHash", - "scope": 304, + "scope": 323, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1806,19 +2126,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 281, + "id": 300, "name": "ElementaryTypeName", - "src": "1393:7:1" + "src": "1713:7:1" } ], - "id": 282, + "id": 301, "name": "VariableDeclaration", - "src": "1393:22:1" + "src": "1713:22:1" } ], - "id": 283, + "id": 302, "name": "ParameterList", - "src": "1392:24:1" + "src": "1712:24:1" }, { "children": [ @@ -1850,13 +2170,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 284, + "id": 303, "name": "Identifier", - "src": "1427:7:1" + "src": "1747:7:1" }, { "attributes": { @@ -1908,7 +2228,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -1918,23 +2238,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 285, + "id": 304, "name": "Identifier", - "src": "1435:10:1" + "src": "1755:10:1" } ], - "id": 286, + "id": 305, "name": "MemberAccess", - "src": "1435:25:1" + "src": "1755:25:1" } ], - "id": 287, + "id": 306, "name": "MemberAccess", - "src": "1435:32:1" + "src": "1755:32:1" }, { "attributes": { @@ -1949,14 +2269,14 @@ "type": "int_const 0", "value": "0" }, - "id": 288, + "id": 307, "name": "Literal", - "src": "1470:1:1" + "src": "1790:1:1" } ], - "id": 289, + "id": 308, "name": "BinaryOperation", - "src": "1435:36:1" + "src": "1755:36:1" }, { "attributes": { @@ -1991,7 +2311,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -2001,18 +2321,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 290, + "id": 309, "name": "Identifier", - "src": "1475:10:1" + "src": "1795:10:1" } ], - "id": 291, + "id": 310, "name": "MemberAccess", - "src": "1475:25:1" + "src": "1795:25:1" }, { "attributes": { @@ -2032,7 +2352,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 190, + "referencedDeclaration": 211, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -2042,18 +2362,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 292, + "id": 311, "name": "Identifier", - "src": "1501:10:1" + "src": "1821:10:1" } ], - "id": 293, + "id": 312, "name": "MemberAccess", - "src": "1501:19:1" + "src": "1821:19:1" }, { "attributes": { @@ -2061,23 +2381,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 282, + "referencedDeclaration": 301, "type": "bytes32", "value": "_badgeNameHash" }, - "id": 294, + "id": 313, "name": "Identifier", - "src": "1521:14:1" + "src": "1841:14:1" } ], - "id": 295, + "id": 314, "name": "IndexAccess", - "src": "1501:35:1" + "src": "1821:35:1" } ], - "id": 296, + "id": 315, "name": "IndexAccess", - "src": "1475:62:1" + "src": "1795:62:1" }, { "attributes": { @@ -2085,48 +2405,48 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 282, + "referencedDeclaration": 301, "type": "bytes32", "value": "_badgeNameHash" }, - "id": 297, + "id": 316, "name": "Identifier", - "src": "1541:14:1" + "src": "1861:14:1" } ], - "id": 298, + "id": 317, "name": "BinaryOperation", - "src": "1475:80:1" + "src": "1795:80:1" } ], - "id": 299, + "id": 318, "name": "BinaryOperation", - "src": "1435:120:1" + "src": "1755:120:1" } ], - "id": 300, + "id": 319, "name": "FunctionCall", - "src": "1427:129:1" + "src": "1747:129:1" } ], - "id": 301, + "id": 320, "name": "ExpressionStatement", - "src": "1427:129:1" + "src": "1747:129:1" }, { - "id": 302, + "id": 321, "name": "PlaceholderStatement", - "src": "1566:1:1" + "src": "1886:1:1" } ], - "id": 303, + "id": 322, "name": "Block", - "src": "1417:157:1" + "src": "1737:157:1" } ], - "id": 304, + "id": 323, "name": "ModifierDefinition", - "src": "1364:210:1" + "src": "1684:210:1" }, { "attributes": { @@ -2141,7 +2461,7 @@ "constant": false, "indexed": false, "name": "_name", - "scope": 310, + "scope": 329, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2154,21 +2474,21 @@ "name": "string", "type": "string storage pointer" }, - "id": 305, + "id": 324, "name": "ElementaryTypeName", - "src": "1608:6:1" + "src": "1928:6:1" } ], - "id": 306, + "id": 325, "name": "VariableDeclaration", - "src": "1608:12:1" + "src": "1928:12:1" }, { "attributes": { "constant": false, "indexed": true, "name": "_issuer", - "scope": 310, + "scope": 329, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2181,24 +2501,24 @@ "name": "address", "type": "address" }, - "id": 307, + "id": 326, "name": "ElementaryTypeName", - "src": "1630:7:1" + "src": "1950:7:1" } ], - "id": 308, + "id": 327, "name": "VariableDeclaration", - "src": "1630:23:1" + "src": "1950:23:1" } ], - "id": 309, + "id": 328, "name": "ParameterList", - "src": "1598:61:1" + "src": "1918:61:1" } ], - "id": 310, + "id": 329, "name": "EventDefinition", - "src": "1580:80:1" + "src": "1900:80:1" }, { "attributes": { @@ -2207,7 +2527,7 @@ "isConstructor": false, "name": "createBadge", "payable": false, - "scope": 535, + "scope": 601, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2219,7 +2539,7 @@ "attributes": { "constant": false, "name": "_description", - "scope": 384, + "scope": 399, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2232,20 +2552,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 311, + "id": 330, "name": "ElementaryTypeName", - "src": "1922:6:1" + "src": "2242:6:1" } ], - "id": 312, + "id": 331, "name": "VariableDeclaration", - "src": "1922:19:1" + "src": "2242:19:1" }, { "attributes": { "constant": false, "name": "_name", - "scope": 384, + "scope": 399, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2258,20 +2578,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 313, + "id": 332, "name": "ElementaryTypeName", - "src": "1951:6:1" + "src": "2271:6:1" } ], - "id": 314, + "id": 333, "name": "VariableDeclaration", - "src": "1951:12:1" + "src": "2271:12:1" }, { "attributes": { "constant": false, "name": "_image", - "scope": 384, + "scope": 399, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2284,20 +2604,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 315, + "id": 334, "name": "ElementaryTypeName", - "src": "1973:6:1" + "src": "2293:6:1" } ], - "id": 316, + "id": 335, "name": "VariableDeclaration", - "src": "1973:13:1" + "src": "2293:13:1" }, { "attributes": { "constant": false, "name": "_version", - "scope": 384, + "scope": 399, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2310,19 +2630,19 @@ "name": "string", "type": "string storage pointer" }, - "id": 317, + "id": 336, "name": "ElementaryTypeName", - "src": "1996:6:1" + "src": "2316:6:1" } ], - "id": 318, + "id": 337, "name": "VariableDeclaration", - "src": "1996:15:1" + "src": "2316:15:1" } ], - "id": 319, + "id": 338, "name": "ParameterList", - "src": "1912:100:1" + "src": "2232:100:1" }, { "attributes": { @@ -2331,9 +2651,9 @@ ] }, "children": [], - "id": 327, + "id": 346, "name": "ParameterList", - "src": "2078:0:1" + "src": "2398:0:1" }, { "children": [ @@ -2347,9 +2667,9 @@ "type": "modifier (address)", "value": "authorized" }, - "id": 320, + "id": 339, "name": "Identifier", - "src": "2021:10:1" + "src": "2341:10:1" }, { "attributes": { @@ -2369,23 +2689,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 321, + "id": 340, "name": "Identifier", - "src": "2032:3:1" + "src": "2352:3:1" } ], - "id": 322, + "id": 341, "name": "MemberAccess", - "src": "2032:10:1" + "src": "2352:10:1" } ], - "id": 323, + "id": 342, "name": "ModifierInvocation", - "src": "2021:22:1" + "src": "2341:22:1" }, { "children": [ @@ -2395,13 +2715,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 217, + "referencedDeclaration": 238, "type": "modifier (string memory)", "value": "uniqueBadge" }, - "id": 324, + "id": 343, "name": "Identifier", - "src": "2044:11:1" + "src": "2364:11:1" }, { "attributes": { @@ -2409,25 +2729,25 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 314, + "referencedDeclaration": 333, "type": "string memory", "value": "_name" }, - "id": 325, + "id": 344, "name": "Identifier", - "src": "2056:5:1" + "src": "2376:5:1" } ], - "id": 326, + "id": 345, "name": "ModifierInvocation", - "src": "2044:18:1" + "src": "2364:18:1" }, { "children": [ { "attributes": { "assignments": [ - 329 + 348 ] }, "children": [ @@ -2435,7 +2755,7 @@ "attributes": { "constant": false, "name": "badgeNameHash", - "scope": 384, + "scope": 399, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2448,14 +2768,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 328, + "id": 347, "name": "ElementaryTypeName", - "src": "2088:7:1" + "src": "2408:7:1" } ], - "id": 329, + "id": 348, "name": "VariableDeclaration", - "src": "2088:21:1" + "src": "2408:21:1" }, { "attributes": { @@ -2480,33 +2800,16 @@ "typeString": "string memory" } ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getBadgeNameHash", - "referencedDeclaration": 1769, - "type": "function (string memory) pure returns (bytes32)" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 558, + "type": "function (string memory) pure returns (bytes32)", + "value": "getBadgeNameHash" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1812, - "type": "type(library BadgeLibrary)", - "value": "BadgeLibrary" - }, - "id": 330, - "name": "Identifier", - "src": "2112:12:1" - } - ], - "id": 331, - "name": "MemberAccess", - "src": "2112:29:1" + "id": 349, + "name": "Identifier", + "src": "2432:16:1" }, { "attributes": { @@ -2514,28 +2817,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 314, + "referencedDeclaration": 333, "type": "string memory", "value": "_name" }, - "id": 332, + "id": 350, "name": "Identifier", - "src": "2142:5:1" + "src": "2449:5:1" } ], - "id": 333, + "id": 351, "name": "FunctionCall", - "src": "2112:36:1" + "src": "2432:23:1" } ], - "id": 334, + "id": 352, "name": "VariableDeclarationStatement", - "src": "2088:60:1" + "src": "2408:47:1" }, { "attributes": { "assignments": [ - 336 + 354 ] }, "children": [ @@ -2543,7 +2846,7 @@ "attributes": { "constant": false, "name": "index", - "scope": 384, + "scope": 399, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2556,14 +2859,14 @@ "name": "uint", "type": "uint256" }, - "id": 335, + "id": 353, "name": "ElementaryTypeName", - "src": "2158:4:1" + "src": "2465:4:1" } ], - "id": 336, + "id": 354, "name": "VariableDeclaration", - "src": "2158:10:1" + "src": "2465:10:1" }, { "attributes": { @@ -2620,7 +2923,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -2630,23 +2933,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 337, + "id": 355, "name": "Identifier", - "src": "2171:10:1" + "src": "2478:10:1" } ], - "id": 338, + "id": 356, "name": "MemberAccess", - "src": "2171:25:1" + "src": "2478:25:1" } ], - "id": 339, + "id": 357, "name": "MemberAccess", - "src": "2171:30:1" + "src": "2478:30:1" }, { "attributes": { @@ -2654,18 +2957,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 329, + "referencedDeclaration": 348, "type": "bytes32", "value": "badgeNameHash" }, - "id": 340, + "id": 358, "name": "Identifier", - "src": "2202:13:1" + "src": "2509:13:1" } ], - "id": 341, + "id": 359, "name": "FunctionCall", - "src": "2171:45:1" + "src": "2478:45:1" }, { "attributes": { @@ -2680,24 +2983,24 @@ "type": "int_const 1", "value": "1" }, - "id": 342, + "id": 360, "name": "Literal", - "src": "2217:1:1" + "src": "2524:1:1" } ], - "id": 343, + "id": 361, "name": "BinaryOperation", - "src": "2171:47:1" + "src": "2478:47:1" } ], - "id": 344, + "id": 362, "name": "VariableDeclarationStatement", - "src": "2158:60:1" + "src": "2465:60:1" }, { "attributes": { "assignments": [ - 348 + 364 ] }, "children": [ @@ -2705,10 +3008,10 @@ "attributes": { "constant": false, "name": "badge", - "scope": 384, + "scope": 399, "stateVariable": false, "storageLocation": "memory", - "type": "struct BadgeLibrary.Badge memory", + "type": "struct BadgeManager.Badge memory", "value": null, "visibility": "internal" }, @@ -2716,18 +3019,18 @@ { "attributes": { "contractScope": null, - "name": "BadgeLibrary.Badge", - "referencedDeclaration": 1746, - "type": "struct BadgeLibrary.Badge storage pointer" + "name": "Badge", + "referencedDeclaration": 192, + "type": "struct BadgeManager.Badge storage pointer" }, - "id": 347, + "id": 363, "name": "UserDefinedTypeName", - "src": "2228:18:1" + "src": "2535:5:1" } ], - "id": 348, + "id": 364, "name": "VariableDeclaration", - "src": "2228:31:1" + "src": "2535:18:1" }, { "attributes": { @@ -2740,7 +3043,7 @@ "names": [ null ], - "type": "struct BadgeLibrary.Badge memory", + "type": "struct BadgeManager.Badge memory", "type_conversion": false }, "children": [ @@ -2768,33 +3071,16 @@ "typeString": "string memory" } ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "Badge", - "referencedDeclaration": 1746, - "type": "type(struct BadgeLibrary.Badge storage pointer)" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 192, + "type": "type(struct BadgeManager.Badge storage pointer)", + "value": "Badge" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1812, - "type": "type(library BadgeLibrary)", - "value": "BadgeLibrary" - }, - "id": 349, - "name": "Identifier", - "src": "2262:12:1" - } - ], - "id": 350, - "name": "MemberAccess", - "src": "2262:18:1" + "id": 365, + "name": "Identifier", + "src": "2556:5:1" }, { "attributes": { @@ -2815,7 +3101,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_BadgeManager_$535", + "typeIdentifier": "t_contract$_BadgeManager_$601", "typeString": "contract BadgeManager" } ], @@ -2826,9 +3112,9 @@ "type": "type(address)", "value": "address" }, - "id": 351, + "id": 366, "name": "ElementaryTypeNameExpression", - "src": "2294:7:1" + "src": "2575:7:1" }, { "attributes": { @@ -2836,18 +3122,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2430, + "referencedDeclaration": 2484, "type": "contract BadgeManager", "value": "this" }, - "id": 352, + "id": 367, "name": "Identifier", - "src": "2302:4:1" + "src": "2583:4:1" } ], - "id": 353, + "id": 368, "name": "FunctionCall", - "src": "2294:13:1" + "src": "2575:13:1" }, { "attributes": { @@ -2855,13 +3141,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 312, + "referencedDeclaration": 331, "type": "string memory", "value": "_description" }, - "id": 354, + "id": 369, "name": "Identifier", - "src": "2321:12:1" + "src": "2602:12:1" }, { "attributes": { @@ -2869,13 +3155,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 314, + "referencedDeclaration": 333, "type": "string memory", "value": "_name" }, - "id": 355, + "id": 370, "name": "Identifier", - "src": "2347:5:1" + "src": "2628:5:1" }, { "attributes": { @@ -2883,13 +3169,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 316, + "referencedDeclaration": 335, "type": "string memory", "value": "_image" }, - "id": 356, + "id": 371, "name": "Identifier", - "src": "2366:6:1" + "src": "2647:6:1" }, { "attributes": { @@ -2897,23 +3183,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 318, + "referencedDeclaration": 337, "type": "string memory", "value": "_version" }, - "id": 357, + "id": 372, "name": "Identifier", - "src": "2386:8:1" + "src": "2667:8:1" } ], - "id": 358, + "id": 373, "name": "FunctionCall", - "src": "2262:142:1" + "src": "2556:129:1" } ], - "id": 359, + "id": 374, "name": "VariableDeclarationStatement", - "src": "2228:176:1" + "src": "2535:150:1" }, { "children": [ @@ -2925,7 +3211,7 @@ "isPure": false, "lValueRequested": false, "operator": "=", - "type": "struct BadgeLibrary.Badge storage ref" + "type": "struct BadgeManager.Badge storage ref" }, "children": [ { @@ -2935,7 +3221,7 @@ "isLValue": true, "isPure": false, "lValueRequested": true, - "type": "struct BadgeLibrary.Badge storage ref" + "type": "struct BadgeManager.Badge storage ref" }, "children": [ { @@ -2946,8 +3232,8 @@ "isPure": false, "lValueRequested": false, "member_name": "badges", - "referencedDeclaration": 186, - "type": "mapping(bytes32 => struct BadgeLibrary.Badge storage ref)" + "referencedDeclaration": 207, + "type": "mapping(bytes32 => struct BadgeManager.Badge storage ref)" }, "children": [ { @@ -2956,18 +3242,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 360, + "id": 375, "name": "Identifier", - "src": "2414:10:1" + "src": "2695:10:1" } ], - "id": 363, + "id": 378, "name": "MemberAccess", - "src": "2414:17:1" + "src": "2695:17:1" }, { "attributes": { @@ -2975,18 +3261,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 329, + "referencedDeclaration": 348, "type": "bytes32", "value": "badgeNameHash" }, - "id": 362, + "id": 377, "name": "Identifier", - "src": "2432:13:1" + "src": "2713:13:1" } ], - "id": 364, + "id": 379, "name": "IndexAccess", - "src": "2414:32:1" + "src": "2695:32:1" }, { "attributes": { @@ -2994,23 +3280,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 348, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 364, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 365, + "id": 380, "name": "Identifier", - "src": "2449:5:1" + "src": "2730:5:1" } ], - "id": 366, + "id": 381, "name": "Assignment", - "src": "2414:40:1" + "src": "2695:40:1" } ], - "id": 367, + "id": 382, "name": "ExpressionStatement", - "src": "2414:40:1" + "src": "2695:40:1" }, { "children": [ @@ -3043,7 +3329,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 190, + "referencedDeclaration": 211, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -3053,18 +3339,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 368, + "id": 383, "name": "Identifier", - "src": "2464:10:1" + "src": "2745:10:1" } ], - "id": 371, + "id": 386, "name": "MemberAccess", - "src": "2464:19:1" + "src": "2745:19:1" }, { "attributes": { @@ -3072,18 +3358,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 329, + "referencedDeclaration": 348, "type": "bytes32", "value": "badgeNameHash" }, - "id": 370, + "id": 385, "name": "Identifier", - "src": "2484:13:1" + "src": "2765:13:1" } ], - "id": 372, + "id": 387, "name": "IndexAccess", - "src": "2464:34:1" + "src": "2745:34:1" }, { "attributes": { @@ -3091,23 +3377,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 336, + "referencedDeclaration": 354, "type": "uint256", "value": "index" }, - "id": 373, + "id": 388, "name": "Identifier", - "src": "2501:5:1" + "src": "2782:5:1" } ], - "id": 374, + "id": 389, "name": "Assignment", - "src": "2464:42:1" + "src": "2745:42:1" } ], - "id": 375, + "id": 390, "name": "ExpressionStatement", - "src": "2464:42:1" + "src": "2745:42:1" }, { "children": [ @@ -3141,13 +3427,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 310, + "referencedDeclaration": 329, "type": "function (string memory,address)", "value": "BadgeCreated" }, - "id": 376, + "id": 391, "name": "Identifier", - "src": "2516:12:1" + "src": "2797:12:1" }, { "attributes": { @@ -3157,7 +3443,7 @@ "isPure": false, "lValueRequested": false, "member_name": "name", - "referencedDeclaration": 1741, + "referencedDeclaration": 187, "type": "string memory" }, "children": [ @@ -3167,18 +3453,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 348, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 364, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 377, + "id": 392, "name": "Identifier", - "src": "2529:5:1" + "src": "2810:5:1" } ], - "id": 378, + "id": 393, "name": "MemberAccess", - "src": "2529:10:1" + "src": "2810:10:1" }, { "attributes": { @@ -3188,7 +3474,7 @@ "isPure": false, "lValueRequested": false, "member_name": "issuer", - "referencedDeclaration": 1737, + "referencedDeclaration": 183, "type": "address" }, "children": [ @@ -3198,38 +3484,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 348, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 364, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 379, + "id": 394, "name": "Identifier", - "src": "2541:5:1" + "src": "2822:5:1" } ], - "id": 380, + "id": 395, "name": "MemberAccess", - "src": "2541:12:1" + "src": "2822:12:1" } ], - "id": 381, + "id": 396, "name": "FunctionCall", - "src": "2516:38:1" + "src": "2797:38:1" } ], - "id": 382, + "id": 397, "name": "ExpressionStatement", - "src": "2516:38:1" + "src": "2797:38:1" } ], - "id": 383, + "id": 398, "name": "Block", - "src": "2078:483:1" + "src": "2398:444:1" } ], - "id": 384, + "id": 399, "name": "FunctionDefinition", - "src": "1892:669:1" + "src": "2212:630:1" }, { "attributes": { @@ -3244,7 +3530,7 @@ "constant": false, "indexed": false, "name": "_name", - "scope": 390, + "scope": 405, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -3257,21 +3543,21 @@ "name": "string", "type": "string storage pointer" }, - "id": 385, + "id": 400, "name": "ElementaryTypeName", - "src": "2586:6:1" + "src": "2867:6:1" } ], - "id": 386, + "id": 401, "name": "VariableDeclaration", - "src": "2586:12:1" + "src": "2867:12:1" }, { "attributes": { "constant": false, "indexed": false, "name": "count", - "scope": 390, + "scope": 405, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3284,24 +3570,24 @@ "name": "uint", "type": "uint256" }, - "id": 387, + "id": 402, "name": "ElementaryTypeName", - "src": "2600:4:1" + "src": "2881:4:1" } ], - "id": 388, + "id": 403, "name": "VariableDeclaration", - "src": "2600:10:1" + "src": "2881:10:1" } ], - "id": 389, + "id": 404, "name": "ParameterList", - "src": "2585:26:1" + "src": "2866:26:1" } ], - "id": 390, + "id": 405, "name": "EventDefinition", - "src": "2567:45:1" + "src": "2848:45:1" }, { "attributes": { @@ -3310,7 +3596,7 @@ "isConstructor": false, "name": "deleteBadge", "payable": false, - "scope": 535, + "scope": 601, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3322,7 +3608,7 @@ "attributes": { "constant": false, "name": "_name", - "scope": 471, + "scope": 485, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -3335,19 +3621,19 @@ "name": "string", "type": "string storage pointer" }, - "id": 391, + "id": 406, "name": "ElementaryTypeName", - "src": "2677:6:1" + "src": "2958:6:1" } ], - "id": 392, + "id": 407, "name": "VariableDeclaration", - "src": "2677:12:1" + "src": "2958:12:1" } ], - "id": 393, + "id": 408, "name": "ParameterList", - "src": "2676:14:1" + "src": "2957:14:1" }, { "children": [ @@ -3355,7 +3641,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 471, + "scope": 485, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -3368,19 +3654,19 @@ "name": "bool", "type": "bool" }, - "id": 398, + "id": 413, "name": "ElementaryTypeName", - "src": "2737:4:1" + "src": "3018:4:1" } ], - "id": 399, + "id": 414, "name": "VariableDeclaration", - "src": "2737:12:1" + "src": "3018:12:1" } ], - "id": 400, + "id": 415, "name": "ParameterList", - "src": "2736:14:1" + "src": "3017:14:1" }, { "children": [ @@ -3394,9 +3680,9 @@ "type": "modifier (address)", "value": "authorized" }, - "id": 394, + "id": 409, "name": "Identifier", - "src": "2695:10:1" + "src": "2976:10:1" }, { "attributes": { @@ -3416,30 +3702,30 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 395, + "id": 410, "name": "Identifier", - "src": "2706:3:1" + "src": "2987:3:1" } ], - "id": 396, + "id": 411, "name": "MemberAccess", - "src": "2706:10:1" + "src": "2987:10:1" } ], - "id": 397, + "id": 412, "name": "ModifierInvocation", - "src": "2695:22:1" + "src": "2976:22:1" }, { "children": [ { "attributes": { "assignments": [ - 402 + 417 ] }, "children": [ @@ -3447,7 +3733,7 @@ "attributes": { "constant": false, "name": "badgeNameHash", - "scope": 471, + "scope": 485, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -3460,14 +3746,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 401, + "id": 416, "name": "ElementaryTypeName", - "src": "2765:7:1" + "src": "3046:7:1" } ], - "id": 402, + "id": 417, "name": "VariableDeclaration", - "src": "2765:21:1" + "src": "3046:21:1" }, { "attributes": { @@ -3492,33 +3778,16 @@ "typeString": "string memory" } ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getBadgeNameHash", - "referencedDeclaration": 1769, - "type": "function (string memory) pure returns (bytes32)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1812, - "type": "type(library BadgeLibrary)", - "value": "BadgeLibrary" - }, - "id": 403, - "name": "Identifier", - "src": "2789:12:1" - } - ], - "id": 404, - "name": "MemberAccess", - "src": "2789:29:1" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 558, + "type": "function (string memory) pure returns (bytes32)", + "value": "getBadgeNameHash" + }, + "id": 418, + "name": "Identifier", + "src": "3070:16:1" }, { "attributes": { @@ -3526,28 +3795,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 392, + "referencedDeclaration": 407, "type": "string memory", "value": "_name" }, - "id": 405, + "id": 419, "name": "Identifier", - "src": "2819:5:1" + "src": "3087:5:1" } ], - "id": 406, + "id": 420, "name": "FunctionCall", - "src": "2789:36:1" + "src": "3070:23:1" } ], - "id": 407, + "id": 421, "name": "VariableDeclarationStatement", - "src": "2765:60:1" + "src": "3046:47:1" }, { "attributes": { "assignments": [ - 409 + 423 ] }, "children": [ @@ -3555,7 +3824,7 @@ "attributes": { "constant": false, "name": "rowToDelete", - "scope": 471, + "scope": 485, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3568,14 +3837,14 @@ "name": "uint", "type": "uint256" }, - "id": 408, + "id": 422, "name": "ElementaryTypeName", - "src": "2835:4:1" + "src": "3103:4:1" } ], - "id": 409, + "id": 423, "name": "VariableDeclaration", - "src": "2835:16:1" + "src": "3103:16:1" }, { "attributes": { @@ -3595,7 +3864,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 190, + "referencedDeclaration": 211, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -3605,18 +3874,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 410, + "id": 424, "name": "Identifier", - "src": "2854:10:1" + "src": "3122:10:1" } ], - "id": 411, + "id": 425, "name": "MemberAccess", - "src": "2854:19:1" + "src": "3122:19:1" }, { "attributes": { @@ -3624,28 +3893,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 402, + "referencedDeclaration": 417, "type": "bytes32", "value": "badgeNameHash" }, - "id": 412, + "id": 426, "name": "Identifier", - "src": "2874:13:1" + "src": "3142:13:1" } ], - "id": 413, + "id": 427, "name": "IndexAccess", - "src": "2854:34:1" + "src": "3122:34:1" } ], - "id": 414, + "id": 428, "name": "VariableDeclarationStatement", - "src": "2835:53:1" + "src": "3103:53:1" }, { "attributes": { "assignments": [ - 416 + 430 ] }, "children": [ @@ -3653,7 +3922,7 @@ "attributes": { "constant": false, "name": "rowToMove", - "scope": 471, + "scope": 485, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -3666,14 +3935,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 415, + "id": 429, "name": "ElementaryTypeName", - "src": "2898:7:1" + "src": "3166:7:1" } ], - "id": 416, + "id": 430, "name": "VariableDeclaration", - "src": "2898:17:1" + "src": "3166:17:1" }, { "attributes": { @@ -3693,7 +3962,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -3703,18 +3972,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 417, + "id": 431, "name": "Identifier", - "src": "2918:10:1" + "src": "3186:10:1" } ], - "id": 418, + "id": 432, "name": "MemberAccess", - "src": "2918:25:1" + "src": "3186:25:1" }, { "attributes": { @@ -3751,7 +4020,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -3761,23 +4030,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 419, + "id": 433, "name": "Identifier", - "src": "2944:10:1" + "src": "3212:10:1" } ], - "id": 420, + "id": 434, "name": "MemberAccess", - "src": "2944:25:1" + "src": "3212:25:1" } ], - "id": 421, + "id": 435, "name": "MemberAccess", - "src": "2944:32:1" + "src": "3212:32:1" }, { "attributes": { @@ -3792,24 +4061,24 @@ "type": "int_const 1", "value": "1" }, - "id": 422, + "id": 436, "name": "Literal", - "src": "2977:1:1" + "src": "3245:1:1" } ], - "id": 423, + "id": 437, "name": "BinaryOperation", - "src": "2944:34:1" + "src": "3212:34:1" } ], - "id": 424, + "id": 438, "name": "IndexAccess", - "src": "2918:61:1" + "src": "3186:61:1" } ], - "id": 425, + "id": 439, "name": "VariableDeclarationStatement", - "src": "2898:81:1" + "src": "3166:81:1" }, { "children": [ @@ -3842,7 +4111,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 190, + "referencedDeclaration": 211, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -3852,18 +4121,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 426, + "id": 440, "name": "Identifier", - "src": "2989:10:1" + "src": "3257:10:1" } ], - "id": 429, + "id": 443, "name": "MemberAccess", - "src": "2989:19:1" + "src": "3257:19:1" }, { "attributes": { @@ -3871,18 +4140,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 416, + "referencedDeclaration": 430, "type": "bytes32", "value": "rowToMove" }, - "id": 428, + "id": 442, "name": "Identifier", - "src": "3009:9:1" + "src": "3277:9:1" } ], - "id": 430, + "id": 444, "name": "IndexAccess", - "src": "2989:30:1" + "src": "3257:30:1" }, { "attributes": { @@ -3890,23 +4159,276 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 409, + "referencedDeclaration": 423, "type": "uint256", "value": "rowToDelete" }, - "id": 431, + "id": 445, + "name": "Identifier", + "src": "3290:11:1" + } + ], + "id": 446, + "name": "Assignment", + "src": "3257:44:1" + } + ], + "id": 447, + "name": "ExpressionStatement", + "src": "3257:44:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "=", + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "bytes32" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "badgeHashNames", + "referencedDeclaration": 214, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 217, + "type": "struct BadgeManager.Vault storage ref", + "value": "badgeVault" + }, + "id": 448, + "name": "Identifier", + "src": "3311:10:1" + } + ], + "id": 451, + "name": "MemberAccess", + "src": "3311:25:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 423, + "type": "uint256", + "value": "rowToDelete" + }, + "id": 450, + "name": "Identifier", + "src": "3337:11:1" + } + ], + "id": 452, + "name": "IndexAccess", + "src": "3311:38:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 430, + "type": "bytes32", + "value": "rowToMove" + }, + "id": 453, "name": "Identifier", - "src": "3022:11:1" + "src": "3352:9:1" } ], - "id": 432, + "id": 454, "name": "Assignment", - "src": "2989:44:1" + "src": "3311:50:1" + } + ], + "id": 455, + "name": "ExpressionStatement", + "src": "3311:50:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "--", + "prefix": false, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "badgeHashNames", + "referencedDeclaration": 214, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 217, + "type": "struct BadgeManager.Vault storage ref", + "value": "badgeVault" + }, + "id": 456, + "name": "Identifier", + "src": "3371:10:1" + } + ], + "id": 459, + "name": "MemberAccess", + "src": "3371:25:1" + } + ], + "id": 460, + "name": "MemberAccess", + "src": "3371:32:1" + } + ], + "id": 461, + "name": "UnaryOperation", + "src": "3371:34:1" + } + ], + "id": 462, + "name": "ExpressionStatement", + "src": "3371:34:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "delete", + "prefix": true, + "type": "tuple()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "struct BadgeManager.Badge storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "badges", + "referencedDeclaration": 207, + "type": "mapping(bytes32 => struct BadgeManager.Badge storage ref)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 217, + "type": "struct BadgeManager.Vault storage ref", + "value": "badgeVault" + }, + "id": 463, + "name": "Identifier", + "src": "3422:10:1" + } + ], + "id": 464, + "name": "MemberAccess", + "src": "3422:17:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 417, + "type": "bytes32", + "value": "badgeNameHash" + }, + "id": 465, + "name": "Identifier", + "src": "3440:13:1" + } + ], + "id": 466, + "name": "IndexAccess", + "src": "3422:32:1" + } + ], + "id": 467, + "name": "UnaryOperation", + "src": "3415:39:1" } ], - "id": 433, + "id": 468, "name": "ExpressionStatement", - "src": "2989:44:1" + "src": "3415:39:1" }, { "children": [ @@ -3914,11 +4436,626 @@ "attributes": { "argumentTypes": null, "isConstant": false, - "isLValue": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "operator": "delete", + "prefix": true, + "type": "tuple()" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "indexMap", + "referencedDeclaration": 211, + "type": "mapping(bytes32 => uint256)" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 217, + "type": "struct BadgeManager.Vault storage ref", + "value": "badgeVault" + }, + "id": 469, + "name": "Identifier", + "src": "3471:10:1" + } + ], + "id": 470, + "name": "MemberAccess", + "src": "3471:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 417, + "type": "bytes32", + "value": "badgeNameHash" + }, + "id": 471, + "name": "Identifier", + "src": "3491:13:1" + } + ], + "id": 472, + "name": "IndexAccess", + "src": "3471:34:1" + } + ], + "id": 473, + "name": "UnaryOperation", + "src": "3464:41:1" + } + ], + "id": 474, + "name": "ExpressionStatement", + "src": "3464:41:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "tuple()", + "type_conversion": false + }, + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 405, + "type": "function (string memory,uint256)", + "value": "BadgeDeleted" + }, + "id": 475, + "name": "Identifier", + "src": "3516:12:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 407, + "type": "string memory", + "value": "_name" + }, + "id": 476, + "name": "Identifier", + "src": "3529:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "badgeHashNames", + "referencedDeclaration": 214, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 217, + "type": "struct BadgeManager.Vault storage ref", + "value": "badgeVault" + }, + "id": 477, + "name": "Identifier", + "src": "3536:10:1" + } + ], + "id": 478, + "name": "MemberAccess", + "src": "3536:25:1" + } + ], + "id": 479, + "name": "MemberAccess", + "src": "3536:32:1" + } + ], + "id": 480, + "name": "FunctionCall", + "src": "3516:53:1" + } + ], + "id": 481, + "name": "ExpressionStatement", + "src": "3516:53:1" + }, + { + "attributes": { + "functionReturnParameters": 415 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "hexvalue": "74727565", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "bool", + "type": "bool", + "value": "true" + }, + "id": 482, + "name": "Literal", + "src": "3586:4:1" + } + ], + "id": 483, + "name": "Return", + "src": "3579:11:1" + } + ], + "id": 484, + "name": "Block", + "src": "3036:561:1" + } + ], + "id": 485, + "name": "FunctionDefinition", + "src": "2937:660:1" + }, + { + "attributes": { + "constant": true, + "implemented": true, + "isConstructor": false, + "modifiers": [ + null + ], + "name": "getNumberOfBadges", + "payable": false, + "scope": 601, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "parameters": [ + null + ] + }, + "children": [], + "id": 486, + "name": "ParameterList", + "src": "3762:2:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "count", + "scope": 495, + "stateVariable": false, + "storageLocation": "default", + "type": "uint256", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "uint", + "type": "uint256" + }, + "id": 487, + "name": "ElementaryTypeName", + "src": "3793:4:1" + } + ], + "id": 488, + "name": "VariableDeclaration", + "src": "3793:10:1" + } + ], + "id": 489, + "name": "ParameterList", + "src": "3792:12:1" + }, + { + "children": [ + { + "attributes": { + "functionReturnParameters": 489 + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "length", + "referencedDeclaration": null, + "type": "uint256" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "badgeHashNames", + "referencedDeclaration": 214, + "type": "bytes32[] storage ref" + }, + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 217, + "type": "struct BadgeManager.Vault storage ref", + "value": "badgeVault" + }, + "id": 490, + "name": "Identifier", + "src": "3826:10:1" + } + ], + "id": 491, + "name": "MemberAccess", + "src": "3826:25:1" + } + ], + "id": 492, + "name": "MemberAccess", + "src": "3826:32:1" + } + ], + "id": 493, + "name": "Return", + "src": "3819:39:1" + } + ], + "id": 494, + "name": "Block", + "src": "3809:56:1" + } + ], + "id": 495, + "name": "FunctionDefinition", + "src": "3736:129:1" + }, + { + "attributes": { + "constant": true, + "implemented": true, + "isConstructor": false, + "name": "getBadge", + "payable": false, + "scope": 601, + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_badgeNameHash", + "scope": 533, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 496, + "name": "ElementaryTypeName", + "src": "4068:7:1" + } + ], + "id": 497, + "name": "VariableDeclaration", + "src": "4068:22:1" + } + ], + "id": 498, + "name": "ParameterList", + "src": "4067:24:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "issuer", + "scope": 533, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" + }, + "id": 502, + "name": "ElementaryTypeName", + "src": "4161:7:1" + } + ], + "id": 503, + "name": "VariableDeclaration", + "src": "4161:14:1" + }, + { + "attributes": { + "constant": false, + "name": "description", + "scope": 533, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 504, + "name": "ElementaryTypeName", + "src": "4185:6:1" + } + ], + "id": 505, + "name": "VariableDeclaration", + "src": "4185:18:1" + }, + { + "attributes": { + "constant": false, + "name": "bName", + "scope": 533, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 506, + "name": "ElementaryTypeName", + "src": "4213:6:1" + } + ], + "id": 507, + "name": "VariableDeclaration", + "src": "4213:12:1" + }, + { + "attributes": { + "constant": false, + "name": "image", + "scope": 533, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 508, + "name": "ElementaryTypeName", + "src": "4235:6:1" + } + ], + "id": 509, + "name": "VariableDeclaration", + "src": "4235:12:1" + }, + { + "attributes": { + "constant": false, + "name": "version", + "scope": 533, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 510, + "name": "ElementaryTypeName", + "src": "4257:6:1" + } + ], + "id": 511, + "name": "VariableDeclaration", + "src": "4257:14:1" + } + ], + "id": 512, + "name": "ParameterList", + "src": "4151:126:1" + }, + { + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 323, + "type": "modifier (bytes32)", + "value": "badgeNameHashExists" + }, + "id": 499, + "name": "Identifier", + "src": "4092:19:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 497, + "type": "bytes32", + "value": "_badgeNameHash" + }, + "id": 500, + "name": "Identifier", + "src": "4112:14:1" + } + ], + "id": 501, + "name": "ModifierInvocation", + "src": "4092:35:1" + }, + { + "children": [ + { + "attributes": { + "assignments": [ + 514 + ] + }, + "children": [ + { + "attributes": { + "constant": false, + "name": "badge", + "scope": 533, + "stateVariable": false, + "storageLocation": "memory", + "type": "struct BadgeManager.Badge memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "contractScope": null, + "name": "Badge", + "referencedDeclaration": 192, + "type": "struct BadgeManager.Badge storage pointer" + }, + "id": 513, + "name": "UserDefinedTypeName", + "src": "4288:5:1" + } + ], + "id": 514, + "name": "VariableDeclaration", + "src": "4288:18:1" + }, + { + "attributes": { + "argumentTypes": null, + "isConstant": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "operator": "=", - "type": "bytes32" + "type": "struct BadgeManager.Badge storage ref" }, "children": [ { @@ -3927,59 +5064,30 @@ "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": true, - "type": "bytes32" + "lValueRequested": false, + "member_name": "badges", + "referencedDeclaration": 207, + "type": "mapping(bytes32 => struct BadgeManager.Badge storage ref)" }, "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "badgeHashNames", - "referencedDeclaration": 193, - "type": "bytes32[] storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 196, - "type": "struct BadgeManager.Vault storage ref", - "value": "badgeVault" - }, - "id": 434, - "name": "Identifier", - "src": "3043:10:1" - } - ], - "id": 437, - "name": "MemberAccess", - "src": "3043:25:1" - }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], - "referencedDeclaration": 409, - "type": "uint256", - "value": "rowToDelete" + "referencedDeclaration": 217, + "type": "struct BadgeManager.Vault storage ref", + "value": "badgeVault" }, - "id": 436, + "id": 515, "name": "Identifier", - "src": "3069:11:1" + "src": "4309:10:1" } ], - "id": 438, - "name": "IndexAccess", - "src": "3043:38:1" + "id": 516, + "name": "MemberAccess", + "src": "4309:17:1" }, { "attributes": { @@ -3987,36 +5095,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 416, + "referencedDeclaration": 497, "type": "bytes32", - "value": "rowToMove" + "value": "_badgeNameHash" }, - "id": 439, + "id": 517, "name": "Identifier", - "src": "3084:9:1" + "src": "4327:14:1" } ], - "id": 440, - "name": "Assignment", - "src": "3043:50:1" + "id": 518, + "name": "IndexAccess", + "src": "4309:33:1" } ], - "id": 441, - "name": "ExpressionStatement", - "src": "3043:50:1" + "id": 519, + "name": "VariableDeclarationStatement", + "src": "4288:54:1" }, { + "attributes": { + "functionReturnParameters": 512 + }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, + "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "operator": "--", - "prefix": false, - "type": "uint256" + "type": "tuple(address,string memory,string memory,string memory,string memory)" }, "children": [ { @@ -4025,279 +5135,123 @@ "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": true, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" + "lValueRequested": false, + "member_name": "issuer", + "referencedDeclaration": 183, + "type": "address" }, "children": [ { "attributes": { "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "badgeHashNames", - "referencedDeclaration": 193, - "type": "bytes32[] storage ref" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 514, + "type": "struct BadgeManager.Badge memory", + "value": "badge" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 196, - "type": "struct BadgeManager.Vault storage ref", - "value": "badgeVault" - }, - "id": 442, - "name": "Identifier", - "src": "3103:10:1" - } - ], - "id": 445, - "name": "MemberAccess", - "src": "3103:25:1" + "id": 520, + "name": "Identifier", + "src": "4373:5:1" } ], - "id": 446, + "id": 521, "name": "MemberAccess", - "src": "3103:32:1" - } - ], - "id": 447, - "name": "UnaryOperation", - "src": "3103:34:1" - } - ], - "id": 448, - "name": "ExpressionStatement", - "src": "3103:34:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "delete", - "prefix": true, - "type": "tuple()" - }, - "children": [ + "src": "4373:12:1" + }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": true, - "type": "struct BadgeLibrary.Badge storage ref" + "lValueRequested": false, + "member_name": "description", + "referencedDeclaration": 185, + "type": "string memory" }, "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "badges", - "referencedDeclaration": 186, - "type": "mapping(bytes32 => struct BadgeLibrary.Badge storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 196, - "type": "struct BadgeManager.Vault storage ref", - "value": "badgeVault" - }, - "id": 449, - "name": "Identifier", - "src": "3154:10:1" - } - ], - "id": 450, - "name": "MemberAccess", - "src": "3154:17:1" - }, { "attributes": { "argumentTypes": null, "overloadedDeclarations": [ null ], - "referencedDeclaration": 402, - "type": "bytes32", - "value": "badgeNameHash" + "referencedDeclaration": 514, + "type": "struct BadgeManager.Badge memory", + "value": "badge" }, - "id": 451, + "id": 522, "name": "Identifier", - "src": "3172:13:1" + "src": "4399:5:1" } ], - "id": 452, - "name": "IndexAccess", - "src": "3154:32:1" - } - ], - "id": 453, - "name": "UnaryOperation", - "src": "3147:39:1" - } - ], - "id": 454, - "name": "ExpressionStatement", - "src": "3147:39:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "delete", - "prefix": true, - "type": "tuple()" - }, - "children": [ + "id": 523, + "name": "MemberAccess", + "src": "4399:17:1" + }, { "attributes": { "argumentTypes": null, "isConstant": false, "isLValue": true, "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "indexMap", - "referencedDeclaration": 190, - "type": "mapping(bytes32 => uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 196, - "type": "struct BadgeManager.Vault storage ref", - "value": "badgeVault" - }, - "id": 455, - "name": "Identifier", - "src": "3203:10:1" - } - ], - "id": 456, - "name": "MemberAccess", - "src": "3203:19:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 402, - "type": "bytes32", - "value": "badgeNameHash" - }, - "id": 457, - "name": "Identifier", - "src": "3223:13:1" - } - ], - "id": 458, - "name": "IndexAccess", - "src": "3203:34:1" - } - ], - "id": 459, - "name": "UnaryOperation", - "src": "3196:41:1" - } - ], - "id": 460, - "name": "ExpressionStatement", - "src": "3196:41:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 390, - "type": "function (string memory,uint256)", - "value": "BadgeDeleted" + "lValueRequested": false, + "member_name": "name", + "referencedDeclaration": 187, + "type": "string memory" }, - "id": 461, - "name": "Identifier", - "src": "3248:12:1" + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 514, + "type": "struct BadgeManager.Badge memory", + "value": "badge" + }, + "id": 524, + "name": "Identifier", + "src": "4430:5:1" + } + ], + "id": 525, + "name": "MemberAccess", + "src": "4430:10:1" }, { "attributes": { "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 392, - "type": "string memory", - "value": "_name" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "member_name": "image", + "referencedDeclaration": 189, + "type": "string memory" }, - "id": 462, - "name": "Identifier", - "src": "3261:5:1" + "children": [ + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 514, + "type": "struct BadgeManager.Badge memory", + "value": "badge" + }, + "id": 526, + "name": "Identifier", + "src": "4454:5:1" + } + ], + "id": 527, + "name": "MemberAccess", + "src": "4454:11:1" }, { "attributes": { @@ -4306,93 +5260,49 @@ "isLValue": true, "isPure": false, "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" + "member_name": "version", + "referencedDeclaration": 191, + "type": "string memory" }, "children": [ { "attributes": { "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "badgeHashNames", - "referencedDeclaration": 193, - "type": "bytes32[] storage ref" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 514, + "type": "struct BadgeManager.Badge memory", + "value": "badge" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 196, - "type": "struct BadgeManager.Vault storage ref", - "value": "badgeVault" - }, - "id": 463, - "name": "Identifier", - "src": "3268:10:1" - } - ], - "id": 464, - "name": "MemberAccess", - "src": "3268:25:1" + "id": 528, + "name": "Identifier", + "src": "4479:5:1" } ], - "id": 465, + "id": 529, "name": "MemberAccess", - "src": "3268:32:1" + "src": "4479:13:1" } ], - "id": 466, - "name": "FunctionCall", - "src": "3248:53:1" - } - ], - "id": 467, - "name": "ExpressionStatement", - "src": "3248:53:1" - }, - { - "attributes": { - "functionReturnParameters": 400 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 468, - "name": "Literal", - "src": "3318:4:1" + "id": 530, + "name": "TupleExpression", + "src": "4359:143:1" } ], - "id": 469, + "id": 531, "name": "Return", - "src": "3311:11:1" + "src": "4352:150:1" } ], - "id": 470, + "id": 532, "name": "Block", - "src": "2755:574:1" + "src": "4278:231:1" } ], - "id": 471, + "id": 533, "name": "FunctionDefinition", - "src": "2656:673:1" + "src": "4050:459:1" }, { "attributes": { @@ -4402,32 +5312,21 @@ "modifiers": [ null ], - "name": "getNumberOfBadges", + "name": "getNameByIndex", "payable": false, - "scope": 535, + "scope": 601, "stateMutability": "view", "superFunction": null, "visibility": "public" }, "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 472, - "name": "ParameterList", - "src": "3494:2:1" - }, { "children": [ { "attributes": { "constant": false, - "name": "count", - "scope": 481, + "name": "_index", + "scope": 546, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4440,25 +5339,58 @@ "name": "uint", "type": "uint256" }, - "id": 473, + "id": 534, "name": "ElementaryTypeName", - "src": "3525:4:1" + "src": "4674:4:1" } ], - "id": 474, + "id": 535, + "name": "VariableDeclaration", + "src": "4674:11:1" + } + ], + "id": 536, + "name": "ParameterList", + "src": "4673:13:1" + }, + { + "children": [ + { + "attributes": { + "constant": false, + "name": "_name", + "scope": 546, + "stateVariable": false, + "storageLocation": "default", + "type": "bytes32", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "bytes32", + "type": "bytes32" + }, + "id": 537, + "name": "ElementaryTypeName", + "src": "4711:7:1" + } + ], + "id": 538, "name": "VariableDeclaration", - "src": "3525:10:1" + "src": "4711:13:1" } ], - "id": 475, + "id": 539, "name": "ParameterList", - "src": "3524:12:1" + "src": "4710:15:1" }, { "children": [ { "attributes": { - "functionReturnParameters": 475 + "functionReturnParameters": 539 }, "children": [ { @@ -4468,9 +5400,7 @@ "isLValue": true, "isPure": false, "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" + "type": "bytes32" }, "children": [ { @@ -4481,7 +5411,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badgeHashNames", - "referencedDeclaration": 193, + "referencedDeclaration": 214, "type": "bytes32[] storage ref" }, "children": [ @@ -4491,48 +5421,65 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 476, + "id": 540, "name": "Identifier", - "src": "3558:10:1" + "src": "4743:10:1" } ], - "id": 477, + "id": 541, "name": "MemberAccess", - "src": "3558:25:1" + "src": "4743:25:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 535, + "type": "uint256", + "value": "_index" + }, + "id": 542, + "name": "Identifier", + "src": "4769:6:1" } ], - "id": 478, - "name": "MemberAccess", - "src": "3558:32:1" + "id": 543, + "name": "IndexAccess", + "src": "4743:33:1" } ], - "id": 479, + "id": 544, "name": "Return", - "src": "3551:39:1" + "src": "4736:40:1" } ], - "id": 480, + "id": 545, "name": "Block", - "src": "3541:56:1" + "src": "4726:57:1" } ], - "id": 481, + "id": 546, "name": "FunctionDefinition", - "src": "3468:129:1" + "src": "4650:133:1" }, { "attributes": { "constant": true, "implemented": true, "isConstructor": false, - "name": "getBadge", + "modifiers": [ + null + ], + "name": "getBadgeNameHash", "payable": false, - "scope": 535, - "stateMutability": "view", + "scope": 601, + "stateMutability": "pure", "superFunction": null, "visibility": "public" }, @@ -4542,93 +5489,165 @@ { "attributes": { "constant": false, - "name": "_badgeNameHash", - "scope": 521, + "name": "_badgename", + "scope": 558, "stateVariable": false, "storageLocation": "default", - "type": "bytes32", + "type": "string memory", "value": null, "visibility": "internal" }, "children": [ { "attributes": { - "name": "bytes32", - "type": "bytes32" + "name": "string", + "type": "string storage pointer" }, - "id": 482, + "id": 547, "name": "ElementaryTypeName", - "src": "3800:7:1" + "src": "4857:6:1" } ], - "id": 483, + "id": 548, "name": "VariableDeclaration", - "src": "3800:22:1" + "src": "4857:17:1" } ], - "id": 484, + "id": 549, "name": "ParameterList", - "src": "3799:24:1" + "src": "4856:19:1" }, { "children": [ { "attributes": { "constant": false, - "name": "issuer", - "scope": 521, + "name": "_hash", + "scope": 558, "stateVariable": false, "storageLocation": "default", - "type": "address", + "type": "bytes32", "value": null, "visibility": "internal" }, "children": [ { "attributes": { - "name": "address", - "type": "address" + "name": "bytes32", + "type": "bytes32" }, - "id": 488, + "id": 550, "name": "ElementaryTypeName", - "src": "3893:7:1" + "src": "4897:7:1" } ], - "id": 489, + "id": 551, "name": "VariableDeclaration", - "src": "3893:14:1" - }, + "src": "4897:13:1" + } + ], + "id": 552, + "name": "ParameterList", + "src": "4896:15:1" + }, + { + "children": [ { "attributes": { - "constant": false, - "name": "description", - "scope": 521, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" + "functionReturnParameters": 552 }, "children": [ { "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "isConstant": false, + "isLValue": false, + "isPure": false, + "isStructConstructorCall": false, + "lValueRequested": false, + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false }, - "id": 490, - "name": "ElementaryTypeName", - "src": "3917:6:1" + "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 2465, + "type": "function () pure returns (bytes32)", + "value": "keccak256" + }, + "id": 553, + "name": "Identifier", + "src": "4929:9:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 548, + "type": "string memory", + "value": "_badgename" + }, + "id": 554, + "name": "Identifier", + "src": "4939:10:1" + } + ], + "id": 555, + "name": "FunctionCall", + "src": "4929:21:1" } ], - "id": 491, - "name": "VariableDeclaration", - "src": "3917:18:1" - }, + "id": 556, + "name": "Return", + "src": "4922:28:1" + } + ], + "id": 557, + "name": "Block", + "src": "4912:45:1" + } + ], + "id": 558, + "name": "FunctionDefinition", + "src": "4831:126:1" + }, + { + "attributes": { + "constant": true, + "implemented": true, + "isConstructor": false, + "modifiers": [ + null + ], + "name": "getBadgeLinkHash", + "payable": false, + "scope": 601, + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + "children": [ + { + "children": [ { "attributes": { "constant": false, - "name": "bName", - "scope": 521, + "name": "_name", + "scope": 573, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -4641,399 +5660,171 @@ "name": "string", "type": "string storage pointer" }, - "id": 492, + "id": 559, "name": "ElementaryTypeName", - "src": "3945:6:1" + "src": "5036:6:1" } ], - "id": 493, + "id": 560, "name": "VariableDeclaration", - "src": "3945:12:1" + "src": "5036:12:1" }, { "attributes": { "constant": false, - "name": "image", - "scope": 521, + "name": "_issuer", + "scope": 573, "stateVariable": false, "storageLocation": "default", - "type": "string memory", + "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { - "name": "string", - "type": "string storage pointer" + "name": "address", + "type": "address" }, - "id": 494, + "id": 561, "name": "ElementaryTypeName", - "src": "3967:6:1" + "src": "5050:7:1" } ], - "id": 495, + "id": 562, "name": "VariableDeclaration", - "src": "3967:12:1" - }, + "src": "5050:15:1" + } + ], + "id": 563, + "name": "ParameterList", + "src": "5035:31:1" + }, + { + "children": [ { "attributes": { "constant": false, - "name": "version", - "scope": 521, + "name": "hash", + "scope": 573, "stateVariable": false, "storageLocation": "default", - "type": "string memory", + "type": "bytes32", "value": null, "visibility": "internal" }, "children": [ { "attributes": { - "name": "string", - "type": "string storage pointer" + "name": "bytes32", + "type": "bytes32" }, - "id": 496, + "id": 564, "name": "ElementaryTypeName", - "src": "3989:6:1" + "src": "5088:7:1" } ], - "id": 497, + "id": 565, "name": "VariableDeclaration", - "src": "3989:14:1" + "src": "5088:12:1" } ], - "id": 498, + "id": 566, "name": "ParameterList", - "src": "3883:126:1" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 304, - "type": "modifier (bytes32)", - "value": "badgeNameHashExists" - }, - "id": 485, - "name": "Identifier", - "src": "3824:19:1" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 483, - "type": "bytes32", - "value": "_badgeNameHash" - }, - "id": 486, - "name": "Identifier", - "src": "3844:14:1" - } - ], - "id": 487, - "name": "ModifierInvocation", - "src": "3824:35:1" + "src": "5087:14:1" }, { "children": [ { "attributes": { - "assignments": [ - 502 - ] + "functionReturnParameters": 566 }, "children": [ - { - "attributes": { - "constant": false, - "name": "badge", - "scope": 521, - "stateVariable": false, - "storageLocation": "memory", - "type": "struct BadgeLibrary.Badge memory", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "BadgeLibrary.Badge", - "referencedDeclaration": 1746, - "type": "struct BadgeLibrary.Badge storage pointer" - }, - "id": 501, - "name": "UserDefinedTypeName", - "src": "4020:18:1" - } - ], - "id": 502, - "name": "VariableDeclaration", - "src": "4020:31:1" - }, { "attributes": { "argumentTypes": null, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, + "isStructConstructorCall": false, "lValueRequested": false, - "type": "struct BadgeLibrary.Badge storage ref" + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false }, "children": [ { "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "badges", - "referencedDeclaration": 186, - "type": "mapping(bytes32 => struct BadgeLibrary.Badge storage ref)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 196, - "type": "struct BadgeManager.Vault storage ref", - "value": "badgeVault" + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" }, - "id": 503, - "name": "Identifier", - "src": "4054:10:1" - } - ], - "id": 504, - "name": "MemberAccess", - "src": "4054:17:1" - }, - { - "attributes": { - "argumentTypes": null, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], "overloadedDeclarations": [ null ], - "referencedDeclaration": 483, - "type": "bytes32", - "value": "_badgeNameHash" + "referencedDeclaration": 2465, + "type": "function () pure returns (bytes32)", + "value": "keccak256" }, - "id": 505, + "id": 567, "name": "Identifier", - "src": "4072:14:1" - } - ], - "id": 506, - "name": "IndexAccess", - "src": "4054:33:1" - } - ], - "id": 507, - "name": "VariableDeclarationStatement", - "src": "4020:67:1" - }, - { - "attributes": { - "functionReturnParameters": 498 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "tuple(address,string memory,string memory,string memory,string memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "issuer", - "referencedDeclaration": 1737, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 502, - "type": "struct BadgeLibrary.Badge memory", - "value": "badge" - }, - "id": 508, - "name": "Identifier", - "src": "4118:5:1" - } - ], - "id": 509, - "name": "MemberAccess", - "src": "4118:12:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "description", - "referencedDeclaration": 1739, - "type": "string memory" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 502, - "type": "struct BadgeLibrary.Badge memory", - "value": "badge" - }, - "id": 510, - "name": "Identifier", - "src": "4144:5:1" - } - ], - "id": 511, - "name": "MemberAccess", - "src": "4144:17:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "name", - "referencedDeclaration": 1741, - "type": "string memory" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 502, - "type": "struct BadgeLibrary.Badge memory", - "value": "badge" - }, - "id": 512, - "name": "Identifier", - "src": "4175:5:1" - } - ], - "id": 513, - "name": "MemberAccess", - "src": "4175:10:1" + "src": "5119:9:1" }, { "attributes": { "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "image", - "referencedDeclaration": 1743, - "type": "string memory" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 560, + "type": "string memory", + "value": "_name" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 502, - "type": "struct BadgeLibrary.Badge memory", - "value": "badge" - }, - "id": 514, - "name": "Identifier", - "src": "4199:5:1" - } - ], - "id": 515, - "name": "MemberAccess", - "src": "4199:11:1" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "version", - "referencedDeclaration": 1745, - "type": "string memory" + "id": 568, + "name": "Identifier", + "src": "5129:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 562, + "type": "address", + "value": "_issuer" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 502, - "type": "struct BadgeLibrary.Badge memory", - "value": "badge" - }, - "id": 516, - "name": "Identifier", - "src": "4224:5:1" - } - ], - "id": 517, - "name": "MemberAccess", - "src": "4224:13:1" + "id": 569, + "name": "Identifier", + "src": "5136:7:1" } ], - "id": 518, - "name": "TupleExpression", - "src": "4104:143:1" + "id": 570, + "name": "FunctionCall", + "src": "5119:25:1" } ], - "id": 519, + "id": 571, "name": "Return", - "src": "4097:150:1" + "src": "5112:32:1" } ], - "id": 520, + "id": 572, "name": "Block", - "src": "4010:244:1" + "src": "5102:49:1" } ], - "id": 521, + "id": 573, "name": "FunctionDefinition", - "src": "3782:472:1" + "src": "5010:141:1" }, { "attributes": { @@ -5043,10 +5834,10 @@ "modifiers": [ null ], - "name": "getNameByIndex", + "name": "getIntegrityHash", "payable": false, - "scope": 535, - "stateMutability": "view", + "scope": 601, + "stateMutability": "pure", "superFunction": null, "visibility": "public" }, @@ -5056,41 +5847,171 @@ { "attributes": { "constant": false, - "name": "_index", - "scope": 534, + "name": "issuer", + "scope": 600, "stateVariable": false, "storageLocation": "default", - "type": "uint256", + "type": "address", "value": null, "visibility": "internal" }, "children": [ { "attributes": { - "name": "uint", - "type": "uint256" + "name": "address", + "type": "address" + }, + "id": 574, + "name": "ElementaryTypeName", + "src": "5250:7:1" + } + ], + "id": 575, + "name": "VariableDeclaration", + "src": "5250:14:1" + }, + { + "attributes": { + "constant": false, + "name": "description", + "scope": 600, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 576, + "name": "ElementaryTypeName", + "src": "5274:6:1" + } + ], + "id": 577, + "name": "VariableDeclaration", + "src": "5274:18:1" + }, + { + "attributes": { + "constant": false, + "name": "name", + "scope": 600, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 578, + "name": "ElementaryTypeName", + "src": "5302:6:1" + } + ], + "id": 579, + "name": "VariableDeclaration", + "src": "5302:11:1" + }, + { + "attributes": { + "constant": false, + "name": "image", + "scope": 600, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 580, + "name": "ElementaryTypeName", + "src": "5323:6:1" + } + ], + "id": 581, + "name": "VariableDeclaration", + "src": "5323:12:1" + }, + { + "attributes": { + "constant": false, + "name": "version", + "scope": 600, + "stateVariable": false, + "storageLocation": "default", + "type": "string memory", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 582, + "name": "ElementaryTypeName", + "src": "5345:6:1" + } + ], + "id": 583, + "name": "VariableDeclaration", + "src": "5345:14:1" + }, + { + "attributes": { + "constant": false, + "name": "recipient", + "scope": 600, + "stateVariable": false, + "storageLocation": "default", + "type": "address", + "value": null, + "visibility": "internal" + }, + "children": [ + { + "attributes": { + "name": "address", + "type": "address" }, - "id": 522, + "id": 584, "name": "ElementaryTypeName", - "src": "4419:4:1" + "src": "5369:7:1" } ], - "id": 523, + "id": 585, "name": "VariableDeclaration", - "src": "4419:11:1" + "src": "5369:17:1" } ], - "id": 524, + "id": 586, "name": "ParameterList", - "src": "4418:13:1" + "src": "5240:152:1" }, { "children": [ { "attributes": { "constant": false, - "name": "_name", - "scope": 534, + "name": "_hash", + "scope": 600, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5103,67 +6024,94 @@ "name": "bytes32", "type": "bytes32" }, - "id": 525, + "id": 587, "name": "ElementaryTypeName", - "src": "4456:7:1" + "src": "5413:7:1" } ], - "id": 526, + "id": 588, "name": "VariableDeclaration", - "src": "4456:13:1" + "src": "5413:13:1" } ], - "id": 527, + "id": 589, "name": "ParameterList", - "src": "4455:15:1" + "src": "5412:15:1" }, { "children": [ { "attributes": { - "functionReturnParameters": 527 + "functionReturnParameters": 589 }, "children": [ { "attributes": { "argumentTypes": null, "isConstant": false, - "isLValue": true, + "isLValue": false, "isPure": false, + "isStructConstructorCall": false, "lValueRequested": false, - "type": "bytes32" + "names": [ + null + ], + "type": "bytes32", + "type_conversion": false }, "children": [ + { + "attributes": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 2465, + "type": "function () pure returns (bytes32)", + "value": "keccak256" + }, + "id": 590, + "name": "Identifier", + "src": "5449:9:1" + }, { "attributes": { "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "badgeHashNames", - "referencedDeclaration": 193, - "type": "bytes32[] storage ref" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 575, + "type": "address", + "value": "issuer" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 196, - "type": "struct BadgeManager.Vault storage ref", - "value": "badgeVault" - }, - "id": 528, - "name": "Identifier", - "src": "4488:10:1" - } - ], - "id": 529, - "name": "MemberAccess", - "src": "4488:25:1" + "id": 591, + "name": "Identifier", + "src": "5476:6:1" }, { "attributes": { @@ -5171,43 +6119,99 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 523, - "type": "uint256", - "value": "_index" + "referencedDeclaration": 577, + "type": "string memory", + "value": "description" + }, + "id": 592, + "name": "Identifier", + "src": "5500:11:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 579, + "type": "string memory", + "value": "name" }, - "id": 530, + "id": 593, "name": "Identifier", - "src": "4514:6:1" + "src": "5529:4:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 581, + "type": "string memory", + "value": "image" + }, + "id": 594, + "name": "Identifier", + "src": "5551:5:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 583, + "type": "string memory", + "value": "version" + }, + "id": 595, + "name": "Identifier", + "src": "5574:7:1" + }, + { + "attributes": { + "argumentTypes": null, + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 585, + "type": "address", + "value": "recipient" + }, + "id": 596, + "name": "Identifier", + "src": "5599:9:1" } ], - "id": 531, - "name": "IndexAccess", - "src": "4488:33:1" + "id": 597, + "name": "FunctionCall", + "src": "5449:169:1" } ], - "id": 532, + "id": 598, "name": "Return", - "src": "4481:40:1" + "src": "5442:176:1" } ], - "id": 533, + "id": 599, "name": "Block", - "src": "4471:57:1" + "src": "5432:193:1" } ], - "id": 534, + "id": 600, "name": "FunctionDefinition", - "src": "4395:133:1" + "src": "5215:410:1" } ], - "id": 535, + "id": 601, "name": "ContractDefinition", - "src": "111:4420:1" + "src": "60:5567:1" } ], - "id": 536, + "id": 602, "name": "SourceUnit", - "src": "0:4532:1" + "src": "0:5628:1" }, "compiler": { "name": "solc", @@ -5215,5 +6219,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.889Z" + "updatedAt": "2018-01-14T10:53:22.991Z" } \ No newline at end of file diff --git a/build/contracts/BasicToken.json b/build/contracts/BasicToken.json index 050ab1d..b959243 100644 --- a/build/contracts/BasicToken.json +++ b/build/contracts/BasicToken.json @@ -91,7 +91,7 @@ "absolutePath": "zeppelin-solidity/contracts/token/BasicToken.sol", "exportedSymbols": { "BasicToken": [ - 1996 + 2052 ] } }, @@ -105,54 +105,54 @@ ".18" ] }, - "id": 1912, + "id": 1968, "name": "PragmaDirective", "src": "0:24:10" }, { "attributes": { - "SourceUnit": 2158, + "SourceUnit": 2214, "absolutePath": "zeppelin-solidity/contracts/token/ERC20Basic.sol", "file": "./ERC20Basic.sol", - "scope": 1997, + "scope": 2053, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1913, + "id": 1969, "name": "ImportDirective", "src": "27:26:10" }, { "attributes": { - "SourceUnit": 1911, + "SourceUnit": 1967, "absolutePath": "zeppelin-solidity/contracts/math/SafeMath.sol", "file": "../math/SafeMath.sol", - "scope": 1997, + "scope": 2053, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1914, + "id": 1970, "name": "ImportDirective", "src": "54:30:10" }, { "attributes": { "contractDependencies": [ - 2157 + 2213 ], "contractKind": "contract", "documentation": "@title Basic token\n@dev Basic version of StandardToken, with no allowances.", "fullyImplemented": true, "linearizedBaseContracts": [ - 1996, - 2157 + 2052, + 2213 ], "name": "BasicToken", - "scope": 1997 + "scope": 2053 }, "children": [ { @@ -166,15 +166,15 @@ "attributes": { "contractScope": null, "name": "ERC20Basic", - "referencedDeclaration": 2157, + "referencedDeclaration": 2213, "type": "contract ERC20Basic" }, - "id": 1915, + "id": 1971, "name": "UserDefinedTypeName", "src": "200:10:10" } ], - "id": 1916, + "id": 1972, "name": "InheritanceSpecifier", "src": "200:10:10" }, @@ -184,10 +184,10 @@ "attributes": { "contractScope": null, "name": "SafeMath", - "referencedDeclaration": 1910, + "referencedDeclaration": 1966, "type": "library SafeMath" }, - "id": 1917, + "id": 1973, "name": "UserDefinedTypeName", "src": "221:8:10" }, @@ -196,12 +196,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1918, + "id": 1974, "name": "ElementaryTypeName", "src": "234:7:10" } ], - "id": 1919, + "id": 1975, "name": "UsingForDirective", "src": "215:27:10" }, @@ -209,7 +209,7 @@ "attributes": { "constant": false, "name": "balances", - "scope": 1996, + "scope": 2052, "stateVariable": true, "storageLocation": "default", "type": "mapping(address => uint256)", @@ -227,7 +227,7 @@ "name": "address", "type": "address" }, - "id": 1920, + "id": 1976, "name": "ElementaryTypeName", "src": "254:7:10" }, @@ -236,17 +236,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1921, + "id": 1977, "name": "ElementaryTypeName", "src": "265:7:10" } ], - "id": 1922, + "id": 1978, "name": "Mapping", "src": "246:27:10" } ], - "id": 1923, + "id": 1979, "name": "VariableDeclaration", "src": "246:36:10" }, @@ -260,9 +260,9 @@ ], "name": "transfer", "payable": false, - "scope": 1996, + "scope": 2052, "stateMutability": "nonpayable", - "superFunction": 2148, + "superFunction": 2204, "visibility": "public" }, "children": [ @@ -272,7 +272,7 @@ "attributes": { "constant": false, "name": "_to", - "scope": 1983, + "scope": 2039, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -285,12 +285,12 @@ "name": "address", "type": "address" }, - "id": 1924, + "id": 1980, "name": "ElementaryTypeName", "src": "455:7:10" } ], - "id": 1925, + "id": 1981, "name": "VariableDeclaration", "src": "455:11:10" }, @@ -298,7 +298,7 @@ "attributes": { "constant": false, "name": "_value", - "scope": 1983, + "scope": 2039, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -311,17 +311,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1926, + "id": 1982, "name": "ElementaryTypeName", "src": "468:7:10" } ], - "id": 1927, + "id": 1983, "name": "VariableDeclaration", "src": "468:14:10" } ], - "id": 1928, + "id": 1984, "name": "ParameterList", "src": "454:29:10" }, @@ -331,7 +331,7 @@ "attributes": { "constant": false, "name": "", - "scope": 1983, + "scope": 2039, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -344,17 +344,17 @@ "name": "bool", "type": "bool" }, - "id": 1929, + "id": 1985, "name": "ElementaryTypeName", "src": "500:4:10" } ], - "id": 1930, + "id": 1986, "name": "VariableDeclaration", "src": "500:4:10" } ], - "id": 1931, + "id": 1987, "name": "ParameterList", "src": "499:6:10" }, @@ -388,11 +388,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 1932, + "id": 1988, "name": "Identifier", "src": "512:7:10" }, @@ -417,11 +417,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1925, + "referencedDeclaration": 1981, "type": "address", "value": "_to" }, - "id": 1933, + "id": 1989, "name": "Identifier", "src": "520:3:10" }, @@ -455,7 +455,7 @@ "type": "type(address)", "value": "address" }, - "id": 1934, + "id": 1990, "name": "ElementaryTypeNameExpression", "src": "527:7:10" }, @@ -472,27 +472,27 @@ "type": "int_const 0", "value": "0" }, - "id": 1935, + "id": 1991, "name": "Literal", "src": "535:1:10" } ], - "id": 1936, + "id": 1992, "name": "FunctionCall", "src": "527:10:10" } ], - "id": 1937, + "id": 1993, "name": "BinaryOperation", "src": "520:17:10" } ], - "id": 1938, + "id": 1994, "name": "FunctionCall", "src": "512:26:10" } ], - "id": 1939, + "id": 1995, "name": "ExpressionStatement", "src": "512:26:10" }, @@ -524,11 +524,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 1940, + "id": 1996, "name": "Identifier", "src": "544:7:10" }, @@ -553,11 +553,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1927, + "referencedDeclaration": 1983, "type": "uint256", "value": "_value" }, - "id": 1941, + "id": 1997, "name": "Identifier", "src": "552:6:10" }, @@ -577,11 +577,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 1942, + "id": 1998, "name": "Identifier", "src": "562:8:10" }, @@ -603,36 +603,36 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1943, + "id": 1999, "name": "Identifier", "src": "571:3:10" } ], - "id": 1944, + "id": 2000, "name": "MemberAccess", "src": "571:10:10" } ], - "id": 1945, + "id": 2001, "name": "IndexAccess", "src": "562:20:10" } ], - "id": 1946, + "id": 2002, "name": "BinaryOperation", "src": "552:30:10" } ], - "id": 1947, + "id": 2003, "name": "FunctionCall", "src": "544:39:10" } ], - "id": 1948, + "id": 2004, "name": "ExpressionStatement", "src": "544:39:10" }, @@ -665,11 +665,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 1949, + "id": 2005, "name": "Identifier", "src": "653:8:10" }, @@ -691,21 +691,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1950, + "id": 2006, "name": "Identifier", "src": "662:3:10" } ], - "id": 1951, + "id": 2007, "name": "MemberAccess", "src": "662:10:10" } ], - "id": 1952, + "id": 2008, "name": "IndexAccess", "src": "653:20:10" }, @@ -737,7 +737,7 @@ "isPure": false, "lValueRequested": false, "member_name": "sub", - "referencedDeclaration": 1885, + "referencedDeclaration": 1941, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -757,11 +757,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 1953, + "id": 2009, "name": "Identifier", "src": "676:8:10" }, @@ -783,26 +783,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1954, + "id": 2010, "name": "Identifier", "src": "685:3:10" } ], - "id": 1955, + "id": 2011, "name": "MemberAccess", "src": "685:10:10" } ], - "id": 1956, + "id": 2012, "name": "IndexAccess", "src": "676:20:10" } ], - "id": 1957, + "id": 2013, "name": "MemberAccess", "src": "676:24:10" }, @@ -812,26 +812,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1927, + "referencedDeclaration": 1983, "type": "uint256", "value": "_value" }, - "id": 1958, + "id": 2014, "name": "Identifier", "src": "701:6:10" } ], - "id": 1959, + "id": 2015, "name": "FunctionCall", "src": "676:32:10" } ], - "id": 1960, + "id": 2016, "name": "Assignment", "src": "653:55:10" } ], - "id": 1961, + "id": 2017, "name": "ExpressionStatement", "src": "653:55:10" }, @@ -864,11 +864,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 1962, + "id": 2018, "name": "Identifier", "src": "714:8:10" }, @@ -878,16 +878,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1925, + "referencedDeclaration": 1981, "type": "address", "value": "_to" }, - "id": 1963, + "id": 2019, "name": "Identifier", "src": "723:3:10" } ], - "id": 1964, + "id": 2020, "name": "IndexAccess", "src": "714:13:10" }, @@ -919,7 +919,7 @@ "isPure": false, "lValueRequested": false, "member_name": "add", - "referencedDeclaration": 1909, + "referencedDeclaration": 1965, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -939,11 +939,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 1965, + "id": 2021, "name": "Identifier", "src": "730:8:10" }, @@ -953,21 +953,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1925, + "referencedDeclaration": 1981, "type": "address", "value": "_to" }, - "id": 1966, + "id": 2022, "name": "Identifier", "src": "739:3:10" } ], - "id": 1967, + "id": 2023, "name": "IndexAccess", "src": "730:13:10" } ], - "id": 1968, + "id": 2024, "name": "MemberAccess", "src": "730:17:10" }, @@ -977,26 +977,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1927, + "referencedDeclaration": 1983, "type": "uint256", "value": "_value" }, - "id": 1969, + "id": 2025, "name": "Identifier", "src": "748:6:10" } ], - "id": 1970, + "id": 2026, "name": "FunctionCall", "src": "730:25:10" } ], - "id": 1971, + "id": 2027, "name": "Assignment", "src": "714:41:10" } ], - "id": 1972, + "id": 2028, "name": "ExpressionStatement", "src": "714:41:10" }, @@ -1036,11 +1036,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2156, + "referencedDeclaration": 2212, "type": "function (address,address,uint256)", "value": "Transfer" }, - "id": 1973, + "id": 2029, "name": "Identifier", "src": "761:8:10" }, @@ -1062,16 +1062,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1974, + "id": 2030, "name": "Identifier", "src": "770:3:10" } ], - "id": 1975, + "id": 2031, "name": "MemberAccess", "src": "770:10:10" }, @@ -1081,11 +1081,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1925, + "referencedDeclaration": 1981, "type": "address", "value": "_to" }, - "id": 1976, + "id": 2032, "name": "Identifier", "src": "782:3:10" }, @@ -1095,27 +1095,27 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1927, + "referencedDeclaration": 1983, "type": "uint256", "value": "_value" }, - "id": 1977, + "id": 2033, "name": "Identifier", "src": "787:6:10" } ], - "id": 1978, + "id": 2034, "name": "FunctionCall", "src": "761:33:10" } ], - "id": 1979, + "id": 2035, "name": "ExpressionStatement", "src": "761:33:10" }, { "attributes": { - "functionReturnParameters": 1931 + "functionReturnParameters": 1987 }, "children": [ { @@ -1131,22 +1131,22 @@ "type": "bool", "value": "true" }, - "id": 1980, + "id": 2036, "name": "Literal", "src": "807:4:10" } ], - "id": 1981, + "id": 2037, "name": "Return", "src": "800:11:10" } ], - "id": 1982, + "id": 2038, "name": "Block", "src": "506:310:10" } ], - "id": 1983, + "id": 2039, "name": "FunctionDefinition", "src": "437:379:10" }, @@ -1160,9 +1160,9 @@ ], "name": "balanceOf", "payable": false, - "scope": 1996, + "scope": 2052, "stateMutability": "view", - "superFunction": 2139, + "superFunction": 2195, "visibility": "public" }, "children": [ @@ -1172,7 +1172,7 @@ "attributes": { "constant": false, "name": "_owner", - "scope": 1995, + "scope": 2051, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1185,17 +1185,17 @@ "name": "address", "type": "address" }, - "id": 1984, + "id": 2040, "name": "ElementaryTypeName", "src": "1037:7:10" } ], - "id": 1985, + "id": 2041, "name": "VariableDeclaration", "src": "1037:14:10" } ], - "id": 1986, + "id": 2042, "name": "ParameterList", "src": "1036:16:10" }, @@ -1205,7 +1205,7 @@ "attributes": { "constant": false, "name": "balance", - "scope": 1995, + "scope": 2051, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1218,17 +1218,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1987, + "id": 2043, "name": "ElementaryTypeName", "src": "1074:7:10" } ], - "id": 1988, + "id": 2044, "name": "VariableDeclaration", "src": "1074:15:10" } ], - "id": 1989, + "id": 2045, "name": "ParameterList", "src": "1073:17:10" }, @@ -1236,7 +1236,7 @@ "children": [ { "attributes": { - "functionReturnParameters": 1989 + "functionReturnParameters": 2045 }, "children": [ { @@ -1255,11 +1255,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 1990, + "id": 2046, "name": "Identifier", "src": "1104:8:10" }, @@ -1269,41 +1269,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1985, + "referencedDeclaration": 2041, "type": "address", "value": "_owner" }, - "id": 1991, + "id": 2047, "name": "Identifier", "src": "1113:6:10" } ], - "id": 1992, + "id": 2048, "name": "IndexAccess", "src": "1104:16:10" } ], - "id": 1993, + "id": 2049, "name": "Return", "src": "1097:23:10" } ], - "id": 1994, + "id": 2050, "name": "Block", "src": "1091:34:10" } ], - "id": 1995, + "id": 2051, "name": "FunctionDefinition", "src": "1018:107:10" } ], - "id": 1996, + "id": 2052, "name": "ContractDefinition", "src": "177:951:10" } ], - "id": 1997, + "id": 2053, "name": "SourceUnit", "src": "0:1129:10" }, @@ -1313,5 +1313,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.896Z" + "updatedAt": "2018-01-14T10:53:23.000Z" } \ No newline at end of file diff --git a/build/contracts/BurnableToken.json b/build/contracts/BurnableToken.json index 77eb2c8..8991316 100644 --- a/build/contracts/BurnableToken.json +++ b/build/contracts/BurnableToken.json @@ -122,7 +122,7 @@ "absolutePath": "zeppelin-solidity/contracts/token/BurnableToken.sol", "exportedSymbols": { "BurnableToken": [ - 2051 + 2107 ] } }, @@ -136,41 +136,41 @@ ".18" ] }, - "id": 1998, + "id": 2054, "name": "PragmaDirective", "src": "0:24:11" }, { "attributes": { - "SourceUnit": 1997, + "SourceUnit": 2053, "absolutePath": "zeppelin-solidity/contracts/token/BasicToken.sol", "file": "./BasicToken.sol", - "scope": 2052, + "scope": 2108, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1999, + "id": 2055, "name": "ImportDirective", "src": "26:26:11" }, { "attributes": { "contractDependencies": [ - 1996, - 2157 + 2052, + 2213 ], "contractKind": "contract", "documentation": "@title Burnable Token\n@dev Token that can be irreversibly burned (destroyed).", "fullyImplemented": true, "linearizedBaseContracts": [ - 2051, - 1996, - 2157 + 2107, + 2052, + 2213 ], "name": "BurnableToken", - "scope": 2052 + "scope": 2108 }, "children": [ { @@ -184,15 +184,15 @@ "attributes": { "contractScope": null, "name": "BasicToken", - "referencedDeclaration": 1996, + "referencedDeclaration": 2052, "type": "contract BasicToken" }, - "id": 2000, + "id": 2056, "name": "UserDefinedTypeName", "src": "172:10:11" } ], - "id": 2001, + "id": 2057, "name": "InheritanceSpecifier", "src": "172:10:11" }, @@ -209,7 +209,7 @@ "constant": false, "indexed": true, "name": "burner", - "scope": 2007, + "scope": 2063, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -222,12 +222,12 @@ "name": "address", "type": "address" }, - "id": 2002, + "id": 2058, "name": "ElementaryTypeName", "src": "201:7:11" } ], - "id": 2003, + "id": 2059, "name": "VariableDeclaration", "src": "201:22:11" }, @@ -236,7 +236,7 @@ "constant": false, "indexed": false, "name": "value", - "scope": 2007, + "scope": 2063, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -249,22 +249,22 @@ "name": "uint256", "type": "uint256" }, - "id": 2004, + "id": 2060, "name": "ElementaryTypeName", "src": "225:7:11" } ], - "id": 2005, + "id": 2061, "name": "VariableDeclaration", "src": "225:13:11" } ], - "id": 2006, + "id": 2062, "name": "ParameterList", "src": "200:39:11" } ], - "id": 2007, + "id": 2063, "name": "EventDefinition", "src": "190:50:11" }, @@ -278,7 +278,7 @@ ], "name": "burn", "payable": false, - "scope": 2051, + "scope": 2107, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -290,7 +290,7 @@ "attributes": { "constant": false, "name": "_value", - "scope": 2050, + "scope": 2106, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -303,17 +303,17 @@ "name": "uint256", "type": "uint256" }, - "id": 2008, + "id": 2064, "name": "ElementaryTypeName", "src": "378:7:11" } ], - "id": 2009, + "id": 2065, "name": "VariableDeclaration", "src": "378:14:11" } ], - "id": 2010, + "id": 2066, "name": "ParameterList", "src": "377:16:11" }, @@ -324,7 +324,7 @@ ] }, "children": [], - "id": 2011, + "id": 2067, "name": "ParameterList", "src": "401:0:11" }, @@ -358,11 +358,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 2012, + "id": 2068, "name": "Identifier", "src": "411:7:11" }, @@ -387,11 +387,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2009, + "referencedDeclaration": 2065, "type": "uint256", "value": "_value" }, - "id": 2013, + "id": 2069, "name": "Identifier", "src": "419:6:11" }, @@ -411,11 +411,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 2014, + "id": 2070, "name": "Identifier", "src": "429:8:11" }, @@ -437,43 +437,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2015, + "id": 2071, "name": "Identifier", "src": "438:3:11" } ], - "id": 2016, + "id": 2072, "name": "MemberAccess", "src": "438:10:11" } ], - "id": 2017, + "id": 2073, "name": "IndexAccess", "src": "429:20:11" } ], - "id": 2018, + "id": 2074, "name": "BinaryOperation", "src": "419:30:11" } ], - "id": 2019, + "id": 2075, "name": "FunctionCall", "src": "411:39:11" } ], - "id": 2020, + "id": 2076, "name": "ExpressionStatement", "src": "411:39:11" }, { "attributes": { "assignments": [ - 2022 + 2078 ] }, "children": [ @@ -481,7 +481,7 @@ "attributes": { "constant": false, "name": "burner", - "scope": 2050, + "scope": 2106, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -494,12 +494,12 @@ "name": "address", "type": "address" }, - "id": 2021, + "id": 2077, "name": "ElementaryTypeName", "src": "640:7:11" } ], - "id": 2022, + "id": 2078, "name": "VariableDeclaration", "src": "640:14:11" }, @@ -521,21 +521,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2023, + "id": 2079, "name": "Identifier", "src": "657:3:11" } ], - "id": 2024, + "id": 2080, "name": "MemberAccess", "src": "657:10:11" } ], - "id": 2025, + "id": 2081, "name": "VariableDeclarationStatement", "src": "640:27:11" }, @@ -568,11 +568,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 2026, + "id": 2082, "name": "Identifier", "src": "677:8:11" }, @@ -582,16 +582,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2022, + "referencedDeclaration": 2078, "type": "address", "value": "burner" }, - "id": 2027, + "id": 2083, "name": "Identifier", "src": "686:6:11" } ], - "id": 2028, + "id": 2084, "name": "IndexAccess", "src": "677:16:11" }, @@ -623,7 +623,7 @@ "isPure": false, "lValueRequested": false, "member_name": "sub", - "referencedDeclaration": 1885, + "referencedDeclaration": 1941, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -643,11 +643,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 2029, + "id": 2085, "name": "Identifier", "src": "696:8:11" }, @@ -657,21 +657,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2022, + "referencedDeclaration": 2078, "type": "address", "value": "burner" }, - "id": 2030, + "id": 2086, "name": "Identifier", "src": "705:6:11" } ], - "id": 2031, + "id": 2087, "name": "IndexAccess", "src": "696:16:11" } ], - "id": 2032, + "id": 2088, "name": "MemberAccess", "src": "696:20:11" }, @@ -681,26 +681,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2009, + "referencedDeclaration": 2065, "type": "uint256", "value": "_value" }, - "id": 2033, + "id": 2089, "name": "Identifier", "src": "717:6:11" } ], - "id": 2034, + "id": 2090, "name": "FunctionCall", "src": "696:28:11" } ], - "id": 2035, + "id": 2091, "name": "Assignment", "src": "677:47:11" } ], - "id": 2036, + "id": 2092, "name": "ExpressionStatement", "src": "677:47:11" }, @@ -723,11 +723,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2132, + "referencedDeclaration": 2188, "type": "uint256", "value": "totalSupply" }, - "id": 2037, + "id": 2093, "name": "Identifier", "src": "734:11:11" }, @@ -759,7 +759,7 @@ "isPure": false, "lValueRequested": false, "member_name": "sub", - "referencedDeclaration": 1885, + "referencedDeclaration": 1941, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -769,16 +769,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2132, + "referencedDeclaration": 2188, "type": "uint256", "value": "totalSupply" }, - "id": 2038, + "id": 2094, "name": "Identifier", "src": "748:11:11" } ], - "id": 2039, + "id": 2095, "name": "MemberAccess", "src": "748:15:11" }, @@ -788,26 +788,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2009, + "referencedDeclaration": 2065, "type": "uint256", "value": "_value" }, - "id": 2040, + "id": 2096, "name": "Identifier", "src": "764:6:11" } ], - "id": 2041, + "id": 2097, "name": "FunctionCall", "src": "748:23:11" } ], - "id": 2042, + "id": 2098, "name": "Assignment", "src": "734:37:11" } ], - "id": 2043, + "id": 2099, "name": "ExpressionStatement", "src": "734:37:11" }, @@ -843,11 +843,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2007, + "referencedDeclaration": 2063, "type": "function (address,uint256)", "value": "Burn" }, - "id": 2044, + "id": 2100, "name": "Identifier", "src": "781:4:11" }, @@ -857,11 +857,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2022, + "referencedDeclaration": 2078, "type": "address", "value": "burner" }, - "id": 2045, + "id": 2101, "name": "Identifier", "src": "786:6:11" }, @@ -871,41 +871,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2009, + "referencedDeclaration": 2065, "type": "uint256", "value": "_value" }, - "id": 2046, + "id": 2102, "name": "Identifier", "src": "794:6:11" } ], - "id": 2047, + "id": 2103, "name": "FunctionCall", "src": "781:20:11" } ], - "id": 2048, + "id": 2104, "name": "ExpressionStatement", "src": "781:20:11" } ], - "id": 2049, + "id": 2105, "name": "Block", "src": "401:407:11" } ], - "id": 2050, + "id": 2106, "name": "FunctionDefinition", "src": "364:444:11" } ], - "id": 2051, + "id": 2107, "name": "ContractDefinition", "src": "146:664:11" } ], - "id": 2052, + "id": 2108, "name": "SourceUnit", "src": "0:811:11" }, @@ -915,5 +915,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.897Z" + "updatedAt": "2018-01-14T10:53:23.001Z" } \ No newline at end of file diff --git a/build/contracts/DetailedERC20.json b/build/contracts/DetailedERC20.json index 475587e..b6d6396 100644 --- a/build/contracts/DetailedERC20.json +++ b/build/contracts/DetailedERC20.json @@ -247,7 +247,7 @@ "absolutePath": "zeppelin-solidity/contracts/token/DetailedERC20.sol", "exportedSymbols": { "DetailedERC20": [ - 2085 + 2141 ] } }, @@ -261,41 +261,41 @@ ".18" ] }, - "id": 2053, + "id": 2109, "name": "PragmaDirective", "src": "0:24:12" }, { "attributes": { - "SourceUnit": 2129, + "SourceUnit": 2185, "absolutePath": "zeppelin-solidity/contracts/token/ERC20.sol", "file": "./ERC20.sol", - "scope": 2086, + "scope": 2142, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 2054, + "id": 2110, "name": "ImportDirective", "src": "26:21:12" }, { "attributes": { "contractDependencies": [ - 2128, - 2157 + 2184, + 2213 ], "contractKind": "contract", "documentation": null, "fullyImplemented": false, "linearizedBaseContracts": [ - 2085, - 2128, - 2157 + 2141, + 2184, + 2213 ], "name": "DetailedERC20", - "scope": 2086 + "scope": 2142 }, "children": [ { @@ -309,15 +309,15 @@ "attributes": { "contractScope": null, "name": "ERC20", - "referencedDeclaration": 2128, + "referencedDeclaration": 2184, "type": "contract ERC20" }, - "id": 2055, + "id": 2111, "name": "UserDefinedTypeName", "src": "75:5:12" } ], - "id": 2056, + "id": 2112, "name": "InheritanceSpecifier", "src": "75:5:12" }, @@ -325,7 +325,7 @@ "attributes": { "constant": false, "name": "name", - "scope": 2085, + "scope": 2141, "stateVariable": true, "storageLocation": "default", "type": "string storage ref", @@ -338,12 +338,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 2057, + "id": 2113, "name": "ElementaryTypeName", "src": "85:6:12" } ], - "id": 2058, + "id": 2114, "name": "VariableDeclaration", "src": "85:18:12" }, @@ -351,7 +351,7 @@ "attributes": { "constant": false, "name": "symbol", - "scope": 2085, + "scope": 2141, "stateVariable": true, "storageLocation": "default", "type": "string storage ref", @@ -364,12 +364,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 2059, + "id": 2115, "name": "ElementaryTypeName", "src": "107:6:12" } ], - "id": 2060, + "id": 2116, "name": "VariableDeclaration", "src": "107:20:12" }, @@ -377,7 +377,7 @@ "attributes": { "constant": false, "name": "decimals", - "scope": 2085, + "scope": 2141, "stateVariable": true, "storageLocation": "default", "type": "uint8", @@ -390,12 +390,12 @@ "name": "uint8", "type": "uint8" }, - "id": 2061, + "id": 2117, "name": "ElementaryTypeName", "src": "131:5:12" } ], - "id": 2062, + "id": 2118, "name": "VariableDeclaration", "src": "131:21:12" }, @@ -409,7 +409,7 @@ ], "name": "DetailedERC20", "payable": false, - "scope": 2085, + "scope": 2141, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -421,7 +421,7 @@ "attributes": { "constant": false, "name": "_name", - "scope": 2084, + "scope": 2140, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -434,12 +434,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 2063, + "id": 2119, "name": "ElementaryTypeName", "src": "180:6:12" } ], - "id": 2064, + "id": 2120, "name": "VariableDeclaration", "src": "180:12:12" }, @@ -447,7 +447,7 @@ "attributes": { "constant": false, "name": "_symbol", - "scope": 2084, + "scope": 2140, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -460,12 +460,12 @@ "name": "string", "type": "string storage pointer" }, - "id": 2065, + "id": 2121, "name": "ElementaryTypeName", "src": "194:6:12" } ], - "id": 2066, + "id": 2122, "name": "VariableDeclaration", "src": "194:14:12" }, @@ -473,7 +473,7 @@ "attributes": { "constant": false, "name": "_decimals", - "scope": 2084, + "scope": 2140, "stateVariable": false, "storageLocation": "default", "type": "uint8", @@ -486,17 +486,17 @@ "name": "uint8", "type": "uint8" }, - "id": 2067, + "id": 2123, "name": "ElementaryTypeName", "src": "210:5:12" } ], - "id": 2068, + "id": 2124, "name": "VariableDeclaration", "src": "210:15:12" } ], - "id": 2069, + "id": 2125, "name": "ParameterList", "src": "179:47:12" }, @@ -507,7 +507,7 @@ ] }, "children": [], - "id": 2070, + "id": 2126, "name": "ParameterList", "src": "234:0:12" }, @@ -532,11 +532,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2058, + "referencedDeclaration": 2114, "type": "string storage ref", "value": "name" }, - "id": 2071, + "id": 2127, "name": "Identifier", "src": "240:4:12" }, @@ -546,21 +546,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2064, + "referencedDeclaration": 2120, "type": "string memory", "value": "_name" }, - "id": 2072, + "id": 2128, "name": "Identifier", "src": "247:5:12" } ], - "id": 2073, + "id": 2129, "name": "Assignment", "src": "240:12:12" } ], - "id": 2074, + "id": 2130, "name": "ExpressionStatement", "src": "240:12:12" }, @@ -583,11 +583,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2060, + "referencedDeclaration": 2116, "type": "string storage ref", "value": "symbol" }, - "id": 2075, + "id": 2131, "name": "Identifier", "src": "258:6:12" }, @@ -597,21 +597,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2066, + "referencedDeclaration": 2122, "type": "string memory", "value": "_symbol" }, - "id": 2076, + "id": 2132, "name": "Identifier", "src": "267:7:12" } ], - "id": 2077, + "id": 2133, "name": "Assignment", "src": "258:16:12" } ], - "id": 2078, + "id": 2134, "name": "ExpressionStatement", "src": "258:16:12" }, @@ -634,11 +634,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2062, + "referencedDeclaration": 2118, "type": "uint8", "value": "decimals" }, - "id": 2079, + "id": 2135, "name": "Identifier", "src": "280:8:12" }, @@ -648,41 +648,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2068, + "referencedDeclaration": 2124, "type": "uint8", "value": "_decimals" }, - "id": 2080, + "id": 2136, "name": "Identifier", "src": "291:9:12" } ], - "id": 2081, + "id": 2137, "name": "Assignment", "src": "280:20:12" } ], - "id": 2082, + "id": 2138, "name": "ExpressionStatement", "src": "280:20:12" } ], - "id": 2083, + "id": 2139, "name": "Block", "src": "234:71:12" } ], - "id": 2084, + "id": 2140, "name": "FunctionDefinition", "src": "157:148:12" } ], - "id": 2085, + "id": 2141, "name": "ContractDefinition", "src": "49:258:12" } ], - "id": 2086, + "id": 2142, "name": "SourceUnit", "src": "0:308:12" }, @@ -692,5 +692,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.897Z" + "updatedAt": "2018-01-14T10:53:23.001Z" } \ No newline at end of file diff --git a/build/contracts/ERC20.json b/build/contracts/ERC20.json index 7c87aa1..07c83bf 100644 --- a/build/contracts/ERC20.json +++ b/build/contracts/ERC20.json @@ -186,7 +186,7 @@ "absolutePath": "zeppelin-solidity/contracts/token/ERC20.sol", "exportedSymbols": { "ERC20": [ - 2128 + 2184 ] } }, @@ -200,39 +200,39 @@ ".18" ] }, - "id": 2087, + "id": 2143, "name": "PragmaDirective", "src": "0:24:13" }, { "attributes": { - "SourceUnit": 2158, + "SourceUnit": 2214, "absolutePath": "zeppelin-solidity/contracts/token/ERC20Basic.sol", "file": "./ERC20Basic.sol", - "scope": 2129, + "scope": 2185, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 2088, + "id": 2144, "name": "ImportDirective", "src": "27:26:13" }, { "attributes": { "contractDependencies": [ - 2157 + 2213 ], "contractKind": "contract", "documentation": "@title ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/20", "fullyImplemented": false, "linearizedBaseContracts": [ - 2128, - 2157 + 2184, + 2213 ], "name": "ERC20", - "scope": 2129 + "scope": 2185 }, "children": [ { @@ -246,15 +246,15 @@ "attributes": { "contractScope": null, "name": "ERC20Basic", - "referencedDeclaration": 2157, + "referencedDeclaration": 2213, "type": "contract ERC20Basic" }, - "id": 2089, + "id": 2145, "name": "UserDefinedTypeName", "src": "163:10:13" } ], - "id": 2090, + "id": 2146, "name": "InheritanceSpecifier", "src": "163:10:13" }, @@ -269,7 +269,7 @@ ], "name": "allowance", "payable": false, - "scope": 2128, + "scope": 2184, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -281,7 +281,7 @@ "attributes": { "constant": false, "name": "owner", - "scope": 2099, + "scope": 2155, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -294,12 +294,12 @@ "name": "address", "type": "address" }, - "id": 2091, + "id": 2147, "name": "ElementaryTypeName", "src": "197:7:13" } ], - "id": 2092, + "id": 2148, "name": "VariableDeclaration", "src": "197:13:13" }, @@ -307,7 +307,7 @@ "attributes": { "constant": false, "name": "spender", - "scope": 2099, + "scope": 2155, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -320,17 +320,17 @@ "name": "address", "type": "address" }, - "id": 2093, + "id": 2149, "name": "ElementaryTypeName", "src": "212:7:13" } ], - "id": 2094, + "id": 2150, "name": "VariableDeclaration", "src": "212:15:13" } ], - "id": 2095, + "id": 2151, "name": "ParameterList", "src": "196:32:13" }, @@ -340,7 +340,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2099, + "scope": 2155, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -353,22 +353,22 @@ "name": "uint256", "type": "uint256" }, - "id": 2096, + "id": 2152, "name": "ElementaryTypeName", "src": "250:7:13" } ], - "id": 2097, + "id": 2153, "name": "VariableDeclaration", "src": "250:7:13" } ], - "id": 2098, + "id": 2154, "name": "ParameterList", "src": "249:9:13" } ], - "id": 2099, + "id": 2155, "name": "FunctionDefinition", "src": "178:81:13" }, @@ -383,7 +383,7 @@ ], "name": "transferFrom", "payable": false, - "scope": 2128, + "scope": 2184, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -395,7 +395,7 @@ "attributes": { "constant": false, "name": "from", - "scope": 2110, + "scope": 2166, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -408,12 +408,12 @@ "name": "address", "type": "address" }, - "id": 2100, + "id": 2156, "name": "ElementaryTypeName", "src": "284:7:13" } ], - "id": 2101, + "id": 2157, "name": "VariableDeclaration", "src": "284:12:13" }, @@ -421,7 +421,7 @@ "attributes": { "constant": false, "name": "to", - "scope": 2110, + "scope": 2166, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -434,12 +434,12 @@ "name": "address", "type": "address" }, - "id": 2102, + "id": 2158, "name": "ElementaryTypeName", "src": "298:7:13" } ], - "id": 2103, + "id": 2159, "name": "VariableDeclaration", "src": "298:10:13" }, @@ -447,7 +447,7 @@ "attributes": { "constant": false, "name": "value", - "scope": 2110, + "scope": 2166, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -460,17 +460,17 @@ "name": "uint256", "type": "uint256" }, - "id": 2104, + "id": 2160, "name": "ElementaryTypeName", "src": "310:7:13" } ], - "id": 2105, + "id": 2161, "name": "VariableDeclaration", "src": "310:13:13" } ], - "id": 2106, + "id": 2162, "name": "ParameterList", "src": "283:41:13" }, @@ -480,7 +480,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2110, + "scope": 2166, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -493,22 +493,22 @@ "name": "bool", "type": "bool" }, - "id": 2107, + "id": 2163, "name": "ElementaryTypeName", "src": "341:4:13" } ], - "id": 2108, + "id": 2164, "name": "VariableDeclaration", "src": "341:4:13" } ], - "id": 2109, + "id": 2165, "name": "ParameterList", "src": "340:6:13" } ], - "id": 2110, + "id": 2166, "name": "FunctionDefinition", "src": "262:85:13" }, @@ -523,7 +523,7 @@ ], "name": "approve", "payable": false, - "scope": 2128, + "scope": 2184, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -535,7 +535,7 @@ "attributes": { "constant": false, "name": "spender", - "scope": 2119, + "scope": 2175, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -548,12 +548,12 @@ "name": "address", "type": "address" }, - "id": 2111, + "id": 2167, "name": "ElementaryTypeName", "src": "367:7:13" } ], - "id": 2112, + "id": 2168, "name": "VariableDeclaration", "src": "367:15:13" }, @@ -561,7 +561,7 @@ "attributes": { "constant": false, "name": "value", - "scope": 2119, + "scope": 2175, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -574,17 +574,17 @@ "name": "uint256", "type": "uint256" }, - "id": 2113, + "id": 2169, "name": "ElementaryTypeName", "src": "384:7:13" } ], - "id": 2114, + "id": 2170, "name": "VariableDeclaration", "src": "384:13:13" } ], - "id": 2115, + "id": 2171, "name": "ParameterList", "src": "366:32:13" }, @@ -594,7 +594,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2119, + "scope": 2175, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -607,22 +607,22 @@ "name": "bool", "type": "bool" }, - "id": 2116, + "id": 2172, "name": "ElementaryTypeName", "src": "415:4:13" } ], - "id": 2117, + "id": 2173, "name": "VariableDeclaration", "src": "415:4:13" } ], - "id": 2118, + "id": 2174, "name": "ParameterList", "src": "414:6:13" } ], - "id": 2119, + "id": 2175, "name": "FunctionDefinition", "src": "350:71:13" }, @@ -639,7 +639,7 @@ "constant": false, "indexed": true, "name": "owner", - "scope": 2127, + "scope": 2183, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -652,12 +652,12 @@ "name": "address", "type": "address" }, - "id": 2120, + "id": 2176, "name": "ElementaryTypeName", "src": "439:7:13" } ], - "id": 2121, + "id": 2177, "name": "VariableDeclaration", "src": "439:21:13" }, @@ -666,7 +666,7 @@ "constant": false, "indexed": true, "name": "spender", - "scope": 2127, + "scope": 2183, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -679,12 +679,12 @@ "name": "address", "type": "address" }, - "id": 2122, + "id": 2178, "name": "ElementaryTypeName", "src": "462:7:13" } ], - "id": 2123, + "id": 2179, "name": "VariableDeclaration", "src": "462:23:13" }, @@ -693,7 +693,7 @@ "constant": false, "indexed": false, "name": "value", - "scope": 2127, + "scope": 2183, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -706,32 +706,32 @@ "name": "uint256", "type": "uint256" }, - "id": 2124, + "id": 2180, "name": "ElementaryTypeName", "src": "487:7:13" } ], - "id": 2125, + "id": 2181, "name": "VariableDeclaration", "src": "487:13:13" } ], - "id": 2126, + "id": 2182, "name": "ParameterList", "src": "438:63:13" } ], - "id": 2127, + "id": 2183, "name": "EventDefinition", "src": "424:78:13" } ], - "id": 2128, + "id": 2184, "name": "ContractDefinition", "src": "145:359:13" } ], - "id": 2129, + "id": 2185, "name": "SourceUnit", "src": "0:505:13" }, @@ -741,5 +741,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.897Z" + "updatedAt": "2018-01-14T10:53:23.001Z" } \ No newline at end of file diff --git a/build/contracts/ERC20Basic.json b/build/contracts/ERC20Basic.json index 2e1ff7f..a98f0b3 100644 --- a/build/contracts/ERC20Basic.json +++ b/build/contracts/ERC20Basic.json @@ -91,7 +91,7 @@ "absolutePath": "zeppelin-solidity/contracts/token/ERC20Basic.sol", "exportedSymbols": { "ERC20Basic": [ - 2157 + 2213 ] } }, @@ -105,7 +105,7 @@ ".18" ] }, - "id": 2130, + "id": 2186, "name": "PragmaDirective", "src": "0:24:14" }, @@ -121,17 +121,17 @@ "documentation": "@title ERC20Basic\n@dev Simpler version of ERC20 interface\n@dev see https://github.com/ethereum/EIPs/issues/179", "fullyImplemented": false, "linearizedBaseContracts": [ - 2157 + 2213 ], "name": "ERC20Basic", - "scope": 2158 + "scope": 2214 }, "children": [ { "attributes": { "constant": false, "name": "totalSupply", - "scope": 2157, + "scope": 2213, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -144,12 +144,12 @@ "name": "uint256", "type": "uint256" }, - "id": 2131, + "id": 2187, "name": "ElementaryTypeName", "src": "179:7:14" } ], - "id": 2132, + "id": 2188, "name": "VariableDeclaration", "src": "179:26:14" }, @@ -164,7 +164,7 @@ ], "name": "balanceOf", "payable": false, - "scope": 2157, + "scope": 2213, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -176,7 +176,7 @@ "attributes": { "constant": false, "name": "who", - "scope": 2139, + "scope": 2195, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -189,17 +189,17 @@ "name": "address", "type": "address" }, - "id": 2133, + "id": 2189, "name": "ElementaryTypeName", "src": "228:7:14" } ], - "id": 2134, + "id": 2190, "name": "VariableDeclaration", "src": "228:11:14" } ], - "id": 2135, + "id": 2191, "name": "ParameterList", "src": "227:13:14" }, @@ -209,7 +209,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2139, + "scope": 2195, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -222,22 +222,22 @@ "name": "uint256", "type": "uint256" }, - "id": 2136, + "id": 2192, "name": "ElementaryTypeName", "src": "262:7:14" } ], - "id": 2137, + "id": 2193, "name": "VariableDeclaration", "src": "262:7:14" } ], - "id": 2138, + "id": 2194, "name": "ParameterList", "src": "261:9:14" } ], - "id": 2139, + "id": 2195, "name": "FunctionDefinition", "src": "209:62:14" }, @@ -252,7 +252,7 @@ ], "name": "transfer", "payable": false, - "scope": 2157, + "scope": 2213, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -264,7 +264,7 @@ "attributes": { "constant": false, "name": "to", - "scope": 2148, + "scope": 2204, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -277,12 +277,12 @@ "name": "address", "type": "address" }, - "id": 2140, + "id": 2196, "name": "ElementaryTypeName", "src": "292:7:14" } ], - "id": 2141, + "id": 2197, "name": "VariableDeclaration", "src": "292:10:14" }, @@ -290,7 +290,7 @@ "attributes": { "constant": false, "name": "value", - "scope": 2148, + "scope": 2204, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -303,17 +303,17 @@ "name": "uint256", "type": "uint256" }, - "id": 2142, + "id": 2198, "name": "ElementaryTypeName", "src": "304:7:14" } ], - "id": 2143, + "id": 2199, "name": "VariableDeclaration", "src": "304:13:14" } ], - "id": 2144, + "id": 2200, "name": "ParameterList", "src": "291:27:14" }, @@ -323,7 +323,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2148, + "scope": 2204, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -336,22 +336,22 @@ "name": "bool", "type": "bool" }, - "id": 2145, + "id": 2201, "name": "ElementaryTypeName", "src": "335:4:14" } ], - "id": 2146, + "id": 2202, "name": "VariableDeclaration", "src": "335:4:14" } ], - "id": 2147, + "id": 2203, "name": "ParameterList", "src": "334:6:14" } ], - "id": 2148, + "id": 2204, "name": "FunctionDefinition", "src": "274:67:14" }, @@ -368,7 +368,7 @@ "constant": false, "indexed": true, "name": "from", - "scope": 2156, + "scope": 2212, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -381,12 +381,12 @@ "name": "address", "type": "address" }, - "id": 2149, + "id": 2205, "name": "ElementaryTypeName", "src": "359:7:14" } ], - "id": 2150, + "id": 2206, "name": "VariableDeclaration", "src": "359:20:14" }, @@ -395,7 +395,7 @@ "constant": false, "indexed": true, "name": "to", - "scope": 2156, + "scope": 2212, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -408,12 +408,12 @@ "name": "address", "type": "address" }, - "id": 2151, + "id": 2207, "name": "ElementaryTypeName", "src": "381:7:14" } ], - "id": 2152, + "id": 2208, "name": "VariableDeclaration", "src": "381:18:14" }, @@ -422,7 +422,7 @@ "constant": false, "indexed": false, "name": "value", - "scope": 2156, + "scope": 2212, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -435,32 +435,32 @@ "name": "uint256", "type": "uint256" }, - "id": 2153, + "id": 2209, "name": "ElementaryTypeName", "src": "401:7:14" } ], - "id": 2154, + "id": 2210, "name": "VariableDeclaration", "src": "401:13:14" } ], - "id": 2155, + "id": 2211, "name": "ParameterList", "src": "358:57:14" } ], - "id": 2156, + "id": 2212, "name": "EventDefinition", "src": "344:72:14" } ], - "id": 2157, + "id": 2213, "name": "ContractDefinition", "src": "155:263:14" } ], - "id": 2158, + "id": 2214, "name": "SourceUnit", "src": "0:419:14" }, @@ -470,5 +470,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.897Z" + "updatedAt": "2018-01-14T10:53:23.001Z" } \ No newline at end of file diff --git a/build/contracts/Holder.json b/build/contracts/Holder.json index cd58116..955b542 100644 --- a/build/contracts/Holder.json +++ b/build/contracts/Holder.json @@ -148,7 +148,7 @@ "name": "getTxnKey", "outputs": [ { - "name": "name", + "name": "txnKey", "type": "bytes32" } ], @@ -386,18 +386,18 @@ "type": "event" } ], - "bytecode": "0x6060604052341561000f57600080fd5b6040516020806122e783398101604052808051906020019091905050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061226c8061007b6000396000f3006060604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063064c4d6c146100d557806317a43191146100fe5780634e3943e714610125578063567f77931461029f5780636bcdaa33146102c857806392c54daf1461030b578063a8d97e5c1461035c578063b193772a14610383578063b93d28eb146103c2578063bfd9008b146103fb578063c4566bdd1461043a578063d1be488314610473578063e2b27eb0146106de578063e534155d1461071d575b600080fd5b34156100e057600080fd5b6100e8610772565b6040518082815260200191505060405180910390f35b341561010957600080fd5b610123600480803560001916906020019091905050610782565b005b341561013057600080fd5b61029d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050610920565b005b34156102aa57600080fd5b6102b2610d0a565b6040518082815260200191505060405180910390f35b34156102d357600080fd5b6102ed600480803560001916906020019091905050610d17565b60405180826000191660001916815260200191505060405180910390f35b341561031657600080fd5b610342600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113a3565b604051808215151515815260200191505060405180910390f35b341561036757600080fd5b6103816004808035600019169060200190919050506113c3565b005b341561038e57600080fd5b6103a46004808035906020019091905050611532565b60405180826000191660001916815260200191505060405180910390f35b34156103cd57600080fd5b6103f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611559565b005b341561040657600080fd5b610420600480803560001916906020019091905050611686565b604051808215151515815260200191505060405180910390f35b341561044557600080fd5b610471600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117bc565b005b341561047e57600080fd5b6104986004808035600019169060200190919050506118e9565b604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187600019166000191681526020018615151515815260200185810385528d818151815260200191508051906020019080838360005b8381101561056657808201518184015260208101905061054b565b50505050905090810190601f1680156105935780820380516001836020036101000a031916815260200191505b5085810384528c818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b5085810383528b818151815260200191508051906020019080838360005b83811015610632578082015181840152602081019050610617565b50505050905090810190601f16801561065f5780820380516001836020036101000a031916815260200191505b5085810382528a818151815260200191508051906020019080838360005b8381101561069857808201518184015260208101905061067d565b50505050905090810190601f1680156106c55780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b34156106e957600080fd5b610703600480803560001916906020019091905050611d49565b604051808215151515815260200191505060405180910390f35b341561072857600080fd5b610730611fd9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160030180549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561085257600080fd5b60016000016000846000191660001916815260200190815260200160002060080160009054906101000a900460ff1615151561088d57600080fd5b6001806000016000856000191660001916815260200190815260200160002060080160006101000a81548160ff021916908315150217905550600160020160008154809291906001900391905055507f978dbd4a5c69398988d130f73b479d634067339a3258c23bf271f12999b1c1138360405180826000191660001916815260200191505060405180910390a1505050565b337f2bf8ea5a40db67784aa965ddf3e37384c79dbaf6178e1c7b8e3be19f22f84b9c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156109dc57600080fd5b60a06040519081016040528060a0604051908101604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525081526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001836000191681526020016000151581525060016000016000846000191660001916815260200190815260200160002060008201518160000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610ae8929190611ffe565b506040820151816002019080519060200190610b05929190611ffe565b506060820151816003019080519060200190610b22929190611ffe565b506080820151816004019080519060200190610b3f929190611ffe565b5050506020820151816005015560408201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816007019060001916905560808201518160080160006101000a81548160ff0219169083151502179055509050506001806003018054806001018281610bde919061207e565b9160005260206000209001600085909190915090600019169055036001800160008460001916600019168152602001908152602001600020819055506001600201600081548092919060010191905055507fed60274040809c2e0c3199910a8fc3317c525cf63a383939cd93936d01192a0a878a60405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015610cc4578082015181840152602081019050610ca9565b50505050905090810190601f168015610cf15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050505050505050565b6000600160020154905090565b6000610d216120aa565b60016000016000846000191660001916815260200190815260200160002060a060405190810160405290816000820160a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eed5780601f10610ec257610100808354040283529160200191610eed565b820191906000526020600020905b815481529060010190602001808311610ed057829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110315780601f1061100657610100808354040283529160200191611031565b820191906000526020600020905b81548152906001019060200180831161101457829003601f168201915b5050505050815250508152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681526020016008820160009054906101000a900460ff161515151581525050905073__BadgeLibrary__________________________631ddb6af682600001516000015183600001516020015184600001516040015185600001516060015186600001516080015187604001516000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b838110156111fd5780820151818401526020810190506111e2565b50505050905090810190601f16801561122a5780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015611263578082015181840152602081019050611248565b50505050905090810190601f1680156112905780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b838110156112c95780820151818401526020810190506112ae565b50505050905090810190601f1680156112f65780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b8381101561132f578082015181840152602081019050611314565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b151561138057600080fd5b6102c65a03f4151561139157600080fd5b50505060405180519050915050919050565b60056020528060005260406000206000915054906101000a900460ff1681565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561149357600080fd5b60016000016000846000191660001916815260200190815260200160002060080160009054906101000a900460ff161515156114ce57600080fd5b6114d783611d49565b50600160020160008154809291906001900391905055507f3d6d2e20f8295ac74aaf9f1baed466127668c2875ea803edb9fdef728c58116f8360405180826000191660001916815260200191505060405180910390a1505050565b600060016003018281548110151561154657fe5b9060005260206000209001549050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561162957600080fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561175857600080fd5b61176184611d49565b92507f53c822192afd4ec78307b42da85bc3b1afa0e4536e82c2bcfb6bb8e18a6c6553846001600301805490506040518083600019166000191681526020018281526020019250505060405180910390a18292505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561188c57600080fd5b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006118f36120fc565b6118fb6120fc565b6119036120fc565b61190b6120fc565b6000806000806119196120aa565b600060016003018054905011151561193057600080fd5b600160000160008c6000191660001916815260200190815260200160002060a060405190810160405290816000820160a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a5a5780601f10611a2f57610100808354040283529160200191611a5a565b820191906000526020600020905b815481529060010190602001808311611a3d57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611afc5780601f10611ad157610100808354040283529160200191611afc565b820191906000526020600020905b815481529060010190602001808311611adf57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b9e5780601f10611b7357610100808354040283529160200191611b9e565b820191906000526020600020905b815481529060010190602001808311611b8157829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c405780601f10611c1557610100808354040283529160200191611c40565b820191906000526020600020905b815481529060010190602001808311611c2357829003601f168201915b5050505050815250508152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681526020016008820160009054906101000a900460ff16151515158152505090508060000151600001518160000151602001518260000151604001518360000151606001518460000151608001518560200151866040015187606001518860800151879750869650859550849450995099509950995099509950995099509950509193959799909294969850565b60008060006001600001600085600019166000191681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611da99190612110565b600282016000611db99190612110565b600382016000611dc99190612110565b600482016000611dd99190612110565b505060058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090556008820160006101000a81549060ff02191690555050600180016000856000191660001916815260200190815260200160002054915060016003016001806003018054905003815481101515611e6457fe5b90600052602060002090015490508160018001600083600019166000191681526020019081526020016000208190555080600160030183815481101515611ea757fe5b906000526020600020900181600019169055506001600301805480919060019003611ed29190612158565b506001800160008560001916600019168152602001908152602001600020600090556001600001600085600019166000191681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611f4f9190612110565b600282016000611f5f9190612110565b600382016000611f6f9190612110565b600482016000611f7f9190612110565b505060058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090556008820160006101000a81549060ff02191690555050600192505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061203f57805160ff191683800117855561206d565b8280016001018555821561206d579182015b8281111561206c578251825591602001919060010190612051565b5b50905061207a9190612184565b5090565b8154818355818115116120a5578183600052602060002091820191016120a491906121a9565b5b505050565b610120604051908101604052806120bf6121ce565b815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000151581525090565b602060405190810160405280600081525090565b50805460018160011615610100020316600290046000825580601f106121365750612155565b601f0160209004906000526020600020908101906121549190612184565b5b50565b81548183558181151161217f5781836000526020600020918201910161217e91906121a9565b5b505050565b6121a691905b808211156121a257600081600090555060010161218a565b5090565b90565b6121cb91905b808211156121c75760008160009055506001016121af565b5090565b90565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016121ff61222c565b815260200161220c61222c565b815260200161221961222c565b815260200161222661222c565b81525090565b6020604051908101604052806000815250905600a165627a7a723058201171d8085ce52bf2ad33cb8764ceb974083d098e018c3b4716a6b4479ff1d8570029", - "deployedBytecode": "0x6060604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063064c4d6c146100d557806317a43191146100fe5780634e3943e714610125578063567f77931461029f5780636bcdaa33146102c857806392c54daf1461030b578063a8d97e5c1461035c578063b193772a14610383578063b93d28eb146103c2578063bfd9008b146103fb578063c4566bdd1461043a578063d1be488314610473578063e2b27eb0146106de578063e534155d1461071d575b600080fd5b34156100e057600080fd5b6100e8610772565b6040518082815260200191505060405180910390f35b341561010957600080fd5b610123600480803560001916906020019091905050610782565b005b341561013057600080fd5b61029d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050610920565b005b34156102aa57600080fd5b6102b2610d0a565b6040518082815260200191505060405180910390f35b34156102d357600080fd5b6102ed600480803560001916906020019091905050610d17565b60405180826000191660001916815260200191505060405180910390f35b341561031657600080fd5b610342600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113a3565b604051808215151515815260200191505060405180910390f35b341561036757600080fd5b6103816004808035600019169060200190919050506113c3565b005b341561038e57600080fd5b6103a46004808035906020019091905050611532565b60405180826000191660001916815260200191505060405180910390f35b34156103cd57600080fd5b6103f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611559565b005b341561040657600080fd5b610420600480803560001916906020019091905050611686565b604051808215151515815260200191505060405180910390f35b341561044557600080fd5b610471600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117bc565b005b341561047e57600080fd5b6104986004808035600019169060200190919050506118e9565b604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187600019166000191681526020018615151515815260200185810385528d818151815260200191508051906020019080838360005b8381101561056657808201518184015260208101905061054b565b50505050905090810190601f1680156105935780820380516001836020036101000a031916815260200191505b5085810384528c818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b5085810383528b818151815260200191508051906020019080838360005b83811015610632578082015181840152602081019050610617565b50505050905090810190601f16801561065f5780820380516001836020036101000a031916815260200191505b5085810382528a818151815260200191508051906020019080838360005b8381101561069857808201518184015260208101905061067d565b50505050905090810190601f1680156106c55780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b34156106e957600080fd5b610703600480803560001916906020019091905050611d49565b604051808215151515815260200191505060405180910390f35b341561072857600080fd5b610730611fd9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160030180549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561085257600080fd5b60016000016000846000191660001916815260200190815260200160002060080160009054906101000a900460ff1615151561088d57600080fd5b6001806000016000856000191660001916815260200190815260200160002060080160006101000a81548160ff021916908315150217905550600160020160008154809291906001900391905055507f978dbd4a5c69398988d130f73b479d634067339a3258c23bf271f12999b1c1138360405180826000191660001916815260200191505060405180910390a1505050565b337f2bf8ea5a40db67784aa965ddf3e37384c79dbaf6178e1c7b8e3be19f22f84b9c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156109dc57600080fd5b60a06040519081016040528060a0604051908101604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525081526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001836000191681526020016000151581525060016000016000846000191660001916815260200190815260200160002060008201518160000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610ae8929190611ffe565b506040820151816002019080519060200190610b05929190611ffe565b506060820151816003019080519060200190610b22929190611ffe565b506080820151816004019080519060200190610b3f929190611ffe565b5050506020820151816005015560408201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816007019060001916905560808201518160080160006101000a81548160ff0219169083151502179055509050506001806003018054806001018281610bde919061207e565b9160005260206000209001600085909190915090600019169055036001800160008460001916600019168152602001908152602001600020819055506001600201600081548092919060010191905055507fed60274040809c2e0c3199910a8fc3317c525cf63a383939cd93936d01192a0a878a60405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015610cc4578082015181840152602081019050610ca9565b50505050905090810190601f168015610cf15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050505050505050565b6000600160020154905090565b6000610d216120aa565b60016000016000846000191660001916815260200190815260200160002060a060405190810160405290816000820160a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eed5780601f10610ec257610100808354040283529160200191610eed565b820191906000526020600020905b815481529060010190602001808311610ed057829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110315780601f1061100657610100808354040283529160200191611031565b820191906000526020600020905b81548152906001019060200180831161101457829003601f168201915b5050505050815250508152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681526020016008820160009054906101000a900460ff161515151581525050905073__BadgeLibrary__________________________631ddb6af682600001516000015183600001516020015184600001516040015185600001516060015186600001516080015187604001516000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b838110156111fd5780820151818401526020810190506111e2565b50505050905090810190601f16801561122a5780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015611263578082015181840152602081019050611248565b50505050905090810190601f1680156112905780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b838110156112c95780820151818401526020810190506112ae565b50505050905090810190601f1680156112f65780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b8381101561132f578082015181840152602081019050611314565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b151561138057600080fd5b6102c65a03f4151561139157600080fd5b50505060405180519050915050919050565b60056020528060005260406000206000915054906101000a900460ff1681565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561149357600080fd5b60016000016000846000191660001916815260200190815260200160002060080160009054906101000a900460ff161515156114ce57600080fd5b6114d783611d49565b50600160020160008154809291906001900391905055507f3d6d2e20f8295ac74aaf9f1baed466127668c2875ea803edb9fdef728c58116f8360405180826000191660001916815260200191505060405180910390a1505050565b600060016003018281548110151561154657fe5b9060005260206000209001549050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561162957600080fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561175857600080fd5b61176184611d49565b92507f53c822192afd4ec78307b42da85bc3b1afa0e4536e82c2bcfb6bb8e18a6c6553846001600301805490506040518083600019166000191681526020018281526020019250505060405180910390a18292505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561188c57600080fd5b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006118f36120fc565b6118fb6120fc565b6119036120fc565b61190b6120fc565b6000806000806119196120aa565b600060016003018054905011151561193057600080fd5b600160000160008c6000191660001916815260200190815260200160002060a060405190810160405290816000820160a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a5a5780601f10611a2f57610100808354040283529160200191611a5a565b820191906000526020600020905b815481529060010190602001808311611a3d57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611afc5780601f10611ad157610100808354040283529160200191611afc565b820191906000526020600020905b815481529060010190602001808311611adf57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b9e5780601f10611b7357610100808354040283529160200191611b9e565b820191906000526020600020905b815481529060010190602001808311611b8157829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c405780601f10611c1557610100808354040283529160200191611c40565b820191906000526020600020905b815481529060010190602001808311611c2357829003601f168201915b5050505050815250508152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681526020016008820160009054906101000a900460ff16151515158152505090508060000151600001518160000151602001518260000151604001518360000151606001518460000151608001518560200151866040015187606001518860800151879750869650859550849450995099509950995099509950995099509950509193959799909294969850565b60008060006001600001600085600019166000191681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611da99190612110565b600282016000611db99190612110565b600382016000611dc99190612110565b600482016000611dd99190612110565b505060058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090556008820160006101000a81549060ff02191690555050600180016000856000191660001916815260200190815260200160002054915060016003016001806003018054905003815481101515611e6457fe5b90600052602060002090015490508160018001600083600019166000191681526020019081526020016000208190555080600160030183815481101515611ea757fe5b906000526020600020900181600019169055506001600301805480919060019003611ed29190612158565b506001800160008560001916600019168152602001908152602001600020600090556001600001600085600019166000191681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611f4f9190612110565b600282016000611f5f9190612110565b600382016000611f6f9190612110565b600482016000611f7f9190612110565b505060058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090556008820160006101000a81549060ff02191690555050600192505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061203f57805160ff191683800117855561206d565b8280016001018555821561206d579182015b8281111561206c578251825591602001919060010190612051565b5b50905061207a9190612184565b5090565b8154818355818115116120a5578183600052602060002091820191016120a491906121a9565b5b505050565b610120604051908101604052806120bf6121ce565b815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000151581525090565b602060405190810160405280600081525090565b50805460018160011615610100020316600290046000825580601f106121365750612155565b601f0160209004906000526020600020908101906121549190612184565b5b50565b81548183558181151161217f5781836000526020600020918201910161217e91906121a9565b5b505050565b6121a691905b808211156121a257600081600090555060010161218a565b5090565b90565b6121cb91905b808211156121c75760008160009055506001016121af565b5090565b90565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016121ff61222c565b815260200161220c61222c565b815260200161221961222c565b815260200161222661222c565b81525090565b6020604051908101604052806000815250905600a165627a7a723058201171d8085ce52bf2ad33cb8764ceb974083d098e018c3b4716a6b4479ff1d8570029", - "sourceMap": "77:5941:2:-;;;660:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;712:7;703:6;;:16;;;;;;;;;;;;;;;;;;660:66;77:5941;;;;;;", - "deployedSourceMap": "77:5941:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5237:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2598:288;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1832:710;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5412:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5552:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;608:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5069:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1564:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;3301:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1396:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;4200:723;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3544:556:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;171:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5237:121;5295:10;5324:15;:20;;:27;;;;5317:34;;5237:121;:::o;2598:288::-;2652:10;951:17;983:6;;;;;;;;;;;972:17;;:7;:17;;;951:39;;1000;1017:7;1026:12;1000:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1057:12;1049:21;;;;;;;;2690:15;:27;;:36;2718:7;2690:36;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;2689:44;2681:53;;;;;;;;2790:4;2744:15;:27;;:36;2772:7;2744:36;;;;;;;;;;;;;;;;;:43;;;:50;;;;;;;;;;;;;;;;;;2804:15;:33;;;:35;;;;;;;;;;;;;;2849:30;2871:7;2849:30;;;;;;;;;;;;;;;;;;;;;;;;2598:288;;;:::o;1832:710::-;2078:10;1264:24;1280:7;1264:24;;;;;;;;;;;;;;;;;;;;;;1306:14;:23;1321:7;1306:23;;;;;;;;;;;;;;;;;;;;;;;;;1298:32;;;;;;;;2143:219;;;;;;;;;2184:66;;;;;;;;;2203:7;2184:66;;;;;;2212:12;2184:66;;;;2226:5;2184:66;;;;2233:6;2184:66;;;;2241:8;2184:66;;;2143:219;;;;2268:8;2143:219;;;;2294:10;2143:219;;;;;;2322:7;2143:219;;;;;;;2347:5;2143:219;;;;;2104:15;:27;;:36;2132:7;2104:36;;;;;;;;;;;;;;;;;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2443:1;2408:15;:20;;:34;;;;;;;;;;;:::i;:::-;;;;;;;;;;2434:7;2408:34;;;;;;;;;;;:36;2372:15;:24;;:33;2397:7;2372:33;;;;;;;;;;;;;;;;;:72;;;;2454:15;:33;;;:35;;;;;;;;;;;;;2499:36;2520:5;2527:7;2499:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1832:710:2;;;;;;;;;:::o;5412:134::-;5477:10;5506:15;:33;;;5499:40;;5412:134;:::o;5552:464::-;5619:15;5646:41;;:::i;:::-;5690:15;:27;;:36;5718:7;5690:36;;;;;;;;;;;;;;;;;5646:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5743:12;:29;5786:10;:16;;;:23;;;5824:10;:16;;;:28;;;5867:10;:16;;;:21;;;5903:10;:16;;;:22;;;5940:10;:16;;;:24;;;5979:10;:20;;;5743:266;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:273:2;;5552:464;;;;:::o;608:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;2939:261::-;2993:10;951:17;983:6;;;;;;;;;;;972:17;;:7;:17;;;951:39;;1000;1017:7;1026:12;1000:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1057:12;1049:21;;;;;;;;3031:15;:27;;:36;3059:7;3031:36;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;3030:44;3022:53;;;;;;;;3085:26;3103:7;3085:17;:26::i;:::-;;3121:15;:33;;;:35;;;;;;;;;;;;;;3166:27;3185:7;3166:27;;;;;;;;;;;;;;;;;;;;;;;;2939:261;;;:::o;5069:122::-;5125:12;5156:15;:20;;5177:6;5156:28;;;;;;;;;;;;;;;;;;;5149:35;;5069:122;;;:::o;1564:124::-;1628:10;951:17;983:6;;;;;;;;;;;972:17;;:7;:17;;;951:39;;1000;1017:7;1026:12;1000:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1057:12;1049:21;;;;;;;;1676:5;1650:14;:23;1665:7;1650:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;1564:124;;;:::o;3301:237::-;3382:12;3355:10;951:17;983:6;;;;;;;;;;;972:17;;:7;:17;;;951:39;;1000;1017:7;1026:12;1000:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1057:12;1049:21;;;;;;;;3416:26;3434:7;3416:17;:26::i;:::-;3406:36;;3452:55;3470:7;3479:15;:20;;:27;;;;3452:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3524:7;3517:14;;3301:237;;;;;:::o;1396:120::-;1457:10;951:17;983:6;;;;;;;;;;;972:17;;:7;:17;;;951:39;;1000;1017:7;1026:12;1000:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1057:12;1049:21;;;;;;;;1505:4;1479:14;:23;1494:7;1479:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1396:120;;;:::o;4200:723::-;4275:15;4300:19;;:::i;:::-;4329:12;;:::i;:::-;4351:13;;:::i;:::-;4374:15;;:::i;:::-;4399:13;4422:18;4450:14;4474:12;4553:35;;:::i;:::-;4541:1;4511:15;:20;;:27;;;;:31;4503:40;;;;;;;;4591:15;:27;;:36;4619:7;4591:36;;;;;;;;;;;;;;;;;4553:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4658:4;:10;;;:17;;;4689:4;:10;;;:22;;;4725:4;:10;;;:15;;;4754:4;:10;;;:16;;;4784:4;:10;;;:18;;;4816:4;:12;;;4842:4;:14;;;4870:4;:11;;;4895:4;:11;;;4637:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4200:723;;;;;;;;;;;;:::o;3544:556::-;3603:12;3680:16;3743:17;3634:15;:27;;:36;3662:7;3634:36;;;;;;;;;;;;;;;;;;3627:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3699:15;:24;;:33;3724:7;3699:33;;;;;;;;;;;;;;;;;;3680:52;;3763:15;:20;;3812:1;3784:15;:20;;:27;;;;:29;3763:51;;;;;;;;;;;;;;;;;;;3743:71;;3862:11;3824:15;:24;;:35;3849:9;3824:35;;;;;;;;;;;;;;;;;:49;;;;3920:9;3884:15;:20;;3905:11;3884:33;;;;;;;;;;;;;;;;;;:45;;;;;;;3940:15;:20;;:29;;;;;;;;;;;;:::i;:::-;;3986:15;:24;;:33;4011:7;3986:33;;;;;;;;;;;;;;;;;3979:40;;;4036:15;:27;;:36;4064:7;4036:36;;;;;;;;;;;;;;;;;;4029:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4089:4;4082:11;;3544:556;;;;;:::o;171:21::-;;;;;;;;;;;;;:::o;77:5941::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.17;\n\nimport \"BadgeLibrary/contracts/BadgeLibrary.sol\";\n\ncontract Holder {\n \n /// @notice address where holder holds there badgeforce tokens\n address public holder;\n\n /// @notice mapping of name hash to credential\n /// @notice array of hash names\n struct CredentialVault {\n mapping (bytes32=>BadgeLibrary.Credential) credentials;\n mapping (bytes32=>uint) indexMap;\n uint numOfPendingCreds;\n bytes32[] keys;\n }\n\n /// @notice vault holding credentials\n CredentialVault credentialVault;\n\n /// @notice mapping of trusted issuers \n mapping (address=>bool) public trustedIssuers;\n\n function Holder(address _holder) {\n holder = _holder;\n }\n\n event AuthorizeAttempt(address _actor, bool authorized);\n /// @notice make sure caller is the issuer that owns this contract because badgeforce tokens will be used \n modifier authorized(address _holder) {\n bool isAuthorized = (_holder == holder);\n AuthorizeAttempt(_holder, isAuthorized);\n require(isAuthorized);\n _;\n }\n\n event LogStoreAttempt(address _caller);\n /// @notice make sure issuer is trusted to store credentials on this contract\n modifier trusted(address _issuer) {\n LogStoreAttempt(_issuer);\n require(trustedIssuers[_issuer]);\n _;\n }\n\n /// @notice add a new trusted issuer \n function addTrustedIssuer(address _issuer) public authorized(msg.sender) {\n trustedIssuers[_issuer] = true;\n }\n\n /// @notice add a new trusted issuer \n function removeTrustedIssuer(address _issuer) public authorized(msg.sender) {\n trustedIssuers[_issuer] = false;\n }\n\n event NewPendingCredential(string _name, address _issuer);\n /**\n * @dev put a new credential inside the pending queue\n */\n function storeCredential(\n address _issuer,\n string _description,\n string _name,\n string _image,\n string _version,\n uint _expires,\n address _recipient,\n bytes32 _txnKey\n ) public trusted(msg.sender)\n {\n credentialVault.credentials[_txnKey] = BadgeLibrary.Credential(\n BadgeLibrary.Badge(_issuer, _description, _name, _image, _version),\n _expires,\n _recipient,\n _txnKey,\n false\n );\n credentialVault.indexMap[_txnKey] = credentialVault.keys.push(_txnKey)-1;\n credentialVault.numOfPendingCreds++;\n NewPendingCredential(_name, _issuer);\n }\n\n event NewCredentialAccepted(bytes32 _txnKey);\n function acceptCredential(bytes32 _txnKey) authorized(msg.sender) public {\n require(!credentialVault.credentials[_txnKey].active);\n credentialVault.credentials[_txnKey].active = true;\n credentialVault.numOfPendingCreds--;\n NewCredentialAccepted(_txnKey);\n }\n\n event CredentialRejected(bytes32 _txnKey);\n function rejectCredential(bytes32 _txnKey) authorized(msg.sender) public {\n require(!credentialVault.credentials[_txnKey].active);\n _deleteCredential(_txnKey);\n credentialVault.numOfPendingCreds--;\n CredentialRejected(_txnKey);\n }\n\n event CredentialDeleted(bytes32 _txnKey, uint count);\n /// @notice delete a credential \n function deleteCredential(bytes32 _txnKey) authorized(msg.sender) public returns(bool success) {\n success = _deleteCredential(_txnKey);\n CredentialDeleted(_txnKey, credentialVault.keys.length);\n return success;\n }\n\n function _deleteCredential(bytes32 _txnKey) public returns(bool success) {\n delete credentialVault.credentials[_txnKey];\n uint rowToDelete = credentialVault.indexMap[_txnKey]; \n bytes32 rowToMove = credentialVault.keys[credentialVault.keys.length-1];\n credentialVault.indexMap[rowToMove] = rowToDelete; \n credentialVault.keys[rowToDelete] = rowToMove; \n credentialVault.keys.length--;\n delete credentialVault.indexMap[_txnKey];\n delete credentialVault.credentials[_txnKey];\n return true;\n }\n\n /// @notice get a holders credential \n /// @param _name index of credential to return \n function getCredential(bytes32 _txnKey) constant public returns (\n address _issuer,\n string _description,\n string _name,\n string _image,\n string _version,\n uint _expires,\n address _recipient,\n bytes32 txnKey,\n bool _active\n ) {\n require(credentialVault.keys.length > 0);\n BadgeLibrary.Credential memory cred = credentialVault.credentials[_txnKey];\n return (\n cred.badge.issuer,\n cred.badge.description,\n cred.badge.name,\n cred.badge.image,\n cred.badge.version,\n cred.expires,\n cred.recipient,\n cred.txnKey,\n cred.active\n );\n }\n\n /// @notice helper function for UI to retrieve all names then retrieve the credentials\n /// @param _index index of the name you want\n function getTxnKey(uint _index) constant public returns(bytes32 name) {\n return credentialVault.keys[_index];\n }\n\n /// @dev get number of credentials \n function getNumberOfCredentials() constant public returns(uint count) {\n return credentialVault.keys.length;\n }\n\n /// @dev get number of pending credentials \n function getNumberOfPendingCredentials() constant public returns(uint count) {\n return credentialVault.numOfPendingCreds;\n }\n\n function recomputePOIHash(bytes32 _txnKey) constant public returns(bytes32 poiHash) {\n BadgeLibrary.Credential memory credential = credentialVault.credentials[_txnKey];\n return BadgeLibrary.getIntegrityHash(\n credential.badge.issuer, \n credential.badge.description, \n credential.badge.name, \n credential.badge.image, \n credential.badge.version, \n credential.recipient\n );\n }\n}", + "bytecode": "0x6060604052341561000f57600080fd5b6040516020806122e783398101604052808051906020019091905050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061226c8061007b6000396000f3006060604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063064c4d6c146100d557806317a43191146100fe5780634e3943e714610125578063567f77931461029f5780636bcdaa33146102c857806392c54daf1461030b578063a8d97e5c1461035c578063b193772a14610383578063b93d28eb146103c2578063bfd9008b146103fb578063c4566bdd1461043a578063d1be488314610473578063e2b27eb0146106de578063e534155d1461071d575b600080fd5b34156100e057600080fd5b6100e8610772565b6040518082815260200191505060405180910390f35b341561010957600080fd5b610123600480803560001916906020019091905050610782565b005b341561013057600080fd5b61029d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050610920565b005b34156102aa57600080fd5b6102b2610d0a565b6040518082815260200191505060405180910390f35b34156102d357600080fd5b6102ed600480803560001916906020019091905050610d17565b60405180826000191660001916815260200191505060405180910390f35b341561031657600080fd5b610342600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113a3565b604051808215151515815260200191505060405180910390f35b341561036757600080fd5b6103816004808035600019169060200190919050506113c3565b005b341561038e57600080fd5b6103a46004808035906020019091905050611532565b60405180826000191660001916815260200191505060405180910390f35b34156103cd57600080fd5b6103f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611559565b005b341561040657600080fd5b610420600480803560001916906020019091905050611686565b604051808215151515815260200191505060405180910390f35b341561044557600080fd5b610471600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117bc565b005b341561047e57600080fd5b6104986004808035600019169060200190919050506118e9565b604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187600019166000191681526020018615151515815260200185810385528d818151815260200191508051906020019080838360005b8381101561056657808201518184015260208101905061054b565b50505050905090810190601f1680156105935780820380516001836020036101000a031916815260200191505b5085810384528c818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b5085810383528b818151815260200191508051906020019080838360005b83811015610632578082015181840152602081019050610617565b50505050905090810190601f16801561065f5780820380516001836020036101000a031916815260200191505b5085810382528a818151815260200191508051906020019080838360005b8381101561069857808201518184015260208101905061067d565b50505050905090810190601f1680156106c55780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b34156106e957600080fd5b610703600480803560001916906020019091905050611d49565b604051808215151515815260200191505060405180910390f35b341561072857600080fd5b610730611fd9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160030180549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561085257600080fd5b60016000016000846000191660001916815260200190815260200160002060080160009054906101000a900460ff1615151561088d57600080fd5b6001806000016000856000191660001916815260200190815260200160002060080160006101000a81548160ff021916908315150217905550600160020160008154809291906001900391905055507f978dbd4a5c69398988d130f73b479d634067339a3258c23bf271f12999b1c1138360405180826000191660001916815260200191505060405180910390a1505050565b337f2bf8ea5a40db67784aa965ddf3e37384c79dbaf6178e1c7b8e3be19f22f84b9c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156109dc57600080fd5b60a06040519081016040528060a0604051908101604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525081526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001836000191681526020016000151581525060016000016000846000191660001916815260200190815260200160002060008201518160000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610ae8929190611ffe565b506040820151816002019080519060200190610b05929190611ffe565b506060820151816003019080519060200190610b22929190611ffe565b506080820151816004019080519060200190610b3f929190611ffe565b5050506020820151816005015560408201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816007019060001916905560808201518160080160006101000a81548160ff0219169083151502179055509050506001806003018054806001018281610bde919061207e565b9160005260206000209001600085909190915090600019169055036001800160008460001916600019168152602001908152602001600020819055506001600201600081548092919060010191905055507fed60274040809c2e0c3199910a8fc3317c525cf63a383939cd93936d01192a0a878a60405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015610cc4578082015181840152602081019050610ca9565b50505050905090810190601f168015610cf15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050505050505050565b6000600160020154905090565b6000610d216120aa565b60016000016000846000191660001916815260200190815260200160002060a060405190810160405290816000820160a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eed5780601f10610ec257610100808354040283529160200191610eed565b820191906000526020600020905b815481529060010190602001808311610ed057829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110315780601f1061100657610100808354040283529160200191611031565b820191906000526020600020905b81548152906001019060200180831161101457829003601f168201915b5050505050815250508152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681526020016008820160009054906101000a900460ff161515151581525050905073__BadgeLibrary__________________________631ddb6af682600001516000015183600001516020015184600001516040015185600001516060015186600001516080015187604001516000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b838110156111fd5780820151818401526020810190506111e2565b50505050905090810190601f16801561122a5780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015611263578082015181840152602081019050611248565b50505050905090810190601f1680156112905780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b838110156112c95780820151818401526020810190506112ae565b50505050905090810190601f1680156112f65780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b8381101561132f578082015181840152602081019050611314565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b151561138057600080fd5b6102c65a03f4151561139157600080fd5b50505060405180519050915050919050565b60056020528060005260406000206000915054906101000a900460ff1681565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561149357600080fd5b60016000016000846000191660001916815260200190815260200160002060080160009054906101000a900460ff161515156114ce57600080fd5b6114d783611d49565b50600160020160008154809291906001900391905055507f3d6d2e20f8295ac74aaf9f1baed466127668c2875ea803edb9fdef728c58116f8360405180826000191660001916815260200191505060405180910390a1505050565b600060016003018281548110151561154657fe5b9060005260206000209001549050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561162957600080fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561175857600080fd5b61176184611d49565b92507f53c822192afd4ec78307b42da85bc3b1afa0e4536e82c2bcfb6bb8e18a6c6553846001600301805490506040518083600019166000191681526020018281526020019250505060405180910390a18292505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561188c57600080fd5b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006118f36120fc565b6118fb6120fc565b6119036120fc565b61190b6120fc565b6000806000806119196120aa565b600060016003018054905011151561193057600080fd5b600160000160008c6000191660001916815260200190815260200160002060a060405190810160405290816000820160a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a5a5780601f10611a2f57610100808354040283529160200191611a5a565b820191906000526020600020905b815481529060010190602001808311611a3d57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611afc5780601f10611ad157610100808354040283529160200191611afc565b820191906000526020600020905b815481529060010190602001808311611adf57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b9e5780601f10611b7357610100808354040283529160200191611b9e565b820191906000526020600020905b815481529060010190602001808311611b8157829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c405780601f10611c1557610100808354040283529160200191611c40565b820191906000526020600020905b815481529060010190602001808311611c2357829003601f168201915b5050505050815250508152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681526020016008820160009054906101000a900460ff16151515158152505090508060000151600001518160000151602001518260000151604001518360000151606001518460000151608001518560200151866040015187606001518860800151879750869650859550849450995099509950995099509950995099509950509193959799909294969850565b60008060006001600001600085600019166000191681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611da99190612110565b600282016000611db99190612110565b600382016000611dc99190612110565b600482016000611dd99190612110565b505060058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090556008820160006101000a81549060ff02191690555050600180016000856000191660001916815260200190815260200160002054915060016003016001806003018054905003815481101515611e6457fe5b90600052602060002090015490508160018001600083600019166000191681526020019081526020016000208190555080600160030183815481101515611ea757fe5b906000526020600020900181600019169055506001600301805480919060019003611ed29190612158565b506001800160008560001916600019168152602001908152602001600020600090556001600001600085600019166000191681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611f4f9190612110565b600282016000611f5f9190612110565b600382016000611f6f9190612110565b600482016000611f7f9190612110565b505060058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090556008820160006101000a81549060ff02191690555050600192505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061203f57805160ff191683800117855561206d565b8280016001018555821561206d579182015b8281111561206c578251825591602001919060010190612051565b5b50905061207a9190612184565b5090565b8154818355818115116120a5578183600052602060002091820191016120a491906121a9565b5b505050565b610120604051908101604052806120bf6121ce565b815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000151581525090565b602060405190810160405280600081525090565b50805460018160011615610100020316600290046000825580601f106121365750612155565b601f0160209004906000526020600020908101906121549190612184565b5b50565b81548183558181151161217f5781836000526020600020918201910161217e91906121a9565b5b505050565b6121a691905b808211156121a257600081600090555060010161218a565b5090565b90565b6121cb91905b808211156121c75760008160009055506001016121af565b5090565b90565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016121ff61222c565b815260200161220c61222c565b815260200161221961222c565b815260200161222661222c565b81525090565b6020604051908101604052806000815250905600a165627a7a7230582070918c01515353a2b2632fb40fd3404bd1449cb30e0c346255fa49cf229d83a50029", + "deployedBytecode": "0x6060604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063064c4d6c146100d557806317a43191146100fe5780634e3943e714610125578063567f77931461029f5780636bcdaa33146102c857806392c54daf1461030b578063a8d97e5c1461035c578063b193772a14610383578063b93d28eb146103c2578063bfd9008b146103fb578063c4566bdd1461043a578063d1be488314610473578063e2b27eb0146106de578063e534155d1461071d575b600080fd5b34156100e057600080fd5b6100e8610772565b6040518082815260200191505060405180910390f35b341561010957600080fd5b610123600480803560001916906020019091905050610782565b005b341561013057600080fd5b61029d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560001916906020019091905050610920565b005b34156102aa57600080fd5b6102b2610d0a565b6040518082815260200191505060405180910390f35b34156102d357600080fd5b6102ed600480803560001916906020019091905050610d17565b60405180826000191660001916815260200191505060405180910390f35b341561031657600080fd5b610342600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113a3565b604051808215151515815260200191505060405180910390f35b341561036757600080fd5b6103816004808035600019169060200190919050506113c3565b005b341561038e57600080fd5b6103a46004808035906020019091905050611532565b60405180826000191660001916815260200191505060405180910390f35b34156103cd57600080fd5b6103f9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611559565b005b341561040657600080fd5b610420600480803560001916906020019091905050611686565b604051808215151515815260200191505060405180910390f35b341561044557600080fd5b610471600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117bc565b005b341561047e57600080fd5b6104986004808035600019169060200190919050506118e9565b604051808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200187600019166000191681526020018615151515815260200185810385528d818151815260200191508051906020019080838360005b8381101561056657808201518184015260208101905061054b565b50505050905090810190601f1680156105935780820380516001836020036101000a031916815260200191505b5085810384528c818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b5085810383528b818151815260200191508051906020019080838360005b83811015610632578082015181840152602081019050610617565b50505050905090810190601f16801561065f5780820380516001836020036101000a031916815260200191505b5085810382528a818151815260200191508051906020019080838360005b8381101561069857808201518184015260208101905061067d565b50505050905090810190601f1680156106c55780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b34156106e957600080fd5b610703600480803560001916906020019091905050611d49565b604051808215151515815260200191505060405180910390f35b341561072857600080fd5b610730611fd9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600160030180549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561085257600080fd5b60016000016000846000191660001916815260200190815260200160002060080160009054906101000a900460ff1615151561088d57600080fd5b6001806000016000856000191660001916815260200190815260200160002060080160006101000a81548160ff021916908315150217905550600160020160008154809291906001900391905055507f978dbd4a5c69398988d130f73b479d634067339a3258c23bf271f12999b1c1138360405180826000191660001916815260200191505060405180910390a1505050565b337f2bf8ea5a40db67784aa965ddf3e37384c79dbaf6178e1c7b8e3be19f22f84b9c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156109dc57600080fd5b60a06040519081016040528060a0604051908101604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525081526020018581526020018473ffffffffffffffffffffffffffffffffffffffff168152602001836000191681526020016000151581525060016000016000846000191660001916815260200190815260200160002060008201518160000160008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190610ae8929190611ffe565b506040820151816002019080519060200190610b05929190611ffe565b506060820151816003019080519060200190610b22929190611ffe565b506080820151816004019080519060200190610b3f929190611ffe565b5050506020820151816005015560408201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816007019060001916905560808201518160080160006101000a81548160ff0219169083151502179055509050506001806003018054806001018281610bde919061207e565b9160005260206000209001600085909190915090600019169055036001800160008460001916600019168152602001908152602001600020819055506001600201600081548092919060010191905055507fed60274040809c2e0c3199910a8fc3317c525cf63a383939cd93936d01192a0a878a60405180806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b83811015610cc4578082015181840152602081019050610ca9565b50505050905090810190601f168015610cf15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050505050505050565b6000600160020154905090565b6000610d216120aa565b60016000016000846000191660001916815260200190815260200160002060a060405190810160405290816000820160a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e4b5780601f10610e2057610100808354040283529160200191610e4b565b820191906000526020600020905b815481529060010190602001808311610e2e57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610eed5780601f10610ec257610100808354040283529160200191610eed565b820191906000526020600020905b815481529060010190602001808311610ed057829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f8f5780601f10610f6457610100808354040283529160200191610f8f565b820191906000526020600020905b815481529060010190602001808311610f7257829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110315780601f1061100657610100808354040283529160200191611031565b820191906000526020600020905b81548152906001019060200180831161101457829003601f168201915b5050505050815250508152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681526020016008820160009054906101000a900460ff161515151581525050905073__BadgeLibrary__________________________631ddb6af682600001516000015183600001516020015184600001516040015185600001516060015186600001516080015187604001516000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b838110156111fd5780820151818401526020810190506111e2565b50505050905090810190601f16801561122a5780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015611263578082015181840152602081019050611248565b50505050905090810190601f1680156112905780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b838110156112c95780820151818401526020810190506112ae565b50505050905090810190601f1680156112f65780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b8381101561132f578082015181840152602081019050611314565b50505050905090810190601f16801561135c5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b151561138057600080fd5b6102c65a03f4151561139157600080fd5b50505060405180519050915050919050565b60056020528060005260406000206000915054906101000a900460ff1681565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561149357600080fd5b60016000016000846000191660001916815260200190815260200160002060080160009054906101000a900460ff161515156114ce57600080fd5b6114d783611d49565b50600160020160008154809291906001900391905055507f3d6d2e20f8295ac74aaf9f1baed466127668c2875ea803edb9fdef728c58116f8360405180826000191660001916815260200191505060405180910390a1505050565b600060016003018281548110151561154657fe5b9060005260206000209001549050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561162957600080fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561175857600080fd5b61176184611d49565b92507f53c822192afd4ec78307b42da85bc3b1afa0e4536e82c2bcfb6bb8e18a6c6553846001600301805490506040518083600019166000191681526020018281526020019250505060405180910390a18292505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561188c57600080fd5b6001600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006118f36120fc565b6118fb6120fc565b6119036120fc565b61190b6120fc565b6000806000806119196120aa565b600060016003018054905011151561193057600080fd5b600160000160008c6000191660001916815260200190815260200160002060a060405190810160405290816000820160a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611a5a5780601f10611a2f57610100808354040283529160200191611a5a565b820191906000526020600020905b815481529060010190602001808311611a3d57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611afc5780601f10611ad157610100808354040283529160200191611afc565b820191906000526020600020905b815481529060010190602001808311611adf57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b9e5780601f10611b7357610100808354040283529160200191611b9e565b820191906000526020600020905b815481529060010190602001808311611b8157829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c405780601f10611c1557610100808354040283529160200191611c40565b820191906000526020600020905b815481529060010190602001808311611c2357829003601f168201915b5050505050815250508152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016007820154600019166000191681526020016008820160009054906101000a900460ff16151515158152505090508060000151600001518160000151602001518260000151604001518360000151606001518460000151608001518560200151866040015187606001518860800151879750869650859550849450995099509950995099509950995099509950509193959799909294969850565b60008060006001600001600085600019166000191681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611da99190612110565b600282016000611db99190612110565b600382016000611dc99190612110565b600482016000611dd99190612110565b505060058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090556008820160006101000a81549060ff02191690555050600180016000856000191660001916815260200190815260200160002054915060016003016001806003018054905003815481101515611e6457fe5b90600052602060002090015490508160018001600083600019166000191681526020019081526020016000208190555080600160030183815481101515611ea757fe5b906000526020600020900181600019169055506001600301805480919060019003611ed29190612158565b506001800160008560001916600019168152602001908152602001600020600090556001600001600085600019166000191681526020019081526020016000206000808201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000611f4f9190612110565b600282016000611f5f9190612110565b600382016000611f6f9190612110565b600482016000611f7f9190612110565b505060058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600090556008820160006101000a81549060ff02191690555050600192505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061203f57805160ff191683800117855561206d565b8280016001018555821561206d579182015b8281111561206c578251825591602001919060010190612051565b5b50905061207a9190612184565b5090565b8154818355818115116120a5578183600052602060002091820191016120a491906121a9565b5b505050565b610120604051908101604052806120bf6121ce565b815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600080191681526020016000151581525090565b602060405190810160405280600081525090565b50805460018160011615610100020316600290046000825580601f106121365750612155565b601f0160209004906000526020600020908101906121549190612184565b5b50565b81548183558181151161217f5781836000526020600020918201910161217e91906121a9565b5b505050565b6121a691905b808211156121a257600081600090555060010161218a565b5090565b90565b6121cb91905b808211156121c75760008160009055506001016121af565b5090565b90565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016121ff61222c565b815260200161220c61222c565b815260200161221961222c565b815260200161222661222c565b81525090565b6020604051908101604052806000815250905600a165627a7a7230582070918c01515353a2b2632fb40fd3404bd1449cb30e0c346255fa49cf229d83a50029", + "sourceMap": "77:5929:2:-;;;655:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;714:7;705:6;;:16;;;;;;;;;;;;;;;;;;655:73;77:5929;;;;;;", + "deployedSourceMap": "77:5929:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5231:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2597:288;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1831:710;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5405:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5545:459;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;603:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2938:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5062:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1563;;;;;;;;;;;;;;;;;;;;;;;;;;;;3299:237;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1396:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;4193:723;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3542:553:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;167:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5231:121;5289:10;5318:15;:20;;:27;;;;5311:34;;5231:121;:::o;2597:288::-;2651:10;952:17;984:6;;;;;;;;;;;973:17;;:7;:17;;;952:39;;1001;1018:7;1027:12;1001:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1058:12;1050:21;;;;;;;;2689:15;:27;;:36;2717:7;2689:36;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;2688:44;2680:53;;;;;;;;2789:4;2743:15;:27;;:36;2771:7;2743:36;;;;;;;;;;;;;;;;;:43;;;:50;;;;;;;;;;;;;;;;;;2803:15;:33;;;:35;;;;;;;;;;;;;;2848:30;2870:7;2848:30;;;;;;;;;;;;;;;;;;;;;;;;2597:288;;;:::o;1831:710::-;2077:10;1265:24;1281:7;1265:24;;;;;;;;;;;;;;;;;;;;;;1307:14;:23;1322:7;1307:23;;;;;;;;;;;;;;;;;;;;;;;;;1299:32;;;;;;;;2142:219;;;;;;;;;2183:66;;;;;;;;;2202:7;2183:66;;;;;;2211:12;2183:66;;;;2225:5;2183:66;;;;2232:6;2183:66;;;;2240:8;2183:66;;;2142:219;;;;2267:8;2142:219;;;;2293:10;2142:219;;;;;;2321:7;2142:219;;;;;;;2346:5;2142:219;;;;;2103:15;:27;;:36;2131:7;2103:36;;;;;;;;;;;;;;;;;:258;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2442:1;2407:15;:20;;:34;;;;;;;;;;;:::i;:::-;;;;;;;;;;2433:7;2407:34;;;;;;;;;;;:36;2371:15;:24;;:33;2396:7;2371:33;;;;;;;;;;;;;;;;;:72;;;;2453:15;:33;;;:35;;;;;;;;;;;;;2498:36;2519:5;2526:7;2498:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1831:710:2;;;;;;;;;:::o;5405:134::-;5470:10;5499:15;:33;;;5492:40;;5405:134;:::o;5545:459::-;5612:15;5639:41;;:::i;:::-;5683:15;:27;;:36;5711:7;5683:36;;;;;;;;;;;;;;;;;5639:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:12;:29;5779:10;:16;;;:23;;;5816:10;:16;;;:28;;;5858:10;:16;;;:21;;;5893:10;:16;;;:22;;;5929:10;:16;;;:24;;;5967:10;:20;;;5736:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5729:268:2;;5545:459;;;;:::o;603:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;2938:261::-;2992:10;952:17;984:6;;;;;;;;;;;973:17;;:7;:17;;;952:39;;1001;1018:7;1027:12;1001:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1058:12;1050:21;;;;;;;;3030:15;:27;;:36;3058:7;3030:36;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;3029:44;3021:53;;;;;;;;3084:26;3102:7;3084:17;:26::i;:::-;;3120:15;:33;;;:35;;;;;;;;;;;;;;3165:27;3184:7;3165:27;;;;;;;;;;;;;;;;;;;;;;;;2938:261;;;:::o;5062:124::-;5118:14;5151:15;:20;;5172:6;5151:28;;;;;;;;;;;;;;;;;;;5144:35;;5062:124;;;:::o;1563:::-;1627:10;952:17;984:6;;;;;;;;;;;973:17;;:7;:17;;;952:39;;1001;1018:7;1027:12;1001:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1058:12;1050:21;;;;;;;;1675:5;1649:14;:23;1664:7;1649:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;1563:124;;;:::o;3299:237::-;3380:12;3353:10;952:17;984:6;;;;;;;;;;;973:17;;:7;:17;;;952:39;;1001;1018:7;1027:12;1001:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1058:12;1050:21;;;;;;;;3414:26;3432:7;3414:17;:26::i;:::-;3404:36;;3450:55;3468:7;3477:15;:20;;:27;;;;3450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3522:7;3515:14;;3299:237;;;;;:::o;1396:120::-;1457:10;952:17;984:6;;;;;;;;;;;973:17;;:7;:17;;;952:39;;1001;1018:7;1027:12;1001:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1058:12;1050:21;;;;;;;;1505:4;1479:14;:23;1494:7;1479:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1396:120;;;:::o;4193:723::-;4268:15;4293:19;;:::i;:::-;4322:12;;:::i;:::-;4344:13;;:::i;:::-;4367:15;;:::i;:::-;4392:13;4415:18;4443:14;4467:12;4546:35;;:::i;:::-;4534:1;4504:15;:20;;:27;;;;:31;4496:40;;;;;;;;4584:15;:27;;:36;4612:7;4584:36;;;;;;;;;;;;;;;;;4546:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4651:4;:10;;;:17;;;4682:4;:10;;;:22;;;4718:4;:10;;;:15;;;4747:4;:10;;;:16;;;4777:4;:10;;;:18;;;4809:4;:12;;;4835:4;:14;;;4863:4;:11;;;4888:4;:11;;;4630:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4193:723;;;;;;;;;;;;:::o;3542:553::-;3601:12;3678:16;3740:17;3632:15;:27;;:36;3660:7;3632:36;;;;;;;;;;;;;;;;;;3625:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3697:15;:24;;:33;3722:7;3697:33;;;;;;;;;;;;;;;;;;3678:52;;3760:15;:20;;3809:1;3781:15;:20;;:27;;;;:29;3760:51;;;;;;;;;;;;;;;;;;;3740:71;;3859:11;3821:15;:24;;:35;3846:9;3821:35;;;;;;;;;;;;;;;;;:49;;;;3916:9;3880:15;:20;;3901:11;3880:33;;;;;;;;;;;;;;;;;;:45;;;;;;;3935:15;:20;;:29;;;;;;;;;;;;:::i;:::-;;3981:15;:24;;:33;4006:7;3981:33;;;;;;;;;;;;;;;;;3974:40;;;4031:15;:27;;:36;4059:7;4031:36;;;;;;;;;;;;;;;;;;4024:43;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4084:4;4077:11;;3542:553;;;;;:::o;167:21::-;;;;;;;;;;;;;:::o;77:5929::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.17;\n\nimport \"BadgeLibrary/contracts/BadgeLibrary.sol\";\n\ncontract Holder {\n\n /// @notice address where holder holds there badgeforce tokens\n address public holder;\n\n /// @notice mapping of name hash to credential\n /// @notice array of hash names\n struct CredentialVault {\n mapping (bytes32=>BadgeLibrary.Credential) credentials;\n mapping (bytes32=>uint) indexMap;\n uint numOfPendingCreds;\n bytes32[] keys;\n }\n\n /// @notice vault holding credentials\n CredentialVault credentialVault;\n\n /// @notice mapping of trusted issuers\n mapping (address=>bool) public trustedIssuers;\n\n function Holder(address _holder) public {\n holder = _holder;\n }\n\n event AuthorizeAttempt(address _actor, bool authorized);\n /// @notice make sure caller is the issuer that owns this contract because badgeforce tokens will be used\n modifier authorized(address _holder) {\n bool isAuthorized = (_holder == holder);\n AuthorizeAttempt(_holder, isAuthorized);\n require(isAuthorized);\n _;\n }\n\n event LogStoreAttempt(address _caller);\n /// @notice make sure issuer is trusted to store credentials on this contract\n modifier trusted(address _issuer) {\n LogStoreAttempt(_issuer);\n require(trustedIssuers[_issuer]);\n _;\n }\n\n /// @notice add a new trusted issuer\n function addTrustedIssuer(address _issuer) public authorized(msg.sender) {\n trustedIssuers[_issuer] = true;\n }\n\n /// @notice add a new trusted issuer\n function removeTrustedIssuer(address _issuer) public authorized(msg.sender) {\n trustedIssuers[_issuer] = false;\n }\n\n event NewPendingCredential(string _name, address _issuer);\n /**\n * @dev put a new credential inside the pending queue\n */\n function storeCredential(\n address _issuer,\n string _description,\n string _name,\n string _image,\n string _version,\n uint _expires,\n address _recipient,\n bytes32 _txnKey\n ) public trusted(msg.sender)\n {\n credentialVault.credentials[_txnKey] = BadgeLibrary.Credential(\n BadgeLibrary.Badge(_issuer, _description, _name, _image, _version),\n _expires,\n _recipient,\n _txnKey,\n false\n );\n credentialVault.indexMap[_txnKey] = credentialVault.keys.push(_txnKey)-1;\n credentialVault.numOfPendingCreds++;\n NewPendingCredential(_name, _issuer);\n }\n\n event NewCredentialAccepted(bytes32 _txnKey);\n function acceptCredential(bytes32 _txnKey) authorized(msg.sender) public {\n require(!credentialVault.credentials[_txnKey].active);\n credentialVault.credentials[_txnKey].active = true;\n credentialVault.numOfPendingCreds--;\n NewCredentialAccepted(_txnKey);\n }\n\n event CredentialRejected(bytes32 _txnKey);\n function rejectCredential(bytes32 _txnKey) authorized(msg.sender) public {\n require(!credentialVault.credentials[_txnKey].active);\n _deleteCredential(_txnKey);\n credentialVault.numOfPendingCreds--;\n CredentialRejected(_txnKey);\n }\n\n event CredentialDeleted(bytes32 _txnKey, uint count);\n /// @notice delete a credential\n function deleteCredential(bytes32 _txnKey) authorized(msg.sender) public returns(bool success) {\n success = _deleteCredential(_txnKey);\n CredentialDeleted(_txnKey, credentialVault.keys.length);\n return success;\n }\n\n function _deleteCredential(bytes32 _txnKey) public returns(bool success) {\n delete credentialVault.credentials[_txnKey];\n uint rowToDelete = credentialVault.indexMap[_txnKey];\n bytes32 rowToMove = credentialVault.keys[credentialVault.keys.length-1];\n credentialVault.indexMap[rowToMove] = rowToDelete;\n credentialVault.keys[rowToDelete] = rowToMove;\n credentialVault.keys.length--;\n delete credentialVault.indexMap[_txnKey];\n delete credentialVault.credentials[_txnKey];\n return true;\n }\n\n /// @notice get a holders credential\n /// @param _name index of credential to return\n function getCredential(bytes32 _txnKey) constant public returns (\n address _issuer,\n string _description,\n string _name,\n string _image,\n string _version,\n uint _expires,\n address _recipient,\n bytes32 txnKey,\n bool _active\n ) {\n require(credentialVault.keys.length > 0);\n BadgeLibrary.Credential memory cred = credentialVault.credentials[_txnKey];\n return (\n cred.badge.issuer,\n cred.badge.description,\n cred.badge.name,\n cred.badge.image,\n cred.badge.version,\n cred.expires,\n cred.recipient,\n cred.txnKey,\n cred.active\n );\n }\n\n /// @notice helper function for UI to retrieve all names then retrieve the credentials\n /// @param _index index of the name you want\n function getTxnKey(uint _index) constant public returns(bytes32 txnKey) {\n return credentialVault.keys[_index];\n }\n\n /// @dev get number of credentials\n function getNumberOfCredentials() constant public returns(uint count) {\n return credentialVault.keys.length;\n }\n\n /// @dev get number of pending credentials\n function getNumberOfPendingCredentials() constant public returns(uint count) {\n return credentialVault.numOfPendingCreds;\n }\n\n function recomputePOIHash(bytes32 _txnKey) constant public returns(bytes32 poiHash) {\n BadgeLibrary.Credential memory credential = credentialVault.credentials[_txnKey];\n return BadgeLibrary.getIntegrityHash(\n credential.badge.issuer,\n credential.badge.description,\n credential.badge.name,\n credential.badge.image,\n credential.badge.version,\n credential.recipient\n );\n }\n}\n", "sourcePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Holder.sol", "ast": { "attributes": { "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Holder.sol", "exportedSymbols": { "Holder": [ - 1042 + 1108 ] } }, @@ -411,22 +411,22 @@ ".17" ] }, - "id": 537, + "id": 603, "name": "PragmaDirective", "src": "0:24:2" }, { "attributes": { - "SourceUnit": 1813, + "SourceUnit": 1869, "absolutePath": "BadgeLibrary/contracts/BadgeLibrary.sol", "file": "BadgeLibrary/contracts/BadgeLibrary.sol", - "scope": 1043, + "scope": 1109, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 538, + "id": 604, "name": "ImportDirective", "src": "26:49:2" }, @@ -442,17 +442,17 @@ "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 1042 + 1108 ], "name": "Holder", - "scope": 1043 + "scope": 1109 }, "children": [ { "attributes": { "constant": false, "name": "holder", - "scope": 1042, + "scope": 1108, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -465,20 +465,20 @@ "name": "address", "type": "address" }, - "id": 539, + "id": 605, "name": "ElementaryTypeName", - "src": "171:7:2" + "src": "167:7:2" } ], - "id": 540, + "id": 606, "name": "VariableDeclaration", - "src": "171:21:2" + "src": "167:21:2" }, { "attributes": { "canonicalName": "Holder.CredentialVault", "name": "CredentialVault", - "scope": 1042, + "scope": 1108, "visibility": "public" }, "children": [ @@ -486,7 +486,7 @@ "attributes": { "constant": false, "name": "credentials", - "scope": 554, + "scope": 620, "stateVariable": false, "storageLocation": "default", "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)", @@ -504,36 +504,36 @@ "name": "bytes32", "type": "bytes32" }, - "id": 541, + "id": 607, "name": "ElementaryTypeName", - "src": "328:7:2" + "src": "324:7:2" }, { "attributes": { "contractScope": null, "name": "BadgeLibrary.Credential", - "referencedDeclaration": 1757, + "referencedDeclaration": 1813, "type": "struct BadgeLibrary.Credential storage pointer" }, - "id": 542, + "id": 608, "name": "UserDefinedTypeName", - "src": "337:23:2" + "src": "333:23:2" } ], - "id": 543, + "id": 609, "name": "Mapping", - "src": "319:42:2" + "src": "315:42:2" } ], - "id": 544, + "id": 610, "name": "VariableDeclaration", - "src": "319:54:2" + "src": "315:54:2" }, { "attributes": { "constant": false, "name": "indexMap", - "scope": 554, + "scope": 620, "stateVariable": false, "storageLocation": "default", "type": "mapping(bytes32 => uint256)", @@ -551,34 +551,34 @@ "name": "bytes32", "type": "bytes32" }, - "id": 545, + "id": 611, "name": "ElementaryTypeName", - "src": "392:7:2" + "src": "388:7:2" }, { "attributes": { "name": "uint", "type": "uint256" }, - "id": 546, + "id": 612, "name": "ElementaryTypeName", - "src": "401:4:2" + "src": "397:4:2" } ], - "id": 547, + "id": 613, "name": "Mapping", - "src": "383:23:2" + "src": "379:23:2" } ], - "id": 548, + "id": 614, "name": "VariableDeclaration", - "src": "383:32:2" + "src": "379:32:2" }, { "attributes": { "constant": false, "name": "numOfPendingCreds", - "scope": 554, + "scope": 620, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -591,20 +591,20 @@ "name": "uint", "type": "uint256" }, - "id": 549, + "id": 615, "name": "ElementaryTypeName", - "src": "425:4:2" + "src": "421:4:2" } ], - "id": 550, + "id": 616, "name": "VariableDeclaration", - "src": "425:22:2" + "src": "421:22:2" }, { "attributes": { "constant": false, "name": "keys", - "scope": 554, + "scope": 620, "stateVariable": false, "storageLocation": "default", "type": "bytes32[] storage pointer", @@ -623,30 +623,30 @@ "name": "bytes32", "type": "bytes32" }, - "id": 551, + "id": 617, "name": "ElementaryTypeName", - "src": "457:7:2" + "src": "453:7:2" } ], - "id": 552, + "id": 618, "name": "ArrayTypeName", - "src": "457:9:2" + "src": "453:9:2" } ], - "id": 553, + "id": 619, "name": "VariableDeclaration", - "src": "457:14:2" + "src": "453:14:2" } ], - "id": 554, + "id": 620, "name": "StructDefinition", - "src": "286:192:2" + "src": "282:192:2" }, { "attributes": { "constant": false, "name": "credentialVault", - "scope": 1042, + "scope": 1108, "stateVariable": true, "storageLocation": "default", "type": "struct Holder.CredentialVault storage ref", @@ -658,23 +658,23 @@ "attributes": { "contractScope": null, "name": "CredentialVault", - "referencedDeclaration": 554, + "referencedDeclaration": 620, "type": "struct Holder.CredentialVault storage pointer" }, - "id": 555, + "id": 621, "name": "UserDefinedTypeName", - "src": "526:15:2" + "src": "522:15:2" } ], - "id": 556, + "id": 622, "name": "VariableDeclaration", - "src": "526:31:2" + "src": "522:31:2" }, { "attributes": { "constant": false, "name": "trustedIssuers", - "scope": 1042, + "scope": 1108, "stateVariable": true, "storageLocation": "default", "type": "mapping(address => bool)", @@ -692,28 +692,28 @@ "name": "address", "type": "address" }, - "id": 557, + "id": 623, "name": "ElementaryTypeName", - "src": "617:7:2" + "src": "612:7:2" }, { "attributes": { "name": "bool", "type": "bool" }, - "id": 558, + "id": 624, "name": "ElementaryTypeName", - "src": "626:4:2" + "src": "621:4:2" } ], - "id": 559, + "id": 625, "name": "Mapping", - "src": "608:23:2" + "src": "603:23:2" } ], - "id": 560, + "id": 626, "name": "VariableDeclaration", - "src": "608:45:2" + "src": "603:45:2" }, { "attributes": { @@ -725,7 +725,7 @@ ], "name": "Holder", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -737,7 +737,7 @@ "attributes": { "constant": false, "name": "_holder", - "scope": 570, + "scope": 636, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -750,19 +750,19 @@ "name": "address", "type": "address" }, - "id": 561, + "id": 627, "name": "ElementaryTypeName", - "src": "676:7:2" + "src": "671:7:2" } ], - "id": 562, + "id": 628, "name": "VariableDeclaration", - "src": "676:15:2" + "src": "671:15:2" } ], - "id": 563, + "id": 629, "name": "ParameterList", - "src": "675:17:2" + "src": "670:17:2" }, { "attributes": { @@ -771,9 +771,9 @@ ] }, "children": [], - "id": 564, + "id": 630, "name": "ParameterList", - "src": "693:0:2" + "src": "695:0:2" }, { "children": [ @@ -796,13 +796,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 540, + "referencedDeclaration": 606, "type": "address", "value": "holder" }, - "id": 565, + "id": 631, "name": "Identifier", - "src": "703:6:2" + "src": "705:6:2" }, { "attributes": { @@ -810,33 +810,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 562, + "referencedDeclaration": 628, "type": "address", "value": "_holder" }, - "id": 566, + "id": 632, "name": "Identifier", - "src": "712:7:2" + "src": "714:7:2" } ], - "id": 567, + "id": 633, "name": "Assignment", - "src": "703:16:2" + "src": "705:16:2" } ], - "id": 568, + "id": 634, "name": "ExpressionStatement", - "src": "703:16:2" + "src": "705:16:2" } ], - "id": 569, + "id": 635, "name": "Block", - "src": "693:33:2" + "src": "695:33:2" } ], - "id": 570, + "id": 636, "name": "FunctionDefinition", - "src": "660:66:2" + "src": "655:73:2" }, { "attributes": { @@ -851,7 +851,7 @@ "constant": false, "indexed": false, "name": "_actor", - "scope": 576, + "scope": 642, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -864,21 +864,21 @@ "name": "address", "type": "address" }, - "id": 571, + "id": 637, "name": "ElementaryTypeName", - "src": "755:7:2" + "src": "757:7:2" } ], - "id": 572, + "id": 638, "name": "VariableDeclaration", - "src": "755:14:2" + "src": "757:14:2" }, { "attributes": { "constant": false, "indexed": false, "name": "authorized", - "scope": 576, + "scope": 642, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -891,24 +891,24 @@ "name": "bool", "type": "bool" }, - "id": 573, + "id": 639, "name": "ElementaryTypeName", - "src": "771:4:2" + "src": "773:4:2" } ], - "id": 574, + "id": 640, "name": "VariableDeclaration", - "src": "771:15:2" + "src": "773:15:2" } ], - "id": 575, + "id": 641, "name": "ParameterList", - "src": "754:33:2" + "src": "756:33:2" } ], - "id": 576, + "id": 642, "name": "EventDefinition", - "src": "732:56:2" + "src": "734:56:2" }, { "attributes": { @@ -922,7 +922,7 @@ "attributes": { "constant": false, "name": "_holder", - "scope": 598, + "scope": 664, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -935,26 +935,26 @@ "name": "address", "type": "address" }, - "id": 577, + "id": 643, "name": "ElementaryTypeName", - "src": "924:7:2" + "src": "925:7:2" } ], - "id": 578, + "id": 644, "name": "VariableDeclaration", - "src": "924:15:2" + "src": "925:15:2" } ], - "id": 579, + "id": 645, "name": "ParameterList", - "src": "923:17:2" + "src": "924:17:2" }, { "children": [ { "attributes": { "assignments": [ - 581 + 647 ] }, "children": [ @@ -962,7 +962,7 @@ "attributes": { "constant": false, "name": "isAuthorized", - "scope": 598, + "scope": 664, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -975,14 +975,14 @@ "name": "bool", "type": "bool" }, - "id": 580, + "id": 646, "name": "ElementaryTypeName", - "src": "951:4:2" + "src": "952:4:2" } ], - "id": 581, + "id": 647, "name": "VariableDeclaration", - "src": "951:17:2" + "src": "952:17:2" }, { "attributes": { @@ -1016,13 +1016,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 578, + "referencedDeclaration": 644, "type": "address", "value": "_holder" }, - "id": 582, + "id": 648, "name": "Identifier", - "src": "972:7:2" + "src": "973:7:2" }, { "attributes": { @@ -1030,28 +1030,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 540, + "referencedDeclaration": 606, "type": "address", "value": "holder" }, - "id": 583, + "id": 649, "name": "Identifier", - "src": "983:6:2" + "src": "984:6:2" } ], - "id": 584, + "id": 650, "name": "BinaryOperation", - "src": "972:17:2" + "src": "973:17:2" } ], - "id": 585, + "id": 651, "name": "TupleExpression", - "src": "971:19:2" + "src": "972:19:2" } ], - "id": 586, + "id": 652, "name": "VariableDeclarationStatement", - "src": "951:39:2" + "src": "952:39:2" }, { "children": [ @@ -1085,13 +1085,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 576, + "referencedDeclaration": 642, "type": "function (address,bool)", "value": "AuthorizeAttempt" }, - "id": 587, + "id": 653, "name": "Identifier", - "src": "1000:16:2" + "src": "1001:16:2" }, { "attributes": { @@ -1099,13 +1099,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 578, + "referencedDeclaration": 644, "type": "address", "value": "_holder" }, - "id": 588, + "id": 654, "name": "Identifier", - "src": "1017:7:2" + "src": "1018:7:2" }, { "attributes": { @@ -1113,23 +1113,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 581, + "referencedDeclaration": 647, "type": "bool", "value": "isAuthorized" }, - "id": 589, + "id": 655, "name": "Identifier", - "src": "1026:12:2" + "src": "1027:12:2" } ], - "id": 590, + "id": 656, "name": "FunctionCall", - "src": "1000:39:2" + "src": "1001:39:2" } ], - "id": 591, + "id": 657, "name": "ExpressionStatement", - "src": "1000:39:2" + "src": "1001:39:2" }, { "children": [ @@ -1159,13 +1159,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 592, + "id": 658, "name": "Identifier", - "src": "1049:7:2" + "src": "1050:7:2" }, { "attributes": { @@ -1173,38 +1173,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 581, + "referencedDeclaration": 647, "type": "bool", "value": "isAuthorized" }, - "id": 593, + "id": 659, "name": "Identifier", - "src": "1057:12:2" + "src": "1058:12:2" } ], - "id": 594, + "id": 660, "name": "FunctionCall", - "src": "1049:21:2" + "src": "1050:21:2" } ], - "id": 595, + "id": 661, "name": "ExpressionStatement", - "src": "1049:21:2" + "src": "1050:21:2" }, { - "id": 596, + "id": 662, "name": "PlaceholderStatement", - "src": "1080:1:2" + "src": "1081:1:2" } ], - "id": 597, + "id": 663, "name": "Block", - "src": "941:147:2" + "src": "942:147:2" } ], - "id": 598, + "id": 664, "name": "ModifierDefinition", - "src": "904:184:2" + "src": "905:184:2" }, { "attributes": { @@ -1219,7 +1219,7 @@ "constant": false, "indexed": false, "name": "_caller", - "scope": 602, + "scope": 668, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1232,24 +1232,24 @@ "name": "address", "type": "address" }, - "id": 599, + "id": 665, "name": "ElementaryTypeName", - "src": "1116:7:2" + "src": "1117:7:2" } ], - "id": 600, + "id": 666, "name": "VariableDeclaration", - "src": "1116:15:2" + "src": "1117:15:2" } ], - "id": 601, + "id": 667, "name": "ParameterList", - "src": "1115:17:2" + "src": "1116:17:2" } ], - "id": 602, + "id": 668, "name": "EventDefinition", - "src": "1094:39:2" + "src": "1095:39:2" }, { "attributes": { @@ -1263,7 +1263,7 @@ "attributes": { "constant": false, "name": "_issuer", - "scope": 618, + "scope": 684, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1276,19 +1276,19 @@ "name": "address", "type": "address" }, - "id": 603, + "id": 669, "name": "ElementaryTypeName", - "src": "1237:7:2" + "src": "1238:7:2" } ], - "id": 604, + "id": 670, "name": "VariableDeclaration", - "src": "1237:15:2" + "src": "1238:15:2" } ], - "id": 605, + "id": 671, "name": "ParameterList", - "src": "1236:17:2" + "src": "1237:17:2" }, { "children": [ @@ -1320,13 +1320,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 602, + "referencedDeclaration": 668, "type": "function (address)", "value": "LogStoreAttempt" }, - "id": 606, + "id": 672, "name": "Identifier", - "src": "1264:15:2" + "src": "1265:15:2" }, { "attributes": { @@ -1334,23 +1334,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 604, + "referencedDeclaration": 670, "type": "address", "value": "_issuer" }, - "id": 607, + "id": 673, "name": "Identifier", - "src": "1280:7:2" + "src": "1281:7:2" } ], - "id": 608, + "id": 674, "name": "FunctionCall", - "src": "1264:24:2" + "src": "1265:24:2" } ], - "id": 609, + "id": 675, "name": "ExpressionStatement", - "src": "1264:24:2" + "src": "1265:24:2" }, { "children": [ @@ -1380,13 +1380,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 610, + "id": 676, "name": "Identifier", - "src": "1298:7:2" + "src": "1299:7:2" }, { "attributes": { @@ -1404,13 +1404,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 560, + "referencedDeclaration": 626, "type": "mapping(address => bool)", "value": "trustedIssuers" }, - "id": 611, + "id": 677, "name": "Identifier", - "src": "1306:14:2" + "src": "1307:14:2" }, { "attributes": { @@ -1418,43 +1418,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 604, + "referencedDeclaration": 670, "type": "address", "value": "_issuer" }, - "id": 612, + "id": 678, "name": "Identifier", - "src": "1321:7:2" + "src": "1322:7:2" } ], - "id": 613, + "id": 679, "name": "IndexAccess", - "src": "1306:23:2" + "src": "1307:23:2" } ], - "id": 614, + "id": 680, "name": "FunctionCall", - "src": "1298:32:2" + "src": "1299:32:2" } ], - "id": 615, + "id": 681, "name": "ExpressionStatement", - "src": "1298:32:2" + "src": "1299:32:2" }, { - "id": 616, + "id": 682, "name": "PlaceholderStatement", - "src": "1340:1:2" + "src": "1341:1:2" } ], - "id": 617, + "id": 683, "name": "Block", - "src": "1254:94:2" + "src": "1255:94:2" } ], - "id": 618, + "id": 684, "name": "ModifierDefinition", - "src": "1220:128:2" + "src": "1221:128:2" }, { "attributes": { @@ -1463,7 +1463,7 @@ "isConstructor": false, "name": "addTrustedIssuer", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1475,7 +1475,7 @@ "attributes": { "constant": false, "name": "_issuer", - "scope": 634, + "scope": 700, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1488,17 +1488,17 @@ "name": "address", "type": "address" }, - "id": 619, + "id": 685, "name": "ElementaryTypeName", "src": "1422:7:2" } ], - "id": 620, + "id": 686, "name": "VariableDeclaration", "src": "1422:15:2" } ], - "id": 621, + "id": 687, "name": "ParameterList", "src": "1421:17:2" }, @@ -1509,7 +1509,7 @@ ] }, "children": [], - "id": 626, + "id": 692, "name": "ParameterList", "src": "1469:0:2" }, @@ -1521,11 +1521,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 598, + "referencedDeclaration": 664, "type": "modifier (address)", "value": "authorized" }, - "id": 622, + "id": 688, "name": "Identifier", "src": "1446:10:2" }, @@ -1547,21 +1547,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 623, + "id": 689, "name": "Identifier", "src": "1457:3:2" } ], - "id": 624, + "id": 690, "name": "MemberAccess", "src": "1457:10:2" } ], - "id": 625, + "id": 691, "name": "ModifierInvocation", "src": "1446:22:2" }, @@ -1596,11 +1596,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 560, + "referencedDeclaration": 626, "type": "mapping(address => bool)", "value": "trustedIssuers" }, - "id": 627, + "id": 693, "name": "Identifier", "src": "1479:14:2" }, @@ -1610,16 +1610,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 620, + "referencedDeclaration": 686, "type": "address", "value": "_issuer" }, - "id": 628, + "id": 694, "name": "Identifier", "src": "1494:7:2" } ], - "id": 629, + "id": 695, "name": "IndexAccess", "src": "1479:23:2" }, @@ -1636,27 +1636,27 @@ "type": "bool", "value": "true" }, - "id": 630, + "id": 696, "name": "Literal", "src": "1505:4:2" } ], - "id": 631, + "id": 697, "name": "Assignment", "src": "1479:30:2" } ], - "id": 632, + "id": 698, "name": "ExpressionStatement", "src": "1479:30:2" } ], - "id": 633, + "id": 699, "name": "Block", "src": "1469:47:2" } ], - "id": 634, + "id": 700, "name": "FunctionDefinition", "src": "1396:120:2" }, @@ -1667,7 +1667,7 @@ "isConstructor": false, "name": "removeTrustedIssuer", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1679,7 +1679,7 @@ "attributes": { "constant": false, "name": "_issuer", - "scope": 650, + "scope": 716, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1692,19 +1692,19 @@ "name": "address", "type": "address" }, - "id": 635, + "id": 701, "name": "ElementaryTypeName", - "src": "1593:7:2" + "src": "1592:7:2" } ], - "id": 636, + "id": 702, "name": "VariableDeclaration", - "src": "1593:15:2" + "src": "1592:15:2" } ], - "id": 637, + "id": 703, "name": "ParameterList", - "src": "1592:17:2" + "src": "1591:17:2" }, { "attributes": { @@ -1713,9 +1713,9 @@ ] }, "children": [], - "id": 642, + "id": 708, "name": "ParameterList", - "src": "1640:0:2" + "src": "1639:0:2" }, { "children": [ @@ -1725,13 +1725,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 598, + "referencedDeclaration": 664, "type": "modifier (address)", "value": "authorized" }, - "id": 638, + "id": 704, "name": "Identifier", - "src": "1617:10:2" + "src": "1616:10:2" }, { "attributes": { @@ -1751,23 +1751,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 639, + "id": 705, "name": "Identifier", - "src": "1628:3:2" + "src": "1627:3:2" } ], - "id": 640, + "id": 706, "name": "MemberAccess", - "src": "1628:10:2" + "src": "1627:10:2" } ], - "id": 641, + "id": 707, "name": "ModifierInvocation", - "src": "1617:22:2" + "src": "1616:22:2" }, { "children": [ @@ -1800,13 +1800,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 560, + "referencedDeclaration": 626, "type": "mapping(address => bool)", "value": "trustedIssuers" }, - "id": 643, + "id": 709, "name": "Identifier", - "src": "1650:14:2" + "src": "1649:14:2" }, { "attributes": { @@ -1814,18 +1814,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 636, + "referencedDeclaration": 702, "type": "address", "value": "_issuer" }, - "id": 644, + "id": 710, "name": "Identifier", - "src": "1665:7:2" + "src": "1664:7:2" } ], - "id": 645, + "id": 711, "name": "IndexAccess", - "src": "1650:23:2" + "src": "1649:23:2" }, { "attributes": { @@ -1840,29 +1840,29 @@ "type": "bool", "value": "false" }, - "id": 646, + "id": 712, "name": "Literal", - "src": "1676:5:2" + "src": "1675:5:2" } ], - "id": 647, + "id": 713, "name": "Assignment", - "src": "1650:31:2" + "src": "1649:31:2" } ], - "id": 648, + "id": 714, "name": "ExpressionStatement", - "src": "1650:31:2" + "src": "1649:31:2" } ], - "id": 649, + "id": 715, "name": "Block", - "src": "1640:48:2" + "src": "1639:48:2" } ], - "id": 650, + "id": 716, "name": "FunctionDefinition", - "src": "1564:124:2" + "src": "1563:124:2" }, { "attributes": { @@ -1877,7 +1877,7 @@ "constant": false, "indexed": false, "name": "_name", - "scope": 656, + "scope": 722, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1890,21 +1890,21 @@ "name": "string", "type": "string storage pointer" }, - "id": 651, + "id": 717, "name": "ElementaryTypeName", - "src": "1721:6:2" + "src": "1720:6:2" } ], - "id": 652, + "id": 718, "name": "VariableDeclaration", - "src": "1721:12:2" + "src": "1720:12:2" }, { "attributes": { "constant": false, "indexed": false, "name": "_issuer", - "scope": 656, + "scope": 722, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1917,24 +1917,24 @@ "name": "address", "type": "address" }, - "id": 653, + "id": 719, "name": "ElementaryTypeName", - "src": "1735:7:2" + "src": "1734:7:2" } ], - "id": 654, + "id": 720, "name": "VariableDeclaration", - "src": "1735:15:2" + "src": "1734:15:2" } ], - "id": 655, + "id": 721, "name": "ParameterList", - "src": "1720:31:2" + "src": "1719:31:2" } ], - "id": 656, + "id": 722, "name": "EventDefinition", - "src": "1694:58:2" + "src": "1693:58:2" }, { "attributes": { @@ -1943,7 +1943,7 @@ "isConstructor": false, "name": "storeCredential", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1955,7 +1955,7 @@ "attributes": { "constant": false, "name": "_issuer", - "scope": 726, + "scope": 792, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1968,20 +1968,20 @@ "name": "address", "type": "address" }, - "id": 657, + "id": 723, "name": "ElementaryTypeName", - "src": "1866:7:2" + "src": "1865:7:2" } ], - "id": 658, + "id": 724, "name": "VariableDeclaration", - "src": "1866:15:2" + "src": "1865:15:2" }, { "attributes": { "constant": false, "name": "_description", - "scope": 726, + "scope": 792, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1994,20 +1994,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 659, + "id": 725, "name": "ElementaryTypeName", - "src": "1891:6:2" + "src": "1890:6:2" } ], - "id": 660, + "id": 726, "name": "VariableDeclaration", - "src": "1891:19:2" + "src": "1890:19:2" }, { "attributes": { "constant": false, "name": "_name", - "scope": 726, + "scope": 792, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2020,20 +2020,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 661, + "id": 727, "name": "ElementaryTypeName", - "src": "1920:6:2" + "src": "1919:6:2" } ], - "id": 662, + "id": 728, "name": "VariableDeclaration", - "src": "1920:12:2" + "src": "1919:12:2" }, { "attributes": { "constant": false, "name": "_image", - "scope": 726, + "scope": 792, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2046,20 +2046,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 663, + "id": 729, "name": "ElementaryTypeName", - "src": "1942:6:2" + "src": "1941:6:2" } ], - "id": 664, + "id": 730, "name": "VariableDeclaration", - "src": "1942:13:2" + "src": "1941:13:2" }, { "attributes": { "constant": false, "name": "_version", - "scope": 726, + "scope": 792, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2072,20 +2072,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 665, + "id": 731, "name": "ElementaryTypeName", - "src": "1965:6:2" + "src": "1964:6:2" } ], - "id": 666, + "id": 732, "name": "VariableDeclaration", - "src": "1965:15:2" + "src": "1964:15:2" }, { "attributes": { "constant": false, "name": "_expires", - "scope": 726, + "scope": 792, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2098,20 +2098,20 @@ "name": "uint", "type": "uint256" }, - "id": 667, + "id": 733, "name": "ElementaryTypeName", - "src": "1990:4:2" + "src": "1989:4:2" } ], - "id": 668, + "id": 734, "name": "VariableDeclaration", - "src": "1990:13:2" + "src": "1989:13:2" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 726, + "scope": 792, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2124,20 +2124,20 @@ "name": "address", "type": "address" }, - "id": 669, + "id": 735, "name": "ElementaryTypeName", - "src": "2013:7:2" + "src": "2012:7:2" } ], - "id": 670, + "id": 736, "name": "VariableDeclaration", - "src": "2013:18:2" + "src": "2012:18:2" }, { "attributes": { "constant": false, "name": "_txnKey", - "scope": 726, + "scope": 792, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2150,19 +2150,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 671, + "id": 737, "name": "ElementaryTypeName", - "src": "2041:7:2" + "src": "2040:7:2" } ], - "id": 672, + "id": 738, "name": "VariableDeclaration", - "src": "2041:15:2" + "src": "2040:15:2" } ], - "id": 673, + "id": 739, "name": "ParameterList", - "src": "1856:206:2" + "src": "1855:206:2" }, { "attributes": { @@ -2171,9 +2171,9 @@ ] }, "children": [], - "id": 678, + "id": 744, "name": "ParameterList", - "src": "2094:0:2" + "src": "2093:0:2" }, { "children": [ @@ -2183,13 +2183,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 618, + "referencedDeclaration": 684, "type": "modifier (address)", "value": "trusted" }, - "id": 674, + "id": 740, "name": "Identifier", - "src": "2070:7:2" + "src": "2069:7:2" }, { "attributes": { @@ -2209,23 +2209,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 675, + "id": 741, "name": "Identifier", - "src": "2078:3:2" + "src": "2077:3:2" } ], - "id": 676, + "id": 742, "name": "MemberAccess", - "src": "2078:10:2" + "src": "2077:10:2" } ], - "id": 677, + "id": 743, "name": "ModifierInvocation", - "src": "2070:19:2" + "src": "2069:19:2" }, { "children": [ @@ -2260,7 +2260,7 @@ "isPure": false, "lValueRequested": false, "member_name": "credentials", - "referencedDeclaration": 544, + "referencedDeclaration": 610, "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)" }, "children": [ @@ -2270,18 +2270,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 679, + "id": 745, "name": "Identifier", - "src": "2104:15:2" + "src": "2103:15:2" } ], - "id": 682, + "id": 748, "name": "MemberAccess", - "src": "2104:27:2" + "src": "2103:27:2" }, { "attributes": { @@ -2289,18 +2289,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 738, "type": "bytes32", "value": "_txnKey" }, - "id": 681, + "id": 747, "name": "Identifier", - "src": "2132:7:2" + "src": "2131:7:2" } ], - "id": 683, + "id": 749, "name": "IndexAccess", - "src": "2104:36:2" + "src": "2103:36:2" }, { "attributes": { @@ -2321,7 +2321,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_struct$_Badge_$1746_memory", + "typeIdentifier": "t_struct$_Badge_$1802_memory", "typeString": "struct BadgeLibrary.Badge memory" }, { @@ -2346,7 +2346,7 @@ "isPure": false, "lValueRequested": false, "member_name": "Credential", - "referencedDeclaration": 1757, + "referencedDeclaration": 1813, "type": "type(struct BadgeLibrary.Credential storage pointer)" }, "children": [ @@ -2356,18 +2356,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1812, + "referencedDeclaration": 1868, "type": "type(library BadgeLibrary)", "value": "BadgeLibrary" }, - "id": 684, + "id": 750, "name": "Identifier", - "src": "2143:12:2" + "src": "2142:12:2" } ], - "id": 685, + "id": 751, "name": "MemberAccess", - "src": "2143:23:2" + "src": "2142:23:2" }, { "attributes": { @@ -2413,7 +2413,7 @@ "isPure": false, "lValueRequested": false, "member_name": "Badge", - "referencedDeclaration": 1746, + "referencedDeclaration": 1802, "type": "type(struct BadgeLibrary.Badge storage pointer)" }, "children": [ @@ -2423,18 +2423,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1812, + "referencedDeclaration": 1868, "type": "type(library BadgeLibrary)", "value": "BadgeLibrary" }, - "id": 686, + "id": 752, "name": "Identifier", - "src": "2184:12:2" + "src": "2183:12:2" } ], - "id": 687, + "id": 753, "name": "MemberAccess", - "src": "2184:18:2" + "src": "2183:18:2" }, { "attributes": { @@ -2442,13 +2442,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 658, + "referencedDeclaration": 724, "type": "address", "value": "_issuer" }, - "id": 688, + "id": 754, "name": "Identifier", - "src": "2203:7:2" + "src": "2202:7:2" }, { "attributes": { @@ -2456,13 +2456,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 660, + "referencedDeclaration": 726, "type": "string memory", "value": "_description" }, - "id": 689, + "id": 755, "name": "Identifier", - "src": "2212:12:2" + "src": "2211:12:2" }, { "attributes": { @@ -2470,13 +2470,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 662, + "referencedDeclaration": 728, "type": "string memory", "value": "_name" }, - "id": 690, + "id": 756, "name": "Identifier", - "src": "2226:5:2" + "src": "2225:5:2" }, { "attributes": { @@ -2484,13 +2484,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 664, + "referencedDeclaration": 730, "type": "string memory", "value": "_image" }, - "id": 691, + "id": 757, "name": "Identifier", - "src": "2233:6:2" + "src": "2232:6:2" }, { "attributes": { @@ -2498,18 +2498,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 666, + "referencedDeclaration": 732, "type": "string memory", "value": "_version" }, - "id": 692, + "id": 758, "name": "Identifier", - "src": "2241:8:2" + "src": "2240:8:2" } ], - "id": 693, + "id": 759, "name": "FunctionCall", - "src": "2184:66:2" + "src": "2183:66:2" }, { "attributes": { @@ -2517,13 +2517,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 668, + "referencedDeclaration": 734, "type": "uint256", "value": "_expires" }, - "id": 694, + "id": 760, "name": "Identifier", - "src": "2268:8:2" + "src": "2267:8:2" }, { "attributes": { @@ -2531,13 +2531,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 670, + "referencedDeclaration": 736, "type": "address", "value": "_recipient" }, - "id": 695, + "id": 761, "name": "Identifier", - "src": "2294:10:2" + "src": "2293:10:2" }, { "attributes": { @@ -2545,13 +2545,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 738, "type": "bytes32", "value": "_txnKey" }, - "id": 696, + "id": 762, "name": "Identifier", - "src": "2322:7:2" + "src": "2321:7:2" }, { "attributes": { @@ -2566,24 +2566,24 @@ "type": "bool", "value": "false" }, - "id": 697, + "id": 763, "name": "Literal", - "src": "2347:5:2" + "src": "2346:5:2" } ], - "id": 698, + "id": 764, "name": "FunctionCall", - "src": "2143:219:2" + "src": "2142:219:2" } ], - "id": 699, + "id": 765, "name": "Assignment", - "src": "2104:258:2" + "src": "2103:258:2" } ], - "id": 700, + "id": 766, "name": "ExpressionStatement", - "src": "2104:258:2" + "src": "2103:258:2" }, { "children": [ @@ -2616,7 +2616,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 548, + "referencedDeclaration": 614, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -2626,18 +2626,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 701, + "id": 767, "name": "Identifier", - "src": "2372:15:2" + "src": "2371:15:2" } ], - "id": 704, + "id": 770, "name": "MemberAccess", - "src": "2372:24:2" + "src": "2371:24:2" }, { "attributes": { @@ -2645,18 +2645,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 738, "type": "bytes32", "value": "_txnKey" }, - "id": 703, + "id": 769, "name": "Identifier", - "src": "2397:7:2" + "src": "2396:7:2" } ], - "id": 705, + "id": 771, "name": "IndexAccess", - "src": "2372:33:2" + "src": "2371:33:2" }, { "attributes": { @@ -2713,7 +2713,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -2723,23 +2723,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 706, + "id": 772, "name": "Identifier", - "src": "2408:15:2" + "src": "2407:15:2" } ], - "id": 707, + "id": 773, "name": "MemberAccess", - "src": "2408:20:2" + "src": "2407:20:2" } ], - "id": 708, + "id": 774, "name": "MemberAccess", - "src": "2408:25:2" + "src": "2407:25:2" }, { "attributes": { @@ -2747,18 +2747,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 672, + "referencedDeclaration": 738, "type": "bytes32", "value": "_txnKey" }, - "id": 709, + "id": 775, "name": "Identifier", - "src": "2434:7:2" + "src": "2433:7:2" } ], - "id": 710, + "id": 776, "name": "FunctionCall", - "src": "2408:34:2" + "src": "2407:34:2" }, { "attributes": { @@ -2773,24 +2773,24 @@ "type": "int_const 1", "value": "1" }, - "id": 711, + "id": 777, "name": "Literal", - "src": "2443:1:2" + "src": "2442:1:2" } ], - "id": 712, + "id": 778, "name": "BinaryOperation", - "src": "2408:36:2" + "src": "2407:36:2" } ], - "id": 713, + "id": 779, "name": "Assignment", - "src": "2372:72:2" + "src": "2371:72:2" } ], - "id": 714, + "id": 780, "name": "ExpressionStatement", - "src": "2372:72:2" + "src": "2371:72:2" }, { "children": [ @@ -2814,7 +2814,7 @@ "isPure": false, "lValueRequested": true, "member_name": "numOfPendingCreds", - "referencedDeclaration": 550, + "referencedDeclaration": 616, "type": "uint256" }, "children": [ @@ -2824,28 +2824,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 715, + "id": 781, "name": "Identifier", - "src": "2454:15:2" + "src": "2453:15:2" } ], - "id": 717, + "id": 783, "name": "MemberAccess", - "src": "2454:33:2" + "src": "2453:33:2" } ], - "id": 718, + "id": 784, "name": "UnaryOperation", - "src": "2454:35:2" + "src": "2453:35:2" } ], - "id": 719, + "id": 785, "name": "ExpressionStatement", - "src": "2454:35:2" + "src": "2453:35:2" }, { "children": [ @@ -2879,13 +2879,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 656, + "referencedDeclaration": 722, "type": "function (string memory,address)", "value": "NewPendingCredential" }, - "id": 720, + "id": 786, "name": "Identifier", - "src": "2499:20:2" + "src": "2498:20:2" }, { "attributes": { @@ -2893,13 +2893,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 662, + "referencedDeclaration": 728, "type": "string memory", "value": "_name" }, - "id": 721, + "id": 787, "name": "Identifier", - "src": "2520:5:2" + "src": "2519:5:2" }, { "attributes": { @@ -2907,33 +2907,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 658, + "referencedDeclaration": 724, "type": "address", "value": "_issuer" }, - "id": 722, + "id": 788, "name": "Identifier", - "src": "2527:7:2" + "src": "2526:7:2" } ], - "id": 723, + "id": 789, "name": "FunctionCall", - "src": "2499:36:2" + "src": "2498:36:2" } ], - "id": 724, + "id": 790, "name": "ExpressionStatement", - "src": "2499:36:2" + "src": "2498:36:2" } ], - "id": 725, + "id": 791, "name": "Block", - "src": "2094:448:2" + "src": "2093:448:2" } ], - "id": 726, + "id": 792, "name": "FunctionDefinition", - "src": "1832:710:2" + "src": "1831:710:2" }, { "attributes": { @@ -2948,7 +2948,7 @@ "constant": false, "indexed": false, "name": "_txnKey", - "scope": 730, + "scope": 796, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2961,24 +2961,24 @@ "name": "bytes32", "type": "bytes32" }, - "id": 727, + "id": 793, "name": "ElementaryTypeName", - "src": "2576:7:2" + "src": "2575:7:2" } ], - "id": 728, + "id": 794, "name": "VariableDeclaration", - "src": "2576:15:2" + "src": "2575:15:2" } ], - "id": 729, + "id": 795, "name": "ParameterList", - "src": "2575:17:2" + "src": "2574:17:2" } ], - "id": 730, + "id": 796, "name": "EventDefinition", - "src": "2548:45:2" + "src": "2547:45:2" }, { "attributes": { @@ -2987,7 +2987,7 @@ "isConstructor": false, "name": "acceptCredential", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2999,7 +2999,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 767, + "scope": 833, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -3012,19 +3012,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 731, + "id": 797, "name": "ElementaryTypeName", - "src": "2624:7:2" + "src": "2623:7:2" } ], - "id": 732, + "id": 798, "name": "VariableDeclaration", - "src": "2624:15:2" + "src": "2623:15:2" } ], - "id": 733, + "id": 799, "name": "ParameterList", - "src": "2623:17:2" + "src": "2622:17:2" }, { "attributes": { @@ -3033,9 +3033,9 @@ ] }, "children": [], - "id": 738, + "id": 804, "name": "ParameterList", - "src": "2671:0:2" + "src": "2670:0:2" }, { "children": [ @@ -3045,13 +3045,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 598, + "referencedDeclaration": 664, "type": "modifier (address)", "value": "authorized" }, - "id": 734, + "id": 800, "name": "Identifier", - "src": "2641:10:2" + "src": "2640:10:2" }, { "attributes": { @@ -3071,23 +3071,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 735, + "id": 801, "name": "Identifier", - "src": "2652:3:2" + "src": "2651:3:2" } ], - "id": 736, + "id": 802, "name": "MemberAccess", - "src": "2652:10:2" + "src": "2651:10:2" } ], - "id": 737, + "id": 803, "name": "ModifierInvocation", - "src": "2641:22:2" + "src": "2640:22:2" }, { "children": [ @@ -3119,13 +3119,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 739, + "id": 805, "name": "Identifier", - "src": "2681:7:2" + "src": "2680:7:2" }, { "attributes": { @@ -3147,7 +3147,7 @@ "isPure": false, "lValueRequested": false, "member_name": "active", - "referencedDeclaration": 1756, + "referencedDeclaration": 1812, "type": "bool" }, "children": [ @@ -3169,7 +3169,7 @@ "isPure": false, "lValueRequested": false, "member_name": "credentials", - "referencedDeclaration": 544, + "referencedDeclaration": 610, "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)" }, "children": [ @@ -3179,18 +3179,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 740, + "id": 806, "name": "Identifier", - "src": "2690:15:2" + "src": "2689:15:2" } ], - "id": 741, + "id": 807, "name": "MemberAccess", - "src": "2690:27:2" + "src": "2689:27:2" }, { "attributes": { @@ -3198,38 +3198,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 732, + "referencedDeclaration": 798, "type": "bytes32", "value": "_txnKey" }, - "id": 742, + "id": 808, "name": "Identifier", - "src": "2718:7:2" + "src": "2717:7:2" } ], - "id": 743, + "id": 809, "name": "IndexAccess", - "src": "2690:36:2" + "src": "2689:36:2" } ], - "id": 744, + "id": 810, "name": "MemberAccess", - "src": "2690:43:2" + "src": "2689:43:2" } ], - "id": 745, + "id": 811, "name": "UnaryOperation", - "src": "2689:44:2" + "src": "2688:44:2" } ], - "id": 746, + "id": 812, "name": "FunctionCall", - "src": "2681:53:2" + "src": "2680:53:2" } ], - "id": 747, + "id": 813, "name": "ExpressionStatement", - "src": "2681:53:2" + "src": "2680:53:2" }, { "children": [ @@ -3252,7 +3252,7 @@ "isPure": false, "lValueRequested": true, "member_name": "active", - "referencedDeclaration": 1756, + "referencedDeclaration": 1812, "type": "bool" }, "children": [ @@ -3274,7 +3274,7 @@ "isPure": false, "lValueRequested": false, "member_name": "credentials", - "referencedDeclaration": 544, + "referencedDeclaration": 610, "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)" }, "children": [ @@ -3284,18 +3284,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 748, + "id": 814, "name": "Identifier", - "src": "2744:15:2" + "src": "2743:15:2" } ], - "id": 751, + "id": 817, "name": "MemberAccess", - "src": "2744:27:2" + "src": "2743:27:2" }, { "attributes": { @@ -3303,23 +3303,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 732, + "referencedDeclaration": 798, "type": "bytes32", "value": "_txnKey" }, - "id": 750, + "id": 816, "name": "Identifier", - "src": "2772:7:2" + "src": "2771:7:2" } ], - "id": 752, + "id": 818, "name": "IndexAccess", - "src": "2744:36:2" + "src": "2743:36:2" } ], - "id": 753, + "id": 819, "name": "MemberAccess", - "src": "2744:43:2" + "src": "2743:43:2" }, { "attributes": { @@ -3334,19 +3334,19 @@ "type": "bool", "value": "true" }, - "id": 754, + "id": 820, "name": "Literal", - "src": "2790:4:2" + "src": "2789:4:2" } ], - "id": 755, + "id": 821, "name": "Assignment", - "src": "2744:50:2" + "src": "2743:50:2" } ], - "id": 756, + "id": 822, "name": "ExpressionStatement", - "src": "2744:50:2" + "src": "2743:50:2" }, { "children": [ @@ -3370,7 +3370,7 @@ "isPure": false, "lValueRequested": true, "member_name": "numOfPendingCreds", - "referencedDeclaration": 550, + "referencedDeclaration": 616, "type": "uint256" }, "children": [ @@ -3380,28 +3380,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 757, + "id": 823, "name": "Identifier", - "src": "2804:15:2" + "src": "2803:15:2" } ], - "id": 759, + "id": 825, "name": "MemberAccess", - "src": "2804:33:2" + "src": "2803:33:2" } ], - "id": 760, + "id": 826, "name": "UnaryOperation", - "src": "2804:35:2" + "src": "2803:35:2" } ], - "id": 761, + "id": 827, "name": "ExpressionStatement", - "src": "2804:35:2" + "src": "2803:35:2" }, { "children": [ @@ -3431,13 +3431,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 730, + "referencedDeclaration": 796, "type": "function (bytes32)", "value": "NewCredentialAccepted" }, - "id": 762, + "id": 828, "name": "Identifier", - "src": "2849:21:2" + "src": "2848:21:2" }, { "attributes": { @@ -3445,33 +3445,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 732, + "referencedDeclaration": 798, "type": "bytes32", "value": "_txnKey" }, - "id": 763, + "id": 829, "name": "Identifier", - "src": "2871:7:2" + "src": "2870:7:2" } ], - "id": 764, + "id": 830, "name": "FunctionCall", - "src": "2849:30:2" + "src": "2848:30:2" } ], - "id": 765, + "id": 831, "name": "ExpressionStatement", - "src": "2849:30:2" + "src": "2848:30:2" } ], - "id": 766, + "id": 832, "name": "Block", - "src": "2671:215:2" + "src": "2670:215:2" } ], - "id": 767, + "id": 833, "name": "FunctionDefinition", - "src": "2598:288:2" + "src": "2597:288:2" }, { "attributes": { @@ -3486,7 +3486,7 @@ "constant": false, "indexed": false, "name": "_txnKey", - "scope": 771, + "scope": 837, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -3499,24 +3499,24 @@ "name": "bytes32", "type": "bytes32" }, - "id": 768, + "id": 834, "name": "ElementaryTypeName", - "src": "2917:7:2" + "src": "2916:7:2" } ], - "id": 769, + "id": 835, "name": "VariableDeclaration", - "src": "2917:15:2" + "src": "2916:15:2" } ], - "id": 770, + "id": 836, "name": "ParameterList", - "src": "2916:17:2" + "src": "2915:17:2" } ], - "id": 771, + "id": 837, "name": "EventDefinition", - "src": "2892:42:2" + "src": "2891:42:2" }, { "attributes": { @@ -3525,7 +3525,7 @@ "isConstructor": false, "name": "rejectCredential", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -3537,7 +3537,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 803, + "scope": 869, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -3550,19 +3550,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 772, + "id": 838, "name": "ElementaryTypeName", - "src": "2965:7:2" + "src": "2964:7:2" } ], - "id": 773, + "id": 839, "name": "VariableDeclaration", - "src": "2965:15:2" + "src": "2964:15:2" } ], - "id": 774, + "id": 840, "name": "ParameterList", - "src": "2964:17:2" + "src": "2963:17:2" }, { "attributes": { @@ -3571,9 +3571,9 @@ ] }, "children": [], - "id": 779, + "id": 845, "name": "ParameterList", - "src": "3012:0:2" + "src": "3011:0:2" }, { "children": [ @@ -3583,13 +3583,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 598, + "referencedDeclaration": 664, "type": "modifier (address)", "value": "authorized" }, - "id": 775, + "id": 841, "name": "Identifier", - "src": "2982:10:2" + "src": "2981:10:2" }, { "attributes": { @@ -3609,23 +3609,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 776, + "id": 842, "name": "Identifier", - "src": "2993:3:2" + "src": "2992:3:2" } ], - "id": 777, + "id": 843, "name": "MemberAccess", - "src": "2993:10:2" + "src": "2992:10:2" } ], - "id": 778, + "id": 844, "name": "ModifierInvocation", - "src": "2982:22:2" + "src": "2981:22:2" }, { "children": [ @@ -3657,13 +3657,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 780, + "id": 846, "name": "Identifier", - "src": "3022:7:2" + "src": "3021:7:2" }, { "attributes": { @@ -3685,7 +3685,7 @@ "isPure": false, "lValueRequested": false, "member_name": "active", - "referencedDeclaration": 1756, + "referencedDeclaration": 1812, "type": "bool" }, "children": [ @@ -3707,7 +3707,7 @@ "isPure": false, "lValueRequested": false, "member_name": "credentials", - "referencedDeclaration": 544, + "referencedDeclaration": 610, "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)" }, "children": [ @@ -3717,18 +3717,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 781, + "id": 847, "name": "Identifier", - "src": "3031:15:2" + "src": "3030:15:2" } ], - "id": 782, + "id": 848, "name": "MemberAccess", - "src": "3031:27:2" + "src": "3030:27:2" }, { "attributes": { @@ -3736,38 +3736,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 773, + "referencedDeclaration": 839, "type": "bytes32", "value": "_txnKey" }, - "id": 783, + "id": 849, "name": "Identifier", - "src": "3059:7:2" + "src": "3058:7:2" } ], - "id": 784, + "id": 850, "name": "IndexAccess", - "src": "3031:36:2" + "src": "3030:36:2" } ], - "id": 785, + "id": 851, "name": "MemberAccess", - "src": "3031:43:2" + "src": "3030:43:2" } ], - "id": 786, + "id": 852, "name": "UnaryOperation", - "src": "3030:44:2" + "src": "3029:44:2" } ], - "id": 787, + "id": 853, "name": "FunctionCall", - "src": "3022:53:2" + "src": "3021:53:2" } ], - "id": 788, + "id": 854, "name": "ExpressionStatement", - "src": "3022:53:2" + "src": "3021:53:2" }, { "children": [ @@ -3797,13 +3797,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 905, + "referencedDeclaration": 971, "type": "function (bytes32) returns (bool)", "value": "_deleteCredential" }, - "id": 789, + "id": 855, "name": "Identifier", - "src": "3085:17:2" + "src": "3084:17:2" }, { "attributes": { @@ -3811,23 +3811,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 773, + "referencedDeclaration": 839, "type": "bytes32", "value": "_txnKey" }, - "id": 790, + "id": 856, "name": "Identifier", - "src": "3103:7:2" + "src": "3102:7:2" } ], - "id": 791, + "id": 857, "name": "FunctionCall", - "src": "3085:26:2" + "src": "3084:26:2" } ], - "id": 792, + "id": 858, "name": "ExpressionStatement", - "src": "3085:26:2" + "src": "3084:26:2" }, { "children": [ @@ -3851,7 +3851,7 @@ "isPure": false, "lValueRequested": true, "member_name": "numOfPendingCreds", - "referencedDeclaration": 550, + "referencedDeclaration": 616, "type": "uint256" }, "children": [ @@ -3861,28 +3861,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 793, + "id": 859, "name": "Identifier", - "src": "3121:15:2" + "src": "3120:15:2" } ], - "id": 795, + "id": 861, "name": "MemberAccess", - "src": "3121:33:2" + "src": "3120:33:2" } ], - "id": 796, + "id": 862, "name": "UnaryOperation", - "src": "3121:35:2" + "src": "3120:35:2" } ], - "id": 797, + "id": 863, "name": "ExpressionStatement", - "src": "3121:35:2" + "src": "3120:35:2" }, { "children": [ @@ -3912,13 +3912,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 771, + "referencedDeclaration": 837, "type": "function (bytes32)", "value": "CredentialRejected" }, - "id": 798, + "id": 864, "name": "Identifier", - "src": "3166:18:2" + "src": "3165:18:2" }, { "attributes": { @@ -3926,33 +3926,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 773, + "referencedDeclaration": 839, "type": "bytes32", "value": "_txnKey" }, - "id": 799, + "id": 865, "name": "Identifier", - "src": "3185:7:2" + "src": "3184:7:2" } ], - "id": 800, + "id": 866, "name": "FunctionCall", - "src": "3166:27:2" + "src": "3165:27:2" } ], - "id": 801, + "id": 867, "name": "ExpressionStatement", - "src": "3166:27:2" + "src": "3165:27:2" } ], - "id": 802, + "id": 868, "name": "Block", - "src": "3012:188:2" + "src": "3011:188:2" } ], - "id": 803, + "id": 869, "name": "FunctionDefinition", - "src": "2939:261:2" + "src": "2938:261:2" }, { "attributes": { @@ -3967,7 +3967,7 @@ "constant": false, "indexed": false, "name": "_txnKey", - "scope": 809, + "scope": 875, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -3980,21 +3980,21 @@ "name": "bytes32", "type": "bytes32" }, - "id": 804, + "id": 870, "name": "ElementaryTypeName", - "src": "3230:7:2" + "src": "3229:7:2" } ], - "id": 805, + "id": 871, "name": "VariableDeclaration", - "src": "3230:15:2" + "src": "3229:15:2" }, { "attributes": { "constant": false, "indexed": false, "name": "count", - "scope": 809, + "scope": 875, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4007,24 +4007,24 @@ "name": "uint", "type": "uint256" }, - "id": 806, + "id": 872, "name": "ElementaryTypeName", - "src": "3247:4:2" + "src": "3246:4:2" } ], - "id": 807, + "id": 873, "name": "VariableDeclaration", - "src": "3247:10:2" + "src": "3246:10:2" } ], - "id": 808, + "id": 874, "name": "ParameterList", - "src": "3229:29:2" + "src": "3228:29:2" } ], - "id": 809, + "id": 875, "name": "EventDefinition", - "src": "3206:53:2" + "src": "3205:53:2" }, { "attributes": { @@ -4033,7 +4033,7 @@ "isConstructor": false, "name": "deleteCredential", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4045,7 +4045,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 836, + "scope": 902, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -4058,19 +4058,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 810, + "id": 876, "name": "ElementaryTypeName", - "src": "3327:7:2" + "src": "3325:7:2" } ], - "id": 811, + "id": 877, "name": "VariableDeclaration", - "src": "3327:15:2" + "src": "3325:15:2" } ], - "id": 812, + "id": 878, "name": "ParameterList", - "src": "3326:17:2" + "src": "3324:17:2" }, { "children": [ @@ -4078,7 +4078,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 836, + "scope": 902, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -4091,19 +4091,19 @@ "name": "bool", "type": "bool" }, - "id": 817, + "id": 883, "name": "ElementaryTypeName", - "src": "3382:4:2" + "src": "3380:4:2" } ], - "id": 818, + "id": 884, "name": "VariableDeclaration", - "src": "3382:12:2" + "src": "3380:12:2" } ], - "id": 819, + "id": 885, "name": "ParameterList", - "src": "3381:14:2" + "src": "3379:14:2" }, { "children": [ @@ -4113,13 +4113,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 598, + "referencedDeclaration": 664, "type": "modifier (address)", "value": "authorized" }, - "id": 813, + "id": 879, "name": "Identifier", - "src": "3344:10:2" + "src": "3342:10:2" }, { "attributes": { @@ -4139,23 +4139,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 814, + "id": 880, "name": "Identifier", - "src": "3355:3:2" + "src": "3353:3:2" } ], - "id": 815, + "id": 881, "name": "MemberAccess", - "src": "3355:10:2" + "src": "3353:10:2" } ], - "id": 816, + "id": 882, "name": "ModifierInvocation", - "src": "3344:22:2" + "src": "3342:22:2" }, { "children": [ @@ -4178,13 +4178,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 818, + "referencedDeclaration": 884, "type": "bool", "value": "success" }, - "id": 820, + "id": 886, "name": "Identifier", - "src": "3406:7:2" + "src": "3404:7:2" }, { "attributes": { @@ -4212,13 +4212,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 905, + "referencedDeclaration": 971, "type": "function (bytes32) returns (bool)", "value": "_deleteCredential" }, - "id": 821, + "id": 887, "name": "Identifier", - "src": "3416:17:2" + "src": "3414:17:2" }, { "attributes": { @@ -4226,28 +4226,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 811, + "referencedDeclaration": 877, "type": "bytes32", "value": "_txnKey" }, - "id": 822, + "id": 888, "name": "Identifier", - "src": "3434:7:2" + "src": "3432:7:2" } ], - "id": 823, + "id": 889, "name": "FunctionCall", - "src": "3416:26:2" + "src": "3414:26:2" } ], - "id": 824, + "id": 890, "name": "Assignment", - "src": "3406:36:2" + "src": "3404:36:2" } ], - "id": 825, + "id": 891, "name": "ExpressionStatement", - "src": "3406:36:2" + "src": "3404:36:2" }, { "children": [ @@ -4281,13 +4281,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 809, + "referencedDeclaration": 875, "type": "function (bytes32,uint256)", "value": "CredentialDeleted" }, - "id": 826, + "id": 892, "name": "Identifier", - "src": "3452:17:2" + "src": "3450:17:2" }, { "attributes": { @@ -4295,13 +4295,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 811, + "referencedDeclaration": 877, "type": "bytes32", "value": "_txnKey" }, - "id": 827, + "id": 893, "name": "Identifier", - "src": "3470:7:2" + "src": "3468:7:2" }, { "attributes": { @@ -4323,7 +4323,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -4333,37 +4333,37 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 828, + "id": 894, "name": "Identifier", - "src": "3479:15:2" + "src": "3477:15:2" } ], - "id": 829, + "id": 895, "name": "MemberAccess", - "src": "3479:20:2" + "src": "3477:20:2" } ], - "id": 830, + "id": 896, "name": "MemberAccess", - "src": "3479:27:2" + "src": "3477:27:2" } ], - "id": 831, + "id": 897, "name": "FunctionCall", - "src": "3452:55:2" + "src": "3450:55:2" } ], - "id": 832, + "id": 898, "name": "ExpressionStatement", - "src": "3452:55:2" + "src": "3450:55:2" }, { "attributes": { - "functionReturnParameters": 819 + "functionReturnParameters": 885 }, "children": [ { @@ -4372,28 +4372,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 818, + "referencedDeclaration": 884, "type": "bool", "value": "success" }, - "id": 833, + "id": 899, "name": "Identifier", - "src": "3524:7:2" + "src": "3522:7:2" } ], - "id": 834, + "id": 900, "name": "Return", - "src": "3517:14:2" + "src": "3515:14:2" } ], - "id": 835, + "id": 901, "name": "Block", - "src": "3396:142:2" + "src": "3394:142:2" } ], - "id": 836, + "id": 902, "name": "FunctionDefinition", - "src": "3301:237:2" + "src": "3299:237:2" }, { "attributes": { @@ -4405,7 +4405,7 @@ ], "name": "_deleteCredential", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -4417,7 +4417,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 905, + "scope": 971, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -4430,19 +4430,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 837, + "id": 903, "name": "ElementaryTypeName", - "src": "3571:7:2" + "src": "3569:7:2" } ], - "id": 838, + "id": 904, "name": "VariableDeclaration", - "src": "3571:15:2" + "src": "3569:15:2" } ], - "id": 839, + "id": 905, "name": "ParameterList", - "src": "3570:17:2" + "src": "3568:17:2" }, { "children": [ @@ -4450,7 +4450,7 @@ "attributes": { "constant": false, "name": "success", - "scope": 905, + "scope": 971, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -4463,19 +4463,19 @@ "name": "bool", "type": "bool" }, - "id": 840, + "id": 906, "name": "ElementaryTypeName", - "src": "3603:4:2" + "src": "3601:4:2" } ], - "id": 841, + "id": 907, "name": "VariableDeclaration", - "src": "3603:12:2" + "src": "3601:12:2" } ], - "id": 842, + "id": 908, "name": "ParameterList", - "src": "3602:14:2" + "src": "3600:14:2" }, { "children": [ @@ -4511,7 +4511,7 @@ "isPure": false, "lValueRequested": false, "member_name": "credentials", - "referencedDeclaration": 544, + "referencedDeclaration": 610, "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)" }, "children": [ @@ -4521,18 +4521,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 843, + "id": 909, "name": "Identifier", - "src": "3634:15:2" + "src": "3632:15:2" } ], - "id": 844, + "id": 910, "name": "MemberAccess", - "src": "3634:27:2" + "src": "3632:27:2" }, { "attributes": { @@ -4540,33 +4540,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 838, + "referencedDeclaration": 904, "type": "bytes32", "value": "_txnKey" }, - "id": 845, + "id": 911, "name": "Identifier", - "src": "3662:7:2" + "src": "3660:7:2" } ], - "id": 846, + "id": 912, "name": "IndexAccess", - "src": "3634:36:2" + "src": "3632:36:2" } ], - "id": 847, + "id": 913, "name": "UnaryOperation", - "src": "3627:43:2" + "src": "3625:43:2" } ], - "id": 848, + "id": 914, "name": "ExpressionStatement", - "src": "3627:43:2" + "src": "3625:43:2" }, { "attributes": { "assignments": [ - 850 + 916 ] }, "children": [ @@ -4574,7 +4574,7 @@ "attributes": { "constant": false, "name": "rowToDelete", - "scope": 905, + "scope": 971, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4587,14 +4587,14 @@ "name": "uint", "type": "uint256" }, - "id": 849, + "id": 915, "name": "ElementaryTypeName", - "src": "3680:4:2" + "src": "3678:4:2" } ], - "id": 850, + "id": 916, "name": "VariableDeclaration", - "src": "3680:16:2" + "src": "3678:16:2" }, { "attributes": { @@ -4614,7 +4614,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 548, + "referencedDeclaration": 614, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -4624,18 +4624,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 851, + "id": 917, "name": "Identifier", - "src": "3699:15:2" + "src": "3697:15:2" } ], - "id": 852, + "id": 918, "name": "MemberAccess", - "src": "3699:24:2" + "src": "3697:24:2" }, { "attributes": { @@ -4643,28 +4643,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 838, + "referencedDeclaration": 904, "type": "bytes32", "value": "_txnKey" }, - "id": 853, + "id": 919, "name": "Identifier", - "src": "3724:7:2" + "src": "3722:7:2" } ], - "id": 854, + "id": 920, "name": "IndexAccess", - "src": "3699:33:2" + "src": "3697:33:2" } ], - "id": 855, + "id": 921, "name": "VariableDeclarationStatement", - "src": "3680:52:2" + "src": "3678:52:2" }, { "attributes": { "assignments": [ - 857 + 923 ] }, "children": [ @@ -4672,7 +4672,7 @@ "attributes": { "constant": false, "name": "rowToMove", - "scope": 905, + "scope": 971, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -4685,14 +4685,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 856, + "id": 922, "name": "ElementaryTypeName", - "src": "3743:7:2" + "src": "3740:7:2" } ], - "id": 857, + "id": 923, "name": "VariableDeclaration", - "src": "3743:17:2" + "src": "3740:17:2" }, { "attributes": { @@ -4712,7 +4712,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -4722,18 +4722,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 858, + "id": 924, "name": "Identifier", - "src": "3763:15:2" + "src": "3760:15:2" } ], - "id": 859, + "id": 925, "name": "MemberAccess", - "src": "3763:20:2" + "src": "3760:20:2" }, { "attributes": { @@ -4770,7 +4770,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -4780,23 +4780,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 860, + "id": 926, "name": "Identifier", - "src": "3784:15:2" + "src": "3781:15:2" } ], - "id": 861, + "id": 927, "name": "MemberAccess", - "src": "3784:20:2" + "src": "3781:20:2" } ], - "id": 862, + "id": 928, "name": "MemberAccess", - "src": "3784:27:2" + "src": "3781:27:2" }, { "attributes": { @@ -4811,24 +4811,24 @@ "type": "int_const 1", "value": "1" }, - "id": 863, + "id": 929, "name": "Literal", - "src": "3812:1:2" + "src": "3809:1:2" } ], - "id": 864, + "id": 930, "name": "BinaryOperation", - "src": "3784:29:2" + "src": "3781:29:2" } ], - "id": 865, + "id": 931, "name": "IndexAccess", - "src": "3763:51:2" + "src": "3760:51:2" } ], - "id": 866, + "id": 932, "name": "VariableDeclarationStatement", - "src": "3743:71:2" + "src": "3740:71:2" }, { "children": [ @@ -4861,7 +4861,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 548, + "referencedDeclaration": 614, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -4871,18 +4871,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 867, + "id": 933, "name": "Identifier", - "src": "3824:15:2" + "src": "3821:15:2" } ], - "id": 870, + "id": 936, "name": "MemberAccess", - "src": "3824:24:2" + "src": "3821:24:2" }, { "attributes": { @@ -4890,18 +4890,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 857, + "referencedDeclaration": 923, "type": "bytes32", "value": "rowToMove" }, - "id": 869, + "id": 935, "name": "Identifier", - "src": "3849:9:2" + "src": "3846:9:2" } ], - "id": 871, + "id": 937, "name": "IndexAccess", - "src": "3824:35:2" + "src": "3821:35:2" }, { "attributes": { @@ -4909,23 +4909,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 850, + "referencedDeclaration": 916, "type": "uint256", "value": "rowToDelete" }, - "id": 872, + "id": 938, "name": "Identifier", - "src": "3862:11:2" + "src": "3859:11:2" } ], - "id": 873, + "id": 939, "name": "Assignment", - "src": "3824:49:2" + "src": "3821:49:2" } ], - "id": 874, + "id": 940, "name": "ExpressionStatement", - "src": "3824:49:2" + "src": "3821:49:2" }, { "children": [ @@ -4958,7 +4958,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -4968,18 +4968,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 875, + "id": 941, "name": "Identifier", - "src": "3884:15:2" + "src": "3880:15:2" } ], - "id": 878, + "id": 944, "name": "MemberAccess", - "src": "3884:20:2" + "src": "3880:20:2" }, { "attributes": { @@ -4987,18 +4987,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 850, + "referencedDeclaration": 916, "type": "uint256", "value": "rowToDelete" }, - "id": 877, + "id": 943, "name": "Identifier", - "src": "3905:11:2" + "src": "3901:11:2" } ], - "id": 879, + "id": 945, "name": "IndexAccess", - "src": "3884:33:2" + "src": "3880:33:2" }, { "attributes": { @@ -5006,23 +5006,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 857, + "referencedDeclaration": 923, "type": "bytes32", "value": "rowToMove" }, - "id": 880, + "id": 946, "name": "Identifier", - "src": "3920:9:2" + "src": "3916:9:2" } ], - "id": 881, + "id": 947, "name": "Assignment", - "src": "3884:45:2" + "src": "3880:45:2" } ], - "id": 882, + "id": 948, "name": "ExpressionStatement", - "src": "3884:45:2" + "src": "3880:45:2" }, { "children": [ @@ -5058,7 +5058,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -5068,33 +5068,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 883, + "id": 949, "name": "Identifier", - "src": "3940:15:2" + "src": "3935:15:2" } ], - "id": 886, + "id": 952, "name": "MemberAccess", - "src": "3940:20:2" + "src": "3935:20:2" } ], - "id": 887, + "id": 953, "name": "MemberAccess", - "src": "3940:27:2" + "src": "3935:27:2" } ], - "id": 888, + "id": 954, "name": "UnaryOperation", - "src": "3940:29:2" + "src": "3935:29:2" } ], - "id": 889, + "id": 955, "name": "ExpressionStatement", - "src": "3940:29:2" + "src": "3935:29:2" }, { "children": [ @@ -5128,7 +5128,7 @@ "isPure": false, "lValueRequested": false, "member_name": "indexMap", - "referencedDeclaration": 548, + "referencedDeclaration": 614, "type": "mapping(bytes32 => uint256)" }, "children": [ @@ -5138,18 +5138,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 890, + "id": 956, "name": "Identifier", - "src": "3986:15:2" + "src": "3981:15:2" } ], - "id": 891, + "id": 957, "name": "MemberAccess", - "src": "3986:24:2" + "src": "3981:24:2" }, { "attributes": { @@ -5157,28 +5157,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 838, + "referencedDeclaration": 904, "type": "bytes32", "value": "_txnKey" }, - "id": 892, + "id": 958, "name": "Identifier", - "src": "4011:7:2" + "src": "4006:7:2" } ], - "id": 893, + "id": 959, "name": "IndexAccess", - "src": "3986:33:2" + "src": "3981:33:2" } ], - "id": 894, + "id": 960, "name": "UnaryOperation", - "src": "3979:40:2" + "src": "3974:40:2" } ], - "id": 895, + "id": 961, "name": "ExpressionStatement", - "src": "3979:40:2" + "src": "3974:40:2" }, { "children": [ @@ -5212,7 +5212,7 @@ "isPure": false, "lValueRequested": false, "member_name": "credentials", - "referencedDeclaration": 544, + "referencedDeclaration": 610, "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)" }, "children": [ @@ -5222,18 +5222,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 896, + "id": 962, "name": "Identifier", - "src": "4036:15:2" + "src": "4031:15:2" } ], - "id": 897, + "id": 963, "name": "MemberAccess", - "src": "4036:27:2" + "src": "4031:27:2" }, { "attributes": { @@ -5241,32 +5241,32 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 838, + "referencedDeclaration": 904, "type": "bytes32", "value": "_txnKey" }, - "id": 898, + "id": 964, "name": "Identifier", - "src": "4064:7:2" + "src": "4059:7:2" } ], - "id": 899, + "id": 965, "name": "IndexAccess", - "src": "4036:36:2" + "src": "4031:36:2" } ], - "id": 900, + "id": 966, "name": "UnaryOperation", - "src": "4029:43:2" + "src": "4024:43:2" } ], - "id": 901, + "id": 967, "name": "ExpressionStatement", - "src": "4029:43:2" + "src": "4024:43:2" }, { "attributes": { - "functionReturnParameters": 842 + "functionReturnParameters": 908 }, "children": [ { @@ -5282,24 +5282,24 @@ "type": "bool", "value": "true" }, - "id": 902, + "id": 968, "name": "Literal", - "src": "4089:4:2" + "src": "4084:4:2" } ], - "id": 903, + "id": 969, "name": "Return", - "src": "4082:11:2" + "src": "4077:11:2" } ], - "id": 904, + "id": 970, "name": "Block", - "src": "3617:483:2" + "src": "3615:480:2" } ], - "id": 905, + "id": 971, "name": "FunctionDefinition", - "src": "3544:556:2" + "src": "3542:553:2" }, { "attributes": { @@ -5311,7 +5311,7 @@ ], "name": "getCredential", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -5323,7 +5323,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5336,19 +5336,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 906, + "id": 972, "name": "ElementaryTypeName", - "src": "4223:7:2" + "src": "4216:7:2" } ], - "id": 907, + "id": 973, "name": "VariableDeclaration", - "src": "4223:15:2" + "src": "4216:15:2" } ], - "id": 908, + "id": 974, "name": "ParameterList", - "src": "4222:17:2" + "src": "4215:17:2" }, { "children": [ @@ -5356,7 +5356,7 @@ "attributes": { "constant": false, "name": "_issuer", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5369,20 +5369,20 @@ "name": "address", "type": "address" }, - "id": 909, + "id": 975, "name": "ElementaryTypeName", - "src": "4275:7:2" + "src": "4268:7:2" } ], - "id": 910, + "id": 976, "name": "VariableDeclaration", - "src": "4275:15:2" + "src": "4268:15:2" }, { "attributes": { "constant": false, "name": "_description", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -5395,20 +5395,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 911, + "id": 977, "name": "ElementaryTypeName", - "src": "4300:6:2" + "src": "4293:6:2" } ], - "id": 912, + "id": 978, "name": "VariableDeclaration", - "src": "4300:19:2" + "src": "4293:19:2" }, { "attributes": { "constant": false, "name": "_name", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -5421,20 +5421,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 913, + "id": 979, "name": "ElementaryTypeName", - "src": "4329:6:2" + "src": "4322:6:2" } ], - "id": 914, + "id": 980, "name": "VariableDeclaration", - "src": "4329:12:2" + "src": "4322:12:2" }, { "attributes": { "constant": false, "name": "_image", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -5447,20 +5447,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 915, + "id": 981, "name": "ElementaryTypeName", - "src": "4351:6:2" + "src": "4344:6:2" } ], - "id": 916, + "id": 982, "name": "VariableDeclaration", - "src": "4351:13:2" + "src": "4344:13:2" }, { "attributes": { "constant": false, "name": "_version", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -5473,20 +5473,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 917, + "id": 983, "name": "ElementaryTypeName", - "src": "4374:6:2" + "src": "4367:6:2" } ], - "id": 918, + "id": 984, "name": "VariableDeclaration", - "src": "4374:15:2" + "src": "4367:15:2" }, { "attributes": { "constant": false, "name": "_expires", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5499,20 +5499,20 @@ "name": "uint", "type": "uint256" }, - "id": 919, + "id": 985, "name": "ElementaryTypeName", - "src": "4399:4:2" + "src": "4392:4:2" } ], - "id": 920, + "id": 986, "name": "VariableDeclaration", - "src": "4399:13:2" + "src": "4392:13:2" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -5525,20 +5525,20 @@ "name": "address", "type": "address" }, - "id": 921, + "id": 987, "name": "ElementaryTypeName", - "src": "4422:7:2" + "src": "4415:7:2" } ], - "id": 922, + "id": 988, "name": "VariableDeclaration", - "src": "4422:18:2" + "src": "4415:18:2" }, { "attributes": { "constant": false, "name": "txnKey", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -5551,20 +5551,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 923, + "id": 989, "name": "ElementaryTypeName", - "src": "4450:7:2" + "src": "4443:7:2" } ], - "id": 924, + "id": 990, "name": "VariableDeclaration", - "src": "4450:14:2" + "src": "4443:14:2" }, { "attributes": { "constant": false, "name": "_active", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5577,19 +5577,19 @@ "name": "bool", "type": "bool" }, - "id": 925, + "id": 991, "name": "ElementaryTypeName", - "src": "4474:4:2" + "src": "4467:4:2" } ], - "id": 926, + "id": 992, "name": "VariableDeclaration", - "src": "4474:12:2" + "src": "4467:12:2" } ], - "id": 927, + "id": 993, "name": "ParameterList", - "src": "4265:227:2" + "src": "4258:227:2" }, { "children": [ @@ -5621,13 +5621,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 928, + "id": 994, "name": "Identifier", - "src": "4503:7:2" + "src": "4496:7:2" }, { "attributes": { @@ -5664,7 +5664,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -5674,23 +5674,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 929, + "id": 995, "name": "Identifier", - "src": "4511:15:2" + "src": "4504:15:2" } ], - "id": 930, + "id": 996, "name": "MemberAccess", - "src": "4511:20:2" + "src": "4504:20:2" } ], - "id": 931, + "id": 997, "name": "MemberAccess", - "src": "4511:27:2" + "src": "4504:27:2" }, { "attributes": { @@ -5705,29 +5705,29 @@ "type": "int_const 0", "value": "0" }, - "id": 932, + "id": 998, "name": "Literal", - "src": "4541:1:2" + "src": "4534:1:2" } ], - "id": 933, + "id": 999, "name": "BinaryOperation", - "src": "4511:31:2" + "src": "4504:31:2" } ], - "id": 934, + "id": 1000, "name": "FunctionCall", - "src": "4503:40:2" + "src": "4496:40:2" } ], - "id": 935, + "id": 1001, "name": "ExpressionStatement", - "src": "4503:40:2" + "src": "4496:40:2" }, { "attributes": { "assignments": [ - 939 + 1005 ] }, "children": [ @@ -5735,7 +5735,7 @@ "attributes": { "constant": false, "name": "cred", - "scope": 971, + "scope": 1037, "stateVariable": false, "storageLocation": "memory", "type": "struct BadgeLibrary.Credential memory", @@ -5747,17 +5747,17 @@ "attributes": { "contractScope": null, "name": "BadgeLibrary.Credential", - "referencedDeclaration": 1757, + "referencedDeclaration": 1813, "type": "struct BadgeLibrary.Credential storage pointer" }, - "id": 938, + "id": 1004, "name": "UserDefinedTypeName", - "src": "4553:23:2" + "src": "4546:23:2" } ], - "id": 939, + "id": 1005, "name": "VariableDeclaration", - "src": "4553:35:2" + "src": "4546:35:2" }, { "attributes": { @@ -5777,7 +5777,7 @@ "isPure": false, "lValueRequested": false, "member_name": "credentials", - "referencedDeclaration": 544, + "referencedDeclaration": 610, "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)" }, "children": [ @@ -5787,18 +5787,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 940, + "id": 1006, "name": "Identifier", - "src": "4591:15:2" + "src": "4584:15:2" } ], - "id": 941, + "id": 1007, "name": "MemberAccess", - "src": "4591:27:2" + "src": "4584:27:2" }, { "attributes": { @@ -5806,27 +5806,27 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 907, + "referencedDeclaration": 973, "type": "bytes32", "value": "_txnKey" }, - "id": 942, + "id": 1008, "name": "Identifier", - "src": "4619:7:2" + "src": "4612:7:2" } ], - "id": 943, + "id": 1009, "name": "IndexAccess", - "src": "4591:36:2" + "src": "4584:36:2" } ], - "id": 944, + "id": 1010, "name": "VariableDeclarationStatement", - "src": "4553:74:2" + "src": "4546:74:2" }, { "attributes": { - "functionReturnParameters": 927 + "functionReturnParameters": 993 }, "children": [ { @@ -5848,7 +5848,7 @@ "isPure": false, "lValueRequested": false, "member_name": "issuer", - "referencedDeclaration": 1737, + "referencedDeclaration": 1793, "type": "address" }, "children": [ @@ -5860,7 +5860,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -5870,23 +5870,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 945, + "id": 1011, "name": "Identifier", - "src": "4658:4:2" + "src": "4651:4:2" } ], - "id": 946, + "id": 1012, "name": "MemberAccess", - "src": "4658:10:2" + "src": "4651:10:2" } ], - "id": 947, + "id": 1013, "name": "MemberAccess", - "src": "4658:17:2" + "src": "4651:17:2" }, { "attributes": { @@ -5896,7 +5896,7 @@ "isPure": false, "lValueRequested": false, "member_name": "description", - "referencedDeclaration": 1739, + "referencedDeclaration": 1795, "type": "string memory" }, "children": [ @@ -5908,7 +5908,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -5918,23 +5918,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 948, + "id": 1014, "name": "Identifier", - "src": "4689:4:2" + "src": "4682:4:2" } ], - "id": 949, + "id": 1015, "name": "MemberAccess", - "src": "4689:10:2" + "src": "4682:10:2" } ], - "id": 950, + "id": 1016, "name": "MemberAccess", - "src": "4689:22:2" + "src": "4682:22:2" }, { "attributes": { @@ -5944,7 +5944,7 @@ "isPure": false, "lValueRequested": false, "member_name": "name", - "referencedDeclaration": 1741, + "referencedDeclaration": 1797, "type": "string memory" }, "children": [ @@ -5956,7 +5956,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -5966,23 +5966,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 951, + "id": 1017, "name": "Identifier", - "src": "4725:4:2" + "src": "4718:4:2" } ], - "id": 952, + "id": 1018, "name": "MemberAccess", - "src": "4725:10:2" + "src": "4718:10:2" } ], - "id": 953, + "id": 1019, "name": "MemberAccess", - "src": "4725:15:2" + "src": "4718:15:2" }, { "attributes": { @@ -5992,7 +5992,7 @@ "isPure": false, "lValueRequested": false, "member_name": "image", - "referencedDeclaration": 1743, + "referencedDeclaration": 1799, "type": "string memory" }, "children": [ @@ -6004,7 +6004,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -6014,23 +6014,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 954, + "id": 1020, "name": "Identifier", - "src": "4754:4:2" + "src": "4747:4:2" } ], - "id": 955, + "id": 1021, "name": "MemberAccess", - "src": "4754:10:2" + "src": "4747:10:2" } ], - "id": 956, + "id": 1022, "name": "MemberAccess", - "src": "4754:16:2" + "src": "4747:16:2" }, { "attributes": { @@ -6040,7 +6040,7 @@ "isPure": false, "lValueRequested": false, "member_name": "version", - "referencedDeclaration": 1745, + "referencedDeclaration": 1801, "type": "string memory" }, "children": [ @@ -6052,7 +6052,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -6062,23 +6062,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 957, + "id": 1023, "name": "Identifier", - "src": "4784:4:2" + "src": "4777:4:2" } ], - "id": 958, + "id": 1024, "name": "MemberAccess", - "src": "4784:10:2" + "src": "4777:10:2" } ], - "id": 959, + "id": 1025, "name": "MemberAccess", - "src": "4784:18:2" + "src": "4777:18:2" }, { "attributes": { @@ -6088,7 +6088,7 @@ "isPure": false, "lValueRequested": false, "member_name": "expires", - "referencedDeclaration": 1750, + "referencedDeclaration": 1806, "type": "uint256" }, "children": [ @@ -6098,18 +6098,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 960, + "id": 1026, "name": "Identifier", - "src": "4816:4:2" + "src": "4809:4:2" } ], - "id": 961, + "id": 1027, "name": "MemberAccess", - "src": "4816:12:2" + "src": "4809:12:2" }, { "attributes": { @@ -6119,7 +6119,7 @@ "isPure": false, "lValueRequested": false, "member_name": "recipient", - "referencedDeclaration": 1752, + "referencedDeclaration": 1808, "type": "address" }, "children": [ @@ -6129,18 +6129,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 962, + "id": 1028, "name": "Identifier", - "src": "4842:4:2" + "src": "4835:4:2" } ], - "id": 963, + "id": 1029, "name": "MemberAccess", - "src": "4842:14:2" + "src": "4835:14:2" }, { "attributes": { @@ -6150,7 +6150,7 @@ "isPure": false, "lValueRequested": false, "member_name": "txnKey", - "referencedDeclaration": 1754, + "referencedDeclaration": 1810, "type": "bytes32" }, "children": [ @@ -6160,18 +6160,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 964, + "id": 1030, "name": "Identifier", - "src": "4870:4:2" + "src": "4863:4:2" } ], - "id": 965, + "id": 1031, "name": "MemberAccess", - "src": "4870:11:2" + "src": "4863:11:2" }, { "attributes": { @@ -6181,7 +6181,7 @@ "isPure": false, "lValueRequested": false, "member_name": "active", - "referencedDeclaration": 1756, + "referencedDeclaration": 1812, "type": "bool" }, "children": [ @@ -6191,38 +6191,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 939, + "referencedDeclaration": 1005, "type": "struct BadgeLibrary.Credential memory", "value": "cred" }, - "id": 966, + "id": 1032, "name": "Identifier", - "src": "4895:4:2" + "src": "4888:4:2" } ], - "id": 967, + "id": 1033, "name": "MemberAccess", - "src": "4895:11:2" + "src": "4888:11:2" } ], - "id": 968, + "id": 1034, "name": "TupleExpression", - "src": "4644:272:2" + "src": "4637:272:2" } ], - "id": 969, + "id": 1035, "name": "Return", - "src": "4637:279:2" + "src": "4630:279:2" } ], - "id": 970, + "id": 1036, "name": "Block", - "src": "4493:430:2" + "src": "4486:430:2" } ], - "id": 971, + "id": 1037, "name": "FunctionDefinition", - "src": "4200:723:2" + "src": "4193:723:2" }, { "attributes": { @@ -6234,7 +6234,7 @@ ], "name": "getTxnKey", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -6246,7 +6246,7 @@ "attributes": { "constant": false, "name": "_index", - "scope": 984, + "scope": 1050, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6259,27 +6259,27 @@ "name": "uint", "type": "uint256" }, - "id": 972, + "id": 1038, "name": "ElementaryTypeName", - "src": "5088:4:2" + "src": "5081:4:2" } ], - "id": 973, + "id": 1039, "name": "VariableDeclaration", - "src": "5088:11:2" + "src": "5081:11:2" } ], - "id": 974, + "id": 1040, "name": "ParameterList", - "src": "5087:13:2" + "src": "5080:13:2" }, { "children": [ { "attributes": { "constant": false, - "name": "name", - "scope": 984, + "name": "txnKey", + "scope": 1050, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -6292,25 +6292,25 @@ "name": "bytes32", "type": "bytes32" }, - "id": 975, + "id": 1041, "name": "ElementaryTypeName", - "src": "5125:7:2" + "src": "5118:7:2" } ], - "id": 976, + "id": 1042, "name": "VariableDeclaration", - "src": "5125:12:2" + "src": "5118:14:2" } ], - "id": 977, + "id": 1043, "name": "ParameterList", - "src": "5124:14:2" + "src": "5117:16:2" }, { "children": [ { "attributes": { - "functionReturnParameters": 977 + "functionReturnParameters": 1043 }, "children": [ { @@ -6331,7 +6331,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -6341,18 +6341,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 978, + "id": 1044, "name": "Identifier", - "src": "5156:15:2" + "src": "5151:15:2" } ], - "id": 979, + "id": 1045, "name": "MemberAccess", - "src": "5156:20:2" + "src": "5151:20:2" }, { "attributes": { @@ -6360,33 +6360,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 973, + "referencedDeclaration": 1039, "type": "uint256", "value": "_index" }, - "id": 980, + "id": 1046, "name": "Identifier", - "src": "5177:6:2" + "src": "5172:6:2" } ], - "id": 981, + "id": 1047, "name": "IndexAccess", - "src": "5156:28:2" + "src": "5151:28:2" } ], - "id": 982, + "id": 1048, "name": "Return", - "src": "5149:35:2" + "src": "5144:35:2" } ], - "id": 983, + "id": 1049, "name": "Block", - "src": "5139:52:2" + "src": "5134:52:2" } ], - "id": 984, + "id": 1050, "name": "FunctionDefinition", - "src": "5069:122:2" + "src": "5062:124:2" }, { "attributes": { @@ -6398,7 +6398,7 @@ ], "name": "getNumberOfCredentials", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -6411,9 +6411,9 @@ ] }, "children": [], - "id": 985, + "id": 1051, "name": "ParameterList", - "src": "5268:2:2" + "src": "5262:2:2" }, { "children": [ @@ -6421,7 +6421,7 @@ "attributes": { "constant": false, "name": "count", - "scope": 994, + "scope": 1060, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6434,25 +6434,25 @@ "name": "uint", "type": "uint256" }, - "id": 986, + "id": 1052, "name": "ElementaryTypeName", - "src": "5295:4:2" + "src": "5289:4:2" } ], - "id": 987, + "id": 1053, "name": "VariableDeclaration", - "src": "5295:10:2" + "src": "5289:10:2" } ], - "id": 988, + "id": 1054, "name": "ParameterList", - "src": "5294:12:2" + "src": "5288:12:2" }, { "children": [ { "attributes": { - "functionReturnParameters": 988 + "functionReturnParameters": 1054 }, "children": [ { @@ -6475,7 +6475,7 @@ "isPure": false, "lValueRequested": false, "member_name": "keys", - "referencedDeclaration": 553, + "referencedDeclaration": 619, "type": "bytes32[] storage ref" }, "children": [ @@ -6485,38 +6485,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 989, + "id": 1055, "name": "Identifier", - "src": "5324:15:2" + "src": "5318:15:2" } ], - "id": 990, + "id": 1056, "name": "MemberAccess", - "src": "5324:20:2" + "src": "5318:20:2" } ], - "id": 991, + "id": 1057, "name": "MemberAccess", - "src": "5324:27:2" + "src": "5318:27:2" } ], - "id": 992, + "id": 1058, "name": "Return", - "src": "5317:34:2" + "src": "5311:34:2" } ], - "id": 993, + "id": 1059, "name": "Block", - "src": "5307:51:2" + "src": "5301:51:2" } ], - "id": 994, + "id": 1060, "name": "FunctionDefinition", - "src": "5237:121:2" + "src": "5231:121:2" }, { "attributes": { @@ -6528,7 +6528,7 @@ ], "name": "getNumberOfPendingCredentials", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -6541,9 +6541,9 @@ ] }, "children": [], - "id": 995, + "id": 1061, "name": "ParameterList", - "src": "5450:2:2" + "src": "5443:2:2" }, { "children": [ @@ -6551,7 +6551,7 @@ "attributes": { "constant": false, "name": "count", - "scope": 1003, + "scope": 1069, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -6564,25 +6564,25 @@ "name": "uint", "type": "uint256" }, - "id": 996, + "id": 1062, "name": "ElementaryTypeName", - "src": "5477:4:2" + "src": "5470:4:2" } ], - "id": 997, + "id": 1063, "name": "VariableDeclaration", - "src": "5477:10:2" + "src": "5470:10:2" } ], - "id": 998, + "id": 1064, "name": "ParameterList", - "src": "5476:12:2" + "src": "5469:12:2" }, { "children": [ { "attributes": { - "functionReturnParameters": 998 + "functionReturnParameters": 1064 }, "children": [ { @@ -6593,7 +6593,7 @@ "isPure": false, "lValueRequested": false, "member_name": "numOfPendingCreds", - "referencedDeclaration": 550, + "referencedDeclaration": 616, "type": "uint256" }, "children": [ @@ -6603,33 +6603,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 999, + "id": 1065, "name": "Identifier", - "src": "5506:15:2" + "src": "5499:15:2" } ], - "id": 1000, + "id": 1066, "name": "MemberAccess", - "src": "5506:33:2" + "src": "5499:33:2" } ], - "id": 1001, + "id": 1067, "name": "Return", - "src": "5499:40:2" + "src": "5492:40:2" } ], - "id": 1002, + "id": 1068, "name": "Block", - "src": "5489:57:2" + "src": "5482:57:2" } ], - "id": 1003, + "id": 1069, "name": "FunctionDefinition", - "src": "5412:134:2" + "src": "5405:134:2" }, { "attributes": { @@ -6641,7 +6641,7 @@ ], "name": "recomputePOIHash", "payable": false, - "scope": 1042, + "scope": 1108, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -6653,7 +6653,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1041, + "scope": 1107, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -6666,19 +6666,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1004, + "id": 1070, "name": "ElementaryTypeName", - "src": "5578:7:2" + "src": "5571:7:2" } ], - "id": 1005, + "id": 1071, "name": "VariableDeclaration", - "src": "5578:15:2" + "src": "5571:15:2" } ], - "id": 1006, + "id": 1072, "name": "ParameterList", - "src": "5577:17:2" + "src": "5570:17:2" }, { "children": [ @@ -6686,7 +6686,7 @@ "attributes": { "constant": false, "name": "poiHash", - "scope": 1041, + "scope": 1107, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -6699,26 +6699,26 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1007, + "id": 1073, "name": "ElementaryTypeName", - "src": "5619:7:2" + "src": "5612:7:2" } ], - "id": 1008, + "id": 1074, "name": "VariableDeclaration", - "src": "5619:15:2" + "src": "5612:15:2" } ], - "id": 1009, + "id": 1075, "name": "ParameterList", - "src": "5618:17:2" + "src": "5611:17:2" }, { "children": [ { "attributes": { "assignments": [ - 1013 + 1079 ] }, "children": [ @@ -6726,7 +6726,7 @@ "attributes": { "constant": false, "name": "credential", - "scope": 1041, + "scope": 1107, "stateVariable": false, "storageLocation": "memory", "type": "struct BadgeLibrary.Credential memory", @@ -6738,17 +6738,17 @@ "attributes": { "contractScope": null, "name": "BadgeLibrary.Credential", - "referencedDeclaration": 1757, + "referencedDeclaration": 1813, "type": "struct BadgeLibrary.Credential storage pointer" }, - "id": 1012, + "id": 1078, "name": "UserDefinedTypeName", - "src": "5646:23:2" + "src": "5639:23:2" } ], - "id": 1013, + "id": 1079, "name": "VariableDeclaration", - "src": "5646:41:2" + "src": "5639:41:2" }, { "attributes": { @@ -6768,7 +6768,7 @@ "isPure": false, "lValueRequested": false, "member_name": "credentials", - "referencedDeclaration": 544, + "referencedDeclaration": 610, "type": "mapping(bytes32 => struct BadgeLibrary.Credential storage ref)" }, "children": [ @@ -6778,18 +6778,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 556, + "referencedDeclaration": 622, "type": "struct Holder.CredentialVault storage ref", "value": "credentialVault" }, - "id": 1014, + "id": 1080, "name": "Identifier", - "src": "5690:15:2" + "src": "5683:15:2" } ], - "id": 1015, + "id": 1081, "name": "MemberAccess", - "src": "5690:27:2" + "src": "5683:27:2" }, { "attributes": { @@ -6797,27 +6797,27 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1005, + "referencedDeclaration": 1071, "type": "bytes32", "value": "_txnKey" }, - "id": 1016, + "id": 1082, "name": "Identifier", - "src": "5718:7:2" + "src": "5711:7:2" } ], - "id": 1017, + "id": 1083, "name": "IndexAccess", - "src": "5690:36:2" + "src": "5683:36:2" } ], - "id": 1018, + "id": 1084, "name": "VariableDeclarationStatement", - "src": "5646:80:2" + "src": "5639:80:2" }, { "attributes": { - "functionReturnParameters": 1009 + "functionReturnParameters": 1075 }, "children": [ { @@ -6868,7 +6868,7 @@ "isPure": false, "lValueRequested": false, "member_name": "getIntegrityHash", - "referencedDeclaration": 1811, + "referencedDeclaration": 1867, "type": "function (address,string memory,string memory,string memory,string memory,address) pure returns (bytes32)" }, "children": [ @@ -6878,18 +6878,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1812, + "referencedDeclaration": 1868, "type": "type(library BadgeLibrary)", "value": "BadgeLibrary" }, - "id": 1019, + "id": 1085, "name": "Identifier", - "src": "5743:12:2" + "src": "5736:12:2" } ], - "id": 1020, + "id": 1086, "name": "MemberAccess", - "src": "5743:29:2" + "src": "5736:29:2" }, { "attributes": { @@ -6899,7 +6899,7 @@ "isPure": false, "lValueRequested": false, "member_name": "issuer", - "referencedDeclaration": 1737, + "referencedDeclaration": 1793, "type": "address" }, "children": [ @@ -6911,7 +6911,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -6921,23 +6921,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1013, + "referencedDeclaration": 1079, "type": "struct BadgeLibrary.Credential memory", "value": "credential" }, - "id": 1021, + "id": 1087, "name": "Identifier", - "src": "5786:10:2" + "src": "5779:10:2" } ], - "id": 1022, + "id": 1088, "name": "MemberAccess", - "src": "5786:16:2" + "src": "5779:16:2" } ], - "id": 1023, + "id": 1089, "name": "MemberAccess", - "src": "5786:23:2" + "src": "5779:23:2" }, { "attributes": { @@ -6947,7 +6947,7 @@ "isPure": false, "lValueRequested": false, "member_name": "description", - "referencedDeclaration": 1739, + "referencedDeclaration": 1795, "type": "string memory" }, "children": [ @@ -6959,7 +6959,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -6969,23 +6969,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1013, + "referencedDeclaration": 1079, "type": "struct BadgeLibrary.Credential memory", "value": "credential" }, - "id": 1024, + "id": 1090, "name": "Identifier", - "src": "5824:10:2" + "src": "5816:10:2" } ], - "id": 1025, + "id": 1091, "name": "MemberAccess", - "src": "5824:16:2" + "src": "5816:16:2" } ], - "id": 1026, + "id": 1092, "name": "MemberAccess", - "src": "5824:28:2" + "src": "5816:28:2" }, { "attributes": { @@ -6995,7 +6995,7 @@ "isPure": false, "lValueRequested": false, "member_name": "name", - "referencedDeclaration": 1741, + "referencedDeclaration": 1797, "type": "string memory" }, "children": [ @@ -7007,7 +7007,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -7017,23 +7017,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1013, + "referencedDeclaration": 1079, "type": "struct BadgeLibrary.Credential memory", "value": "credential" }, - "id": 1027, + "id": 1093, "name": "Identifier", - "src": "5867:10:2" + "src": "5858:10:2" } ], - "id": 1028, + "id": 1094, "name": "MemberAccess", - "src": "5867:16:2" + "src": "5858:16:2" } ], - "id": 1029, + "id": 1095, "name": "MemberAccess", - "src": "5867:21:2" + "src": "5858:21:2" }, { "attributes": { @@ -7043,7 +7043,7 @@ "isPure": false, "lValueRequested": false, "member_name": "image", - "referencedDeclaration": 1743, + "referencedDeclaration": 1799, "type": "string memory" }, "children": [ @@ -7055,7 +7055,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -7065,23 +7065,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1013, + "referencedDeclaration": 1079, "type": "struct BadgeLibrary.Credential memory", "value": "credential" }, - "id": 1030, + "id": 1096, "name": "Identifier", - "src": "5903:10:2" + "src": "5893:10:2" } ], - "id": 1031, + "id": 1097, "name": "MemberAccess", - "src": "5903:16:2" + "src": "5893:16:2" } ], - "id": 1032, + "id": 1098, "name": "MemberAccess", - "src": "5903:22:2" + "src": "5893:22:2" }, { "attributes": { @@ -7091,7 +7091,7 @@ "isPure": false, "lValueRequested": false, "member_name": "version", - "referencedDeclaration": 1745, + "referencedDeclaration": 1801, "type": "string memory" }, "children": [ @@ -7103,7 +7103,7 @@ "isPure": false, "lValueRequested": false, "member_name": "badge", - "referencedDeclaration": 1748, + "referencedDeclaration": 1804, "type": "struct BadgeLibrary.Badge memory" }, "children": [ @@ -7113,23 +7113,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1013, + "referencedDeclaration": 1079, "type": "struct BadgeLibrary.Credential memory", "value": "credential" }, - "id": 1033, + "id": 1099, "name": "Identifier", - "src": "5940:10:2" + "src": "5929:10:2" } ], - "id": 1034, + "id": 1100, "name": "MemberAccess", - "src": "5940:16:2" + "src": "5929:16:2" } ], - "id": 1035, + "id": 1101, "name": "MemberAccess", - "src": "5940:24:2" + "src": "5929:24:2" }, { "attributes": { @@ -7139,7 +7139,7 @@ "isPure": false, "lValueRequested": false, "member_name": "recipient", - "referencedDeclaration": 1752, + "referencedDeclaration": 1808, "type": "address" }, "children": [ @@ -7149,48 +7149,48 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1013, + "referencedDeclaration": 1079, "type": "struct BadgeLibrary.Credential memory", "value": "credential" }, - "id": 1036, + "id": 1102, "name": "Identifier", - "src": "5979:10:2" + "src": "5967:10:2" } ], - "id": 1037, + "id": 1103, "name": "MemberAccess", - "src": "5979:20:2" + "src": "5967:20:2" } ], - "id": 1038, + "id": 1104, "name": "FunctionCall", - "src": "5743:266:2" + "src": "5736:261:2" } ], - "id": 1039, + "id": 1105, "name": "Return", - "src": "5736:273:2" + "src": "5729:268:2" } ], - "id": 1040, + "id": 1106, "name": "Block", - "src": "5636:380:2" + "src": "5629:375:2" } ], - "id": 1041, + "id": 1107, "name": "FunctionDefinition", - "src": "5552:464:2" + "src": "5545:459:2" } ], - "id": 1042, + "id": 1108, "name": "ContractDefinition", - "src": "77:5941:2" + "src": "77:5929:2" } ], - "id": 1043, + "id": 1109, "name": "SourceUnit", - "src": "0:6018:2" + "src": "0:6007:2" }, "compiler": { "name": "solc", @@ -7198,5 +7198,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.890Z" + "updatedAt": "2018-01-14T10:53:22.993Z" } \ No newline at end of file diff --git a/build/contracts/Issuer.json b/build/contracts/Issuer.json index a8deeff..ddae6f9 100644 --- a/build/contracts/Issuer.json +++ b/build/contracts/Issuer.json @@ -113,6 +113,68 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_issuer", + "type": "address" + } + ], + "name": "getBadgeLinkHash", + "outputs": [ + { + "name": "hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "issuer", + "type": "address" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "image", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "recipient", + "type": "address" + } + ], + "name": "getIntegrityHash", + "outputs": [ + { + "name": "_hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [], @@ -460,6 +522,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "_badgename", + "type": "string" + } + ], + "name": "getBadgeNameHash", + "outputs": [ + { + "name": "_hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [ @@ -691,18 +772,18 @@ "type": "event" } ], - "bytecode": "0x606060405234156200001057600080fd5b60405162004647380380620046478339810160405280805190602001909190805182019190602001805182019190602001805190602001909190505083808080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000600781905550505082600a9080519060200190620000b49291906200015a565b5081600b9080519060200190620000cd9291906200015a565b5030600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000209565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019d57805160ff1916838001178555620001ce565b82800160010185558215620001ce579182015b82811115620001cd578251825591602001919060010190620001b0565b5b509050620001dd9190620001e1565b5090565b6200020691905b8082111562000202576000816000905550600101620001e8565b5090565b90565b61442e80620002196000396000f30060606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a28581461016457806306fdde03146101ed5780630c43ae9c1461027b5780630decfdea146102d05780631041eb961461036057806324ddd51a146103f05780633557b6c314610419578063368a17091461047c5780633b57391a146105015780634294857f1461053a5780635600f04f146105795780635629aec91461060757806359c293f11461067b5780635a9b0b89146106ba5780635c9d3a941461081a57806372ee19a21461094057806377002fcf146109b55780637c59fda014610bcc578063a5aef15b14610bf5578063affed0e014610c1c578063b610922114610c45578063b75c7dc614610cba578063be47aa0914610ce1578063d8c0941b14610d1a578063eb92948114610de4578063f851a44014610e7c578063f9afc24214610ed1575b600080fd5b341561016f57600080fd5b6101eb60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f5c565b005b34156101f857600080fd5b61020061184a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610240578082015181840152602081019050610225565b50505050905090810190601f16801561026d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028657600080fd5b61028e6118e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102db57600080fd5b6102f560048080356000191690602001909190505061190e565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561036b57600080fd5b61038560048080356000191690602001909190505061196b565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b34156103fb57600080fd5b610403611a29565b6040518082815260200191505060405180910390f35b341561042457600080fd5b61043a6004808035906020019091905050611a39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561048757600080fd5b6104ff600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b16565b005b341561050c57600080fd5b610538600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d92565b005b341561054557600080fd5b61055f600480803560001916906020019091905050612016565b604051808215151515815260200191505060405180910390f35b341561058457600080fd5b61058c61204b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561061257600080fd5b61064b60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120e9565b60405180841515151581526020018315151515815260200182151515158152602001935050505060405180910390f35b341561068657600080fd5b61069c6004808035906020019091905050612250565b60405180826000191660001916815260200191505060405180910390f35b34156106c557600080fd5b6106cd612277565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561077557808201518184015260208101905061075a565b50505050905090810190601f1680156107a25780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156107db5780820151818401526020810190506107c0565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b341561082557600080fd5b61093e600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612419565b005b341561094b57600080fd5b61099b600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612892565b604051808215151515815260200191505060405180910390f35b34156109c057600080fd5b6109da6004808035600019169060200190919050506129ec565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b83811015610a58578082015181840152602081019050610a3d565b50505050905090810190601f168015610a855780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015610abe578082015181840152602081019050610aa3565b50505050905090810190601f168015610aeb5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610b24578082015181840152602081019050610b09565b50505050905090810190601f168015610b515780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610b8a578082015181840152602081019050610b6f565b50505050905090810190601f168015610bb75780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3415610bd757600080fd5b610bdf612dc0565b6040518082815260200191505060405180910390f35b3415610c0057600080fd5b610c1a600480803560001916906020019091905050612dcd565b005b3415610c2757600080fd5b610c2f612f6f565b6040518082815260200191505060405180910390f35b3415610c5057600080fd5b610ca0600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612f75565b604051808215151515815260200191505060405180910390f35b3415610cc557600080fd5b610cdf6004808035600019169060200190919050506133a9565b005b3415610cec57600080fd5b610d18600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061354b565b005b3415610d2557600080fd5b610d5e60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506136de565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610da8578082015181840152602081019050610d8d565b50505050905090810190601f168015610dd55780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3415610def57600080fd5b610e5e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506138e6565b60405180826000191660001916815260200191505060405180910390f35b3415610e8757600080fd5b610e8f6139a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610edc57600080fd5b610f08600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506139c5565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610f666141e6565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806110125750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561108f57600080fd5b60076000815480929190600101919050555073__BadgeLibrary__________________________63c1eabde9876000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611130578082015181840152602081019050611115565b50505050905090810190601f16801561115d5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561117957600080fd5b6102c65a03f4151561118a57600080fd5b50505060405180519050945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112af5780601f10611284576101008083540402835291602001916112af565b820191906000526020600020905b81548152906001019060200180831161129257829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113515780601f1061132657610100808354040283529160200191611351565b820191906000526020600020905b81548152906001019060200180831161133457829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113f35780601f106113c8576101008083540402835291602001916113f3565b820191906000526020600020905b8154815290600101906020018083116113d657829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114955780601f1061146a57610100808354040283529160200191611495565b820191906000526020600020905b81548152906001019060200180831161147857829003601f168201915b505050505081525050935073__BadgeLibrary__________________________631ddb6af6856000015186602001518760400151886060015189608001518d6000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b838110156115b857808201518184015260208101905061159d565b50505050905090810190601f1680156115e55780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b8381101561161e578082015181840152602081019050611603565b50505050905090810190601f16801561164b5780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b83811015611684578082015181840152602081019050611669565b50505050905090810190601f1680156116b15780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b838110156116ea5780820151818401526020810190506116cf565b50505050905090810190601f1680156117175780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b151561173b57600080fd5b6102c65a03f4151561174c57600080fd5b50505060405180519050925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118e05780601f106118b5576101008083540402835291602001916118e0565b820191906000526020600020905b8154815290600101906020018083116118c357829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b6000600360020180549050905090565b600060016000600284815481101515611a4e57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615611b0c57600282815481101515611ad957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611b11565b600090505b919050565b6000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611bc35750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611c4057600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be440ff56000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611cce57600080fd5b6102c65a03f11515611cdf57600080fd5b505050604051805190501515611cf457600080fd5b600085111515611d0657849350611d11565b62093a808502420193505b611d70600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506138e6565b9250611d7e87858886613a1c565b611d89838789610f5c565b50505050505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611e6257600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff168152602001600160028054806001018281611ea09190614244565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120e15780601f106120b6576101008083540402835291602001916120e1565b820191906000526020600020905b8154815290600101906020018083116120c457829003601f168201915b505050505081565b60008060008060008060008060006121008b61196b565b9550955095509550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561214d576001600080985098509850612243565b82156121625782600080985098509850612243565b8991508173ffffffffffffffffffffffffffffffffffffffff16636bcdaa33876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156121e457600080fd5b6102c65a03f115156121f557600080fd5b5050506040518051905090508285600019168260001916148573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16149850985098505b5050505050509250925092565b600060036002018281548110151561226457fe5b9060005260206000209001549050919050565b600080612282614270565b61228a614270565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a600b818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123685780601f1061233d57610100808354040283529160200191612368565b820191906000526020600020905b81548152906001019060200180831161234b57829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124045780601f106123d957610100808354040283529160200191612404565b820191906000526020600020905b8154815290600101906020018083116123e757829003601f168201915b50505050509050935093509350935090919293565b6000806124246141e6565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806124ce5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561254b57600080fd5b8761255581612892565b151561256057600080fd5b73__BadgeLibrary__________________________63c1eabde98a6000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125ef5780820151818401526020810190506125d4565b50505050905090810190601f16801561261c5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561263857600080fd5b6102c65a03f4151561264957600080fd5b50505060405180519050955060016003600201805480600101828161266e9190614284565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061274d9291906142b0565b50604082015181600201908051906020019061276a9291906142b0565b5060608201518160030190805190602001906127879291906142b0565b5060808201518160040190805190602001906127a49291906142b0565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b8381101561284c578082015181840152602081019050612831565b50505050905090810190601f1680156128795780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008073__BadgeLibrary__________________________63c1eabde9846000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612924578082015181840152602081019050612909565b50505050905090810190601f1680156129515780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561296d57600080fd5b6102c65a03f4151561297e57600080fd5b505050604051805190509050600060036002018054905014806129e4575080600019166003600201600360010160008460001916600019168152602001908152602001600020548154811015156129d157fe5b9060005260206000209001546000191614155b915050919050565b60006129f6614270565b6129fe614270565b612a06614270565b612a0e614270565b612a166141e6565b866000600360020180549050118015612a7157508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515612a5f57fe5b90600052602060002090015460001916145b1515612a7c57600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b955780601f10612b6a57610100808354040283529160200191612b95565b820191906000526020600020905b815481529060010190602001808311612b7857829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c375780601f10612c0c57610100808354040283529160200191612c37565b820191906000526020600020905b815481529060010190602001808311612c1a57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cd95780601f10612cae57610100808354040283529160200191612cd9565b820191906000526020600020905b815481529060010190602001808311612cbc57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d7b5780601f10612d5057610100808354040283529160200191612d7b565b820191906000526020600020905b815481529060010190602001808311612d5e57829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612e775750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612ef457600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806130255750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156130a257600080fd5b73__BadgeLibrary__________________________63c1eabde9886000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613131578082015181840152602081019050613116565b50505050905090810190601f16801561315e5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561317a57600080fd5b6102c65a03f4151561318b57600080fd5b50505060405180519050945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156131d557fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561321957fe5b9060005260206000209001816000191690555060036002018054809190600190036132449190614330565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061329b919061435c565b6002820160006132ab919061435c565b6003820160006132bb919061435c565b6004820160006132cb919061435c565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015613360578082015181840152602081019050613345565b50505050905090810190601f16801561338d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806134535750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156134d057600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561361b57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b60006136e8614270565b60008060006136f787876120e9565b925092509250821561376e576000606060405190810160405280602681526020017f496e76616c69642063726564656e7469616c3a2063726564656e7469616c207281526020017f65766f6b65640000000000000000000000000000000000000000000000000000815250809050945094506138dc565b8015156138055780608060405190810160405280604581526020017f496e76616c696420726563697069656e743a20726563697069656e7420646f6581526020017f73206e6f74206d61746368206f726967696e616c207472616e73616374696f6e81526020017f2064617461000000000000000000000000000000000000000000000000000000815250809050945094506138dc565b81151561389c5781608060405190810160405280605381526020017f496e76616c6964206461746120696e746567726974793a206461746120696e2081526020017f63726564656e7469616c20646f6573206e6f74206d61746368206f726967696e81526020017f616c207472616e73616374696f6e206461746100000000000000000000000000815250809050945094506138dc565b60016040805190810160405280601381526020017f43726564656e7469616c2069732076616c696400000000000000000000000000815250809050945094505b5050509250929050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b602083101515613963578051825260208201915060208101905060208303925061393e565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b613a246141e6565b60006003600001600073__BadgeLibrary__________________________63c1eabde9896000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613abc578082015181840152602081019050613aa1565b50505050905090810190601f168015613ae95780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515613b0557600080fd5b6102c65a03f41515613b1657600080fd5b505050604051805190506000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613c315780601f10613c0657610100808354040283529160200191613c31565b820191906000526020600020905b815481529060010190602001808311613c1457829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613cd35780601f10613ca857610100808354040283529160200191613cd3565b820191906000526020600020905b815481529060010190602001808311613cb657829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613d755780601f10613d4a57610100808354040283529160200191613d75565b820191906000526020600020905b815481529060010190602001808311613d5857829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e175780601f10613dec57610100808354040283529160200191613e17565b820191906000526020600020905b815481529060010190602001808311613dfa57829003601f168201915b5050505050815250509150600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614151515613e6257600080fd5b8390508073ffffffffffffffffffffffffffffffffffffffff16634e3943e7836000015184602001518560400151866060015187608001518b8b8b6040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001866000191660001916815260200185810385528c818151815260200191508051906020019080838360005b83811015613f8c578082015181840152602081019050613f71565b50505050905090810190601f168015613fb95780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360005b83811015613ff2578082015181840152602081019050613fd7565b50505050905090810190601f16801561401f5780820380516001836020036101000a031916815260200191505b5085810383528a818151815260200191508051906020019080838360005b8381101561405857808201518184015260208101905061403d565b50505050905090810190601f1680156140855780820380516001836020036101000a031916815260200191505b50858103825289818151815260200191508051906020019080838360005b838110156140be5780820151818401526020810190506140a3565b50505050905090810190601f1680156140eb5780820380516001836020036101000a031916815260200191505b509c50505050505050505050505050600060405180830381600087803b151561411357600080fd5b6102c65a03f1151561412457600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff167fba451c931e2011b181517e87b4faa9ded9887fd9fdc41479f2e4ed86c0ce300183604001516040518080602001828103825283818151815260200191508051906020019080838360005b838110156141a4578082015181840152602081019050614189565b50505050905090810190601f1680156141d15780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016142176143a4565b81526020016142246143a4565b81526020016142316143a4565b815260200161423e6143a4565b81525090565b81548183558181151161426b5781836000526020600020918201910161426a91906143b8565b5b505050565b602060405190810160405280600081525090565b8154818355818115116142ab578183600052602060002091820191016142aa91906143dd565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106142f157805160ff191683800117855561431f565b8280016001018555821561431f579182015b8281111561431e578251825591602001919060010190614303565b5b50905061432c91906143b8565b5090565b8154818355818115116143575781836000526020600020918201910161435691906143dd565b5b505050565b50805460018160011615610100020316600290046000825580601f1061438257506143a1565b601f0160209004906000526020600020908101906143a091906143b8565b5b50565b602060405190810160405280600081525090565b6143da91905b808211156143d65760008160009055506001016143be565b5090565b90565b6143ff91905b808211156143fb5760008160009055506001016143e3565b5090565b905600a165627a7a72305820ec9398e859ecf218bf3262405c2fbd471a60c869a3e9fe9095602b3ac9117ebb0029", - "deployedBytecode": "0x60606040526004361061015f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a28581461016457806306fdde03146101ed5780630c43ae9c1461027b5780630decfdea146102d05780631041eb961461036057806324ddd51a146103f05780633557b6c314610419578063368a17091461047c5780633b57391a146105015780634294857f1461053a5780635600f04f146105795780635629aec91461060757806359c293f11461067b5780635a9b0b89146106ba5780635c9d3a941461081a57806372ee19a21461094057806377002fcf146109b55780637c59fda014610bcc578063a5aef15b14610bf5578063affed0e014610c1c578063b610922114610c45578063b75c7dc614610cba578063be47aa0914610ce1578063d8c0941b14610d1a578063eb92948114610de4578063f851a44014610e7c578063f9afc24214610ed1575b600080fd5b341561016f57600080fd5b6101eb60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610f5c565b005b34156101f857600080fd5b61020061184a565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610240578082015181840152602081019050610225565b50505050905090810190601f16801561026d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028657600080fd5b61028e6118e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102db57600080fd5b6102f560048080356000191690602001909190505061190e565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561036b57600080fd5b61038560048080356000191690602001909190505061196b565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b34156103fb57600080fd5b610403611a29565b6040518082815260200191505060405180910390f35b341561042457600080fd5b61043a6004808035906020019091905050611a39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561048757600080fd5b6104ff600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b16565b005b341561050c57600080fd5b610538600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d92565b005b341561054557600080fd5b61055f600480803560001916906020019091905050612016565b604051808215151515815260200191505060405180910390f35b341561058457600080fd5b61058c61204b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105cc5780820151818401526020810190506105b1565b50505050905090810190601f1680156105f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561061257600080fd5b61064b60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506120e9565b60405180841515151581526020018315151515815260200182151515158152602001935050505060405180910390f35b341561068657600080fd5b61069c6004808035906020019091905050612250565b60405180826000191660001916815260200191505060405180910390f35b34156106c557600080fd5b6106cd612277565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561077557808201518184015260208101905061075a565b50505050905090810190601f1680156107a25780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b838110156107db5780820151818401526020810190506107c0565b50505050905090810190601f1680156108085780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b341561082557600080fd5b61093e600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612419565b005b341561094b57600080fd5b61099b600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612892565b604051808215151515815260200191505060405180910390f35b34156109c057600080fd5b6109da6004808035600019169060200190919050506129ec565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b83811015610a58578082015181840152602081019050610a3d565b50505050905090810190601f168015610a855780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015610abe578082015181840152602081019050610aa3565b50505050905090810190601f168015610aeb5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610b24578082015181840152602081019050610b09565b50505050905090810190601f168015610b515780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610b8a578082015181840152602081019050610b6f565b50505050905090810190601f168015610bb75780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3415610bd757600080fd5b610bdf612dc0565b6040518082815260200191505060405180910390f35b3415610c0057600080fd5b610c1a600480803560001916906020019091905050612dcd565b005b3415610c2757600080fd5b610c2f612f6f565b6040518082815260200191505060405180910390f35b3415610c5057600080fd5b610ca0600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612f75565b604051808215151515815260200191505060405180910390f35b3415610cc557600080fd5b610cdf6004808035600019169060200190919050506133a9565b005b3415610cec57600080fd5b610d18600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061354b565b005b3415610d2557600080fd5b610d5e60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506136de565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610da8578082015181840152602081019050610d8d565b50505050905090810190601f168015610dd55780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3415610def57600080fd5b610e5e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506138e6565b60405180826000191660001916815260200191505060405180910390f35b3415610e8757600080fd5b610e8f6139a0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610edc57600080fd5b610f08600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506139c5565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610f666141e6565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806110125750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561108f57600080fd5b60076000815480929190600101919050555073__BadgeLibrary__________________________63c1eabde9876000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611130578082015181840152602081019050611115565b50505050905090810190601f16801561115d5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561117957600080fd5b6102c65a03f4151561118a57600080fd5b50505060405180519050945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112af5780601f10611284576101008083540402835291602001916112af565b820191906000526020600020905b81548152906001019060200180831161129257829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113515780601f1061132657610100808354040283529160200191611351565b820191906000526020600020905b81548152906001019060200180831161133457829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156113f35780601f106113c8576101008083540402835291602001916113f3565b820191906000526020600020905b8154815290600101906020018083116113d657829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114955780601f1061146a57610100808354040283529160200191611495565b820191906000526020600020905b81548152906001019060200180831161147857829003601f168201915b505050505081525050935073__BadgeLibrary__________________________631ddb6af6856000015186602001518760400151886060015189608001518d6000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b838110156115b857808201518184015260208101905061159d565b50505050905090810190601f1680156115e55780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b8381101561161e578082015181840152602081019050611603565b50505050905090810190601f16801561164b5780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b83811015611684578082015181840152602081019050611669565b50505050905090810190601f1680156116b15780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b838110156116ea5780820151818401526020810190506116cf565b50505050905090810190601f1680156117175780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b151561173b57600080fd5b6102c65a03f4151561174c57600080fd5b50505060405180519050925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118e05780601f106118b5576101008083540402835291602001916118e0565b820191906000526020600020905b8154815290600101906020018083116118c357829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b6000600360020180549050905090565b600060016000600284815481101515611a4e57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615611b0c57600282815481101515611ad957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611b11565b600090505b919050565b6000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611bc35750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611c4057600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be440ff56000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611cce57600080fd5b6102c65a03f11515611cdf57600080fd5b505050604051805190501515611cf457600080fd5b600085111515611d0657849350611d11565b62093a808502420193505b611d70600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506138e6565b9250611d7e87858886613a1c565b611d89838789610f5c565b50505050505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611e6257600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff168152602001600160028054806001018281611ea09190614244565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120e15780601f106120b6576101008083540402835291602001916120e1565b820191906000526020600020905b8154815290600101906020018083116120c457829003601f168201915b505050505081565b60008060008060008060008060006121008b61196b565b9550955095509550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561214d576001600080985098509850612243565b82156121625782600080985098509850612243565b8991508173ffffffffffffffffffffffffffffffffffffffff16636bcdaa33876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156121e457600080fd5b6102c65a03f115156121f557600080fd5b5050506040518051905090508285600019168260001916148573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16149850985098505b5050505050509250925092565b600060036002018281548110151561226457fe5b9060005260206000209001549050919050565b600080612282614270565b61228a614270565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a600b818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123685780601f1061233d57610100808354040283529160200191612368565b820191906000526020600020905b81548152906001019060200180831161234b57829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124045780601f106123d957610100808354040283529160200191612404565b820191906000526020600020905b8154815290600101906020018083116123e757829003601f168201915b50505050509050935093509350935090919293565b6000806124246141e6565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806124ce5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561254b57600080fd5b8761255581612892565b151561256057600080fd5b73__BadgeLibrary__________________________63c1eabde98a6000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125ef5780820151818401526020810190506125d4565b50505050905090810190601f16801561261c5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561263857600080fd5b6102c65a03f4151561264957600080fd5b50505060405180519050955060016003600201805480600101828161266e9190614284565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061274d9291906142b0565b50604082015181600201908051906020019061276a9291906142b0565b5060608201518160030190805190602001906127879291906142b0565b5060808201518160040190805190602001906127a49291906142b0565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b8381101561284c578082015181840152602081019050612831565b50505050905090810190601f1680156128795780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008073__BadgeLibrary__________________________63c1eabde9846000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612924578082015181840152602081019050612909565b50505050905090810190601f1680156129515780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561296d57600080fd5b6102c65a03f4151561297e57600080fd5b505050604051805190509050600060036002018054905014806129e4575080600019166003600201600360010160008460001916600019168152602001908152602001600020548154811015156129d157fe5b9060005260206000209001546000191614155b915050919050565b60006129f6614270565b6129fe614270565b612a06614270565b612a0e614270565b612a166141e6565b866000600360020180549050118015612a7157508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515612a5f57fe5b90600052602060002090015460001916145b1515612a7c57600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b955780601f10612b6a57610100808354040283529160200191612b95565b820191906000526020600020905b815481529060010190602001808311612b7857829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c375780601f10612c0c57610100808354040283529160200191612c37565b820191906000526020600020905b815481529060010190602001808311612c1a57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cd95780601f10612cae57610100808354040283529160200191612cd9565b820191906000526020600020905b815481529060010190602001808311612cbc57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d7b5780601f10612d5057610100808354040283529160200191612d7b565b820191906000526020600020905b815481529060010190602001808311612d5e57829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612e775750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612ef457600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806130255750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156130a257600080fd5b73__BadgeLibrary__________________________63c1eabde9886000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613131578082015181840152602081019050613116565b50505050905090810190601f16801561315e5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561317a57600080fd5b6102c65a03f4151561318b57600080fd5b50505060405180519050945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156131d557fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561321957fe5b9060005260206000209001816000191690555060036002018054809190600190036132449190614330565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061329b919061435c565b6002820160006132ab919061435c565b6003820160006132bb919061435c565b6004820160006132cb919061435c565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015613360578082015181840152602081019050613345565b50505050905090810190601f16801561338d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806134535750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156134d057600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561361b57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b60006136e8614270565b60008060006136f787876120e9565b925092509250821561376e576000606060405190810160405280602681526020017f496e76616c69642063726564656e7469616c3a2063726564656e7469616c207281526020017f65766f6b65640000000000000000000000000000000000000000000000000000815250809050945094506138dc565b8015156138055780608060405190810160405280604581526020017f496e76616c696420726563697069656e743a20726563697069656e7420646f6581526020017f73206e6f74206d61746368206f726967696e616c207472616e73616374696f6e81526020017f2064617461000000000000000000000000000000000000000000000000000000815250809050945094506138dc565b81151561389c5781608060405190810160405280605381526020017f496e76616c6964206461746120696e746567726974793a206461746120696e2081526020017f63726564656e7469616c20646f6573206e6f74206d61746368206f726967696e81526020017f616c207472616e73616374696f6e206461746100000000000000000000000000815250809050945094506138dc565b60016040805190810160405280601381526020017f43726564656e7469616c2069732076616c696400000000000000000000000000815250809050945094505b5050509250929050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b602083101515613963578051825260208201915060208101905060208303925061393e565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b613a246141e6565b60006003600001600073__BadgeLibrary__________________________63c1eabde9896000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613abc578082015181840152602081019050613aa1565b50505050905090810190601f168015613ae95780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515613b0557600080fd5b6102c65a03f41515613b1657600080fd5b505050604051805190506000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613c315780601f10613c0657610100808354040283529160200191613c31565b820191906000526020600020905b815481529060010190602001808311613c1457829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613cd35780601f10613ca857610100808354040283529160200191613cd3565b820191906000526020600020905b815481529060010190602001808311613cb657829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613d755780601f10613d4a57610100808354040283529160200191613d75565b820191906000526020600020905b815481529060010190602001808311613d5857829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613e175780601f10613dec57610100808354040283529160200191613e17565b820191906000526020600020905b815481529060010190602001808311613dfa57829003601f168201915b5050505050815250509150600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614151515613e6257600080fd5b8390508073ffffffffffffffffffffffffffffffffffffffff16634e3943e7836000015184602001518560400151866060015187608001518b8b8b6040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001866000191660001916815260200185810385528c818151815260200191508051906020019080838360005b83811015613f8c578082015181840152602081019050613f71565b50505050905090810190601f168015613fb95780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360005b83811015613ff2578082015181840152602081019050613fd7565b50505050905090810190601f16801561401f5780820380516001836020036101000a031916815260200191505b5085810383528a818151815260200191508051906020019080838360005b8381101561405857808201518184015260208101905061403d565b50505050905090810190601f1680156140855780820380516001836020036101000a031916815260200191505b50858103825289818151815260200191508051906020019080838360005b838110156140be5780820151818401526020810190506140a3565b50505050905090810190601f1680156140eb5780820380516001836020036101000a031916815260200191505b509c50505050505050505050505050600060405180830381600087803b151561411357600080fd5b6102c65a03f1151561412457600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff167fba451c931e2011b181517e87b4faa9ded9887fd9fdc41479f2e4ed86c0ce300183604001516040518080602001828103825283818151815260200191508051906020019080838360005b838110156141a4578082015181840152602081019050614189565b50505050905090810190601f1680156141d15780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016142176143a4565b81526020016142246143a4565b81526020016142316143a4565b815260200161423e6143a4565b81525090565b81548183558181151161426b5781836000526020600020918201910161426a91906143b8565b5b505050565b602060405190810160405280600081525090565b8154818355818115116142ab578183600052602060002091820191016142aa91906143dd565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106142f157805160ff191683800117855561431f565b8280016001018555821561431f579182015b8281111561431e578251825591602001919060010190614303565b5b50905061432c91906143b8565b5090565b8154818355818115116143575781836000526020600020918201910161435691906143dd565b5b505050565b50805460018160011615610100020316600290046000825580601f1061438257506143a1565b601f0160209004906000526020600020908101906143a091906143b8565b5b50565b602060405190810160405280600081525090565b6143da91905b808211156143d65760008160009055506001016143be565b5090565b90565b6143ff91905b808211156143fb5760008160009055506001016143e3565b5090565b905600a165627a7a72305820ec9398e859ecf218bf3262405c2fbd471a60c869a3e9fe9095602b3ac9117ebb0029", - "sourceMap": "182:2539:3:-;;;506:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:16;908::6;555::5;548::1;601::0;593:5;;:24;;;;;;;;;;;;;;;;;;524:100;476:92:1;591:1:5;583:5;:9;;;;481:118;838:90:6;642:5:3;635:4;:12;;;;;;;;;;;;:::i;:::-;;663:4;657:3;:10;;;;;;;;;;;;:::i;:::-;;702:4;677:14;;:30;;;;;;;;;;;;;;;;;;739:6;717:3;;:29;;;;;;;;;;;;;;;;;;506:247;;;;182:2539;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "182:2539:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;449:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;412:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;396:54:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:129:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1168:568:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2975:125:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;473:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1736:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4395:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2555:163:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1892:669:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;710:284;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3782:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2761:161:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;457:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:673:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:156:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;942:564:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:154:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;109:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669:5;972:21;1047:31;;:::i;:::-;1123:21;892:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;955:5:5;;:7;;;;;;;;;;;;;996:12;:29;1026:10;996:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;972:65:5;;1081:10;:17;;:32;1099:13;1081:32;;;;;;;;;;;;;;;;;1047:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:12;:29;1190:5;:12;;;1217:5;:17;;;1249:5;:10;;;1274:5;:11;;;1300:5;:13;;;1328:10;1147:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1123:226:5;;1387:54;;;;;;;;;1399:7;1387:54;;;;;;;1408:13;1387:54;;;;;;;1423:10;1387:54;;;;;;1435:5;1387:54;;;;;1359:16;:25;1376:7;1359:25;;;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669;;;;;;;;:::o;449:18:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;412:29::-;;;;;;;;;;;;;:::o;396:54:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1779:354::-;1836:14;1852:21;1875:17;1894:12;1938:16;:25;1955:7;1938:25;;;;;;;;;;;;;;;;;:29;;;1981:16;:25;1998:7;1981:25;;;;;;;;;;;;;;;;;:39;;;2034:16;:25;2051:7;2034:25;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;2083:16;:25;2100:7;2083:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;1918:208;;;;;;;;1779:354;;;;;:::o;3468:129:1:-;3525:10;3558;:25;;:32;;;;3551:39;;3468:129;:::o;2378:272:0:-;2441:15;2472:21;:53;2494:22;2517:6;2494:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:53;;;;;;;;;;;;;;;:66;;;;;;;;;;;;2468:176;;;2561:22;2584:6;2561:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:37;;;;2468:176;160:42;2622:11;;2378:272;;;;:::o;1168:568:3:-;1327:12;1487:15;1287:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;800:3:3;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;792:27;;;;;;;;1365:1;1353:8;:13;;1349:129;;;1392:8;1382:18;;1349:129;;;1459:7;1448:8;:18;1441:3;:26;1431:36;;1349:129;1505:45;1525:14;;;;;;;;;;;1541:8;;1505:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;:45::i;:::-;1487:63;;1560:118;1590:10;1615:7;1637:10;1661:7;1560:16;:118::i;:::-;1687:42;1697:7;1706:10;1718;1687:9;:42::i;:::-;1168:568;;;;;;;:::o;1500:247:0:-;1562:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;1620:78;;;;;;;;;1638:10;1620:78;;;;;;1690:1;1650:22;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:10;1650:39;;;;;;;;;;;;;;;;;;;;;;:41;1620:78;;;;1693:4;1620:78;;;;;1584:21;:33;1606:10;1584:33;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:32;1729:10;1708:32;;;;;;;;;;;;;;;;;;;;;;1500:247;;;:::o;2975:125:5:-;3035:6;3060:16;:25;3077:7;3060:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;3053:40;;2975:125;;;:::o;473:17:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1736:618:6:-;1826:13;1842:24;1868:20;1905:3;1910:13;1925:9;1936:7;2130:13;2174:22;1947:15;1954:7;1947:6;:15::i;:::-;1900:62;;;;;;;;785:42;1977:17;;:9;:17;;;1973:147;;;2017:4;2023:5;2030;2010:26;;;;;;;;1973:147;2057:7;2053:67;;;2087:7;2096:5;2103;2080:29;;;;;;;;2053:67;2153:10;2130:34;;2199:6;:23;;;2223:3;2199:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2174:53;;2244:7;2284:13;2266:31;;;:14;:31;;;;2327:9;2313:23;;:10;:23;;;2237:110;;;;;;1736:618;;;;;;;;;;;;:::o;4395:133:1:-;4456:13;4488:10;:25;;4514:6;4488:33;;;;;;;;;;;;;;;;;;;4481:40;;4395:133;;;:::o;2555:163:3:-;2598:15;2615:17;2634:12;;:::i;:::-;2648:11;;:::i;:::-;2678:5;;;;;;;;;;;2685:14;;;;;;;;;;;2701:4;2707:3;2671:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2555:163;;;;:::o;1892:669:1:-;2088:21;2158:10;2228:31;;:::i;:::-;2032:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2056:5:1;670:15;679:5;670:8;:15::i;:::-;662:24;;;;;;;;2112:12;:29;2142:5;2112:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2088:60:1;;2217:1;2171:10;:25;;:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;2202:13;2171:45;;;;;;;;;;;:47;2158:60;;2262:142;;;;;;;;;2302:4;2262:142;;;;;;2321:12;2262:142;;;;2347:5;2262:142;;;;2366:6;2262:142;;;;2386:8;2262:142;;;2228:176;;2449:5;2414:10;:17;;:32;2432:13;2414:32;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2501:5;2464:10;:19;;:34;2484:13;2464:34;;;;;;;;;;;;;;;;;:42;;;;2541:5;:12;;;2516:38;;;2529:5;:10;;;2516:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:1:0;1892:669:1;;;;;;;;;:::o;710:284::-;766:11;789:21;813:12;:29;843:5;813:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;789:60:1;;903:1;867:10;:25;;:32;;;;:37;:119;;;;973:13;908:78;;;:10;:25;;934:10;:19;;:34;954:13;934:34;;;;;;;;;;;;;;;;;;908:61;;;;;;;;;;;;;;;;;;;:78;;;;;867:119;859:128;;710:284;;;;:::o;3782:472::-;3893:14;3917:18;;:::i;:::-;3945:12;;:::i;:::-;3967;;:::i;:::-;3989:14;;:::i;:::-;4020:31;;:::i;:::-;3844:14;1470:1;1435:10;:25;;:32;;;;:36;:120;;;;;1541:14;1475:80;;;:10;:25;;1501:10;:19;;:35;1521:14;1501:35;;;;;;;;;;;;;;;;;;1475:62;;;;;;;;;;;;;;;;;;;:80;;;;1435:120;1427:129;;;;;;;;4054:10;:17;;:33;4072:14;4054:33;;;;;;;;;;;;;;;;;4020:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4118:5;:12;;;4144:5;:17;;;4175:5;:10;;;4199:5;:11;;;4224:5;:13;;;4097:150;;;;;;;;;;;;;;;;;;;;;;3782:472;;;;;;;;;:::o;2790:135:0:-;2851:19;2889:22;:29;;;;2882:36;;2790:135;:::o;2761:161:5:-;2814:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2872:5:5;2836:16;:25;2853:7;2836:25;;;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;2887:28;2907:7;2887:28;;;;;;;;;;;;;;;;;;;;;;;;2761:161;;;:::o;457:17::-;;;;:::o;2656:673:1:-;2737:12;2765:21;2835:16;2898:17;2706:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2789:12:1;:29;2819:5;2789:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:60:1;;2854:10;:19;;:34;2874:13;2854:34;;;;;;;;;;;;;;;;;;2835:53;;2918:10;:25;;2977:1;2944:10;:25;;:32;;;;:34;2918:61;;;;;;;;;;;;;;;;;;;2898:81;;3022:11;2989:10;:19;;:30;3009:9;2989:30;;;;;;;;;;;;;;;;;:44;;;;3084:9;3043:10;:25;;3069:11;3043:38;;;;;;;;;;;;;;;;;;:50;;;;;;;3103:10;:25;;:34;;;;;;;;;;;;:::i;:::-;;3154:10;:17;;:32;3172:13;3154:32;;;;;;;;;;;;;;;;;;3147:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;3203:10;:19;;:34;3223:13;3203:34;;;;;;;;;;;;;;;;;3196:41;;;3248:53;3261:5;3268:10;:25;;:32;;;;3248:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3318:4:1;3311:11;;2656:673;;;;;;;;:::o;2513:156:5:-;2564:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2622:4:5;2586:16;:25;2603:7;2586:25;;;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;2636:26;2654:7;2636:26;;;;;;;;;;;;;;;;;;;;;;;;2513:156;;;:::o;1945:190:0:-;2012:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;2080:5;2034:21;:30;2056:7;2034:30;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;2095:33;2120:7;2095:33;;;;;;;;;;;;;;;;;;;;;;1945:190;;;:::o;942:564:6:-;1029:15;1046:13;;:::i;:::-;1076:8;1086:19;1107:15;1126:40;1146:7;1155:10;1126:19;:40::i;:::-;1071:95;;;;;;1180:8;1176:324;;;1211:5;1218:7;;;;;;;;;;;;;;;;;;;;;;;1204:22;;;;;;;;;1176:324;1248:15;1247:16;1243:257;;;1286:15;1303:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;1279:42;;;;;;;;;1243:257;1343:19;1342:20;1338:162;;;1385:19;1406:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;1378:50;;;;;;;;;1338:162;1466:4;1472:16;;;;;;;;;;;;;;;;;;1459:30;;;;;;;942:564;;;;;;;;;:::o;2271:154:5:-;2353:11;2393:7;2402:8;2412:5;;2383:35;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;2376:42:5;;2271:154;;;;:::o;109:20:0:-;;;;;;;;;;;;;:::o;370:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1841:672:3:-;2003:31;;:::i;:::-;2146:13;2037:10;:17;;:60;2055:12;:29;2085:10;2055:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2037:60:3;;;;;;;;;;;;;;;;;2003:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;317:42;2115:20;;:5;:12;;;:20;;;;2107:29;;;;;;;;2169:10;2146:34;;2190:6;:22;;;2226:5;:12;;;2252:5;:17;;;2283:5;:10;;;2307:5;:11;;;2332:5;:13;;;2359:7;2380:10;2405:7;2190:232;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2486:10:3;2432:74;;;2462:5;:10;;;2432:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1841:672:3;;;;;;:::o;182:2539::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.17;\n\nimport \"BadgeLibrary/contracts/BadgeLibrary.sol\";\nimport \"BadgeForceToken/contracts/BadgeForceToken.sol\";\n\nimport \"./Holder.sol\";\nimport \"./Verifier.sol\";\n\ncontract Issuer is Verifier {\n //access the badgeforce token contract\n BadgeForceToken private BFT;\n\n address constant NONE = 0x0000000000000000000000000000000000000000;\n \n /// @notice address of this contract \n address public issuerContract; \n\n string public name;\n string public url;\n \n \n function Issuer(address _adminWalletAddr, string _name, string _url, address _token) public Verifier(_adminWalletAddr) {\n name = _name;\n url = _url;\n issuerContract = address(this);\n BFT = BadgeForceToken(_token);\n }\n\n modifier payForIssue() {\n require(BFT.burnForIssue());\n _;\n }\n\n event CredentialIssued(\n string _badgeName,\n address indexed _recipient\n );\n /// @notice issue a new credential to a recipient contract\n /// @param _badgeName name of the badge to issue \n /// @param _recipient address of the holder contract\n /// @param _expires expire date (number of weeks)\n function issue(\n string _badgeName, \n address _recipient, \n uint _expires) \n public authorized(msg.sender) payForIssue()\n {\n uint expires;\n if (_expires <= 0) {\n expires = _expires;\n } else {\n expires = now + (_expires * 1 weeks);\n }\n bytes32 _txnKey = getCredentialTxnKey(issuerContract, msg.data);\n _sendToRecipient(\n _badgeName, \n expires, \n _recipient,\n _txnKey\n );\n setNewTxn(_txnKey, _recipient, _badgeName);\n }\n \n /// @notice internal method that gets instance of recipient contract and stores credential\n function _sendToRecipient(\n string _badgeName, \n uint expires, \n address _recipient, \n bytes32 _txnKey\n ) private\n { \n BadgeLibrary.Badge memory badge = badgeVault.badges[BadgeLibrary.getBadgeNameHash(_badgeName)];\n require(badge.issuer != NONE);\n Holder holder = Holder(_recipient);\n holder.storeCredential(\n badge.issuer,\n badge.description,\n badge.name,\n badge.image,\n badge.version,\n expires,\n _recipient, \n _txnKey\n );\n CredentialIssued(\n badge.name,\n _recipient\n );\n }\n \n /// @notice get issuer info\n function getInfo() public constant returns(address _issuer, address _contract, string _name, string _url) {\n return(admin, issuerContract, name, url);\n }\n\n}", + "bytecode": "0x606060405234156200001057600080fd5b604051620044e5380380620044e58339810160405280805190602001909190805182019190602001805182019190602001805190602001909190505083808080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000600781905550505082600a9080519060200190620000b49291906200015a565b5081600b9080519060200190620000cd9291906200015a565b5030600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000209565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019d57805160ff1916838001178555620001ce565b82800160010185558215620001ce579182015b82811115620001cd578251825591602001919060010190620001b0565b5b509050620001dd9190620001e1565b5090565b6200020691905b8082111562000202576000816000905550600101620001e8565b5090565b90565b6142cc80620002196000396000f300606060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a28581461018557806306fdde031461020e5780630c43ae9c1461029c5780630decfdea146102f15780631041eb9614610381578063164f0a4e146104115780631ddb6af6146104a957806324ddd51a146106295780633557b6c314610652578063368a1709146106b55780633b57391a1461073a5780634294857f146107735780635600f04f146107b25780635629aec91461084057806359c293f1146108b45780635a9b0b89146108f35780635c9d3a9414610a5357806372ee19a214610b7957806377002fcf14610bee5780637c59fda014610e05578063a5aef15b14610e2e578063affed0e014610e55578063b610922114610e7e578063b75c7dc614610ef3578063be47aa0914610f1a578063c1eabde914610f53578063d8c0941b14610fcc578063eb92948114611096578063f851a4401461112e578063f9afc24214611183575b600080fd5b341561019057600080fd5b61020c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061120e565b005b341561021957600080fd5b61022161177e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610261578082015181840152602081019050610246565b50505050905090810190601f16801561028e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102a757600080fd5b6102af61181c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102fc57600080fd5b610316600480803560001916906020019091905050611842565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561038c57600080fd5b6103a660048080356000191690602001909190505061189f565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561041c57600080fd5b61048b600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061195d565b60405180826000191660001916815260200191505060405180910390f35b34156104b457600080fd5b61060b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a0d565b60405180826000191660001916815260200191505060405180910390f35b341561063457600080fd5b61063c611c03565b6040518082815260200191505060405180910390f35b341561065d57600080fd5b6106736004808035906020019091905050611c13565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106c057600080fd5b610738600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611cf0565b005b341561074557600080fd5b610771600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f6c565b005b341561077e57600080fd5b6107986004808035600019169060200190919050506121f0565b604051808215151515815260200191505060405180910390f35b34156107bd57600080fd5b6107c5612225565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108055780820151818401526020810190506107ea565b50505050905090810190601f1680156108325780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561084b57600080fd5b61088460048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506122c3565b60405180841515151581526020018315151515815260200182151515158152602001935050505060405180910390f35b34156108bf57600080fd5b6108d5600480803590602001909190505061242a565b60405180826000191660001916815260200191505060405180910390f35b34156108fe57600080fd5b610906612451565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156109ae578082015181840152602081019050610993565b50505050905090810190601f1680156109db5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015610a145780820151818401526020810190506109f9565b50505050905090810190601f168015610a415780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b3415610a5e57600080fd5b610b77600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506125f3565b005b3415610b8457600080fd5b610bd4600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612982565b604051808215151515815260200191505060405180910390f35b3415610bf957600080fd5b610c136004808035600019169060200190919050506129f2565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b83811015610c91578082015181840152602081019050610c76565b50505050905090810190601f168015610cbe5780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015610cf7578082015181840152602081019050610cdc565b50505050905090810190601f168015610d245780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610d5d578082015181840152602081019050610d42565b50505050905090810190601f168015610d8a5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610dc3578082015181840152602081019050610da8565b50505050905090810190601f168015610df05780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3415610e1057600080fd5b610e18612dc6565b6040518082815260200191505060405180910390f35b3415610e3957600080fd5b610e53600480803560001916906020019091905050612dd3565b005b3415610e6057600080fd5b610e68612f75565b6040518082815260200191505060405180910390f35b3415610e8957600080fd5b610ed9600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612f7b565b604051808215151515815260200191505060405180910390f35b3415610efe57600080fd5b610f186004808035600019169060200190919050506132c5565b005b3415610f2557600080fd5b610f51600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613467565b005b3415610f5e57600080fd5b610fae600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506135fa565b60405180826000191660001916815260200191505060405180910390f35b3415610fd757600080fd5b61101060048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613666565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561105a57808201518184015260208101905061103f565b50505050905090810190601f1680156110875780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34156110a157600080fd5b611110600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061386e565b60405180826000191660001916815260200191505060405180910390f35b341561113957600080fd5b611141613928565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561118e57600080fd5b6111ba600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061394d565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000611218614084565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806112c45750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561134157600080fd5b60076000815480929190600101919050555061135c866135fa565b945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114775780601f1061144c57610100808354040283529160200191611477565b820191906000526020600020905b81548152906001019060200180831161145a57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115195780601f106114ee57610100808354040283529160200191611519565b820191906000526020600020905b8154815290600101906020018083116114fc57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115bb5780601f10611590576101008083540402835291602001916115bb565b820191906000526020600020905b81548152906001019060200180831161159e57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561165d5780601f106116325761010080835404028352916020019161165d565b820191906000526020600020905b81548152906001019060200180831161164057829003601f168201915b505050505081525050935061168a846000015185602001518660400151876060015188608001518c611a0d565b925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118145780601f106117e957610100808354040283529160200191611814565b820191906000526020600020905b8154815290600101906020018083116117f757829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b600082826040518083805190602001908083835b6020831015156119965780518252602082019150602081019050602083039250611971565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905092915050565b6000868686868686604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186805190602001908083835b602083101515611a8b5780518252602082019150602081019050602083039250611a66565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515611ade5780518252602082019150602081019050602083039250611ab9565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515611b315780518252602082019150602081019050602083039250611b0c565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515611b845780518252602082019150602081019050602083039250611b5f565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019650505050505050604051809103902090509695505050505050565b6000600360020180549050905090565b600060016000600284815481101515611c2857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615611ce657600282815481101515611cb357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611ceb565b600090505b919050565b6000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611d9d5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611e1a57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be440ff56000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611ea857600080fd5b6102c65a03f11515611eb957600080fd5b505050604051805190501515611ece57600080fd5b600085111515611ee057849350611eeb565b62093a808502420193505b611f4a600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061386e565b9250611f58878588866139a4565b611f6383878961120e565b50505050505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561203c57600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff16815260200160016002805480600101828161207a91906140e2565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122bb5780601f10612290576101008083540402835291602001916122bb565b820191906000526020600020905b81548152906001019060200180831161229e57829003601f168201915b505050505081565b60008060008060008060008060006122da8b61189f565b9550955095509550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561232757600160008098509850985061241d565b821561233c578260008098509850985061241d565b8991508173ffffffffffffffffffffffffffffffffffffffff16636bcdaa33876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156123be57600080fd5b6102c65a03f115156123cf57600080fd5b5050506040518051905090508285600019168260001916148573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16149850985098505b5050505050509250925092565b600060036002018281548110151561243e57fe5b9060005260206000209001549050919050565b60008061245c61410e565b61246461410e565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a600b818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125425780601f1061251757610100808354040283529160200191612542565b820191906000526020600020905b81548152906001019060200180831161252557829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125de5780601f106125b3576101008083540402835291602001916125de565b820191906000526020600020905b8154815290600101906020018083116125c157829003601f168201915b50505050509050935093509350935090919293565b6000806125fe614084565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806126a85750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561272557600080fd5b8761272f81612982565b151561273a57600080fd5b612743896135fa565b955060016003600201805480600101828161275e9190614122565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061283d92919061414e565b50604082015181600201908051906020019061285a92919061414e565b50606082015181600301908051906020019061287792919061414e565b50608082015181600401908051906020019061289492919061414e565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b8381101561293c578082015181840152602081019050612921565b50505050905090810190601f1680156129695780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008061298e836135fa565b9050600060036002018054905014806129ea575080600019166003600201600360010160008460001916600019168152602001908152602001600020548154811015156129d757fe5b9060005260206000209001546000191614155b915050919050565b60006129fc61410e565b612a0461410e565b612a0c61410e565b612a1461410e565b612a1c614084565b866000600360020180549050118015612a7757508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515612a6557fe5b90600052602060002090015460001916145b1515612a8257600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b9b5780601f10612b7057610100808354040283529160200191612b9b565b820191906000526020600020905b815481529060010190602001808311612b7e57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c3d5780601f10612c1257610100808354040283529160200191612c3d565b820191906000526020600020905b815481529060010190602001808311612c2057829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cdf5780601f10612cb457610100808354040283529160200191612cdf565b820191906000526020600020905b815481529060010190602001808311612cc257829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d815780601f10612d5657610100808354040283529160200191612d81565b820191906000526020600020905b815481529060010190602001808311612d6457829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612e7d5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612efa57600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061302b5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156130a857600080fd5b6130b1876135fa565b945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156130f157fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561313557fe5b90600052602060002090018160001916905550600360020180548091906001900361316091906141ce565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006131b791906141fa565b6002820160006131c791906141fa565b6003820160006131d791906141fa565b6004820160006131e791906141fa565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561327c578082015181840152602081019050613261565b50505050905090810190601f1680156132a95780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061336f5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156133ec57600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561353757600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000816040518082805190602001908083835b602083101515613632578051825260208201915060208101905060208303925061360d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b600061367061410e565b600080600061367f87876122c3565b92509250925082156136f6576000606060405190810160405280602681526020017f496e76616c69642063726564656e7469616c3a2063726564656e7469616c207281526020017f65766f6b6564000000000000000000000000000000000000000000000000000081525080905094509450613864565b80151561378d5780608060405190810160405280604581526020017f496e76616c696420726563697069656e743a20726563697069656e7420646f6581526020017f73206e6f74206d61746368206f726967696e616c207472616e73616374696f6e81526020017f206461746100000000000000000000000000000000000000000000000000000081525080905094509450613864565b8115156138245781608060405190810160405280605381526020017f496e76616c6964206461746120696e746567726974793a206461746120696e2081526020017f63726564656e7469616c20646f6573206e6f74206d61746368206f726967696e81526020017f616c207472616e73616374696f6e20646174610000000000000000000000000081525080905094509450613864565b60016040805190810160405280601381526020017f43726564656e7469616c2069732076616c696400000000000000000000000000815250809050945094505b5050509250929050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b6020831015156138eb57805182526020820191506020810190506020830392506138c6565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b6139ac614084565b6000600360000160006139be886135fa565b6000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613acf5780601f10613aa457610100808354040283529160200191613acf565b820191906000526020600020905b815481529060010190602001808311613ab257829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613b715780601f10613b4657610100808354040283529160200191613b71565b820191906000526020600020905b815481529060010190602001808311613b5457829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613c135780601f10613be857610100808354040283529160200191613c13565b820191906000526020600020905b815481529060010190602001808311613bf657829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613cb55780601f10613c8a57610100808354040283529160200191613cb5565b820191906000526020600020905b815481529060010190602001808311613c9857829003601f168201915b5050505050815250509150600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614151515613d0057600080fd5b8390508073ffffffffffffffffffffffffffffffffffffffff16634e3943e7836000015184602001518560400151866060015187608001518b8b8b6040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001866000191660001916815260200185810385528c818151815260200191508051906020019080838360005b83811015613e2a578082015181840152602081019050613e0f565b50505050905090810190601f168015613e575780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360005b83811015613e90578082015181840152602081019050613e75565b50505050905090810190601f168015613ebd5780820380516001836020036101000a031916815260200191505b5085810383528a818151815260200191508051906020019080838360005b83811015613ef6578082015181840152602081019050613edb565b50505050905090810190601f168015613f235780820380516001836020036101000a031916815260200191505b50858103825289818151815260200191508051906020019080838360005b83811015613f5c578082015181840152602081019050613f41565b50505050905090810190601f168015613f895780820380516001836020036101000a031916815260200191505b509c50505050505050505050505050600060405180830381600087803b1515613fb157600080fd5b6102c65a03f11515613fc257600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff167fba451c931e2011b181517e87b4faa9ded9887fd9fdc41479f2e4ed86c0ce300183604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015614042578082015181840152602081019050614027565b50505050905090810190601f16801561406f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016140b5614242565b81526020016140c2614242565b81526020016140cf614242565b81526020016140dc614242565b81525090565b815481835581811511614109578183600052602060002091820191016141089190614256565b5b505050565b602060405190810160405280600081525090565b81548183558181151161414957818360005260206000209182019101614148919061427b565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061418f57805160ff19168380011785556141bd565b828001600101855582156141bd579182015b828111156141bc5782518255916020019190600101906141a1565b5b5090506141ca9190614256565b5090565b8154818355818115116141f5578183600052602060002091820191016141f4919061427b565b5b505050565b50805460018160011615610100020316600290046000825580601f10614220575061423f565b601f01602090049060005260206000209081019061423e9190614256565b5b50565b602060405190810160405280600081525090565b61427891905b8082111561427457600081600090555060010161425c565b5090565b90565b61429d91905b80821115614299576000816000905550600101614281565b5090565b905600a165627a7a72305820ff7e4699b2fe2712df3ea254a81f8a5e208758a4ec2d372f105b81724e39788d0029", + "deployedBytecode": "0x606060405260043610610180576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a28581461018557806306fdde031461020e5780630c43ae9c1461029c5780630decfdea146102f15780631041eb9614610381578063164f0a4e146104115780631ddb6af6146104a957806324ddd51a146106295780633557b6c314610652578063368a1709146106b55780633b57391a1461073a5780634294857f146107735780635600f04f146107b25780635629aec91461084057806359c293f1146108b45780635a9b0b89146108f35780635c9d3a9414610a5357806372ee19a214610b7957806377002fcf14610bee5780637c59fda014610e05578063a5aef15b14610e2e578063affed0e014610e55578063b610922114610e7e578063b75c7dc614610ef3578063be47aa0914610f1a578063c1eabde914610f53578063d8c0941b14610fcc578063eb92948114611096578063f851a4401461112e578063f9afc24214611183575b600080fd5b341561019057600080fd5b61020c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061120e565b005b341561021957600080fd5b61022161177e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610261578082015181840152602081019050610246565b50505050905090810190601f16801561028e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102a757600080fd5b6102af61181c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102fc57600080fd5b610316600480803560001916906020019091905050611842565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561038c57600080fd5b6103a660048080356000191690602001909190505061189f565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561041c57600080fd5b61048b600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061195d565b60405180826000191660001916815260200191505060405180910390f35b34156104b457600080fd5b61060b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611a0d565b60405180826000191660001916815260200191505060405180910390f35b341561063457600080fd5b61063c611c03565b6040518082815260200191505060405180910390f35b341561065d57600080fd5b6106736004808035906020019091905050611c13565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106c057600080fd5b610738600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611cf0565b005b341561074557600080fd5b610771600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f6c565b005b341561077e57600080fd5b6107986004808035600019169060200190919050506121f0565b604051808215151515815260200191505060405180910390f35b34156107bd57600080fd5b6107c5612225565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156108055780820151818401526020810190506107ea565b50505050905090810190601f1680156108325780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561084b57600080fd5b61088460048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506122c3565b60405180841515151581526020018315151515815260200182151515158152602001935050505060405180910390f35b34156108bf57600080fd5b6108d5600480803590602001909190505061242a565b60405180826000191660001916815260200191505060405180910390f35b34156108fe57600080fd5b610906612451565b604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156109ae578082015181840152602081019050610993565b50505050905090810190601f1680156109db5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015610a145780820151818401526020810190506109f9565b50505050905090810190601f168015610a415780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b3415610a5e57600080fd5b610b77600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506125f3565b005b3415610b8457600080fd5b610bd4600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612982565b604051808215151515815260200191505060405180910390f35b3415610bf957600080fd5b610c136004808035600019169060200190919050506129f2565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b83811015610c91578082015181840152602081019050610c76565b50505050905090810190601f168015610cbe5780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015610cf7578082015181840152602081019050610cdc565b50505050905090810190601f168015610d245780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b83811015610d5d578082015181840152602081019050610d42565b50505050905090810190601f168015610d8a5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610dc3578082015181840152602081019050610da8565b50505050905090810190601f168015610df05780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3415610e1057600080fd5b610e18612dc6565b6040518082815260200191505060405180910390f35b3415610e3957600080fd5b610e53600480803560001916906020019091905050612dd3565b005b3415610e6057600080fd5b610e68612f75565b6040518082815260200191505060405180910390f35b3415610e8957600080fd5b610ed9600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612f7b565b604051808215151515815260200191505060405180910390f35b3415610efe57600080fd5b610f186004808035600019169060200190919050506132c5565b005b3415610f2557600080fd5b610f51600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613467565b005b3415610f5e57600080fd5b610fae600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506135fa565b60405180826000191660001916815260200191505060405180910390f35b3415610fd757600080fd5b61101060048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613666565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561105a57808201518184015260208101905061103f565b50505050905090810190601f1680156110875780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b34156110a157600080fd5b611110600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061386e565b60405180826000191660001916815260200191505060405180910390f35b341561113957600080fd5b611141613928565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561118e57600080fd5b6111ba600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061394d565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000611218614084565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806112c45750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561134157600080fd5b60076000815480929190600101919050555061135c866135fa565b945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114775780601f1061144c57610100808354040283529160200191611477565b820191906000526020600020905b81548152906001019060200180831161145a57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115195780601f106114ee57610100808354040283529160200191611519565b820191906000526020600020905b8154815290600101906020018083116114fc57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115bb5780601f10611590576101008083540402835291602001916115bb565b820191906000526020600020905b81548152906001019060200180831161159e57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561165d5780601f106116325761010080835404028352916020019161165d565b820191906000526020600020905b81548152906001019060200180831161164057829003601f168201915b505050505081525050935061168a846000015185602001518660400151876060015188608001518c611a0d565b925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118145780601f106117e957610100808354040283529160200191611814565b820191906000526020600020905b8154815290600101906020018083116117f757829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b600082826040518083805190602001908083835b6020831015156119965780518252602082019150602081019050602083039250611971565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905092915050565b6000868686868686604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186805190602001908083835b602083101515611a8b5780518252602082019150602081019050602083039250611a66565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b602083101515611ade5780518252602082019150602081019050602083039250611ab9565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b602083101515611b315780518252602082019150602081019050602083039250611b0c565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515611b845780518252602082019150602081019050602083039250611b5f565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019650505050505050604051809103902090509695505050505050565b6000600360020180549050905090565b600060016000600284815481101515611c2857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615611ce657600282815481101515611cb357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611ceb565b600090505b919050565b6000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611d9d5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611e1a57600080fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663be440ff56000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611ea857600080fd5b6102c65a03f11515611eb957600080fd5b505050604051805190501515611ece57600080fd5b600085111515611ee057849350611eeb565b62093a808502420193505b611f4a600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061386e565b9250611f58878588866139a4565b611f6383878961120e565b50505050505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561203c57600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff16815260200160016002805480600101828161207a91906140e2565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b600b8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122bb5780601f10612290576101008083540402835291602001916122bb565b820191906000526020600020905b81548152906001019060200180831161229e57829003601f168201915b505050505081565b60008060008060008060008060006122da8b61189f565b9550955095509550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561232757600160008098509850985061241d565b821561233c578260008098509850985061241d565b8991508173ffffffffffffffffffffffffffffffffffffffff16636bcdaa33876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156123be57600080fd5b6102c65a03f115156123cf57600080fd5b5050506040518051905090508285600019168260001916148573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16149850985098505b5050505050509250925092565b600060036002018281548110151561243e57fe5b9060005260206000209001549050919050565b60008061245c61410e565b61246461410e565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a600b818054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125425780601f1061251757610100808354040283529160200191612542565b820191906000526020600020905b81548152906001019060200180831161252557829003601f168201915b50505050509150808054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156125de5780601f106125b3576101008083540402835291602001916125de565b820191906000526020600020905b8154815290600101906020018083116125c157829003601f168201915b50505050509050935093509350935090919293565b6000806125fe614084565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806126a85750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561272557600080fd5b8761272f81612982565b151561273a57600080fd5b612743896135fa565b955060016003600201805480600101828161275e9190614122565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101908051906020019061283d92919061414e565b50604082015181600201908051906020019061285a92919061414e565b50606082015181600301908051906020019061287792919061414e565b50608082015181600401908051906020019061289492919061414e565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b8381101561293c578082015181840152602081019050612921565b50505050905090810190601f1680156129695780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008061298e836135fa565b9050600060036002018054905014806129ea575080600019166003600201600360010160008460001916600019168152602001908152602001600020548154811015156129d757fe5b9060005260206000209001546000191614155b915050919050565b60006129fc61410e565b612a0461410e565b612a0c61410e565b612a1461410e565b612a1c614084565b866000600360020180549050118015612a7757508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515612a6557fe5b90600052602060002090015460001916145b1515612a8257600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612b9b5780601f10612b7057610100808354040283529160200191612b9b565b820191906000526020600020905b815481529060010190602001808311612b7e57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612c3d5780601f10612c1257610100808354040283529160200191612c3d565b820191906000526020600020905b815481529060010190602001808311612c2057829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612cdf5780601f10612cb457610100808354040283529160200191612cdf565b820191906000526020600020905b815481529060010190602001808311612cc257829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612d815780601f10612d5657610100808354040283529160200191612d81565b820191906000526020600020905b815481529060010190602001808311612d6457829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612e7d5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612efa57600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061302b5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156130a857600080fd5b6130b1876135fa565b945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156130f157fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561313557fe5b90600052602060002090018160001916905550600360020180548091906001900361316091906141ce565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006131b791906141fa565b6002820160006131c791906141fa565b6003820160006131d791906141fa565b6004820160006131e791906141fa565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561327c578082015181840152602081019050613261565b50505050905090810190601f1680156132a95780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061336f5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156133ec57600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561353757600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000816040518082805190602001908083835b602083101515613632578051825260208201915060208101905060208303925061360d565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b600061367061410e565b600080600061367f87876122c3565b92509250925082156136f6576000606060405190810160405280602681526020017f496e76616c69642063726564656e7469616c3a2063726564656e7469616c207281526020017f65766f6b6564000000000000000000000000000000000000000000000000000081525080905094509450613864565b80151561378d5780608060405190810160405280604581526020017f496e76616c696420726563697069656e743a20726563697069656e7420646f6581526020017f73206e6f74206d61746368206f726967696e616c207472616e73616374696f6e81526020017f206461746100000000000000000000000000000000000000000000000000000081525080905094509450613864565b8115156138245781608060405190810160405280605381526020017f496e76616c6964206461746120696e746567726974793a206461746120696e2081526020017f63726564656e7469616c20646f6573206e6f74206d61746368206f726967696e81526020017f616c207472616e73616374696f6e20646174610000000000000000000000000081525080905094509450613864565b60016040805190810160405280601381526020017f43726564656e7469616c2069732076616c696400000000000000000000000000815250809050945094505b5050509250929050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b6020831015156138eb57805182526020820191506020810190506020830392506138c6565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b6139ac614084565b6000600360000160006139be886135fa565b6000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613acf5780601f10613aa457610100808354040283529160200191613acf565b820191906000526020600020905b815481529060010190602001808311613ab257829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613b715780601f10613b4657610100808354040283529160200191613b71565b820191906000526020600020905b815481529060010190602001808311613b5457829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613c135780601f10613be857610100808354040283529160200191613c13565b820191906000526020600020905b815481529060010190602001808311613bf657829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015613cb55780601f10613c8a57610100808354040283529160200191613cb5565b820191906000526020600020905b815481529060010190602001808311613c9857829003601f168201915b5050505050815250509150600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614151515613d0057600080fd5b8390508073ffffffffffffffffffffffffffffffffffffffff16634e3943e7836000015184602001518560400151866060015187608001518b8b8b6040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018881526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001866000191660001916815260200185810385528c818151815260200191508051906020019080838360005b83811015613e2a578082015181840152602081019050613e0f565b50505050905090810190601f168015613e575780820380516001836020036101000a031916815260200191505b5085810384528b818151815260200191508051906020019080838360005b83811015613e90578082015181840152602081019050613e75565b50505050905090810190601f168015613ebd5780820380516001836020036101000a031916815260200191505b5085810383528a818151815260200191508051906020019080838360005b83811015613ef6578082015181840152602081019050613edb565b50505050905090810190601f168015613f235780820380516001836020036101000a031916815260200191505b50858103825289818151815260200191508051906020019080838360005b83811015613f5c578082015181840152602081019050613f41565b50505050905090810190601f168015613f895780820380516001836020036101000a031916815260200191505b509c50505050505050505050505050600060405180830381600087803b1515613fb157600080fd5b6102c65a03f11515613fc257600080fd5b5050508373ffffffffffffffffffffffffffffffffffffffff167fba451c931e2011b181517e87b4faa9ded9887fd9fdc41479f2e4ed86c0ce300183604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015614042578082015181840152602081019050614027565b50505050905090810190601f16801561406f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050505050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016140b5614242565b81526020016140c2614242565b81526020016140cf614242565b81526020016140dc614242565b81525090565b815481835581811511614109578183600052602060002091820191016141089190614256565b5b505050565b602060405190810160405280600081525090565b81548183558181151161414957818360005260206000209182019101614148919061427b565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061418f57805160ff19168380011785556141bd565b828001600101855582156141bd579182015b828111156141bc5782518255916020019190600101906141a1565b5b5090506141ca9190614256565b5090565b8154818355818115116141f5578183600052602060002091820191016141f4919061427b565b5b505050565b50805460018160011615610100020316600290046000825580601f10614220575061423f565b601f01602090049060005260206000209081019061423e9190614256565b5b50565b602060405190810160405280600081525090565b61427891905b8082111561427457600081600090555060010161425c565b5090565b90565b61429d91905b80821115614299576000816000905550600101614281565b5090565b905600a165627a7a72305820ff7e4699b2fe2712df3ea254a81f8a5e208758a4ec2d372f105b81724e39788d0029", + "sourceMap": "132:2479:3:-;;;442:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;543:16;845::6;502::5;894::1;601::0;593:5;;:24;;;;;;;;;;;;;;;;;;524:100;822:92:1;538:1:5;530:5;:9;;;;428:118;775:90:6;578:5:3;571:4;:12;;;;;;;;;;;;:::i;:::-;;599:4;593:3;:10;;;;;;;;;;;;:::i;:::-;;638:4;613:14;;:30;;;;;;;;;;;;;;;;;;675:6;653:3;;:29;;;;;;;;;;;;;;;;;;442:247;;;;132:2479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "132:2479:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;393:18:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;357:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;343:54:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1675:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5010:141:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5215:410;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3736:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1103:564:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2871:125:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;417:17:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1665:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4650:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2445:163:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2212:630:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1056:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4050:459;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2657:161:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;404:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:660:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2409:156:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4831:126:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;871:564:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2167:154:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;109:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621:5;915:21;977:18;;:::i;:::-;1040:21;836:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;898:5:5;;:7;;;;;;;;;;;;;939:28;956:10;939:16;:28::i;:::-;915:52;;998:10;:17;;:32;1016:13;998:32;;;;;;;;;;;;;;;;;977:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1064:183;1094:5;:12;;;1120:5;:17;;;1151:5;:10;;;1175:5;:11;;;1200:5;:13;;;1227:10;1064:16;:183::i;:::-;1040:207;;1285:54;;;;;;;;;1297:7;1285:54;;;;;;;1306:13;1285:54;;;;;;;1321:10;1285:54;;;;;;1333:5;1285:54;;;;;1257:16;:25;1274:7;1257:25;;;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621;;;;;;;;:::o;393:18:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;357:29::-;;;;;;;;;;;;;:::o;343:54:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1675:354::-;1732:14;1748:21;1771:17;1790:12;1834:16;:25;1851:7;1834:25;;;;;;;;;;;;;;;;;:29;;;1877:16;:25;1894:7;1877:25;;;;;;;;;;;;;;;;;:39;;;1930:16;:25;1947:7;1930:25;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;1979:16;:25;1996:7;1979:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;1814:208;;;;;;;;1675:354;;;;;:::o;5010:141:1:-;5088:12;5129:5;5136:7;5119:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5112:32:1;;5010:141;;;;:::o;5215:410::-;5413:13;5476:6;5500:11;5529:4;5551:5;5574:7;5599:9;5449:169;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5442:176:1;;5215:410;;;;;;;;:::o;3736:129::-;3793:10;3826;:25;;:32;;;;3819:39;;3736:129;:::o;2378:272:0:-;2441:15;2472:21;:53;2494:22;2517:6;2494:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:53;;;;;;;;;;;;;;;:66;;;;;;;;;;;;2468:176;;;2561:22;2584:6;2561:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:37;;;;2468:176;160:42;2622:11;;2378:272;;;;:::o;1103:564:3:-;1259:12;1419:15;1219:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;736:3:3;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;728:27;;;;;;;;1297:1;1285:8;:13;;1281:129;;;1324:8;1314:18;;1281:129;;;1391:7;1380:8;:18;1373:3;:26;1363:36;;1281:129;1437:45;1457:14;;;;;;;;;;;1473:8;;1437:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;:45::i;:::-;1419:63;;1492:116;1522:10;1546:7;1567:10;1591:7;1492:16;:116::i;:::-;1618:42;1628:7;1637:10;1649;1618:9;:42::i;:::-;1103:564;;;;;;;:::o;1500:247:0:-;1562:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;1620:78;;;;;;;;;1638:10;1620:78;;;;;;1690:1;1650:22;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:10;1650:39;;;;;;;;;;;;;;;;;;;;;;:41;1620:78;;;;1693:4;1620:78;;;;;1584:21;:33;1606:10;1584:33;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:32;1729:10;1708:32;;;;;;;;;;;;;;;;;;;;;;1500:247;;;:::o;2871:125:5:-;2931:6;2956:16;:25;2973:7;2956:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;2949:40;;2871:125;;;:::o;417:17:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1665:618:6:-;1755:13;1771:24;1797:20;1834:3;1839:13;1854:9;1865:7;2059:13;2103:22;1876:15;1883:7;1876:6;:15::i;:::-;1829:62;;;;;;;;726:42;1906:17;;:9;:17;;;1902:147;;;1946:4;1952:5;1959;1939:26;;;;;;;;1902:147;1986:7;1982:67;;;2016:7;2025:5;2032;2009:29;;;;;;;;1982:67;2082:10;2059:34;;2128:6;:23;;;2152:3;2128:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2103:53;;2173:7;2213:13;2195:31;;;:14;:31;;;;2256:9;2242:23;;:10;:23;;;2166:110;;;;;;1665:618;;;;;;;;;;;;:::o;4650:133:1:-;4711:13;4743:10;:25;;4769:6;4743:33;;;;;;;;;;;;;;;;;;;4736:40;;4650:133;;;:::o;2445:163:3:-;2488:15;2505:17;2524:12;;:::i;:::-;2538:11;;:::i;:::-;2568:5;;;;;;;;;;;2575:14;;;;;;;;;;;2591:4;2597:3;2561:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2445:163;;;;:::o;2212:630:1:-;2408:21;2465:10;2535:18;;:::i;:::-;2352:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2376:5:1;1016:15;1025:5;1016:8;:15::i;:::-;1008:24;;;;;;;;2432:23;2449:5;2432:16;:23::i;:::-;2408:47;;2524:1;2478:10;:25;;:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;2509:13;2478:45;;;;;;;;;;;:47;2465:60;;2556:129;;;;;;;;;2583:4;2556:129;;;;;;2602:12;2556:129;;;;2628:5;2556:129;;;;2647:6;2556:129;;;;2667:8;2556:129;;;2535:150;;2730:5;2695:10;:17;;:32;2713:13;2695:32;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2782:5;2745:10;:19;;:34;2765:13;2745:34;;;;;;;;;;;;;;;;;:42;;;;2822:5;:12;;;2797:38;;;2810:5;:10;;;2797:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:1:0;2212:630:1;;;;;;;;;:::o;1056:271::-;1112:11;1135:21;1159:23;1176:5;1159:16;:23::i;:::-;1135:47;;1236:1;1200:10;:25;;:32;;;;:37;:119;;;;1306:13;1241:78;;;:10;:25;;1267:10;:19;;:34;1287:13;1267:34;;;;;;;;;;;;;;;;;;1241:61;;;;;;;;;;;;;;;;;;;:78;;;;;1200:119;1192:128;;1056:271;;;;:::o;4050:459::-;4161:14;4185:18;;:::i;:::-;4213:12;;:::i;:::-;4235;;:::i;:::-;4257:14;;:::i;:::-;4288:18;;:::i;:::-;4112:14;1790:1;1755:10;:25;;:32;;;;:36;:120;;;;;1861:14;1795:80;;;:10;:25;;1821:10;:19;;:35;1841:14;1821:35;;;;;;;;;;;;;;;;;;1795:62;;;;;;;;;;;;;;;;;;;:80;;;;1755:120;1747:129;;;;;;;;4309:10;:17;;:33;4327:14;4309:33;;;;;;;;;;;;;;;;;4288:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4373:5;:12;;;4399:5;:17;;;4430:5;:10;;;4454:5;:11;;;4479:5;:13;;;4352:150;;;;;;;;;;;;;;;;;;;;;;4050:459;;;;;;;;;:::o;2790:135:0:-;2851:19;2889:22;:29;;;;2882:36;;2790:135;:::o;2657:161:5:-;2710:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2768:5:5;2732:16;:25;2749:7;2732:25;;;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;2783:28;2803:7;2783:28;;;;;;;;;;;;;;;;;;;;;;;;2657:161;;;:::o;404:17::-;;;;:::o;2937:660:1:-;3018:12;3046:21;3103:16;3166:17;2987:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;3070:23:1;3087:5;3070:16;:23::i;:::-;3046:47;;3122:10;:19;;:34;3142:13;3122:34;;;;;;;;;;;;;;;;;;3103:53;;3186:10;:25;;3245:1;3212:10;:25;;:32;;;;:34;3186:61;;;;;;;;;;;;;;;;;;;3166:81;;3290:11;3257:10;:19;;:30;3277:9;3257:30;;;;;;;;;;;;;;;;;:44;;;;3352:9;3311:10;:25;;3337:11;3311:38;;;;;;;;;;;;;;;;;;:50;;;;;;;3371:10;:25;;:34;;;;;;;;;;;;:::i;:::-;;3422:10;:17;;:32;3440:13;3422:32;;;;;;;;;;;;;;;;;;3415:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;3471:10;:19;;:34;3491:13;3471:34;;;;;;;;;;;;;;;;;3464:41;;;3516:53;3529:5;3536:10;:25;;:32;;;;3516:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3586:4:1;3579:11;;2937:660;;;;;;;;:::o;2409:156:5:-;2460:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2518:4:5;2482:16;:25;2499:7;2482:25;;;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;2532:26;2550:7;2532:26;;;;;;;;;;;;;;;;;;;;;;;;2409:156;;;:::o;1945:190:0:-;2012:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;2080:5;2034:21;:30;2056:7;2034:30;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;2095:33;2120:7;2095:33;;;;;;;;;;;;;;;;;;;;;;1945:190;;;:::o;4831:126:1:-;4897:13;4939:10;4929:21;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;4922:28:1;;4831:126;;;:::o;871:564:6:-;958:15;975:13;;:::i;:::-;1005:8;1015:19;1036:15;1055:40;1075:7;1084:10;1055:19;:40::i;:::-;1000:95;;;;;;1109:8;1105:324;;;1140:5;1147:7;;;;;;;;;;;;;;;;;;;;;;;1133:22;;;;;;;;;1105:324;1177:15;1176:16;1172:257;;;1215:15;1232:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;1208:42;;;;;;;;;1172:257;1272:19;1271:20;1267:162;;;1314:19;1335:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;1307:50;;;;;;;;;1267:162;1395:4;1401:16;;;;;;;;;;;;;;;;;;1388:30;;;;;;;871:564;;;;;;;;;:::o;2167:154:5:-;2249:11;2289:7;2298:8;2308:5;;2279:35;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;2272:42:5;;2167:154;;;;:::o;109:20:0:-;;;;;;;;;;;;;:::o;370:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1768:639:3:-;1924:18;;:::i;:::-;2041:13;1945:10;:17;;:47;1963:28;1980:10;1963:16;:28::i;:::-;1945:47;;;;;;;;;;;;;;;;;1924:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;267:42;2010:20;;:5;:12;;;:20;;;;2002:29;;;;;;;;2064:10;2041:34;;2085:6;:22;;;2121:5;:12;;;2147:5;:17;;;2178:5;:10;;;2202:5;:11;;;2227:5;:13;;;2254:7;2275:10;2299:7;2085:231;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2380:10:3;2326:74;;;2356:5;:10;;;2326:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1768:639:3;;;;;;:::o;132:2479::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.17;\n\nimport \"BadgeForceToken/contracts/BadgeForceToken.sol\";\n\nimport \"./Holder.sol\";\nimport \"./Verifier.sol\";\n\ncontract Issuer is Verifier {\n //access the badgeforce token contract\n BadgeForceToken private BFT;\n\n address constant NONE = 0x0000000000000000000000000000000000000000;\n\n /// @notice address of this contract\n address public issuerContract;\n\n string public name;\n string public url;\n\n\n function Issuer(address _adminWalletAddr, string _name, string _url, address _token) public Verifier(_adminWalletAddr) {\n name = _name;\n url = _url;\n issuerContract = address(this);\n BFT = BadgeForceToken(_token);\n }\n\n modifier payForIssue() {\n require(BFT.burnForIssue());\n _;\n }\n\n event CredentialIssued(\n string _badgeName,\n address indexed _recipient\n );\n /// @notice issue a new credential to a recipient contract\n /// @param _badgeName name of the badge to issue\n /// @param _recipient address of the holder contract\n /// @param _expires expire date (number of weeks)\n function issue(\n string _badgeName,\n address _recipient,\n uint _expires)\n public authorized(msg.sender) payForIssue()\n {\n uint expires;\n if (_expires <= 0) {\n expires = _expires;\n } else {\n expires = now + (_expires * 1 weeks);\n }\n bytes32 _txnKey = getCredentialTxnKey(issuerContract, msg.data);\n _sendToRecipient(\n _badgeName,\n expires,\n _recipient,\n _txnKey\n );\n setNewTxn(_txnKey, _recipient, _badgeName);\n }\n\n /// @notice internal method that gets instance of recipient contract and stores credential\n function _sendToRecipient(\n string _badgeName,\n uint expires,\n address _recipient,\n bytes32 _txnKey\n ) private\n {\n Badge memory badge = badgeVault.badges[getBadgeNameHash(_badgeName)];\n require(badge.issuer != NONE);\n Holder holder = Holder(_recipient);\n holder.storeCredential(\n badge.issuer,\n badge.description,\n badge.name,\n badge.image,\n badge.version,\n expires,\n _recipient,\n _txnKey\n );\n CredentialIssued(\n badge.name,\n _recipient\n );\n }\n\n /// @notice get issuer info\n function getInfo() public constant returns(address _issuer, address _contract, string _name, string _url) {\n return(admin, issuerContract, name, url);\n }\n\n}\n", "sourcePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Issuer.sol", "ast": { "attributes": { "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Issuer.sol", "exportedSymbols": { "Issuer": [ - 1251 + 1313 ] } }, @@ -716,90 +797,75 @@ ".17" ] }, - "id": 1044, + "id": 1110, "name": "PragmaDirective", "src": "0:24:3" }, { "attributes": { - "SourceUnit": 1813, - "absolutePath": "BadgeLibrary/contracts/BadgeLibrary.sol", - "file": "BadgeLibrary/contracts/BadgeLibrary.sol", - "scope": 1252, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1045, - "name": "ImportDirective", - "src": "26:49:3" - }, - { - "attributes": { - "SourceUnit": 1734, + "SourceUnit": 1790, "absolutePath": "BadgeForceToken/contracts/BadgeForceToken.sol", "file": "BadgeForceToken/contracts/BadgeForceToken.sol", - "scope": 1252, + "scope": 1314, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1046, + "id": 1111, "name": "ImportDirective", - "src": "76:55:3" + "src": "26:55:3" }, { "attributes": { - "SourceUnit": 1043, + "SourceUnit": 1109, "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Holder.sol", "file": "./Holder.sol", - "scope": 1252, + "scope": 1314, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1047, + "id": 1112, "name": "ImportDirective", - "src": "133:22:3" + "src": "83:22:3" }, { "attributes": { - "SourceUnit": 1666, + "SourceUnit": 1722, "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Verifier.sol", "file": "./Verifier.sol", - "scope": 1252, + "scope": 1314, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1048, + "id": 1113, "name": "ImportDirective", - "src": "156:24:3" + "src": "106:24:3" }, { "attributes": { "contractDependencies": [ 176, - 535, - 1515, - 1665 + 601, + 1572, + 1721 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 1251, - 1665, - 1515, - 535, + 1313, + 1721, + 1572, + 601, 176 ], "name": "Issuer", - "scope": 1252 + "scope": 1314 }, "children": [ { @@ -813,23 +879,23 @@ "attributes": { "contractScope": null, "name": "Verifier", - "referencedDeclaration": 1665, + "referencedDeclaration": 1721, "type": "contract Verifier" }, - "id": 1049, + "id": 1114, "name": "UserDefinedTypeName", - "src": "201:8:3" + "src": "151:8:3" } ], - "id": 1050, + "id": 1115, "name": "InheritanceSpecifier", - "src": "201:8:3" + "src": "151:8:3" }, { "attributes": { "constant": false, "name": "BFT", - "scope": 1251, + "scope": 1313, "stateVariable": true, "storageLocation": "default", "type": "contract BadgeForceToken", @@ -841,23 +907,23 @@ "attributes": { "contractScope": null, "name": "BadgeForceToken", - "referencedDeclaration": 1733, + "referencedDeclaration": 1789, "type": "contract BadgeForceToken" }, - "id": 1051, + "id": 1116, "name": "UserDefinedTypeName", - "src": "259:15:3" + "src": "209:15:3" } ], - "id": 1052, + "id": 1117, "name": "VariableDeclaration", - "src": "259:27:3" + "src": "209:27:3" }, { "attributes": { "constant": true, "name": "NONE", - "scope": 1251, + "scope": 1313, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -869,9 +935,9 @@ "name": "address", "type": "address" }, - "id": 1053, + "id": 1118, "name": "ElementaryTypeName", - "src": "293:7:3" + "src": "243:7:3" }, { "attributes": { @@ -886,20 +952,20 @@ "type": "address", "value": "0x0000000000000000000000000000000000000000" }, - "id": 1054, + "id": 1119, "name": "Literal", - "src": "317:42:3" + "src": "267:42:3" } ], - "id": 1055, + "id": 1120, "name": "VariableDeclaration", - "src": "293:66:3" + "src": "243:66:3" }, { "attributes": { "constant": false, "name": "issuerContract", - "scope": 1251, + "scope": 1313, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -912,20 +978,20 @@ "name": "address", "type": "address" }, - "id": 1056, + "id": 1121, "name": "ElementaryTypeName", - "src": "412:7:3" + "src": "357:7:3" } ], - "id": 1057, + "id": 1122, "name": "VariableDeclaration", - "src": "412:29:3" + "src": "357:29:3" }, { "attributes": { "constant": false, "name": "name", - "scope": 1251, + "scope": 1313, "stateVariable": true, "storageLocation": "default", "type": "string storage ref", @@ -938,20 +1004,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 1058, + "id": 1123, "name": "ElementaryTypeName", - "src": "449:6:3" + "src": "393:6:3" } ], - "id": 1059, + "id": 1124, "name": "VariableDeclaration", - "src": "449:18:3" + "src": "393:18:3" }, { "attributes": { "constant": false, "name": "url", - "scope": 1251, + "scope": 1313, "stateVariable": true, "storageLocation": "default", "type": "string storage ref", @@ -964,14 +1030,14 @@ "name": "string", "type": "string storage pointer" }, - "id": 1060, + "id": 1125, "name": "ElementaryTypeName", - "src": "473:6:3" + "src": "417:6:3" } ], - "id": 1061, + "id": 1126, "name": "VariableDeclaration", - "src": "473:17:3" + "src": "417:17:3" }, { "attributes": { @@ -980,7 +1046,7 @@ "isConstructor": true, "name": "Issuer", "payable": false, - "scope": 1251, + "scope": 1313, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -992,7 +1058,7 @@ "attributes": { "constant": false, "name": "_adminWalletAddr", - "scope": 1096, + "scope": 1161, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1005,20 +1071,20 @@ "name": "address", "type": "address" }, - "id": 1062, + "id": 1127, "name": "ElementaryTypeName", - "src": "522:7:3" + "src": "458:7:3" } ], - "id": 1063, + "id": 1128, "name": "VariableDeclaration", - "src": "522:24:3" + "src": "458:24:3" }, { "attributes": { "constant": false, "name": "_name", - "scope": 1096, + "scope": 1161, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1031,20 +1097,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 1064, + "id": 1129, "name": "ElementaryTypeName", - "src": "548:6:3" + "src": "484:6:3" } ], - "id": 1065, + "id": 1130, "name": "VariableDeclaration", - "src": "548:12:3" + "src": "484:12:3" }, { "attributes": { "constant": false, "name": "_url", - "scope": 1096, + "scope": 1161, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1057,20 +1123,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 1066, + "id": 1131, "name": "ElementaryTypeName", - "src": "562:6:3" + "src": "498:6:3" } ], - "id": 1067, + "id": 1132, "name": "VariableDeclaration", - "src": "562:11:3" + "src": "498:11:3" }, { "attributes": { "constant": false, "name": "_token", - "scope": 1096, + "scope": 1161, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1083,19 +1149,19 @@ "name": "address", "type": "address" }, - "id": 1068, + "id": 1133, "name": "ElementaryTypeName", - "src": "575:7:3" + "src": "511:7:3" } ], - "id": 1069, + "id": 1134, "name": "VariableDeclaration", - "src": "575:14:3" + "src": "511:14:3" } ], - "id": 1070, + "id": 1135, "name": "ParameterList", - "src": "521:69:3" + "src": "457:69:3" }, { "attributes": { @@ -1104,9 +1170,9 @@ ] }, "children": [], - "id": 1074, + "id": 1139, "name": "ParameterList", - "src": "625:0:3" + "src": "561:0:3" }, { "children": [ @@ -1116,13 +1182,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1665, + "referencedDeclaration": 1721, "type": "type(contract Verifier)", "value": "Verifier" }, - "id": 1071, + "id": 1136, "name": "Identifier", - "src": "598:8:3" + "src": "534:8:3" }, { "attributes": { @@ -1130,18 +1196,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1063, + "referencedDeclaration": 1128, "type": "address", "value": "_adminWalletAddr" }, - "id": 1072, + "id": 1137, "name": "Identifier", - "src": "607:16:3" + "src": "543:16:3" } ], - "id": 1073, + "id": 1138, "name": "ModifierInvocation", - "src": "598:26:3" + "src": "534:26:3" }, { "children": [ @@ -1164,13 +1230,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1059, + "referencedDeclaration": 1124, "type": "string storage ref", "value": "name" }, - "id": 1075, + "id": 1140, "name": "Identifier", - "src": "635:4:3" + "src": "571:4:3" }, { "attributes": { @@ -1178,23 +1244,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1065, + "referencedDeclaration": 1130, "type": "string memory", "value": "_name" }, - "id": 1076, + "id": 1141, "name": "Identifier", - "src": "642:5:3" + "src": "578:5:3" } ], - "id": 1077, + "id": 1142, "name": "Assignment", - "src": "635:12:3" + "src": "571:12:3" } ], - "id": 1078, + "id": 1143, "name": "ExpressionStatement", - "src": "635:12:3" + "src": "571:12:3" }, { "children": [ @@ -1215,13 +1281,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1061, + "referencedDeclaration": 1126, "type": "string storage ref", "value": "url" }, - "id": 1079, + "id": 1144, "name": "Identifier", - "src": "657:3:3" + "src": "593:3:3" }, { "attributes": { @@ -1229,23 +1295,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1067, + "referencedDeclaration": 1132, "type": "string memory", "value": "_url" }, - "id": 1080, + "id": 1145, "name": "Identifier", - "src": "663:4:3" + "src": "599:4:3" } ], - "id": 1081, + "id": 1146, "name": "Assignment", - "src": "657:10:3" + "src": "593:10:3" } ], - "id": 1082, + "id": 1147, "name": "ExpressionStatement", - "src": "657:10:3" + "src": "593:10:3" }, { "children": [ @@ -1266,13 +1332,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1057, + "referencedDeclaration": 1122, "type": "address", "value": "issuerContract" }, - "id": 1083, + "id": 1148, "name": "Identifier", - "src": "677:14:3" + "src": "613:14:3" }, { "attributes": { @@ -1293,7 +1359,7 @@ "attributes": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Issuer_$1251", + "typeIdentifier": "t_contract$_Issuer_$1313", "typeString": "contract Issuer" } ], @@ -1304,9 +1370,9 @@ "type": "type(address)", "value": "address" }, - "id": 1084, + "id": 1149, "name": "ElementaryTypeNameExpression", - "src": "694:7:3" + "src": "630:7:3" }, { "attributes": { @@ -1314,28 +1380,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2454, + "referencedDeclaration": 2510, "type": "contract Issuer", "value": "this" }, - "id": 1085, + "id": 1150, "name": "Identifier", - "src": "702:4:3" + "src": "638:4:3" } ], - "id": 1086, + "id": 1151, "name": "FunctionCall", - "src": "694:13:3" + "src": "630:13:3" } ], - "id": 1087, + "id": 1152, "name": "Assignment", - "src": "677:30:3" + "src": "613:30:3" } ], - "id": 1088, + "id": 1153, "name": "ExpressionStatement", - "src": "677:30:3" + "src": "613:30:3" }, { "children": [ @@ -1356,13 +1422,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1052, + "referencedDeclaration": 1117, "type": "contract BadgeForceToken", "value": "BFT" }, - "id": 1089, + "id": 1154, "name": "Identifier", - "src": "717:3:3" + "src": "653:3:3" }, { "attributes": { @@ -1390,13 +1456,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1733, + "referencedDeclaration": 1789, "type": "type(contract BadgeForceToken)", "value": "BadgeForceToken" }, - "id": 1090, + "id": 1155, "name": "Identifier", - "src": "723:15:3" + "src": "659:15:3" }, { "attributes": { @@ -1404,38 +1470,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1069, + "referencedDeclaration": 1134, "type": "address", "value": "_token" }, - "id": 1091, + "id": 1156, "name": "Identifier", - "src": "739:6:3" + "src": "675:6:3" } ], - "id": 1092, + "id": 1157, "name": "FunctionCall", - "src": "723:23:3" + "src": "659:23:3" } ], - "id": 1093, + "id": 1158, "name": "Assignment", - "src": "717:29:3" + "src": "653:29:3" } ], - "id": 1094, + "id": 1159, "name": "ExpressionStatement", - "src": "717:29:3" + "src": "653:29:3" } ], - "id": 1095, + "id": 1160, "name": "Block", - "src": "625:128:3" + "src": "561:128:3" } ], - "id": 1096, + "id": 1161, "name": "FunctionDefinition", - "src": "506:247:3" + "src": "442:247:3" }, { "attributes": { @@ -1450,9 +1516,9 @@ ] }, "children": [], - "id": 1097, + "id": 1162, "name": "ParameterList", - "src": "779:2:3" + "src": "715:2:3" }, { "children": [ @@ -1484,13 +1550,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 1098, + "id": 1163, "name": "Identifier", - "src": "792:7:3" + "src": "728:7:3" }, { "attributes": { @@ -1520,7 +1586,7 @@ "isPure": false, "lValueRequested": false, "member_name": "burnForIssue", - "referencedDeclaration": 1732, + "referencedDeclaration": 1788, "type": "function () external returns (bool)" }, "children": [ @@ -1530,48 +1596,48 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1052, + "referencedDeclaration": 1117, "type": "contract BadgeForceToken", "value": "BFT" }, - "id": 1099, + "id": 1164, "name": "Identifier", - "src": "800:3:3" + "src": "736:3:3" } ], - "id": 1100, + "id": 1165, "name": "MemberAccess", - "src": "800:16:3" + "src": "736:16:3" } ], - "id": 1101, + "id": 1166, "name": "FunctionCall", - "src": "800:18:3" + "src": "736:18:3" } ], - "id": 1102, + "id": 1167, "name": "FunctionCall", - "src": "792:27:3" + "src": "728:27:3" } ], - "id": 1103, + "id": 1168, "name": "ExpressionStatement", - "src": "792:27:3" + "src": "728:27:3" }, { - "id": 1104, + "id": 1169, "name": "PlaceholderStatement", - "src": "829:1:3" + "src": "765:1:3" } ], - "id": 1105, + "id": 1170, "name": "Block", - "src": "782:55:3" + "src": "718:55:3" } ], - "id": 1106, + "id": 1171, "name": "ModifierDefinition", - "src": "759:78:3" + "src": "695:78:3" }, { "attributes": { @@ -1586,7 +1652,7 @@ "constant": false, "indexed": false, "name": "_badgeName", - "scope": 1112, + "scope": 1177, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1599,21 +1665,21 @@ "name": "string", "type": "string storage pointer" }, - "id": 1107, + "id": 1172, "name": "ElementaryTypeName", - "src": "875:6:3" + "src": "811:6:3" } ], - "id": 1108, + "id": 1173, "name": "VariableDeclaration", - "src": "875:17:3" + "src": "811:17:3" }, { "attributes": { "constant": false, "indexed": true, "name": "_recipient", - "scope": 1112, + "scope": 1177, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1626,24 +1692,24 @@ "name": "address", "type": "address" }, - "id": 1109, + "id": 1174, "name": "ElementaryTypeName", - "src": "902:7:3" + "src": "838:7:3" } ], - "id": 1110, + "id": 1175, "name": "VariableDeclaration", - "src": "902:26:3" + "src": "838:26:3" } ], - "id": 1111, + "id": 1176, "name": "ParameterList", - "src": "865:69:3" + "src": "801:69:3" } ], - "id": 1112, + "id": 1177, "name": "EventDefinition", - "src": "843:92:3" + "src": "779:92:3" }, { "attributes": { @@ -1652,7 +1718,7 @@ "isConstructor": false, "name": "issue", "payable": false, - "scope": 1251, + "scope": 1313, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1664,7 +1730,7 @@ "attributes": { "constant": false, "name": "_badgeName", - "scope": 1171, + "scope": 1236, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1677,20 +1743,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 1113, + "id": 1178, "name": "ElementaryTypeName", - "src": "1192:6:3" + "src": "1127:6:3" } ], - "id": 1114, + "id": 1179, "name": "VariableDeclaration", - "src": "1192:17:3" + "src": "1127:17:3" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 1171, + "scope": 1236, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1703,20 +1769,20 @@ "name": "address", "type": "address" }, - "id": 1115, + "id": 1180, "name": "ElementaryTypeName", - "src": "1220:7:3" + "src": "1154:7:3" } ], - "id": 1116, + "id": 1181, "name": "VariableDeclaration", - "src": "1220:18:3" + "src": "1154:18:3" }, { "attributes": { "constant": false, "name": "_expires", - "scope": 1171, + "scope": 1236, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1729,19 +1795,19 @@ "name": "uint", "type": "uint256" }, - "id": 1117, + "id": 1182, "name": "ElementaryTypeName", - "src": "1249:4:3" + "src": "1182:4:3" } ], - "id": 1118, + "id": 1183, "name": "VariableDeclaration", - "src": "1249:13:3" + "src": "1182:13:3" } ], - "id": 1119, + "id": 1184, "name": "ParameterList", - "src": "1182:81:3" + "src": "1117:79:3" }, { "attributes": { @@ -1750,9 +1816,9 @@ ] }, "children": [], - "id": 1126, + "id": 1191, "name": "ParameterList", - "src": "1317:0:3" + "src": "1249:0:3" }, { "children": [ @@ -1766,9 +1832,9 @@ "type": "modifier (address)", "value": "authorized" }, - "id": 1120, + "id": 1185, "name": "Identifier", - "src": "1276:10:3" + "src": "1208:10:3" }, { "attributes": { @@ -1788,23 +1854,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1121, + "id": 1186, "name": "Identifier", - "src": "1287:3:3" + "src": "1219:3:3" } ], - "id": 1122, + "id": 1187, "name": "MemberAccess", - "src": "1287:10:3" + "src": "1219:10:3" } ], - "id": 1123, + "id": 1188, "name": "ModifierInvocation", - "src": "1276:22:3" + "src": "1208:22:3" }, { "attributes": { @@ -1819,18 +1885,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1106, + "referencedDeclaration": 1171, "type": "modifier ()", "value": "payForIssue" }, - "id": 1124, + "id": 1189, "name": "Identifier", - "src": "1299:11:3" + "src": "1231:11:3" } ], - "id": 1125, + "id": 1190, "name": "ModifierInvocation", - "src": "1299:13:3" + "src": "1231:13:3" }, { "children": [ @@ -1846,7 +1912,7 @@ "attributes": { "constant": false, "name": "expires", - "scope": 1171, + "scope": 1236, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1859,19 +1925,19 @@ "name": "uint", "type": "uint256" }, - "id": 1127, + "id": 1192, "name": "ElementaryTypeName", - "src": "1327:4:3" + "src": "1259:4:3" } ], - "id": 1128, + "id": 1193, "name": "VariableDeclaration", - "src": "1327:12:3" + "src": "1259:12:3" } ], - "id": 1129, + "id": 1194, "name": "VariableDeclarationStatement", - "src": "1327:12:3" + "src": "1259:12:3" }, { "children": [ @@ -1896,13 +1962,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1118, + "referencedDeclaration": 1183, "type": "uint256", "value": "_expires" }, - "id": 1130, + "id": 1195, "name": "Identifier", - "src": "1353:8:3" + "src": "1285:8:3" }, { "attributes": { @@ -1917,14 +1983,14 @@ "type": "int_const 0", "value": "0" }, - "id": 1131, + "id": 1196, "name": "Literal", - "src": "1365:1:3" + "src": "1297:1:3" } ], - "id": 1132, + "id": 1197, "name": "BinaryOperation", - "src": "1353:13:3" + "src": "1285:13:3" }, { "children": [ @@ -1947,13 +2013,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1128, + "referencedDeclaration": 1193, "type": "uint256", "value": "expires" }, - "id": 1133, + "id": 1198, "name": "Identifier", - "src": "1382:7:3" + "src": "1314:7:3" }, { "attributes": { @@ -1961,28 +2027,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1118, + "referencedDeclaration": 1183, "type": "uint256", "value": "_expires" }, - "id": 1134, + "id": 1199, "name": "Identifier", - "src": "1392:8:3" + "src": "1324:8:3" } ], - "id": 1135, + "id": 1200, "name": "Assignment", - "src": "1382:18:3" + "src": "1314:18:3" } ], - "id": 1136, + "id": 1201, "name": "ExpressionStatement", - "src": "1382:18:3" + "src": "1314:18:3" } ], - "id": 1137, + "id": 1202, "name": "Block", - "src": "1368:43:3" + "src": "1300:43:3" }, { "children": [ @@ -2005,13 +2071,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1128, + "referencedDeclaration": 1193, "type": "uint256", "value": "expires" }, - "id": 1138, + "id": 1203, "name": "Identifier", - "src": "1431:7:3" + "src": "1363:7:3" }, { "attributes": { @@ -2034,13 +2100,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2417, + "referencedDeclaration": 2473, "type": "uint256", "value": "now" }, - "id": 1139, + "id": 1204, "name": "Identifier", - "src": "1441:3:3" + "src": "1373:3:3" }, { "attributes": { @@ -2074,13 +2140,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1118, + "referencedDeclaration": 1183, "type": "uint256", "value": "_expires" }, - "id": 1140, + "id": 1205, "name": "Identifier", - "src": "1448:8:3" + "src": "1380:8:3" }, { "attributes": { @@ -2095,49 +2161,49 @@ "type": "int_const 604800", "value": "1" }, - "id": 1141, + "id": 1206, "name": "Literal", - "src": "1459:7:3" + "src": "1391:7:3" } ], - "id": 1142, + "id": 1207, "name": "BinaryOperation", - "src": "1448:18:3" + "src": "1380:18:3" } ], - "id": 1143, + "id": 1208, "name": "TupleExpression", - "src": "1447:20:3" + "src": "1379:20:3" } ], - "id": 1144, + "id": 1209, "name": "BinaryOperation", - "src": "1441:26:3" + "src": "1373:26:3" } ], - "id": 1145, + "id": 1210, "name": "Assignment", - "src": "1431:36:3" + "src": "1363:36:3" } ], - "id": 1146, + "id": 1211, "name": "ExpressionStatement", - "src": "1431:36:3" + "src": "1363:36:3" } ], - "id": 1147, + "id": 1212, "name": "Block", - "src": "1417:61:3" + "src": "1349:61:3" } ], - "id": 1148, + "id": 1213, "name": "IfStatement", - "src": "1349:129:3" + "src": "1281:129:3" }, { "attributes": { "assignments": [ - 1150 + 1215 ] }, "children": [ @@ -2145,7 +2211,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1171, + "scope": 1236, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2158,14 +2224,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1149, + "id": 1214, "name": "ElementaryTypeName", - "src": "1487:7:3" + "src": "1419:7:3" } ], - "id": 1150, + "id": 1215, "name": "VariableDeclaration", - "src": "1487:15:3" + "src": "1419:15:3" }, { "attributes": { @@ -2197,13 +2263,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1451, + "referencedDeclaration": 1508, "type": "function (address,bytes memory) view returns (bytes32)", "value": "getCredentialTxnKey" }, - "id": 1151, + "id": 1216, "name": "Identifier", - "src": "1505:19:3" + "src": "1437:19:3" }, { "attributes": { @@ -2211,13 +2277,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1057, + "referencedDeclaration": 1122, "type": "address", "value": "issuerContract" }, - "id": 1152, + "id": 1217, "name": "Identifier", - "src": "1525:14:3" + "src": "1457:14:3" }, { "attributes": { @@ -2237,28 +2303,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1153, + "id": 1218, "name": "Identifier", - "src": "1541:3:3" + "src": "1473:3:3" } ], - "id": 1154, + "id": 1219, "name": "MemberAccess", - "src": "1541:8:3" + "src": "1473:8:3" } ], - "id": 1155, + "id": 1220, "name": "FunctionCall", - "src": "1505:45:3" + "src": "1437:45:3" } ], - "id": 1156, + "id": 1221, "name": "VariableDeclarationStatement", - "src": "1487:63:3" + "src": "1419:63:3" }, { "children": [ @@ -2300,13 +2366,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1232, + "referencedDeclaration": 1294, "type": "function (string memory,uint256,address,bytes32)", "value": "_sendToRecipient" }, - "id": 1157, + "id": 1222, "name": "Identifier", - "src": "1560:16:3" + "src": "1492:16:3" }, { "attributes": { @@ -2314,13 +2380,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1114, + "referencedDeclaration": 1179, "type": "string memory", "value": "_badgeName" }, - "id": 1158, + "id": 1223, "name": "Identifier", - "src": "1590:10:3" + "src": "1522:10:3" }, { "attributes": { @@ -2328,13 +2394,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1128, + "referencedDeclaration": 1193, "type": "uint256", "value": "expires" }, - "id": 1159, + "id": 1224, "name": "Identifier", - "src": "1615:7:3" + "src": "1546:7:3" }, { "attributes": { @@ -2342,13 +2408,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1116, + "referencedDeclaration": 1181, "type": "address", "value": "_recipient" }, - "id": 1160, + "id": 1225, "name": "Identifier", - "src": "1637:10:3" + "src": "1567:10:3" }, { "attributes": { @@ -2356,23 +2422,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1150, + "referencedDeclaration": 1215, "type": "bytes32", "value": "_txnKey" }, - "id": 1161, + "id": 1226, "name": "Identifier", - "src": "1661:7:3" + "src": "1591:7:3" } ], - "id": 1162, + "id": 1227, "name": "FunctionCall", - "src": "1560:118:3" + "src": "1492:116:3" } ], - "id": 1163, + "id": 1228, "name": "ExpressionStatement", - "src": "1560:118:3" + "src": "1492:116:3" }, { "children": [ @@ -2410,13 +2476,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1403, + "referencedDeclaration": 1460, "type": "function (bytes32,address,string memory)", "value": "setNewTxn" }, - "id": 1164, + "id": 1229, "name": "Identifier", - "src": "1687:9:3" + "src": "1618:9:3" }, { "attributes": { @@ -2424,13 +2490,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1150, + "referencedDeclaration": 1215, "type": "bytes32", "value": "_txnKey" }, - "id": 1165, + "id": 1230, "name": "Identifier", - "src": "1697:7:3" + "src": "1628:7:3" }, { "attributes": { @@ -2438,13 +2504,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1116, + "referencedDeclaration": 1181, "type": "address", "value": "_recipient" }, - "id": 1166, + "id": 1231, "name": "Identifier", - "src": "1706:10:3" + "src": "1637:10:3" }, { "attributes": { @@ -2452,33 +2518,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1114, + "referencedDeclaration": 1179, "type": "string memory", "value": "_badgeName" }, - "id": 1167, + "id": 1232, "name": "Identifier", - "src": "1718:10:3" + "src": "1649:10:3" } ], - "id": 1168, + "id": 1233, "name": "FunctionCall", - "src": "1687:42:3" + "src": "1618:42:3" } ], - "id": 1169, + "id": 1234, "name": "ExpressionStatement", - "src": "1687:42:3" + "src": "1618:42:3" } ], - "id": 1170, + "id": 1235, "name": "Block", - "src": "1317:419:3" + "src": "1249:418:3" } ], - "id": 1171, + "id": 1236, "name": "FunctionDefinition", - "src": "1168:568:3" + "src": "1103:564:3" }, { "attributes": { @@ -2490,7 +2556,7 @@ ], "name": "_sendToRecipient", "payable": false, - "scope": 1251, + "scope": 1313, "stateMutability": "nonpayable", "superFunction": null, "visibility": "private" @@ -2502,7 +2568,7 @@ "attributes": { "constant": false, "name": "_badgeName", - "scope": 1232, + "scope": 1294, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -2515,20 +2581,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 1172, + "id": 1237, "name": "ElementaryTypeName", - "src": "1876:6:3" + "src": "1803:6:3" } ], - "id": 1173, + "id": 1238, "name": "VariableDeclaration", - "src": "1876:17:3" + "src": "1803:17:3" }, { "attributes": { "constant": false, "name": "expires", - "scope": 1232, + "scope": 1294, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2541,20 +2607,20 @@ "name": "uint", "type": "uint256" }, - "id": 1174, + "id": 1239, "name": "ElementaryTypeName", - "src": "1904:4:3" + "src": "1830:4:3" } ], - "id": 1175, + "id": 1240, "name": "VariableDeclaration", - "src": "1904:12:3" + "src": "1830:12:3" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 1232, + "scope": 1294, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2567,20 +2633,20 @@ "name": "address", "type": "address" }, - "id": 1176, + "id": 1241, "name": "ElementaryTypeName", - "src": "1927:7:3" + "src": "1852:7:3" } ], - "id": 1177, + "id": 1242, "name": "VariableDeclaration", - "src": "1927:18:3" + "src": "1852:18:3" }, { "attributes": { "constant": false, "name": "_txnKey", - "scope": 1232, + "scope": 1294, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2593,19 +2659,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1178, + "id": 1243, "name": "ElementaryTypeName", - "src": "1956:7:3" + "src": "1880:7:3" } ], - "id": 1179, + "id": 1244, "name": "VariableDeclaration", - "src": "1956:15:3" + "src": "1880:15:3" } ], - "id": 1180, + "id": 1245, "name": "ParameterList", - "src": "1866:111:3" + "src": "1793:108:3" }, { "attributes": { @@ -2614,16 +2680,16 @@ ] }, "children": [], - "id": 1181, + "id": 1246, "name": "ParameterList", - "src": "1990:0:3" + "src": "1914:0:3" }, { "children": [ { "attributes": { "assignments": [ - 1185 + 1248 ] }, "children": [ @@ -2631,10 +2697,10 @@ "attributes": { "constant": false, "name": "badge", - "scope": 1232, + "scope": 1294, "stateVariable": false, "storageLocation": "memory", - "type": "struct BadgeLibrary.Badge memory", + "type": "struct BadgeManager.Badge memory", "value": null, "visibility": "internal" }, @@ -2642,18 +2708,18 @@ { "attributes": { "contractScope": null, - "name": "BadgeLibrary.Badge", - "referencedDeclaration": 1746, - "type": "struct BadgeLibrary.Badge storage pointer" + "name": "Badge", + "referencedDeclaration": 192, + "type": "struct BadgeManager.Badge storage pointer" }, - "id": 1184, + "id": 1247, "name": "UserDefinedTypeName", - "src": "2003:18:3" + "src": "1924:5:3" } ], - "id": 1185, + "id": 1248, "name": "VariableDeclaration", - "src": "2003:31:3" + "src": "1924:18:3" }, { "attributes": { @@ -2662,7 +2728,7 @@ "isLValue": true, "isPure": false, "lValueRequested": false, - "type": "struct BadgeLibrary.Badge storage ref" + "type": "struct BadgeManager.Badge storage ref" }, "children": [ { @@ -2673,8 +2739,8 @@ "isPure": false, "lValueRequested": false, "member_name": "badges", - "referencedDeclaration": 186, - "type": "mapping(bytes32 => struct BadgeLibrary.Badge storage ref)" + "referencedDeclaration": 207, + "type": "mapping(bytes32 => struct BadgeManager.Badge storage ref)" }, "children": [ { @@ -2683,18 +2749,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 1186, + "id": 1249, "name": "Identifier", - "src": "2037:10:3" + "src": "1945:10:3" } ], - "id": 1187, + "id": 1250, "name": "MemberAccess", - "src": "2037:17:3" + "src": "1945:17:3" }, { "attributes": { @@ -2719,33 +2785,16 @@ "typeString": "string memory" } ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getBadgeNameHash", - "referencedDeclaration": 1769, - "type": "function (string memory) pure returns (bytes32)" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 558, + "type": "function (string memory) pure returns (bytes32)", + "value": "getBadgeNameHash" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1812, - "type": "type(library BadgeLibrary)", - "value": "BadgeLibrary" - }, - "id": 1188, - "name": "Identifier", - "src": "2055:12:3" - } - ], - "id": 1189, - "name": "MemberAccess", - "src": "2055:29:3" + "id": 1251, + "name": "Identifier", + "src": "1963:16:3" }, { "attributes": { @@ -2753,28 +2802,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1173, + "referencedDeclaration": 1238, "type": "string memory", "value": "_badgeName" }, - "id": 1190, + "id": 1252, "name": "Identifier", - "src": "2085:10:3" + "src": "1980:10:3" } ], - "id": 1191, + "id": 1253, "name": "FunctionCall", - "src": "2055:41:3" + "src": "1963:28:3" } ], - "id": 1192, + "id": 1254, "name": "IndexAccess", - "src": "2037:60:3" + "src": "1945:47:3" } ], - "id": 1193, + "id": 1255, "name": "VariableDeclarationStatement", - "src": "2003:94:3" + "src": "1924:68:3" }, { "children": [ @@ -2804,13 +2853,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 1194, + "id": 1256, "name": "Identifier", - "src": "2107:7:3" + "src": "2002:7:3" }, { "attributes": { @@ -2835,7 +2884,7 @@ "isPure": false, "lValueRequested": false, "member_name": "issuer", - "referencedDeclaration": 1737, + "referencedDeclaration": 183, "type": "address" }, "children": [ @@ -2845,18 +2894,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1185, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1248, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1195, + "id": 1257, "name": "Identifier", - "src": "2115:5:3" + "src": "2010:5:3" } ], - "id": 1196, + "id": 1258, "name": "MemberAccess", - "src": "2115:12:3" + "src": "2010:12:3" }, { "attributes": { @@ -2864,33 +2913,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1055, + "referencedDeclaration": 1120, "type": "address", "value": "NONE" }, - "id": 1197, + "id": 1259, "name": "Identifier", - "src": "2131:4:3" + "src": "2026:4:3" } ], - "id": 1198, + "id": 1260, "name": "BinaryOperation", - "src": "2115:20:3" + "src": "2010:20:3" } ], - "id": 1199, + "id": 1261, "name": "FunctionCall", - "src": "2107:29:3" + "src": "2002:29:3" } ], - "id": 1200, + "id": 1262, "name": "ExpressionStatement", - "src": "2107:29:3" + "src": "2002:29:3" }, { "attributes": { "assignments": [ - 1202 + 1264 ] }, "children": [ @@ -2898,7 +2947,7 @@ "attributes": { "constant": false, "name": "holder", - "scope": 1232, + "scope": 1294, "stateVariable": false, "storageLocation": "default", "type": "contract Holder", @@ -2910,17 +2959,17 @@ "attributes": { "contractScope": null, "name": "Holder", - "referencedDeclaration": 1042, + "referencedDeclaration": 1108, "type": "contract Holder" }, - "id": 1201, + "id": 1263, "name": "UserDefinedTypeName", - "src": "2146:6:3" + "src": "2041:6:3" } ], - "id": 1202, + "id": 1264, "name": "VariableDeclaration", - "src": "2146:13:3" + "src": "2041:13:3" }, { "attributes": { @@ -2948,13 +2997,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1042, + "referencedDeclaration": 1108, "type": "type(contract Holder)", "value": "Holder" }, - "id": 1203, + "id": 1265, "name": "Identifier", - "src": "2162:6:3" + "src": "2057:6:3" }, { "attributes": { @@ -2962,23 +3011,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1177, + "referencedDeclaration": 1242, "type": "address", "value": "_recipient" }, - "id": 1204, + "id": 1266, "name": "Identifier", - "src": "2169:10:3" + "src": "2064:10:3" } ], - "id": 1205, + "id": 1267, "name": "FunctionCall", - "src": "2162:18:3" + "src": "2057:18:3" } ], - "id": 1206, + "id": 1268, "name": "VariableDeclarationStatement", - "src": "2146:34:3" + "src": "2041:34:3" }, { "children": [ @@ -3038,7 +3087,7 @@ "isPure": false, "lValueRequested": false, "member_name": "storeCredential", - "referencedDeclaration": 726, + "referencedDeclaration": 792, "type": "function (address,string memory,string memory,string memory,string memory,uint256,address,bytes32) external" }, "children": [ @@ -3048,18 +3097,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1202, + "referencedDeclaration": 1264, "type": "contract Holder", "value": "holder" }, - "id": 1207, + "id": 1269, "name": "Identifier", - "src": "2190:6:3" + "src": "2085:6:3" } ], - "id": 1209, + "id": 1271, "name": "MemberAccess", - "src": "2190:22:3" + "src": "2085:22:3" }, { "attributes": { @@ -3069,7 +3118,7 @@ "isPure": false, "lValueRequested": false, "member_name": "issuer", - "referencedDeclaration": 1737, + "referencedDeclaration": 183, "type": "address" }, "children": [ @@ -3079,18 +3128,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1185, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1248, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1210, + "id": 1272, "name": "Identifier", - "src": "2226:5:3" + "src": "2121:5:3" } ], - "id": 1211, + "id": 1273, "name": "MemberAccess", - "src": "2226:12:3" + "src": "2121:12:3" }, { "attributes": { @@ -3100,7 +3149,7 @@ "isPure": false, "lValueRequested": false, "member_name": "description", - "referencedDeclaration": 1739, + "referencedDeclaration": 185, "type": "string memory" }, "children": [ @@ -3110,18 +3159,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1185, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1248, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1212, + "id": 1274, "name": "Identifier", - "src": "2252:5:3" + "src": "2147:5:3" } ], - "id": 1213, + "id": 1275, "name": "MemberAccess", - "src": "2252:17:3" + "src": "2147:17:3" }, { "attributes": { @@ -3131,7 +3180,7 @@ "isPure": false, "lValueRequested": false, "member_name": "name", - "referencedDeclaration": 1741, + "referencedDeclaration": 187, "type": "string memory" }, "children": [ @@ -3141,18 +3190,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1185, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1248, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1214, + "id": 1276, "name": "Identifier", - "src": "2283:5:3" + "src": "2178:5:3" } ], - "id": 1215, + "id": 1277, "name": "MemberAccess", - "src": "2283:10:3" + "src": "2178:10:3" }, { "attributes": { @@ -3162,7 +3211,7 @@ "isPure": false, "lValueRequested": false, "member_name": "image", - "referencedDeclaration": 1743, + "referencedDeclaration": 189, "type": "string memory" }, "children": [ @@ -3172,18 +3221,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1185, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1248, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1216, + "id": 1278, "name": "Identifier", - "src": "2307:5:3" + "src": "2202:5:3" } ], - "id": 1217, + "id": 1279, "name": "MemberAccess", - "src": "2307:11:3" + "src": "2202:11:3" }, { "attributes": { @@ -3193,7 +3242,7 @@ "isPure": false, "lValueRequested": false, "member_name": "version", - "referencedDeclaration": 1745, + "referencedDeclaration": 191, "type": "string memory" }, "children": [ @@ -3203,18 +3252,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1185, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1248, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1218, + "id": 1280, "name": "Identifier", - "src": "2332:5:3" + "src": "2227:5:3" } ], - "id": 1219, + "id": 1281, "name": "MemberAccess", - "src": "2332:13:3" + "src": "2227:13:3" }, { "attributes": { @@ -3222,13 +3271,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1175, + "referencedDeclaration": 1240, "type": "uint256", "value": "expires" }, - "id": 1220, + "id": 1282, "name": "Identifier", - "src": "2359:7:3" + "src": "2254:7:3" }, { "attributes": { @@ -3236,13 +3285,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1177, + "referencedDeclaration": 1242, "type": "address", "value": "_recipient" }, - "id": 1221, + "id": 1283, "name": "Identifier", - "src": "2380:10:3" + "src": "2275:10:3" }, { "attributes": { @@ -3250,23 +3299,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1179, + "referencedDeclaration": 1244, "type": "bytes32", "value": "_txnKey" }, - "id": 1222, + "id": 1284, "name": "Identifier", - "src": "2405:7:3" + "src": "2299:7:3" } ], - "id": 1223, + "id": 1285, "name": "FunctionCall", - "src": "2190:232:3" + "src": "2085:231:3" } ], - "id": 1224, + "id": 1286, "name": "ExpressionStatement", - "src": "2190:232:3" + "src": "2085:231:3" }, { "children": [ @@ -3300,13 +3349,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1112, + "referencedDeclaration": 1177, "type": "function (string memory,address)", "value": "CredentialIssued" }, - "id": 1225, + "id": 1287, "name": "Identifier", - "src": "2432:16:3" + "src": "2326:16:3" }, { "attributes": { @@ -3316,7 +3365,7 @@ "isPure": false, "lValueRequested": false, "member_name": "name", - "referencedDeclaration": 1741, + "referencedDeclaration": 187, "type": "string memory" }, "children": [ @@ -3326,18 +3375,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1185, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1248, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1226, + "id": 1288, "name": "Identifier", - "src": "2462:5:3" + "src": "2356:5:3" } ], - "id": 1227, + "id": 1289, "name": "MemberAccess", - "src": "2462:10:3" + "src": "2356:10:3" }, { "attributes": { @@ -3345,33 +3394,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1177, + "referencedDeclaration": 1242, "type": "address", "value": "_recipient" }, - "id": 1228, + "id": 1290, "name": "Identifier", - "src": "2486:10:3" + "src": "2380:10:3" } ], - "id": 1229, + "id": 1291, "name": "FunctionCall", - "src": "2432:74:3" + "src": "2326:74:3" } ], - "id": 1230, + "id": 1292, "name": "ExpressionStatement", - "src": "2432:74:3" + "src": "2326:74:3" } ], - "id": 1231, + "id": 1293, "name": "Block", - "src": "1990:523:3" + "src": "1914:493:3" } ], - "id": 1232, + "id": 1294, "name": "FunctionDefinition", - "src": "1841:672:3" + "src": "1768:639:3" }, { "attributes": { @@ -3383,7 +3432,7 @@ ], "name": "getInfo", "payable": false, - "scope": 1251, + "scope": 1313, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -3396,9 +3445,9 @@ ] }, "children": [], - "id": 1233, + "id": 1295, "name": "ParameterList", - "src": "2571:2:3" + "src": "2461:2:3" }, { "children": [ @@ -3406,7 +3455,7 @@ "attributes": { "constant": false, "name": "_issuer", - "scope": 1250, + "scope": 1312, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3419,20 +3468,20 @@ "name": "address", "type": "address" }, - "id": 1234, + "id": 1296, "name": "ElementaryTypeName", - "src": "2598:7:3" + "src": "2488:7:3" } ], - "id": 1235, + "id": 1297, "name": "VariableDeclaration", - "src": "2598:15:3" + "src": "2488:15:3" }, { "attributes": { "constant": false, "name": "_contract", - "scope": 1250, + "scope": 1312, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -3445,20 +3494,20 @@ "name": "address", "type": "address" }, - "id": 1236, + "id": 1298, "name": "ElementaryTypeName", - "src": "2615:7:3" + "src": "2505:7:3" } ], - "id": 1237, + "id": 1299, "name": "VariableDeclaration", - "src": "2615:17:3" + "src": "2505:17:3" }, { "attributes": { "constant": false, "name": "_name", - "scope": 1250, + "scope": 1312, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -3471,20 +3520,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 1238, + "id": 1300, "name": "ElementaryTypeName", - "src": "2634:6:3" + "src": "2524:6:3" } ], - "id": 1239, + "id": 1301, "name": "VariableDeclaration", - "src": "2634:12:3" + "src": "2524:12:3" }, { "attributes": { "constant": false, "name": "_url", - "scope": 1250, + "scope": 1312, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -3497,25 +3546,25 @@ "name": "string", "type": "string storage pointer" }, - "id": 1240, + "id": 1302, "name": "ElementaryTypeName", - "src": "2648:6:3" + "src": "2538:6:3" } ], - "id": 1241, + "id": 1303, "name": "VariableDeclaration", - "src": "2648:11:3" + "src": "2538:11:3" } ], - "id": 1242, + "id": 1304, "name": "ParameterList", - "src": "2597:63:3" + "src": "2487:63:3" }, { "children": [ { "attributes": { - "functionReturnParameters": 1242 + "functionReturnParameters": 1304 }, "children": [ { @@ -3539,9 +3588,9 @@ "type": "address", "value": "admin" }, - "id": 1243, + "id": 1305, "name": "Identifier", - "src": "2678:5:3" + "src": "2568:5:3" }, { "attributes": { @@ -3549,13 +3598,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1057, + "referencedDeclaration": 1122, "type": "address", "value": "issuerContract" }, - "id": 1244, + "id": 1306, "name": "Identifier", - "src": "2685:14:3" + "src": "2575:14:3" }, { "attributes": { @@ -3563,13 +3612,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1059, + "referencedDeclaration": 1124, "type": "string storage ref", "value": "name" }, - "id": 1245, + "id": 1307, "name": "Identifier", - "src": "2701:4:3" + "src": "2591:4:3" }, { "attributes": { @@ -3577,43 +3626,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1061, + "referencedDeclaration": 1126, "type": "string storage ref", "value": "url" }, - "id": 1246, + "id": 1308, "name": "Identifier", - "src": "2707:3:3" + "src": "2597:3:3" } ], - "id": 1247, + "id": 1309, "name": "TupleExpression", - "src": "2677:34:3" + "src": "2567:34:3" } ], - "id": 1248, + "id": 1310, "name": "Return", - "src": "2671:40:3" + "src": "2561:40:3" } ], - "id": 1249, + "id": 1311, "name": "Block", - "src": "2661:57:3" + "src": "2551:57:3" } ], - "id": 1250, + "id": 1312, "name": "FunctionDefinition", - "src": "2555:163:3" + "src": "2445:163:3" } ], - "id": 1251, + "id": 1313, "name": "ContractDefinition", - "src": "182:2539:3" + "src": "132:2479:3" } ], - "id": 1252, + "id": 1314, "name": "SourceUnit", - "src": "0:2721:3" + "src": "0:2612:3" }, "compiler": { "name": "solc", @@ -3621,5 +3670,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.892Z" + "updatedAt": "2018-01-14T10:53:22.995Z" } \ No newline at end of file diff --git a/build/contracts/Migrations.json b/build/contracts/Migrations.json index de0ac94..2873ceb 100644 --- a/build/contracts/Migrations.json +++ b/build/contracts/Migrations.json @@ -75,7 +75,7 @@ "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 1308 + 1370 ] } }, @@ -89,7 +89,7 @@ ".17" ] }, - "id": 1253, + "id": 1315, "name": "PragmaDirective", "src": "0:24:4" }, @@ -105,17 +105,17 @@ "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 1308 + 1370 ], "name": "Migrations", - "scope": 1309 + "scope": 1371 }, "children": [ { "attributes": { "constant": false, "name": "owner", - "scope": 1308, + "scope": 1370, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -128,12 +128,12 @@ "name": "address", "type": "address" }, - "id": 1254, + "id": 1316, "name": "ElementaryTypeName", "src": "50:7:4" } ], - "id": 1255, + "id": 1317, "name": "VariableDeclaration", "src": "50:20:4" }, @@ -141,7 +141,7 @@ "attributes": { "constant": false, "name": "last_completed_migration", - "scope": 1308, + "scope": 1370, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -154,12 +154,12 @@ "name": "uint", "type": "uint256" }, - "id": 1256, + "id": 1318, "name": "ElementaryTypeName", "src": "74:4:4" } ], - "id": 1257, + "id": 1319, "name": "VariableDeclaration", "src": "74:36:4" }, @@ -176,7 +176,7 @@ ] }, "children": [], - "id": 1258, + "id": 1320, "name": "ParameterList", "src": "134:2:4" }, @@ -220,16 +220,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1259, + "id": 1321, "name": "Identifier", "src": "147:3:4" } ], - "id": 1260, + "id": 1322, "name": "MemberAccess", "src": "147:10:4" }, @@ -239,36 +239,36 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1255, + "referencedDeclaration": 1317, "type": "address", "value": "owner" }, - "id": 1261, + "id": 1323, "name": "Identifier", "src": "161:5:4" } ], - "id": 1262, + "id": 1324, "name": "BinaryOperation", "src": "147:19:4" }, { - "id": 1263, + "id": 1325, "name": "PlaceholderStatement", "src": "168:1:4" } ], - "id": 1264, + "id": 1326, "name": "IfStatement", "src": "143:26:4" } ], - "id": 1265, + "id": 1327, "name": "Block", "src": "137:37:4" } ], - "id": 1266, + "id": 1328, "name": "ModifierDefinition", "src": "115:59:4" }, @@ -282,7 +282,7 @@ ], "name": "Migrations", "payable": false, - "scope": 1308, + "scope": 1370, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -295,7 +295,7 @@ ] }, "children": [], - "id": 1267, + "id": 1329, "name": "ParameterList", "src": "197:2:4" }, @@ -306,7 +306,7 @@ ] }, "children": [], - "id": 1268, + "id": 1330, "name": "ParameterList", "src": "207:0:4" }, @@ -331,11 +331,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1255, + "referencedDeclaration": 1317, "type": "address", "value": "owner" }, - "id": 1269, + "id": 1331, "name": "Identifier", "src": "213:5:4" }, @@ -357,36 +357,36 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1270, + "id": 1332, "name": "Identifier", "src": "221:3:4" } ], - "id": 1271, + "id": 1333, "name": "MemberAccess", "src": "221:10:4" } ], - "id": 1272, + "id": 1334, "name": "Assignment", "src": "213:18:4" } ], - "id": 1273, + "id": 1335, "name": "ExpressionStatement", "src": "213:18:4" } ], - "id": 1274, + "id": 1336, "name": "Block", "src": "207:29:4" } ], - "id": 1275, + "id": 1337, "name": "FunctionDefinition", "src": "178:58:4" }, @@ -397,7 +397,7 @@ "isConstructor": false, "name": "setCompleted", "payable": false, - "scope": 1308, + "scope": 1370, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -409,7 +409,7 @@ "attributes": { "constant": false, "name": "completed", - "scope": 1287, + "scope": 1349, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -422,17 +422,17 @@ "name": "uint", "type": "uint256" }, - "id": 1276, + "id": 1338, "name": "ElementaryTypeName", "src": "262:4:4" } ], - "id": 1277, + "id": 1339, "name": "VariableDeclaration", "src": "262:14:4" } ], - "id": 1278, + "id": 1340, "name": "ParameterList", "src": "261:16:4" }, @@ -443,7 +443,7 @@ ] }, "children": [], - "id": 1281, + "id": 1343, "name": "ParameterList", "src": "296:0:4" }, @@ -460,16 +460,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1266, + "referencedDeclaration": 1328, "type": "modifier ()", "value": "restricted" }, - "id": 1279, + "id": 1341, "name": "Identifier", "src": "285:10:4" } ], - "id": 1280, + "id": 1342, "name": "ModifierInvocation", "src": "285:10:4" }, @@ -494,11 +494,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1257, + "referencedDeclaration": 1319, "type": "uint256", "value": "last_completed_migration" }, - "id": 1282, + "id": 1344, "name": "Identifier", "src": "302:24:4" }, @@ -508,31 +508,31 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1277, + "referencedDeclaration": 1339, "type": "uint256", "value": "completed" }, - "id": 1283, + "id": 1345, "name": "Identifier", "src": "329:9:4" } ], - "id": 1284, + "id": 1346, "name": "Assignment", "src": "302:36:4" } ], - "id": 1285, + "id": 1347, "name": "ExpressionStatement", "src": "302:36:4" } ], - "id": 1286, + "id": 1348, "name": "Block", "src": "296:47:4" } ], - "id": 1287, + "id": 1349, "name": "FunctionDefinition", "src": "240:103:4" }, @@ -543,7 +543,7 @@ "isConstructor": false, "name": "upgrade", "payable": false, - "scope": 1308, + "scope": 1370, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -555,7 +555,7 @@ "attributes": { "constant": false, "name": "new_address", - "scope": 1307, + "scope": 1369, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -568,17 +568,17 @@ "name": "address", "type": "address" }, - "id": 1288, + "id": 1350, "name": "ElementaryTypeName", "src": "364:7:4" } ], - "id": 1289, + "id": 1351, "name": "VariableDeclaration", "src": "364:19:4" } ], - "id": 1290, + "id": 1352, "name": "ParameterList", "src": "363:21:4" }, @@ -589,7 +589,7 @@ ] }, "children": [], - "id": 1293, + "id": 1355, "name": "ParameterList", "src": "403:0:4" }, @@ -606,16 +606,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1266, + "referencedDeclaration": 1328, "type": "modifier ()", "value": "restricted" }, - "id": 1291, + "id": 1353, "name": "Identifier", "src": "392:10:4" } ], - "id": 1292, + "id": 1354, "name": "ModifierInvocation", "src": "392:10:4" }, @@ -624,7 +624,7 @@ { "attributes": { "assignments": [ - 1295 + 1357 ] }, "children": [ @@ -632,7 +632,7 @@ "attributes": { "constant": false, "name": "upgraded", - "scope": 1307, + "scope": 1369, "stateVariable": false, "storageLocation": "default", "type": "contract Migrations", @@ -644,15 +644,15 @@ "attributes": { "contractScope": null, "name": "Migrations", - "referencedDeclaration": 1308, + "referencedDeclaration": 1370, "type": "contract Migrations" }, - "id": 1294, + "id": 1356, "name": "UserDefinedTypeName", "src": "409:10:4" } ], - "id": 1295, + "id": 1357, "name": "VariableDeclaration", "src": "409:19:4" }, @@ -682,11 +682,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1308, + "referencedDeclaration": 1370, "type": "type(contract Migrations)", "value": "Migrations" }, - "id": 1296, + "id": 1358, "name": "Identifier", "src": "431:10:4" }, @@ -696,21 +696,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1289, + "referencedDeclaration": 1351, "type": "address", "value": "new_address" }, - "id": 1297, + "id": 1359, "name": "Identifier", "src": "442:11:4" } ], - "id": 1298, + "id": 1360, "name": "FunctionCall", "src": "431:23:4" } ], - "id": 1299, + "id": 1361, "name": "VariableDeclarationStatement", "src": "409:45:4" }, @@ -744,7 +744,7 @@ "isPure": false, "lValueRequested": false, "member_name": "setCompleted", - "referencedDeclaration": 1287, + "referencedDeclaration": 1349, "type": "function (uint256) external" }, "children": [ @@ -754,16 +754,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1295, + "referencedDeclaration": 1357, "type": "contract Migrations", "value": "upgraded" }, - "id": 1300, + "id": 1362, "name": "Identifier", "src": "460:8:4" } ], - "id": 1302, + "id": 1364, "name": "MemberAccess", "src": "460:21:4" }, @@ -773,41 +773,41 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1257, + "referencedDeclaration": 1319, "type": "uint256", "value": "last_completed_migration" }, - "id": 1303, + "id": 1365, "name": "Identifier", "src": "482:24:4" } ], - "id": 1304, + "id": 1366, "name": "FunctionCall", "src": "460:47:4" } ], - "id": 1305, + "id": 1367, "name": "ExpressionStatement", "src": "460:47:4" } ], - "id": 1306, + "id": 1368, "name": "Block", "src": "403:109:4" } ], - "id": 1307, + "id": 1369, "name": "FunctionDefinition", "src": "347:165:4" } ], - "id": 1308, + "id": 1370, "name": "ContractDefinition", "src": "26:488:4" } ], - "id": 1309, + "id": 1371, "name": "SourceUnit", "src": "0:515:4" }, @@ -817,5 +817,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.893Z" + "updatedAt": "2018-01-14T10:53:22.996Z" } \ No newline at end of file diff --git a/build/contracts/SafeMath.json b/build/contracts/SafeMath.json index d2a556d..6d67ebd 100644 --- a/build/contracts/SafeMath.json +++ b/build/contracts/SafeMath.json @@ -12,7 +12,7 @@ "absolutePath": "zeppelin-solidity/contracts/math/SafeMath.sol", "exportedSymbols": { "SafeMath": [ - 1910 + 1966 ] } }, @@ -26,7 +26,7 @@ ".18" ] }, - "id": 1814, + "id": 1870, "name": "PragmaDirective", "src": "0:24:9" }, @@ -42,10 +42,10 @@ "documentation": "@title SafeMath\n@dev Math operations with safety checks that throw on error", "fullyImplemented": true, "linearizedBaseContracts": [ - 1910 + 1966 ], "name": "SafeMath", - "scope": 1911 + "scope": 1967 }, "children": [ { @@ -58,7 +58,7 @@ ], "name": "mul", "payable": false, - "scope": 1910, + "scope": 1966, "stateMutability": "pure", "superFunction": null, "visibility": "internal" @@ -70,7 +70,7 @@ "attributes": { "constant": false, "name": "a", - "scope": 1847, + "scope": 1903, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -83,12 +83,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1815, + "id": 1871, "name": "ElementaryTypeName", "src": "151:7:9" } ], - "id": 1816, + "id": 1872, "name": "VariableDeclaration", "src": "151:9:9" }, @@ -96,7 +96,7 @@ "attributes": { "constant": false, "name": "b", - "scope": 1847, + "scope": 1903, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -109,17 +109,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1817, + "id": 1873, "name": "ElementaryTypeName", "src": "162:7:9" } ], - "id": 1818, + "id": 1874, "name": "VariableDeclaration", "src": "162:9:9" } ], - "id": 1819, + "id": 1875, "name": "ParameterList", "src": "150:22:9" }, @@ -129,7 +129,7 @@ "attributes": { "constant": false, "name": "", - "scope": 1847, + "scope": 1903, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -142,17 +142,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1820, + "id": 1876, "name": "ElementaryTypeName", "src": "196:7:9" } ], - "id": 1821, + "id": 1877, "name": "VariableDeclaration", "src": "196:7:9" } ], - "id": 1822, + "id": 1878, "name": "ParameterList", "src": "195:9:9" }, @@ -184,11 +184,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1816, + "referencedDeclaration": 1872, "type": "uint256", "value": "a" }, - "id": 1823, + "id": 1879, "name": "Identifier", "src": "215:1:9" }, @@ -205,12 +205,12 @@ "type": "int_const 0", "value": "0" }, - "id": 1824, + "id": 1880, "name": "Literal", "src": "220:1:9" } ], - "id": 1825, + "id": 1881, "name": "BinaryOperation", "src": "215:6:9" }, @@ -218,7 +218,7 @@ "children": [ { "attributes": { - "functionReturnParameters": 1822 + "functionReturnParameters": 1878 }, "children": [ { @@ -234,29 +234,29 @@ "type": "int_const 0", "value": "0" }, - "id": 1826, + "id": 1882, "name": "Literal", "src": "238:1:9" } ], - "id": 1827, + "id": 1883, "name": "Return", "src": "231:8:9" } ], - "id": 1828, + "id": 1884, "name": "Block", "src": "223:23:9" } ], - "id": 1829, + "id": 1885, "name": "IfStatement", "src": "211:35:9" }, { "attributes": { "assignments": [ - 1831 + 1887 ] }, "children": [ @@ -264,7 +264,7 @@ "attributes": { "constant": false, "name": "c", - "scope": 1847, + "scope": 1903, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -277,12 +277,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1830, + "id": 1886, "name": "ElementaryTypeName", "src": "251:7:9" } ], - "id": 1831, + "id": 1887, "name": "VariableDeclaration", "src": "251:9:9" }, @@ -307,11 +307,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1816, + "referencedDeclaration": 1872, "type": "uint256", "value": "a" }, - "id": 1832, + "id": 1888, "name": "Identifier", "src": "263:1:9" }, @@ -321,21 +321,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1818, + "referencedDeclaration": 1874, "type": "uint256", "value": "b" }, - "id": 1833, + "id": 1889, "name": "Identifier", "src": "267:1:9" } ], - "id": 1834, + "id": 1890, "name": "BinaryOperation", "src": "263:5:9" } ], - "id": 1835, + "id": 1891, "name": "VariableDeclarationStatement", "src": "251:17:9" }, @@ -367,11 +367,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2406, + "referencedDeclaration": 2462, "type": "function (bool) pure", "value": "assert" }, - "id": 1836, + "id": 1892, "name": "Identifier", "src": "274:6:9" }, @@ -411,11 +411,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1831, + "referencedDeclaration": 1887, "type": "uint256", "value": "c" }, - "id": 1837, + "id": 1893, "name": "Identifier", "src": "281:1:9" }, @@ -425,16 +425,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1816, + "referencedDeclaration": 1872, "type": "uint256", "value": "a" }, - "id": 1838, + "id": 1894, "name": "Identifier", "src": "285:1:9" } ], - "id": 1839, + "id": 1895, "name": "BinaryOperation", "src": "281:5:9" }, @@ -444,32 +444,32 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1818, + "referencedDeclaration": 1874, "type": "uint256", "value": "b" }, - "id": 1840, + "id": 1896, "name": "Identifier", "src": "290:1:9" } ], - "id": 1841, + "id": 1897, "name": "BinaryOperation", "src": "281:10:9" } ], - "id": 1842, + "id": 1898, "name": "FunctionCall", "src": "274:18:9" } ], - "id": 1843, + "id": 1899, "name": "ExpressionStatement", "src": "274:18:9" }, { "attributes": { - "functionReturnParameters": 1822 + "functionReturnParameters": 1878 }, "children": [ { @@ -478,26 +478,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1831, + "referencedDeclaration": 1887, "type": "uint256", "value": "c" }, - "id": 1844, + "id": 1900, "name": "Identifier", "src": "305:1:9" } ], - "id": 1845, + "id": 1901, "name": "Return", "src": "298:8:9" } ], - "id": 1846, + "id": 1902, "name": "Block", "src": "205:106:9" } ], - "id": 1847, + "id": 1903, "name": "FunctionDefinition", "src": "138:173:9" }, @@ -511,7 +511,7 @@ ], "name": "div", "payable": false, - "scope": 1910, + "scope": 1966, "stateMutability": "pure", "superFunction": null, "visibility": "internal" @@ -523,7 +523,7 @@ "attributes": { "constant": false, "name": "a", - "scope": 1865, + "scope": 1921, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -536,12 +536,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1848, + "id": 1904, "name": "ElementaryTypeName", "src": "328:7:9" } ], - "id": 1849, + "id": 1905, "name": "VariableDeclaration", "src": "328:9:9" }, @@ -549,7 +549,7 @@ "attributes": { "constant": false, "name": "b", - "scope": 1865, + "scope": 1921, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -562,17 +562,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1850, + "id": 1906, "name": "ElementaryTypeName", "src": "339:7:9" } ], - "id": 1851, + "id": 1907, "name": "VariableDeclaration", "src": "339:9:9" } ], - "id": 1852, + "id": 1908, "name": "ParameterList", "src": "327:22:9" }, @@ -582,7 +582,7 @@ "attributes": { "constant": false, "name": "", - "scope": 1865, + "scope": 1921, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -595,17 +595,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1853, + "id": 1909, "name": "ElementaryTypeName", "src": "373:7:9" } ], - "id": 1854, + "id": 1910, "name": "VariableDeclaration", "src": "373:7:9" } ], - "id": 1855, + "id": 1911, "name": "ParameterList", "src": "372:9:9" }, @@ -614,7 +614,7 @@ { "attributes": { "assignments": [ - 1857 + 1913 ] }, "children": [ @@ -622,7 +622,7 @@ "attributes": { "constant": false, "name": "c", - "scope": 1865, + "scope": 1921, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -635,12 +635,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1856, + "id": 1912, "name": "ElementaryTypeName", "src": "462:7:9" } ], - "id": 1857, + "id": 1913, "name": "VariableDeclaration", "src": "462:9:9" }, @@ -665,11 +665,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1849, + "referencedDeclaration": 1905, "type": "uint256", "value": "a" }, - "id": 1858, + "id": 1914, "name": "Identifier", "src": "474:1:9" }, @@ -679,27 +679,27 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1851, + "referencedDeclaration": 1907, "type": "uint256", "value": "b" }, - "id": 1859, + "id": 1915, "name": "Identifier", "src": "478:1:9" } ], - "id": 1860, + "id": 1916, "name": "BinaryOperation", "src": "474:5:9" } ], - "id": 1861, + "id": 1917, "name": "VariableDeclarationStatement", "src": "462:17:9" }, { "attributes": { - "functionReturnParameters": 1855 + "functionReturnParameters": 1911 }, "children": [ { @@ -708,26 +708,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1857, + "referencedDeclaration": 1913, "type": "uint256", "value": "c" }, - "id": 1862, + "id": 1918, "name": "Identifier", "src": "574:1:9" } ], - "id": 1863, + "id": 1919, "name": "Return", "src": "567:8:9" } ], - "id": 1864, + "id": 1920, "name": "Block", "src": "382:198:9" } ], - "id": 1865, + "id": 1921, "name": "FunctionDefinition", "src": "315:265:9" }, @@ -741,7 +741,7 @@ ], "name": "sub", "payable": false, - "scope": 1910, + "scope": 1966, "stateMutability": "pure", "superFunction": null, "visibility": "internal" @@ -753,7 +753,7 @@ "attributes": { "constant": false, "name": "a", - "scope": 1885, + "scope": 1941, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -766,12 +766,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1866, + "id": 1922, "name": "ElementaryTypeName", "src": "597:7:9" } ], - "id": 1867, + "id": 1923, "name": "VariableDeclaration", "src": "597:9:9" }, @@ -779,7 +779,7 @@ "attributes": { "constant": false, "name": "b", - "scope": 1885, + "scope": 1941, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -792,17 +792,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1868, + "id": 1924, "name": "ElementaryTypeName", "src": "608:7:9" } ], - "id": 1869, + "id": 1925, "name": "VariableDeclaration", "src": "608:9:9" } ], - "id": 1870, + "id": 1926, "name": "ParameterList", "src": "596:22:9" }, @@ -812,7 +812,7 @@ "attributes": { "constant": false, "name": "", - "scope": 1885, + "scope": 1941, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -825,17 +825,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1871, + "id": 1927, "name": "ElementaryTypeName", "src": "642:7:9" } ], - "id": 1872, + "id": 1928, "name": "VariableDeclaration", "src": "642:7:9" } ], - "id": 1873, + "id": 1929, "name": "ParameterList", "src": "641:9:9" }, @@ -869,11 +869,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2406, + "referencedDeclaration": 2462, "type": "function (bool) pure", "value": "assert" }, - "id": 1874, + "id": 1930, "name": "Identifier", "src": "657:6:9" }, @@ -898,11 +898,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1869, + "referencedDeclaration": 1925, "type": "uint256", "value": "b" }, - "id": 1875, + "id": 1931, "name": "Identifier", "src": "664:1:9" }, @@ -912,32 +912,32 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1867, + "referencedDeclaration": 1923, "type": "uint256", "value": "a" }, - "id": 1876, + "id": 1932, "name": "Identifier", "src": "669:1:9" } ], - "id": 1877, + "id": 1933, "name": "BinaryOperation", "src": "664:6:9" } ], - "id": 1878, + "id": 1934, "name": "FunctionCall", "src": "657:14:9" } ], - "id": 1879, + "id": 1935, "name": "ExpressionStatement", "src": "657:14:9" }, { "attributes": { - "functionReturnParameters": 1873 + "functionReturnParameters": 1929 }, "children": [ { @@ -961,11 +961,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1867, + "referencedDeclaration": 1923, "type": "uint256", "value": "a" }, - "id": 1880, + "id": 1936, "name": "Identifier", "src": "684:1:9" }, @@ -975,31 +975,31 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1869, + "referencedDeclaration": 1925, "type": "uint256", "value": "b" }, - "id": 1881, + "id": 1937, "name": "Identifier", "src": "688:1:9" } ], - "id": 1882, + "id": 1938, "name": "BinaryOperation", "src": "684:5:9" } ], - "id": 1883, + "id": 1939, "name": "Return", "src": "677:12:9" } ], - "id": 1884, + "id": 1940, "name": "Block", "src": "651:43:9" } ], - "id": 1885, + "id": 1941, "name": "FunctionDefinition", "src": "584:110:9" }, @@ -1013,7 +1013,7 @@ ], "name": "add", "payable": false, - "scope": 1910, + "scope": 1966, "stateMutability": "pure", "superFunction": null, "visibility": "internal" @@ -1025,7 +1025,7 @@ "attributes": { "constant": false, "name": "a", - "scope": 1909, + "scope": 1965, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1038,12 +1038,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1886, + "id": 1942, "name": "ElementaryTypeName", "src": "711:7:9" } ], - "id": 1887, + "id": 1943, "name": "VariableDeclaration", "src": "711:9:9" }, @@ -1051,7 +1051,7 @@ "attributes": { "constant": false, "name": "b", - "scope": 1909, + "scope": 1965, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1064,17 +1064,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1888, + "id": 1944, "name": "ElementaryTypeName", "src": "722:7:9" } ], - "id": 1889, + "id": 1945, "name": "VariableDeclaration", "src": "722:9:9" } ], - "id": 1890, + "id": 1946, "name": "ParameterList", "src": "710:22:9" }, @@ -1084,7 +1084,7 @@ "attributes": { "constant": false, "name": "", - "scope": 1909, + "scope": 1965, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1097,17 +1097,17 @@ "name": "uint256", "type": "uint256" }, - "id": 1891, + "id": 1947, "name": "ElementaryTypeName", "src": "756:7:9" } ], - "id": 1892, + "id": 1948, "name": "VariableDeclaration", "src": "756:7:9" } ], - "id": 1893, + "id": 1949, "name": "ParameterList", "src": "755:9:9" }, @@ -1116,7 +1116,7 @@ { "attributes": { "assignments": [ - 1895 + 1951 ] }, "children": [ @@ -1124,7 +1124,7 @@ "attributes": { "constant": false, "name": "c", - "scope": 1909, + "scope": 1965, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1137,12 +1137,12 @@ "name": "uint256", "type": "uint256" }, - "id": 1894, + "id": 1950, "name": "ElementaryTypeName", "src": "771:7:9" } ], - "id": 1895, + "id": 1951, "name": "VariableDeclaration", "src": "771:9:9" }, @@ -1167,11 +1167,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1887, + "referencedDeclaration": 1943, "type": "uint256", "value": "a" }, - "id": 1896, + "id": 1952, "name": "Identifier", "src": "783:1:9" }, @@ -1181,21 +1181,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1889, + "referencedDeclaration": 1945, "type": "uint256", "value": "b" }, - "id": 1897, + "id": 1953, "name": "Identifier", "src": "787:1:9" } ], - "id": 1898, + "id": 1954, "name": "BinaryOperation", "src": "783:5:9" } ], - "id": 1899, + "id": 1955, "name": "VariableDeclarationStatement", "src": "771:17:9" }, @@ -1227,11 +1227,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2406, + "referencedDeclaration": 2462, "type": "function (bool) pure", "value": "assert" }, - "id": 1900, + "id": 1956, "name": "Identifier", "src": "794:6:9" }, @@ -1256,11 +1256,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1895, + "referencedDeclaration": 1951, "type": "uint256", "value": "c" }, - "id": 1901, + "id": 1957, "name": "Identifier", "src": "801:1:9" }, @@ -1270,32 +1270,32 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1887, + "referencedDeclaration": 1943, "type": "uint256", "value": "a" }, - "id": 1902, + "id": 1958, "name": "Identifier", "src": "806:1:9" } ], - "id": 1903, + "id": 1959, "name": "BinaryOperation", "src": "801:6:9" } ], - "id": 1904, + "id": 1960, "name": "FunctionCall", "src": "794:14:9" } ], - "id": 1905, + "id": 1961, "name": "ExpressionStatement", "src": "794:14:9" }, { "attributes": { - "functionReturnParameters": 1893 + "functionReturnParameters": 1949 }, "children": [ { @@ -1304,36 +1304,36 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1895, + "referencedDeclaration": 1951, "type": "uint256", "value": "c" }, - "id": 1906, + "id": 1962, "name": "Identifier", "src": "821:1:9" } ], - "id": 1907, + "id": 1963, "name": "Return", "src": "814:8:9" } ], - "id": 1908, + "id": 1964, "name": "Block", "src": "765:62:9" } ], - "id": 1909, + "id": 1965, "name": "FunctionDefinition", "src": "698:129:9" } ], - "id": 1910, + "id": 1966, "name": "ContractDefinition", "src": "117:712:9" } ], - "id": 1911, + "id": 1967, "name": "SourceUnit", "src": "0:830:9" }, @@ -1343,5 +1343,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.896Z" + "updatedAt": "2018-01-14T10:53:23.000Z" } \ No newline at end of file diff --git a/build/contracts/StandardToken.json b/build/contracts/StandardToken.json index 7a9ce86..440887b 100644 --- a/build/contracts/StandardToken.json +++ b/build/contracts/StandardToken.json @@ -232,7 +232,7 @@ "absolutePath": "zeppelin-solidity/contracts/token/StandardToken.sol", "exportedSymbols": { "StandardToken": [ - 2403 + 2459 ] } }, @@ -246,58 +246,58 @@ ".18" ] }, - "id": 2159, + "id": 2215, "name": "PragmaDirective", "src": "0:24:15" }, { "attributes": { - "SourceUnit": 1997, + "SourceUnit": 2053, "absolutePath": "zeppelin-solidity/contracts/token/BasicToken.sol", "file": "./BasicToken.sol", - "scope": 2404, + "scope": 2460, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 2160, + "id": 2216, "name": "ImportDirective", "src": "27:26:15" }, { "attributes": { - "SourceUnit": 2129, + "SourceUnit": 2185, "absolutePath": "zeppelin-solidity/contracts/token/ERC20.sol", "file": "./ERC20.sol", - "scope": 2404, + "scope": 2460, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 2161, + "id": 2217, "name": "ImportDirective", "src": "54:21:15" }, { "attributes": { "contractDependencies": [ - 1996, - 2128, - 2157 + 2052, + 2184, + 2213 ], "contractKind": "contract", "documentation": "@title Standard ERC20 token\n * @dev Implementation of the basic standard token.\n@dev https://github.com/ethereum/EIPs/issues/20\n@dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol", "fullyImplemented": true, "linearizedBaseContracts": [ - 2403, - 1996, - 2128, - 2157 + 2459, + 2052, + 2184, + 2213 ], "name": "StandardToken", - "scope": 2404 + "scope": 2460 }, "children": [ { @@ -311,15 +311,15 @@ "attributes": { "contractScope": null, "name": "ERC20", - "referencedDeclaration": 2128, + "referencedDeclaration": 2184, "type": "contract ERC20" }, - "id": 2162, + "id": 2218, "name": "UserDefinedTypeName", "src": "371:5:15" } ], - "id": 2163, + "id": 2219, "name": "InheritanceSpecifier", "src": "371:5:15" }, @@ -334,15 +334,15 @@ "attributes": { "contractScope": null, "name": "BasicToken", - "referencedDeclaration": 1996, + "referencedDeclaration": 2052, "type": "contract BasicToken" }, - "id": 2164, + "id": 2220, "name": "UserDefinedTypeName", "src": "378:10:15" } ], - "id": 2165, + "id": 2221, "name": "InheritanceSpecifier", "src": "378:10:15" }, @@ -350,7 +350,7 @@ "attributes": { "constant": false, "name": "allowed", - "scope": 2403, + "scope": 2459, "stateVariable": true, "storageLocation": "default", "type": "mapping(address => mapping(address => uint256))", @@ -368,7 +368,7 @@ "name": "address", "type": "address" }, - "id": 2166, + "id": 2222, "name": "ElementaryTypeName", "src": "403:7:15" }, @@ -382,7 +382,7 @@ "name": "address", "type": "address" }, - "id": 2167, + "id": 2223, "name": "ElementaryTypeName", "src": "423:7:15" }, @@ -391,22 +391,22 @@ "name": "uint256", "type": "uint256" }, - "id": 2168, + "id": 2224, "name": "ElementaryTypeName", "src": "434:7:15" } ], - "id": 2169, + "id": 2225, "name": "Mapping", "src": "414:28:15" } ], - "id": 2170, + "id": 2226, "name": "Mapping", "src": "394:49:15" } ], - "id": 2171, + "id": 2227, "name": "VariableDeclaration", "src": "394:66:15" }, @@ -420,9 +420,9 @@ ], "name": "transferFrom", "payable": false, - "scope": 2403, + "scope": 2459, "stateMutability": "nonpayable", - "superFunction": 2110, + "superFunction": 2166, "visibility": "public" }, "children": [ @@ -432,7 +432,7 @@ "attributes": { "constant": false, "name": "_from", - "scope": 2257, + "scope": 2313, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -445,12 +445,12 @@ "name": "address", "type": "address" }, - "id": 2172, + "id": 2228, "name": "ElementaryTypeName", "src": "759:7:15" } ], - "id": 2173, + "id": 2229, "name": "VariableDeclaration", "src": "759:13:15" }, @@ -458,7 +458,7 @@ "attributes": { "constant": false, "name": "_to", - "scope": 2257, + "scope": 2313, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -471,12 +471,12 @@ "name": "address", "type": "address" }, - "id": 2174, + "id": 2230, "name": "ElementaryTypeName", "src": "774:7:15" } ], - "id": 2175, + "id": 2231, "name": "VariableDeclaration", "src": "774:11:15" }, @@ -484,7 +484,7 @@ "attributes": { "constant": false, "name": "_value", - "scope": 2257, + "scope": 2313, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -497,17 +497,17 @@ "name": "uint256", "type": "uint256" }, - "id": 2176, + "id": 2232, "name": "ElementaryTypeName", "src": "787:7:15" } ], - "id": 2177, + "id": 2233, "name": "VariableDeclaration", "src": "787:14:15" } ], - "id": 2178, + "id": 2234, "name": "ParameterList", "src": "758:44:15" }, @@ -517,7 +517,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2257, + "scope": 2313, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -530,17 +530,17 @@ "name": "bool", "type": "bool" }, - "id": 2179, + "id": 2235, "name": "ElementaryTypeName", "src": "819:4:15" } ], - "id": 2180, + "id": 2236, "name": "VariableDeclaration", "src": "819:4:15" } ], - "id": 2181, + "id": 2237, "name": "ParameterList", "src": "818:6:15" }, @@ -574,11 +574,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 2182, + "id": 2238, "name": "Identifier", "src": "831:7:15" }, @@ -603,11 +603,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2175, + "referencedDeclaration": 2231, "type": "address", "value": "_to" }, - "id": 2183, + "id": 2239, "name": "Identifier", "src": "839:3:15" }, @@ -641,7 +641,7 @@ "type": "type(address)", "value": "address" }, - "id": 2184, + "id": 2240, "name": "ElementaryTypeNameExpression", "src": "846:7:15" }, @@ -658,27 +658,27 @@ "type": "int_const 0", "value": "0" }, - "id": 2185, + "id": 2241, "name": "Literal", "src": "854:1:15" } ], - "id": 2186, + "id": 2242, "name": "FunctionCall", "src": "846:10:15" } ], - "id": 2187, + "id": 2243, "name": "BinaryOperation", "src": "839:17:15" } ], - "id": 2188, + "id": 2244, "name": "FunctionCall", "src": "831:26:15" } ], - "id": 2189, + "id": 2245, "name": "ExpressionStatement", "src": "831:26:15" }, @@ -710,11 +710,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 2190, + "id": 2246, "name": "Identifier", "src": "863:7:15" }, @@ -739,11 +739,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2177, + "referencedDeclaration": 2233, "type": "uint256", "value": "_value" }, - "id": 2191, + "id": 2247, "name": "Identifier", "src": "871:6:15" }, @@ -763,11 +763,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 2192, + "id": 2248, "name": "Identifier", "src": "881:8:15" }, @@ -777,31 +777,31 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2173, + "referencedDeclaration": 2229, "type": "address", "value": "_from" }, - "id": 2193, + "id": 2249, "name": "Identifier", "src": "890:5:15" } ], - "id": 2194, + "id": 2250, "name": "IndexAccess", "src": "881:15:15" } ], - "id": 2195, + "id": 2251, "name": "BinaryOperation", "src": "871:25:15" } ], - "id": 2196, + "id": 2252, "name": "FunctionCall", "src": "863:34:15" } ], - "id": 2197, + "id": 2253, "name": "ExpressionStatement", "src": "863:34:15" }, @@ -833,11 +833,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2418, + "referencedDeclaration": 2474, "type": "function (bool) pure", "value": "require" }, - "id": 2198, + "id": 2254, "name": "Identifier", "src": "903:7:15" }, @@ -862,11 +862,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2177, + "referencedDeclaration": 2233, "type": "uint256", "value": "_value" }, - "id": 2199, + "id": 2255, "name": "Identifier", "src": "911:6:15" }, @@ -896,11 +896,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2200, + "id": 2256, "name": "Identifier", "src": "921:7:15" }, @@ -910,16 +910,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2173, + "referencedDeclaration": 2229, "type": "address", "value": "_from" }, - "id": 2201, + "id": 2257, "name": "Identifier", "src": "929:5:15" } ], - "id": 2202, + "id": 2258, "name": "IndexAccess", "src": "921:14:15" }, @@ -941,36 +941,36 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2203, + "id": 2259, "name": "Identifier", "src": "936:3:15" } ], - "id": 2204, + "id": 2260, "name": "MemberAccess", "src": "936:10:15" } ], - "id": 2205, + "id": 2261, "name": "IndexAccess", "src": "921:26:15" } ], - "id": 2206, + "id": 2262, "name": "BinaryOperation", "src": "911:36:15" } ], - "id": 2207, + "id": 2263, "name": "FunctionCall", "src": "903:45:15" } ], - "id": 2208, + "id": 2264, "name": "ExpressionStatement", "src": "903:45:15" }, @@ -1003,11 +1003,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 2209, + "id": 2265, "name": "Identifier", "src": "955:8:15" }, @@ -1017,16 +1017,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2173, + "referencedDeclaration": 2229, "type": "address", "value": "_from" }, - "id": 2210, + "id": 2266, "name": "Identifier", "src": "964:5:15" } ], - "id": 2211, + "id": 2267, "name": "IndexAccess", "src": "955:15:15" }, @@ -1058,7 +1058,7 @@ "isPure": false, "lValueRequested": false, "member_name": "sub", - "referencedDeclaration": 1885, + "referencedDeclaration": 1941, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -1078,11 +1078,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 2212, + "id": 2268, "name": "Identifier", "src": "973:8:15" }, @@ -1092,21 +1092,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2173, + "referencedDeclaration": 2229, "type": "address", "value": "_from" }, - "id": 2213, + "id": 2269, "name": "Identifier", "src": "982:5:15" } ], - "id": 2214, + "id": 2270, "name": "IndexAccess", "src": "973:15:15" } ], - "id": 2215, + "id": 2271, "name": "MemberAccess", "src": "973:19:15" }, @@ -1116,26 +1116,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2177, + "referencedDeclaration": 2233, "type": "uint256", "value": "_value" }, - "id": 2216, + "id": 2272, "name": "Identifier", "src": "993:6:15" } ], - "id": 2217, + "id": 2273, "name": "FunctionCall", "src": "973:27:15" } ], - "id": 2218, + "id": 2274, "name": "Assignment", "src": "955:45:15" } ], - "id": 2219, + "id": 2275, "name": "ExpressionStatement", "src": "955:45:15" }, @@ -1168,11 +1168,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 2220, + "id": 2276, "name": "Identifier", "src": "1006:8:15" }, @@ -1182,16 +1182,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2175, + "referencedDeclaration": 2231, "type": "address", "value": "_to" }, - "id": 2221, + "id": 2277, "name": "Identifier", "src": "1015:3:15" } ], - "id": 2222, + "id": 2278, "name": "IndexAccess", "src": "1006:13:15" }, @@ -1223,7 +1223,7 @@ "isPure": false, "lValueRequested": false, "member_name": "add", - "referencedDeclaration": 1909, + "referencedDeclaration": 1965, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -1243,11 +1243,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1923, + "referencedDeclaration": 1979, "type": "mapping(address => uint256)", "value": "balances" }, - "id": 2223, + "id": 2279, "name": "Identifier", "src": "1022:8:15" }, @@ -1257,21 +1257,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2175, + "referencedDeclaration": 2231, "type": "address", "value": "_to" }, - "id": 2224, + "id": 2280, "name": "Identifier", "src": "1031:3:15" } ], - "id": 2225, + "id": 2281, "name": "IndexAccess", "src": "1022:13:15" } ], - "id": 2226, + "id": 2282, "name": "MemberAccess", "src": "1022:17:15" }, @@ -1281,26 +1281,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2177, + "referencedDeclaration": 2233, "type": "uint256", "value": "_value" }, - "id": 2227, + "id": 2283, "name": "Identifier", "src": "1040:6:15" } ], - "id": 2228, + "id": 2284, "name": "FunctionCall", "src": "1022:25:15" } ], - "id": 2229, + "id": 2285, "name": "Assignment", "src": "1006:41:15" } ], - "id": 2230, + "id": 2286, "name": "ExpressionStatement", "src": "1006:41:15" }, @@ -1343,11 +1343,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2231, + "id": 2287, "name": "Identifier", "src": "1053:7:15" }, @@ -1357,16 +1357,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2173, + "referencedDeclaration": 2229, "type": "address", "value": "_from" }, - "id": 2232, + "id": 2288, "name": "Identifier", "src": "1061:5:15" } ], - "id": 2235, + "id": 2291, "name": "IndexAccess", "src": "1053:14:15" }, @@ -1388,21 +1388,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2233, + "id": 2289, "name": "Identifier", "src": "1068:3:15" } ], - "id": 2234, + "id": 2290, "name": "MemberAccess", "src": "1068:10:15" } ], - "id": 2236, + "id": 2292, "name": "IndexAccess", "src": "1053:26:15" }, @@ -1434,7 +1434,7 @@ "isPure": false, "lValueRequested": false, "member_name": "sub", - "referencedDeclaration": 1885, + "referencedDeclaration": 1941, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -1464,11 +1464,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2237, + "id": 2293, "name": "Identifier", "src": "1082:7:15" }, @@ -1478,16 +1478,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2173, + "referencedDeclaration": 2229, "type": "address", "value": "_from" }, - "id": 2238, + "id": 2294, "name": "Identifier", "src": "1090:5:15" } ], - "id": 2239, + "id": 2295, "name": "IndexAccess", "src": "1082:14:15" }, @@ -1509,26 +1509,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2240, + "id": 2296, "name": "Identifier", "src": "1097:3:15" } ], - "id": 2241, + "id": 2297, "name": "MemberAccess", "src": "1097:10:15" } ], - "id": 2242, + "id": 2298, "name": "IndexAccess", "src": "1082:26:15" } ], - "id": 2243, + "id": 2299, "name": "MemberAccess", "src": "1082:30:15" }, @@ -1538,26 +1538,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2177, + "referencedDeclaration": 2233, "type": "uint256", "value": "_value" }, - "id": 2244, + "id": 2300, "name": "Identifier", "src": "1113:6:15" } ], - "id": 2245, + "id": 2301, "name": "FunctionCall", "src": "1082:38:15" } ], - "id": 2246, + "id": 2302, "name": "Assignment", "src": "1053:67:15" } ], - "id": 2247, + "id": 2303, "name": "ExpressionStatement", "src": "1053:67:15" }, @@ -1597,11 +1597,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2156, + "referencedDeclaration": 2212, "type": "function (address,address,uint256)", "value": "Transfer" }, - "id": 2248, + "id": 2304, "name": "Identifier", "src": "1126:8:15" }, @@ -1611,11 +1611,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2173, + "referencedDeclaration": 2229, "type": "address", "value": "_from" }, - "id": 2249, + "id": 2305, "name": "Identifier", "src": "1135:5:15" }, @@ -1625,11 +1625,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2175, + "referencedDeclaration": 2231, "type": "address", "value": "_to" }, - "id": 2250, + "id": 2306, "name": "Identifier", "src": "1142:3:15" }, @@ -1639,27 +1639,27 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2177, + "referencedDeclaration": 2233, "type": "uint256", "value": "_value" }, - "id": 2251, + "id": 2307, "name": "Identifier", "src": "1147:6:15" } ], - "id": 2252, + "id": 2308, "name": "FunctionCall", "src": "1126:28:15" } ], - "id": 2253, + "id": 2309, "name": "ExpressionStatement", "src": "1126:28:15" }, { "attributes": { - "functionReturnParameters": 2181 + "functionReturnParameters": 2237 }, "children": [ { @@ -1675,22 +1675,22 @@ "type": "bool", "value": "true" }, - "id": 2254, + "id": 2310, "name": "Literal", "src": "1167:4:15" } ], - "id": 2255, + "id": 2311, "name": "Return", "src": "1160:11:15" } ], - "id": 2256, + "id": 2312, "name": "Block", "src": "825:351:15" } ], - "id": 2257, + "id": 2313, "name": "FunctionDefinition", "src": "737:439:15" }, @@ -1704,9 +1704,9 @@ ], "name": "approve", "payable": false, - "scope": 2403, + "scope": 2459, "stateMutability": "nonpayable", - "superFunction": 2119, + "superFunction": 2175, "visibility": "public" }, "children": [ @@ -1716,7 +1716,7 @@ "attributes": { "constant": false, "name": "_spender", - "scope": 2285, + "scope": 2341, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1729,12 +1729,12 @@ "name": "address", "type": "address" }, - "id": 2258, + "id": 2314, "name": "ElementaryTypeName", "src": "1816:7:15" } ], - "id": 2259, + "id": 2315, "name": "VariableDeclaration", "src": "1816:16:15" }, @@ -1742,7 +1742,7 @@ "attributes": { "constant": false, "name": "_value", - "scope": 2285, + "scope": 2341, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -1755,17 +1755,17 @@ "name": "uint256", "type": "uint256" }, - "id": 2260, + "id": 2316, "name": "ElementaryTypeName", "src": "1834:7:15" } ], - "id": 2261, + "id": 2317, "name": "VariableDeclaration", "src": "1834:14:15" } ], - "id": 2262, + "id": 2318, "name": "ParameterList", "src": "1815:34:15" }, @@ -1775,7 +1775,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2285, + "scope": 2341, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1788,17 +1788,17 @@ "name": "bool", "type": "bool" }, - "id": 2263, + "id": 2319, "name": "ElementaryTypeName", "src": "1866:4:15" } ], - "id": 2264, + "id": 2320, "name": "VariableDeclaration", "src": "1866:4:15" } ], - "id": 2265, + "id": 2321, "name": "ParameterList", "src": "1865:6:15" }, @@ -1843,11 +1843,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2266, + "id": 2322, "name": "Identifier", "src": "1878:7:15" }, @@ -1869,21 +1869,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2267, + "id": 2323, "name": "Identifier", "src": "1886:3:15" } ], - "id": 2268, + "id": 2324, "name": "MemberAccess", "src": "1886:10:15" } ], - "id": 2270, + "id": 2326, "name": "IndexAccess", "src": "1878:19:15" }, @@ -1893,16 +1893,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2259, + "referencedDeclaration": 2315, "type": "address", "value": "_spender" }, - "id": 2269, + "id": 2325, "name": "Identifier", "src": "1898:8:15" } ], - "id": 2271, + "id": 2327, "name": "IndexAccess", "src": "1878:29:15" }, @@ -1912,21 +1912,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2261, + "referencedDeclaration": 2317, "type": "uint256", "value": "_value" }, - "id": 2272, + "id": 2328, "name": "Identifier", "src": "1910:6:15" } ], - "id": 2273, + "id": 2329, "name": "Assignment", "src": "1878:38:15" } ], - "id": 2274, + "id": 2330, "name": "ExpressionStatement", "src": "1878:38:15" }, @@ -1966,11 +1966,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2127, + "referencedDeclaration": 2183, "type": "function (address,address,uint256)", "value": "Approval" }, - "id": 2275, + "id": 2331, "name": "Identifier", "src": "1922:8:15" }, @@ -1992,16 +1992,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2276, + "id": 2332, "name": "Identifier", "src": "1931:3:15" } ], - "id": 2277, + "id": 2333, "name": "MemberAccess", "src": "1931:10:15" }, @@ -2011,11 +2011,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2259, + "referencedDeclaration": 2315, "type": "address", "value": "_spender" }, - "id": 2278, + "id": 2334, "name": "Identifier", "src": "1943:8:15" }, @@ -2025,27 +2025,27 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2261, + "referencedDeclaration": 2317, "type": "uint256", "value": "_value" }, - "id": 2279, + "id": 2335, "name": "Identifier", "src": "1953:6:15" } ], - "id": 2280, + "id": 2336, "name": "FunctionCall", "src": "1922:38:15" } ], - "id": 2281, + "id": 2337, "name": "ExpressionStatement", "src": "1922:38:15" }, { "attributes": { - "functionReturnParameters": 2265 + "functionReturnParameters": 2321 }, "children": [ { @@ -2061,22 +2061,22 @@ "type": "bool", "value": "true" }, - "id": 2282, + "id": 2338, "name": "Literal", "src": "1973:4:15" } ], - "id": 2283, + "id": 2339, "name": "Return", "src": "1966:11:15" } ], - "id": 2284, + "id": 2340, "name": "Block", "src": "1872:110:15" } ], - "id": 2285, + "id": 2341, "name": "FunctionDefinition", "src": "1799:183:15" }, @@ -2090,9 +2090,9 @@ ], "name": "allowance", "payable": false, - "scope": 2403, + "scope": 2459, "stateMutability": "view", - "superFunction": 2099, + "superFunction": 2155, "visibility": "public" }, "children": [ @@ -2102,7 +2102,7 @@ "attributes": { "constant": false, "name": "_owner", - "scope": 2301, + "scope": 2357, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2115,12 +2115,12 @@ "name": "address", "type": "address" }, - "id": 2286, + "id": 2342, "name": "ElementaryTypeName", "src": "2320:7:15" } ], - "id": 2287, + "id": 2343, "name": "VariableDeclaration", "src": "2320:14:15" }, @@ -2128,7 +2128,7 @@ "attributes": { "constant": false, "name": "_spender", - "scope": 2301, + "scope": 2357, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2141,17 +2141,17 @@ "name": "address", "type": "address" }, - "id": 2288, + "id": 2344, "name": "ElementaryTypeName", "src": "2336:7:15" } ], - "id": 2289, + "id": 2345, "name": "VariableDeclaration", "src": "2336:16:15" } ], - "id": 2290, + "id": 2346, "name": "ParameterList", "src": "2319:34:15" }, @@ -2161,7 +2161,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2301, + "scope": 2357, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2174,17 +2174,17 @@ "name": "uint256", "type": "uint256" }, - "id": 2291, + "id": 2347, "name": "ElementaryTypeName", "src": "2375:7:15" } ], - "id": 2292, + "id": 2348, "name": "VariableDeclaration", "src": "2375:7:15" } ], - "id": 2293, + "id": 2349, "name": "ParameterList", "src": "2374:9:15" }, @@ -2192,7 +2192,7 @@ "children": [ { "attributes": { - "functionReturnParameters": 2293 + "functionReturnParameters": 2349 }, "children": [ { @@ -2221,11 +2221,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2294, + "id": 2350, "name": "Identifier", "src": "2397:7:15" }, @@ -2235,16 +2235,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2287, + "referencedDeclaration": 2343, "type": "address", "value": "_owner" }, - "id": 2295, + "id": 2351, "name": "Identifier", "src": "2405:6:15" } ], - "id": 2296, + "id": 2352, "name": "IndexAccess", "src": "2397:15:15" }, @@ -2254,31 +2254,31 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2289, + "referencedDeclaration": 2345, "type": "address", "value": "_spender" }, - "id": 2297, + "id": 2353, "name": "Identifier", "src": "2413:8:15" } ], - "id": 2298, + "id": 2354, "name": "IndexAccess", "src": "2397:25:15" } ], - "id": 2299, + "id": 2355, "name": "Return", "src": "2390:32:15" } ], - "id": 2300, + "id": 2356, "name": "Block", "src": "2384:43:15" } ], - "id": 2301, + "id": 2357, "name": "FunctionDefinition", "src": "2301:126:15" }, @@ -2292,7 +2292,7 @@ ], "name": "increaseApproval", "payable": false, - "scope": 2403, + "scope": 2459, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2304,7 +2304,7 @@ "attributes": { "constant": false, "name": "_spender", - "scope": 2342, + "scope": 2398, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2317,12 +2317,12 @@ "name": "address", "type": "address" }, - "id": 2302, + "id": 2358, "name": "ElementaryTypeName", "src": "2910:7:15" } ], - "id": 2303, + "id": 2359, "name": "VariableDeclaration", "src": "2910:16:15" }, @@ -2330,7 +2330,7 @@ "attributes": { "constant": false, "name": "_addedValue", - "scope": 2342, + "scope": 2398, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2343,17 +2343,17 @@ "name": "uint", "type": "uint256" }, - "id": 2304, + "id": 2360, "name": "ElementaryTypeName", "src": "2928:4:15" } ], - "id": 2305, + "id": 2361, "name": "VariableDeclaration", "src": "2928:16:15" } ], - "id": 2306, + "id": 2362, "name": "ParameterList", "src": "2909:36:15" }, @@ -2363,7 +2363,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2342, + "scope": 2398, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -2376,17 +2376,17 @@ "name": "bool", "type": "bool" }, - "id": 2307, + "id": 2363, "name": "ElementaryTypeName", "src": "2962:4:15" } ], - "id": 2308, + "id": 2364, "name": "VariableDeclaration", "src": "2962:4:15" } ], - "id": 2309, + "id": 2365, "name": "ParameterList", "src": "2961:6:15" }, @@ -2431,11 +2431,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2310, + "id": 2366, "name": "Identifier", "src": "2974:7:15" }, @@ -2457,21 +2457,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2311, + "id": 2367, "name": "Identifier", "src": "2982:3:15" } ], - "id": 2312, + "id": 2368, "name": "MemberAccess", "src": "2982:10:15" } ], - "id": 2314, + "id": 2370, "name": "IndexAccess", "src": "2974:19:15" }, @@ -2481,16 +2481,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2303, + "referencedDeclaration": 2359, "type": "address", "value": "_spender" }, - "id": 2313, + "id": 2369, "name": "Identifier", "src": "2994:8:15" } ], - "id": 2315, + "id": 2371, "name": "IndexAccess", "src": "2974:29:15" }, @@ -2522,7 +2522,7 @@ "isPure": false, "lValueRequested": false, "member_name": "add", - "referencedDeclaration": 1909, + "referencedDeclaration": 1965, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -2552,11 +2552,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2316, + "id": 2372, "name": "Identifier", "src": "3006:7:15" }, @@ -2578,21 +2578,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2317, + "id": 2373, "name": "Identifier", "src": "3014:3:15" } ], - "id": 2318, + "id": 2374, "name": "MemberAccess", "src": "3014:10:15" } ], - "id": 2319, + "id": 2375, "name": "IndexAccess", "src": "3006:19:15" }, @@ -2602,21 +2602,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2303, + "referencedDeclaration": 2359, "type": "address", "value": "_spender" }, - "id": 2320, + "id": 2376, "name": "Identifier", "src": "3026:8:15" } ], - "id": 2321, + "id": 2377, "name": "IndexAccess", "src": "3006:29:15" } ], - "id": 2322, + "id": 2378, "name": "MemberAccess", "src": "3006:33:15" }, @@ -2626,26 +2626,26 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2305, + "referencedDeclaration": 2361, "type": "uint256", "value": "_addedValue" }, - "id": 2323, + "id": 2379, "name": "Identifier", "src": "3040:11:15" } ], - "id": 2324, + "id": 2380, "name": "FunctionCall", "src": "3006:46:15" } ], - "id": 2325, + "id": 2381, "name": "Assignment", "src": "2974:78:15" } ], - "id": 2326, + "id": 2382, "name": "ExpressionStatement", "src": "2974:78:15" }, @@ -2685,11 +2685,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2127, + "referencedDeclaration": 2183, "type": "function (address,address,uint256)", "value": "Approval" }, - "id": 2327, + "id": 2383, "name": "Identifier", "src": "3058:8:15" }, @@ -2711,16 +2711,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2328, + "id": 2384, "name": "Identifier", "src": "3067:3:15" } ], - "id": 2329, + "id": 2385, "name": "MemberAccess", "src": "3067:10:15" }, @@ -2730,11 +2730,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2303, + "referencedDeclaration": 2359, "type": "address", "value": "_spender" }, - "id": 2330, + "id": 2386, "name": "Identifier", "src": "3079:8:15" }, @@ -2764,11 +2764,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2331, + "id": 2387, "name": "Identifier", "src": "3089:7:15" }, @@ -2790,21 +2790,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2332, + "id": 2388, "name": "Identifier", "src": "3097:3:15" } ], - "id": 2333, + "id": 2389, "name": "MemberAccess", "src": "3097:10:15" } ], - "id": 2334, + "id": 2390, "name": "IndexAccess", "src": "3089:19:15" }, @@ -2814,32 +2814,32 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2303, + "referencedDeclaration": 2359, "type": "address", "value": "_spender" }, - "id": 2335, + "id": 2391, "name": "Identifier", "src": "3109:8:15" } ], - "id": 2336, + "id": 2392, "name": "IndexAccess", "src": "3089:29:15" } ], - "id": 2337, + "id": 2393, "name": "FunctionCall", "src": "3058:61:15" } ], - "id": 2338, + "id": 2394, "name": "ExpressionStatement", "src": "3058:61:15" }, { "attributes": { - "functionReturnParameters": 2309 + "functionReturnParameters": 2365 }, "children": [ { @@ -2855,22 +2855,22 @@ "type": "bool", "value": "true" }, - "id": 2339, + "id": 2395, "name": "Literal", "src": "3132:4:15" } ], - "id": 2340, + "id": 2396, "name": "Return", "src": "3125:11:15" } ], - "id": 2341, + "id": 2397, "name": "Block", "src": "2968:173:15" } ], - "id": 2342, + "id": 2398, "name": "FunctionDefinition", "src": "2884:257:15" }, @@ -2884,7 +2884,7 @@ ], "name": "decreaseApproval", "payable": false, - "scope": 2403, + "scope": 2459, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2896,7 +2896,7 @@ "attributes": { "constant": false, "name": "_spender", - "scope": 2402, + "scope": 2458, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2909,12 +2909,12 @@ "name": "address", "type": "address" }, - "id": 2343, + "id": 2399, "name": "ElementaryTypeName", "src": "3629:7:15" } ], - "id": 2344, + "id": 2400, "name": "VariableDeclaration", "src": "3629:16:15" }, @@ -2922,7 +2922,7 @@ "attributes": { "constant": false, "name": "_subtractedValue", - "scope": 2402, + "scope": 2458, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2935,17 +2935,17 @@ "name": "uint", "type": "uint256" }, - "id": 2345, + "id": 2401, "name": "ElementaryTypeName", "src": "3647:4:15" } ], - "id": 2346, + "id": 2402, "name": "VariableDeclaration", "src": "3647:21:15" } ], - "id": 2347, + "id": 2403, "name": "ParameterList", "src": "3628:41:15" }, @@ -2955,7 +2955,7 @@ "attributes": { "constant": false, "name": "", - "scope": 2402, + "scope": 2458, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -2968,17 +2968,17 @@ "name": "bool", "type": "bool" }, - "id": 2348, + "id": 2404, "name": "ElementaryTypeName", "src": "3686:4:15" } ], - "id": 2349, + "id": 2405, "name": "VariableDeclaration", "src": "3686:4:15" } ], - "id": 2350, + "id": 2406, "name": "ParameterList", "src": "3685:6:15" }, @@ -2987,7 +2987,7 @@ { "attributes": { "assignments": [ - 2352 + 2408 ] }, "children": [ @@ -2995,7 +2995,7 @@ "attributes": { "constant": false, "name": "oldValue", - "scope": 2402, + "scope": 2458, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3008,12 +3008,12 @@ "name": "uint", "type": "uint256" }, - "id": 2351, + "id": 2407, "name": "ElementaryTypeName", "src": "3698:4:15" } ], - "id": 2352, + "id": 2408, "name": "VariableDeclaration", "src": "3698:13:15" }, @@ -3043,11 +3043,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2353, + "id": 2409, "name": "Identifier", "src": "3714:7:15" }, @@ -3069,21 +3069,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2354, + "id": 2410, "name": "Identifier", "src": "3722:3:15" } ], - "id": 2355, + "id": 2411, "name": "MemberAccess", "src": "3722:10:15" } ], - "id": 2356, + "id": 2412, "name": "IndexAccess", "src": "3714:19:15" }, @@ -3093,21 +3093,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2344, + "referencedDeclaration": 2400, "type": "address", "value": "_spender" }, - "id": 2357, + "id": 2413, "name": "Identifier", "src": "3734:8:15" } ], - "id": 2358, + "id": 2414, "name": "IndexAccess", "src": "3714:29:15" } ], - "id": 2359, + "id": 2415, "name": "VariableDeclarationStatement", "src": "3698:45:15" }, @@ -3134,11 +3134,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2346, + "referencedDeclaration": 2402, "type": "uint256", "value": "_subtractedValue" }, - "id": 2360, + "id": 2416, "name": "Identifier", "src": "3753:16:15" }, @@ -3148,16 +3148,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2352, + "referencedDeclaration": 2408, "type": "uint256", "value": "oldValue" }, - "id": 2361, + "id": 2417, "name": "Identifier", "src": "3772:8:15" } ], - "id": 2362, + "id": 2418, "name": "BinaryOperation", "src": "3753:27:15" }, @@ -3202,11 +3202,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2363, + "id": 2419, "name": "Identifier", "src": "3790:7:15" }, @@ -3228,21 +3228,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2364, + "id": 2420, "name": "Identifier", "src": "3798:3:15" } ], - "id": 2365, + "id": 2421, "name": "MemberAccess", "src": "3798:10:15" } ], - "id": 2367, + "id": 2423, "name": "IndexAccess", "src": "3790:19:15" }, @@ -3252,16 +3252,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2344, + "referencedDeclaration": 2400, "type": "address", "value": "_spender" }, - "id": 2366, + "id": 2422, "name": "Identifier", "src": "3810:8:15" } ], - "id": 2368, + "id": 2424, "name": "IndexAccess", "src": "3790:29:15" }, @@ -3278,22 +3278,22 @@ "type": "int_const 0", "value": "0" }, - "id": 2369, + "id": 2425, "name": "Literal", "src": "3822:1:15" } ], - "id": 2370, + "id": 2426, "name": "Assignment", "src": "3790:33:15" } ], - "id": 2371, + "id": 2427, "name": "ExpressionStatement", "src": "3790:33:15" } ], - "id": 2372, + "id": 2428, "name": "Block", "src": "3782:48:15" }, @@ -3338,11 +3338,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2373, + "id": 2429, "name": "Identifier", "src": "3844:7:15" }, @@ -3364,21 +3364,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2374, + "id": 2430, "name": "Identifier", "src": "3852:3:15" } ], - "id": 2375, + "id": 2431, "name": "MemberAccess", "src": "3852:10:15" } ], - "id": 2377, + "id": 2433, "name": "IndexAccess", "src": "3844:19:15" }, @@ -3388,16 +3388,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2344, + "referencedDeclaration": 2400, "type": "address", "value": "_spender" }, - "id": 2376, + "id": 2432, "name": "Identifier", "src": "3864:8:15" } ], - "id": 2378, + "id": 2434, "name": "IndexAccess", "src": "3844:29:15" }, @@ -3429,7 +3429,7 @@ "isPure": false, "lValueRequested": false, "member_name": "sub", - "referencedDeclaration": 1885, + "referencedDeclaration": 1941, "type": "function (uint256,uint256) pure returns (uint256)" }, "children": [ @@ -3439,16 +3439,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2352, + "referencedDeclaration": 2408, "type": "uint256", "value": "oldValue" }, - "id": 2379, + "id": 2435, "name": "Identifier", "src": "3876:8:15" } ], - "id": 2380, + "id": 2436, "name": "MemberAccess", "src": "3876:12:15" }, @@ -3458,36 +3458,36 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2346, + "referencedDeclaration": 2402, "type": "uint256", "value": "_subtractedValue" }, - "id": 2381, + "id": 2437, "name": "Identifier", "src": "3889:16:15" } ], - "id": 2382, + "id": 2438, "name": "FunctionCall", "src": "3876:30:15" } ], - "id": 2383, + "id": 2439, "name": "Assignment", "src": "3844:62:15" } ], - "id": 2384, + "id": 2440, "name": "ExpressionStatement", "src": "3844:62:15" } ], - "id": 2385, + "id": 2441, "name": "Block", "src": "3836:77:15" } ], - "id": 2386, + "id": 2442, "name": "IfStatement", "src": "3749:164:15" }, @@ -3527,11 +3527,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2127, + "referencedDeclaration": 2183, "type": "function (address,address,uint256)", "value": "Approval" }, - "id": 2387, + "id": 2443, "name": "Identifier", "src": "3918:8:15" }, @@ -3553,16 +3553,16 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2388, + "id": 2444, "name": "Identifier", "src": "3927:3:15" } ], - "id": 2389, + "id": 2445, "name": "MemberAccess", "src": "3927:10:15" }, @@ -3572,11 +3572,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2344, + "referencedDeclaration": 2400, "type": "address", "value": "_spender" }, - "id": 2390, + "id": 2446, "name": "Identifier", "src": "3939:8:15" }, @@ -3606,11 +3606,11 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2171, + "referencedDeclaration": 2227, "type": "mapping(address => mapping(address => uint256))", "value": "allowed" }, - "id": 2391, + "id": 2447, "name": "Identifier", "src": "3949:7:15" }, @@ -3632,21 +3632,21 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 2392, + "id": 2448, "name": "Identifier", "src": "3957:3:15" } ], - "id": 2393, + "id": 2449, "name": "MemberAccess", "src": "3957:10:15" } ], - "id": 2394, + "id": 2450, "name": "IndexAccess", "src": "3949:19:15" }, @@ -3656,32 +3656,32 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2344, + "referencedDeclaration": 2400, "type": "address", "value": "_spender" }, - "id": 2395, + "id": 2451, "name": "Identifier", "src": "3969:8:15" } ], - "id": 2396, + "id": 2452, "name": "IndexAccess", "src": "3949:29:15" } ], - "id": 2397, + "id": 2453, "name": "FunctionCall", "src": "3918:61:15" } ], - "id": 2398, + "id": 2454, "name": "ExpressionStatement", "src": "3918:61:15" }, { "attributes": { - "functionReturnParameters": 2350 + "functionReturnParameters": 2406 }, "children": [ { @@ -3697,32 +3697,32 @@ "type": "bool", "value": "true" }, - "id": 2399, + "id": 2455, "name": "Literal", "src": "3992:4:15" } ], - "id": 2400, + "id": 2456, "name": "Return", "src": "3985:11:15" } ], - "id": 2401, + "id": 2457, "name": "Block", "src": "3692:309:15" } ], - "id": 2402, + "id": 2458, "name": "FunctionDefinition", "src": "3603:398:15" } ], - "id": 2403, + "id": 2459, "name": "ContractDefinition", "src": "345:3659:15" } ], - "id": 2404, + "id": 2460, "name": "SourceUnit", "src": "0:4005:15" }, @@ -3732,5 +3732,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.897Z" + "updatedAt": "2018-01-14T10:53:23.002Z" } \ No newline at end of file diff --git a/build/contracts/TransactionManager.json b/build/contracts/TransactionManager.json index 6b26590..a90896b 100644 --- a/build/contracts/TransactionManager.json +++ b/build/contracts/TransactionManager.json @@ -85,6 +85,68 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_issuer", + "type": "address" + } + ], + "name": "getBadgeLinkHash", + "outputs": [ + { + "name": "hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "issuer", + "type": "address" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "image", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "recipient", + "type": "address" + } + ], + "name": "getIntegrityHash", + "outputs": [ + { + "name": "_hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [], @@ -339,6 +401,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "_badgename", + "type": "string" + } + ], + "name": "getBadgeNameHash", + "outputs": [ + { + "name": "_hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [ @@ -514,18 +595,18 @@ "type": "event" } ], - "bytecode": "0x6060604052341561000f57600080fd5b604051602080612f1b833981016040528080519060200190919050508080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600060078190555050612e94806100876000396000f300606060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a2858146101175780630decfdea146101a05780631041eb961461023057806324ddd51a146102c05780633557b6c3146102e95780633b57391a1461034c5780634294857f1461038557806359c293f1146103c45780635c9d3a941461040357806372ee19a21461052957806377002fcf1461059e5780637c59fda0146107b5578063a5aef15b146107de578063affed0e014610805578063b61092211461082e578063b75c7dc6146108a3578063be47aa09146108ca578063eb92948114610903578063f851a4401461099b578063f9afc242146109f0575b600080fd5b341561012257600080fd5b61019e60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610a7b565b005b34156101ab57600080fd5b6101c5600480803560001916906020019091905050611369565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561023b57600080fd5b6102556004808035600019169060200190919050506113c6565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b34156102cb57600080fd5b6102d3611484565b6040518082815260200191505060405180910390f35b34156102f457600080fd5b61030a6004808035906020019091905050611494565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561035757600080fd5b610383600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611571565b005b341561039057600080fd5b6103aa6004808035600019169060200190919050506117f5565b604051808215151515815260200191505060405180910390f35b34156103cf57600080fd5b6103e5600480803590602001909190505061182a565b60405180826000191660001916815260200191505060405180910390f35b341561040e57600080fd5b610527600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611851565b005b341561053457600080fd5b610584600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611cca565b604051808215151515815260200191505060405180910390f35b34156105a957600080fd5b6105c3600480803560001916906020019091905050611e24565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b83811015610641578082015181840152602081019050610626565b50505050905090810190601f16801561066e5780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156106a757808201518184015260208101905061068c565b50505050905090810190601f1680156106d45780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b8381101561070d5780820151818401526020810190506106f2565b50505050905090810190601f16801561073a5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610773578082015181840152602081019050610758565b50505050905090810190601f1680156107a05780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156107c057600080fd5b6107c86121f8565b6040518082815260200191505060405180910390f35b34156107e957600080fd5b610803600480803560001916906020019091905050612205565b005b341561081057600080fd5b6108186123a7565b6040518082815260200191505060405180910390f35b341561083957600080fd5b610889600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506123ad565b604051808215151515815260200191505060405180910390f35b34156108ae57600080fd5b6108c86004808035600019169060200190919050506127e1565b005b34156108d557600080fd5b610901600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612983565b005b341561090e57600080fd5b61097d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612b16565b60405180826000191660001916815260200191505060405180910390f35b34156109a657600080fd5b6109ae612bd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109fb57600080fd5b610a27600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612bf5565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610a85612c4c565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610b315750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610bae57600080fd5b60076000815480929190600101919050555073__BadgeLibrary__________________________63c1eabde9876000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c4f578082015181840152602081019050610c34565b50505050905090810190601f168015610c7c5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515610c9857600080fd5b6102c65a03f41515610ca957600080fd5b50505060405180519050945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e705780601f10610e4557610100808354040283529160200191610e70565b820191906000526020600020905b815481529060010190602001808311610e5357829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f125780601f10610ee757610100808354040283529160200191610f12565b820191906000526020600020905b815481529060010190602001808311610ef557829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fb45780601f10610f8957610100808354040283529160200191610fb4565b820191906000526020600020905b815481529060010190602001808311610f9757829003601f168201915b505050505081525050935073__BadgeLibrary__________________________631ddb6af6856000015186602001518760400151886060015189608001518d6000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b838110156110d75780820151818401526020810190506110bc565b50505050905090810190601f1680156111045780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b8381101561113d578082015181840152602081019050611122565b50505050905090810190601f16801561116a5780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b838110156111a3578082015181840152602081019050611188565b50505050905090810190601f1680156111d05780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b838110156112095780820151818401526020810190506111ee565b50505050905090810190601f1680156112365780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b151561125a57600080fd5b6102c65a03f4151561126b57600080fd5b50505060405180519050925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b6000600360020180549050905090565b6000600160006002848154811015156114a957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156115675760028281548110151561153457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061156c565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561164157600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff16815260200160016002805480600101828161167f9190612caa565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b600060036002018281548110151561183e57fe5b9060005260206000209001549050919050565b60008061185c612c4c565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806119065750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561198357600080fd5b8761198d81611cca565b151561199857600080fd5b73__BadgeLibrary__________________________63c1eabde98a6000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a27578082015181840152602081019050611a0c565b50505050905090810190601f168015611a545780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515611a7057600080fd5b6102c65a03f41515611a8157600080fd5b505050604051805190509550600160036002018054806001018281611aa69190612cd6565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611b85929190612d02565b506040820151816002019080519060200190611ba2929190612d02565b506060820151816003019080519060200190611bbf929190612d02565b506080820151816004019080519060200190611bdc929190612d02565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015611c84578082015181840152602081019050611c69565b50505050905090810190601f168015611cb15780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008073__BadgeLibrary__________________________63c1eabde9846000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d5c578082015181840152602081019050611d41565b50505050905090810190601f168015611d895780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515611da557600080fd5b6102c65a03f41515611db657600080fd5b50505060405180519050905060006003600201805490501480611e1c57508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515611e0957fe5b9060005260206000209001546000191614155b915050919050565b6000611e2e612d82565b611e36612d82565b611e3e612d82565b611e46612d82565b611e4e612c4c565b866000600360020180549050118015611ea957508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515611e9757fe5b90600052602060002090015460001916145b1515611eb457600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fcd5780601f10611fa257610100808354040283529160200191611fcd565b820191906000526020600020905b815481529060010190602001808311611fb057829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561206f5780601f106120445761010080835404028352916020019161206f565b820191906000526020600020905b81548152906001019060200180831161205257829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121115780601f106120e657610100808354040283529160200191612111565b820191906000526020600020905b8154815290600101906020018083116120f457829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b35780601f10612188576101008083540402835291602001916121b3565b820191906000526020600020905b81548152906001019060200180831161219657829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806122af5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561232c57600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061245d5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156124da57600080fd5b73__BadgeLibrary__________________________63c1eabde9886000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561256957808201518184015260208101905061254e565b50505050905090810190601f1680156125965780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15156125b257600080fd5b6102c65a03f415156125c357600080fd5b505050604051805190509450600360010160008660001916600019168152602001908152602001600020549350600360020160016003600201805490500381548110151561260d57fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561265157fe5b90600052602060002090018160001916905550600360020180548091906001900361267c9190612d96565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006126d39190612dc2565b6002820160006126e39190612dc2565b6003820160006126f39190612dc2565b6004820160006127039190612dc2565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561279857808201518184015260208101905061277d565b50505050905090810190601f1680156127c55780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061288b5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561290857600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612a5357600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b602083101515612b935780518252602082019150602081019050602083039250612b6e565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001612c7d612e0a565b8152602001612c8a612e0a565b8152602001612c97612e0a565b8152602001612ca4612e0a565b81525090565b815481835581811511612cd157818360005260206000209182019101612cd09190612e1e565b5b505050565b815481835581811511612cfd57818360005260206000209182019101612cfc9190612e43565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d4357805160ff1916838001178555612d71565b82800160010185558215612d71579182015b82811115612d70578251825591602001919060010190612d55565b5b509050612d7e9190612e1e565b5090565b602060405190810160405280600081525090565b815481835581811511612dbd57818360005260206000209182019101612dbc9190612e43565b5b505050565b50805460018160011615610100020316600290046000825580601f10612de85750612e07565b601f016020900490600052602060002090810190612e069190612e1e565b5b50565b602060405190810160405280600081525090565b612e4091905b80821115612e3c576000816000905550600101612e24565b5090565b90565b612e6591905b80821115612e61576000816000905550600101612e49565b5090565b905600a165627a7a72305820c205c7098a227e02471f0e7cbab16dac80298634ce8231a36a0b6c6c5c65deae0029", - "deployedBytecode": "0x606060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a2858146101175780630decfdea146101a05780631041eb961461023057806324ddd51a146102c05780633557b6c3146102e95780633b57391a1461034c5780634294857f1461038557806359c293f1146103c45780635c9d3a941461040357806372ee19a21461052957806377002fcf1461059e5780637c59fda0146107b5578063a5aef15b146107de578063affed0e014610805578063b61092211461082e578063b75c7dc6146108a3578063be47aa09146108ca578063eb92948114610903578063f851a4401461099b578063f9afc242146109f0575b600080fd5b341561012257600080fd5b61019e60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610a7b565b005b34156101ab57600080fd5b6101c5600480803560001916906020019091905050611369565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561023b57600080fd5b6102556004808035600019169060200190919050506113c6565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b34156102cb57600080fd5b6102d3611484565b6040518082815260200191505060405180910390f35b34156102f457600080fd5b61030a6004808035906020019091905050611494565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561035757600080fd5b610383600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611571565b005b341561039057600080fd5b6103aa6004808035600019169060200190919050506117f5565b604051808215151515815260200191505060405180910390f35b34156103cf57600080fd5b6103e5600480803590602001909190505061182a565b60405180826000191660001916815260200191505060405180910390f35b341561040e57600080fd5b610527600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611851565b005b341561053457600080fd5b610584600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611cca565b604051808215151515815260200191505060405180910390f35b34156105a957600080fd5b6105c3600480803560001916906020019091905050611e24565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b83811015610641578082015181840152602081019050610626565b50505050905090810190601f16801561066e5780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156106a757808201518184015260208101905061068c565b50505050905090810190601f1680156106d45780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b8381101561070d5780820151818401526020810190506106f2565b50505050905090810190601f16801561073a5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610773578082015181840152602081019050610758565b50505050905090810190601f1680156107a05780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156107c057600080fd5b6107c86121f8565b6040518082815260200191505060405180910390f35b34156107e957600080fd5b610803600480803560001916906020019091905050612205565b005b341561081057600080fd5b6108186123a7565b6040518082815260200191505060405180910390f35b341561083957600080fd5b610889600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506123ad565b604051808215151515815260200191505060405180910390f35b34156108ae57600080fd5b6108c86004808035600019169060200190919050506127e1565b005b34156108d557600080fd5b610901600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612983565b005b341561090e57600080fd5b61097d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612b16565b60405180826000191660001916815260200191505060405180910390f35b34156109a657600080fd5b6109ae612bd0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109fb57600080fd5b610a27600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612bf5565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610a85612c4c565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610b315750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610bae57600080fd5b60076000815480929190600101919050555073__BadgeLibrary__________________________63c1eabde9876000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c4f578082015181840152602081019050610c34565b50505050905090810190601f168015610c7c5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515610c9857600080fd5b6102c65a03f41515610ca957600080fd5b50505060405180519050945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e705780601f10610e4557610100808354040283529160200191610e70565b820191906000526020600020905b815481529060010190602001808311610e5357829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f125780601f10610ee757610100808354040283529160200191610f12565b820191906000526020600020905b815481529060010190602001808311610ef557829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fb45780601f10610f8957610100808354040283529160200191610fb4565b820191906000526020600020905b815481529060010190602001808311610f9757829003601f168201915b505050505081525050935073__BadgeLibrary__________________________631ddb6af6856000015186602001518760400151886060015189608001518d6000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b838110156110d75780820151818401526020810190506110bc565b50505050905090810190601f1680156111045780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b8381101561113d578082015181840152602081019050611122565b50505050905090810190601f16801561116a5780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b838110156111a3578082015181840152602081019050611188565b50505050905090810190601f1680156111d05780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b838110156112095780820151818401526020810190506111ee565b50505050905090810190601f1680156112365780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b151561125a57600080fd5b6102c65a03f4151561126b57600080fd5b50505060405180519050925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b6000600360020180549050905090565b6000600160006002848154811015156114a957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156115675760028281548110151561153457fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061156c565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561164157600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff16815260200160016002805480600101828161167f9190612caa565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b600060036002018281548110151561183e57fe5b9060005260206000209001549050919050565b60008061185c612c4c565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806119065750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561198357600080fd5b8761198d81611cca565b151561199857600080fd5b73__BadgeLibrary__________________________63c1eabde98a6000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a27578082015181840152602081019050611a0c565b50505050905090810190601f168015611a545780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515611a7057600080fd5b6102c65a03f41515611a8157600080fd5b505050604051805190509550600160036002018054806001018281611aa69190612cd6565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611b85929190612d02565b506040820151816002019080519060200190611ba2929190612d02565b506060820151816003019080519060200190611bbf929190612d02565b506080820151816004019080519060200190611bdc929190612d02565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015611c84578082015181840152602081019050611c69565b50505050905090810190601f168015611cb15780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008073__BadgeLibrary__________________________63c1eabde9846000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611d5c578082015181840152602081019050611d41565b50505050905090810190601f168015611d895780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515611da557600080fd5b6102c65a03f41515611db657600080fd5b50505060405180519050905060006003600201805490501480611e1c57508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515611e0957fe5b9060005260206000209001546000191614155b915050919050565b6000611e2e612d82565b611e36612d82565b611e3e612d82565b611e46612d82565b611e4e612c4c565b866000600360020180549050118015611ea957508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515611e9757fe5b90600052602060002090015460001916145b1515611eb457600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fcd5780601f10611fa257610100808354040283529160200191611fcd565b820191906000526020600020905b815481529060010190602001808311611fb057829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561206f5780601f106120445761010080835404028352916020019161206f565b820191906000526020600020905b81548152906001019060200180831161205257829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121115780601f106120e657610100808354040283529160200191612111565b820191906000526020600020905b8154815290600101906020018083116120f457829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b35780601f10612188576101008083540402835291602001916121b3565b820191906000526020600020905b81548152906001019060200180831161219657829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806122af5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561232c57600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061245d5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156124da57600080fd5b73__BadgeLibrary__________________________63c1eabde9886000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561256957808201518184015260208101905061254e565b50505050905090810190601f1680156125965780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b15156125b257600080fd5b6102c65a03f415156125c357600080fd5b505050604051805190509450600360010160008660001916600019168152602001908152602001600020549350600360020160016003600201805490500381548110151561260d57fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561265157fe5b90600052602060002090018160001916905550600360020180548091906001900361267c9190612d96565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006126d39190612dc2565b6002820160006126e39190612dc2565b6003820160006126f39190612dc2565b6004820160006127039190612dc2565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561279857808201518184015260208101905061277d565b50505050905090810190601f1680156127c55780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061288b5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561290857600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612a5357600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b602083101515612b935780518252602082019150602081019050602083039250612b6e565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001612c7d612e0a565b8152602001612c8a612e0a565b8152602001612c97612e0a565b8152602001612ca4612e0a565b81525090565b815481835581811511612cd157818360005260206000209182019101612cd09190612e1e565b5b505050565b815481835581811511612cfd57818360005260206000209182019101612cfc9190612e43565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612d4357805160ff1916838001178555612d71565b82800160010185558215612d71579182015b82811115612d70578251825591602001919060010190612d55565b5b509050612d7e9190612e1e565b5090565b602060405190810160405280600081525090565b815481835581811511612dbd57818360005260206000209182019101612dbc9190612e43565b5b505050565b50805460018160011615610100020316600290046000825580601f10612de85750612e07565b601f016020900490600052602060002090810190612e069190612e1e565b5b50565b602060405190810160405280600081525090565b612e4091905b80821115612e3c576000816000905550600101612e24565b5090565b90565b612e6591905b80821115612e61576000816000905550600101612e49565b5090565b905600a165627a7a72305820c205c7098a227e02471f0e7cbab16dac80298634ce8231a36a0b6c6c5c65deae0029", - "sourceMap": "107:2995:5:-;;;481:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;555:16;548::1;601::0;593:5;;:24;;;;;;;;;;;;;;;;;;524:100;476:92:1;591:1:5;583:5;:9;;;;481:118;107:2995;;;;;;", - "deployedSourceMap": "107:2995:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;396:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:129:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;2975:125:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4395:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1892:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;710:284;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3782:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2761:161:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;457:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:673:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:156:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:154:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;109:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669:5;972:21;1047:31;;:::i;:::-;1123:21;892:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;955:5:5;;:7;;;;;;;;;;;;;996:12;:29;1026:10;996:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;972:65:5;;1081:10;:17;;:32;1099:13;1081:32;;;;;;;;;;;;;;;;;1047:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:12;:29;1190:5;:12;;;1217:5;:17;;;1249:5;:10;;;1274:5;:11;;;1300:5;:13;;;1328:10;1147:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1123:226:5;;1387:54;;;;;;;;;1399:7;1387:54;;;;;;;1408:13;1387:54;;;;;;;1423:10;1387:54;;;;;;1435:5;1387:54;;;;;1359:16;:25;1376:7;1359:25;;;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669;;;;;;;;:::o;396:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1779:354::-;1836:14;1852:21;1875:17;1894:12;1938:16;:25;1955:7;1938:25;;;;;;;;;;;;;;;;;:29;;;1981:16;:25;1998:7;1981:25;;;;;;;;;;;;;;;;;:39;;;2034:16;:25;2051:7;2034:25;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;2083:16;:25;2100:7;2083:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;1918:208;;;;;;;;1779:354;;;;;:::o;3468:129:1:-;3525:10;3558;:25;;:32;;;;3551:39;;3468:129;:::o;2378:272:0:-;2441:15;2472:21;:53;2494:22;2517:6;2494:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:53;;;;;;;;;;;;;;;:66;;;;;;;;;;;;2468:176;;;2561:22;2584:6;2561:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:37;;;;2468:176;160:42;2622:11;;2378:272;;;;:::o;1500:247::-;1562:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;1620:78;;;;;;;;;1638:10;1620:78;;;;;;1690:1;1650:22;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:10;1650:39;;;;;;;;;;;;;;;;;;;;;;:41;1620:78;;;;1693:4;1620:78;;;;;1584:21;:33;1606:10;1584:33;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:32;1729:10;1708:32;;;;;;;;;;;;;;;;;;;;;;1500:247;;;:::o;2975:125:5:-;3035:6;3060:16;:25;3077:7;3060:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;3053:40;;2975:125;;;:::o;4395:133:1:-;4456:13;4488:10;:25;;4514:6;4488:33;;;;;;;;;;;;;;;;;;;4481:40;;4395:133;;;:::o;1892:669::-;2088:21;2158:10;2228:31;;:::i;:::-;2032:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2056:5:1;670:15;679:5;670:8;:15::i;:::-;662:24;;;;;;;;2112:12;:29;2142:5;2112:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2088:60:1;;2217:1;2171:10;:25;;:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;2202:13;2171:45;;;;;;;;;;;:47;2158:60;;2262:142;;;;;;;;;2302:4;2262:142;;;;;;2321:12;2262:142;;;;2347:5;2262:142;;;;2366:6;2262:142;;;;2386:8;2262:142;;;2228:176;;2449:5;2414:10;:17;;:32;2432:13;2414:32;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2501:5;2464:10;:19;;:34;2484:13;2464:34;;;;;;;;;;;;;;;;;:42;;;;2541:5;:12;;;2516:38;;;2529:5;:10;;;2516:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:1:0;1892:669:1;;;;;;;;;:::o;710:284::-;766:11;789:21;813:12;:29;843:5;813:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;789:60:1;;903:1;867:10;:25;;:32;;;;:37;:119;;;;973:13;908:78;;;:10;:25;;934:10;:19;;:34;954:13;934:34;;;;;;;;;;;;;;;;;;908:61;;;;;;;;;;;;;;;;;;;:78;;;;;867:119;859:128;;710:284;;;;:::o;3782:472::-;3893:14;3917:18;;:::i;:::-;3945:12;;:::i;:::-;3967;;:::i;:::-;3989:14;;:::i;:::-;4020:31;;:::i;:::-;3844:14;1470:1;1435:10;:25;;:32;;;;:36;:120;;;;;1541:14;1475:80;;;:10;:25;;1501:10;:19;;:35;1521:14;1501:35;;;;;;;;;;;;;;;;;;1475:62;;;;;;;;;;;;;;;;;;;:80;;;;1435:120;1427:129;;;;;;;;4054:10;:17;;:33;4072:14;4054:33;;;;;;;;;;;;;;;;;4020:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4118:5;:12;;;4144:5;:17;;;4175:5;:10;;;4199:5;:11;;;4224:5;:13;;;4097:150;;;;;;;;;;;;;;;;;;;;;;3782:472;;;;;;;;;:::o;2790:135:0:-;2851:19;2889:22;:29;;;;2882:36;;2790:135;:::o;2761:161:5:-;2814:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2872:5:5;2836:16;:25;2853:7;2836:25;;;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;2887:28;2907:7;2887:28;;;;;;;;;;;;;;;;;;;;;;;;2761:161;;;:::o;457:17::-;;;;:::o;2656:673:1:-;2737:12;2765:21;2835:16;2898:17;2706:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2789:12:1;:29;2819:5;2789:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:60:1;;2854:10;:19;;:34;2874:13;2854:34;;;;;;;;;;;;;;;;;;2835:53;;2918:10;:25;;2977:1;2944:10;:25;;:32;;;;:34;2918:61;;;;;;;;;;;;;;;;;;;2898:81;;3022:11;2989:10;:19;;:30;3009:9;2989:30;;;;;;;;;;;;;;;;;:44;;;;3084:9;3043:10;:25;;3069:11;3043:38;;;;;;;;;;;;;;;;;;:50;;;;;;;3103:10;:25;;:34;;;;;;;;;;;;:::i;:::-;;3154:10;:17;;:32;3172:13;3154:32;;;;;;;;;;;;;;;;;;3147:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;3203:10;:19;;:34;3223:13;3203:34;;;;;;;;;;;;;;;;;3196:41;;;3248:53;3261:5;3268:10;:25;;:32;;;;3248:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3318:4:1;3311:11;;2656:673;;;;;;;;:::o;2513:156:5:-;2564:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2622:4:5;2586:16;:25;2603:7;2586:25;;;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;2636:26;2654:7;2636:26;;;;;;;;;;;;;;;;;;;;;;;;2513:156;;;:::o;1945:190:0:-;2012:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;2080:5;2034:21;:30;2056:7;2034:30;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;2095:33;2120:7;2095:33;;;;;;;;;;;;;;;;;;;;;;1945:190;;;:::o;2271:154:5:-;2353:11;2393:7;2402:8;2412:5;;2383:35;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;2376:42:5;;2271:154;;;;:::o;109:20:0:-;;;;;;;;;;;;;:::o;370:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;107:2995:5:-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.17;\n\nimport \"BadgeLibrary/contracts/BadgeLibrary.sol\";\n\nimport \"./BadgeManager.sol\";\n\ncontract TransactionManager is BadgeManager {\n\n struct Transaction {\n bytes32 key; \n bytes32 integrityHash;\n address recipient;\n bool revoked;\n }\n\n /// @notice mapping of a unique hash to a recipient address, used to verify issuer of a credential \n mapping (bytes32=>Transaction) public credentialTxnMap;\n\n uint public nonce;\n\n function TransactionManager(address _adminWalletAddr) public BadgeManager(_adminWalletAddr) {\n nonce = 0;\n }\n\n /** @dev sets a new transaction (credential issued to recipient)\n * @param _txnKey the transaction key \n * @param _recipient recipient of the credential\n */\n function setNewTxn(\n bytes32 _txnKey, \n address _recipient, \n string _badgeName) authorized(msg.sender) public \n {\n //increase nonce\n nonce++;\n bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_badgeName);\n BadgeLibrary.Badge memory badge = badgeVault.badges[badgeNameHash];\n bytes32 integrityHash = BadgeLibrary.getIntegrityHash(\n badge.issuer, \n badge.description, \n badge.name, \n badge.image, \n badge.version, \n _recipient \n );\n credentialTxnMap[_txnKey] = Transaction(_txnKey, integrityHash, _recipient, false);\n }\n\n /** @dev gets a transaction\n * @param _txnKey the transaction key \n * @return txnKey the key for the transaction\n * @return integrityHash proof of integrity hash for badge issued in this transaction\n * @return recipient address of the wallet associated with the person who received this badge\n */ \n function getTxn(bytes32 _txnKey) constant public returns(bytes32 txnKey, bytes32 integrityHash, address recipient, bool revoked) {\n return(\n credentialTxnMap[_txnKey].key,\n credentialTxnMap[_txnKey].integrityHash,\n credentialTxnMap[_txnKey].recipient,\n credentialTxnMap[_txnKey].revoked\n );\n }\n\n /// @notice generate a credential transaction key\n /// @param _issuer address of the issuer\n /// @param _msgData msg data\n function getCredentialTxnKey(address _issuer, bytes _msgData) public view returns(bytes32 key) {\n return keccak256(_issuer, _msgData, nonce);\n }\n\n event CredentialRevoked(bytes32 _txnKey);\n /// @notice revoke a credential\n function revoke(bytes32 _txnKey) public authorized(msg.sender) {\n credentialTxnMap[_txnKey].revoked = true;\n CredentialRevoked(_txnKey);\n }\n\n event CredentialUnRevoked(bytes32 _txnKey);\n /// @notice unrevoke a credential\n function unRevoke(bytes32 _txnKey) public authorized(msg.sender) {\n credentialTxnMap[_txnKey].revoked = false;\n CredentialUnRevoked(_txnKey);\n }\n\n /// @notice check if credential is revoked\n function isRevoked(bytes32 _txnKey) public constant returns(bool c) {\n return credentialTxnMap[_txnKey].revoked;\n }\n}", + "bytecode": "0x6060604052341561000f57600080fd5b604051602080612ea3833981016040528080519060200190919050508080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600060078190555050612e1c806100876000396000f300606060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a2858146101385780630decfdea146101c15780631041eb9614610251578063164f0a4e146102e15780631ddb6af61461037957806324ddd51a146104f95780633557b6c3146105225780633b57391a146105855780634294857f146105be57806359c293f1146105fd5780635c9d3a941461063c57806372ee19a21461076257806377002fcf146107d75780637c59fda0146109ee578063a5aef15b14610a17578063affed0e014610a3e578063b610922114610a67578063b75c7dc614610adc578063be47aa0914610b03578063c1eabde914610b3c578063eb92948114610bb5578063f851a44014610c4d578063f9afc24214610ca2575b600080fd5b341561014357600080fd5b6101bf60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610d2d565b005b34156101cc57600080fd5b6101e660048080356000191690602001909190505061129d565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561025c57600080fd5b6102766004808035600019169060200190919050506112fa565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b34156102ec57600080fd5b61035b600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113b8565b60405180826000191660001916815260200191505060405180910390f35b341561038457600080fd5b6104db600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611468565b60405180826000191660001916815260200191505060405180910390f35b341561050457600080fd5b61050c61165e565b6040518082815260200191505060405180910390f35b341561052d57600080fd5b610543600480803590602001909190505061166e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561059057600080fd5b6105bc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061174b565b005b34156105c957600080fd5b6105e36004808035600019169060200190919050506119cf565b604051808215151515815260200191505060405180910390f35b341561060857600080fd5b61061e6004808035906020019091905050611a04565b60405180826000191660001916815260200191505060405180910390f35b341561064757600080fd5b610760600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a2b565b005b341561076d57600080fd5b6107bd600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611dba565b604051808215151515815260200191505060405180910390f35b34156107e257600080fd5b6107fc600480803560001916906020019091905050611e2a565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561087a57808201518184015260208101905061085f565b50505050905090810190601f1680156108a75780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156108e05780820151818401526020810190506108c5565b50505050905090810190601f16801561090d5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b8381101561094657808201518184015260208101905061092b565b50505050905090810190601f1680156109735780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b838110156109ac578082015181840152602081019050610991565b50505050905090810190601f1680156109d95780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156109f957600080fd5b610a016121fe565b6040518082815260200191505060405180910390f35b3415610a2257600080fd5b610a3c60048080356000191690602001909190505061220b565b005b3415610a4957600080fd5b610a516123ad565b6040518082815260200191505060405180910390f35b3415610a7257600080fd5b610ac2600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506123b3565b604051808215151515815260200191505060405180910390f35b3415610ae757600080fd5b610b016004808035600019169060200190919050506126fd565b005b3415610b0e57600080fd5b610b3a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061289f565b005b3415610b4757600080fd5b610b97600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612a32565b60405180826000191660001916815260200191505060405180910390f35b3415610bc057600080fd5b610c2f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612a9e565b60405180826000191660001916815260200191505060405180910390f35b3415610c5857600080fd5b610c60612b58565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610cad57600080fd5b610cd9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b7d565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610d37612bd4565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610de35750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610e6057600080fd5b600760008154809291906001019190505550610e7b86612a32565b945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f965780601f10610f6b57610100808354040283529160200191610f96565b820191906000526020600020905b815481529060010190602001808311610f7957829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110385780601f1061100d57610100808354040283529160200191611038565b820191906000526020600020905b81548152906001019060200180831161101b57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561117c5780601f106111515761010080835404028352916020019161117c565b820191906000526020600020905b81548152906001019060200180831161115f57829003601f168201915b50505050508152505093506111a9846000015185602001518660400151876060015188608001518c611468565b925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b600082826040518083805190602001908083835b6020831015156113f157805182526020820191506020810190506020830392506113cc565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905092915050565b6000868686868686604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186805190602001908083835b6020831015156114e657805182526020820191506020810190506020830392506114c1565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b6020831015156115395780518252602082019150602081019050602083039250611514565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b60208310151561158c5780518252602082019150602081019050602083039250611567565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b6020831015156115df57805182526020820191506020810190506020830392506115ba565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019650505050505050604051809103902090509695505050505050565b6000600360020180549050905090565b60006001600060028481548110151561168357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156117415760028281548110151561170e57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611746565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561181b57600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001600280548060010182816118599190612c32565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b6000600360020182815481101515611a1857fe5b9060005260206000209001549050919050565b600080611a36612bd4565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611ae05750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611b5d57600080fd5b87611b6781611dba565b1515611b7257600080fd5b611b7b89612a32565b9550600160036002018054806001018281611b969190612c5e565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611c75929190612c8a565b506040820151816002019080519060200190611c92929190612c8a565b506060820151816003019080519060200190611caf929190612c8a565b506080820151816004019080519060200190611ccc929190612c8a565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015611d74578082015181840152602081019050611d59565b50505050905090810190601f168015611da15780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b600080611dc683612a32565b905060006003600201805490501480611e2257508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515611e0f57fe5b9060005260206000209001546000191614155b915050919050565b6000611e34612d0a565b611e3c612d0a565b611e44612d0a565b611e4c612d0a565b611e54612bd4565b866000600360020180549050118015611eaf57508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515611e9d57fe5b90600052602060002090015460001916145b1515611eba57600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fd35780601f10611fa857610100808354040283529160200191611fd3565b820191906000526020600020905b815481529060010190602001808311611fb657829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120755780601f1061204a57610100808354040283529160200191612075565b820191906000526020600020905b81548152906001019060200180831161205857829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121175780601f106120ec57610100808354040283529160200191612117565b820191906000526020600020905b8154815290600101906020018083116120fa57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b95780601f1061218e576101008083540402835291602001916121b9565b820191906000526020600020905b81548152906001019060200180831161219c57829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806122b55750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561233257600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806124635750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156124e057600080fd5b6124e987612a32565b9450600360010160008660001916600019168152602001908152602001600020549350600360020160016003600201805490500381548110151561252957fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561256d57fe5b9060005260206000209001816000191690555060036002018054809190600190036125989190612d1e565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006125ef9190612d4a565b6002820160006125ff9190612d4a565b60038201600061260f9190612d4a565b60048201600061261f9190612d4a565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156126b4578082015181840152602081019050612699565b50505050905090810190601f1680156126e15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806127a75750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561282457600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561296f57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000816040518082805190602001908083835b602083101515612a6a5780518252602082019150602081019050602083039250612a45565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b602083101515612b1b5780518252602082019150602081019050602083039250612af6565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001612c05612d92565b8152602001612c12612d92565b8152602001612c1f612d92565b8152602001612c2c612d92565b81525090565b815481835581811511612c5957818360005260206000209182019101612c589190612da6565b5b505050565b815481835581811511612c8557818360005260206000209182019101612c849190612dcb565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612ccb57805160ff1916838001178555612cf9565b82800160010185558215612cf9579182015b82811115612cf8578251825591602001919060010190612cdd565b5b509050612d069190612da6565b5090565b602060405190810160405280600081525090565b815481835581811511612d4557818360005260206000209182019101612d449190612dcb565b5b505050565b50805460018160011615610100020316600290046000825580601f10612d705750612d8f565b601f016020900490600052602060002090810190612d8e9190612da6565b5b50565b602060405190810160405280600081525090565b612dc891905b80821115612dc4576000816000905550600101612dac565b5090565b90565b612ded91905b80821115612de9576000816000905550600101612dd1565b5090565b905600a165627a7a7230582056b15e846aacdb94a4ef93475ae2437285d4d533d236fd114cf706a9c06e8f350029", + "deployedBytecode": "0x606060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a2858146101385780630decfdea146101c15780631041eb9614610251578063164f0a4e146102e15780631ddb6af61461037957806324ddd51a146104f95780633557b6c3146105225780633b57391a146105855780634294857f146105be57806359c293f1146105fd5780635c9d3a941461063c57806372ee19a21461076257806377002fcf146107d75780637c59fda0146109ee578063a5aef15b14610a17578063affed0e014610a3e578063b610922114610a67578063b75c7dc614610adc578063be47aa0914610b03578063c1eabde914610b3c578063eb92948114610bb5578063f851a44014610c4d578063f9afc24214610ca2575b600080fd5b341561014357600080fd5b6101bf60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610d2d565b005b34156101cc57600080fd5b6101e660048080356000191690602001909190505061129d565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561025c57600080fd5b6102766004808035600019169060200190919050506112fa565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b34156102ec57600080fd5b61035b600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113b8565b60405180826000191660001916815260200191505060405180910390f35b341561038457600080fd5b6104db600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611468565b60405180826000191660001916815260200191505060405180910390f35b341561050457600080fd5b61050c61165e565b6040518082815260200191505060405180910390f35b341561052d57600080fd5b610543600480803590602001909190505061166e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561059057600080fd5b6105bc600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061174b565b005b34156105c957600080fd5b6105e36004808035600019169060200190919050506119cf565b604051808215151515815260200191505060405180910390f35b341561060857600080fd5b61061e6004808035906020019091905050611a04565b60405180826000191660001916815260200191505060405180910390f35b341561064757600080fd5b610760600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611a2b565b005b341561076d57600080fd5b6107bd600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611dba565b604051808215151515815260200191505060405180910390f35b34156107e257600080fd5b6107fc600480803560001916906020019091905050611e2a565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b8381101561087a57808201518184015260208101905061085f565b50505050905090810190601f1680156108a75780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b838110156108e05780820151818401526020810190506108c5565b50505050905090810190601f16801561090d5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b8381101561094657808201518184015260208101905061092b565b50505050905090810190601f1680156109735780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b838110156109ac578082015181840152602081019050610991565b50505050905090810190601f1680156109d95780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b34156109f957600080fd5b610a016121fe565b6040518082815260200191505060405180910390f35b3415610a2257600080fd5b610a3c60048080356000191690602001909190505061220b565b005b3415610a4957600080fd5b610a516123ad565b6040518082815260200191505060405180910390f35b3415610a7257600080fd5b610ac2600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506123b3565b604051808215151515815260200191505060405180910390f35b3415610ae757600080fd5b610b016004808035600019169060200190919050506126fd565b005b3415610b0e57600080fd5b610b3a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061289f565b005b3415610b4757600080fd5b610b97600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612a32565b60405180826000191660001916815260200191505060405180910390f35b3415610bc057600080fd5b610c2f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612a9e565b60405180826000191660001916815260200191505060405180910390f35b3415610c5857600080fd5b610c60612b58565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610cad57600080fd5b610cd9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b7d565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610d37612bd4565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610de35750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610e6057600080fd5b600760008154809291906001019190505550610e7b86612a32565b945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f965780601f10610f6b57610100808354040283529160200191610f96565b820191906000526020600020905b815481529060010190602001808311610f7957829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110385780601f1061100d57610100808354040283529160200191611038565b820191906000526020600020905b81548152906001019060200180831161101b57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110da5780601f106110af576101008083540402835291602001916110da565b820191906000526020600020905b8154815290600101906020018083116110bd57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561117c5780601f106111515761010080835404028352916020019161117c565b820191906000526020600020905b81548152906001019060200180831161115f57829003601f168201915b50505050508152505093506111a9846000015185602001518660400151876060015188608001518c611468565b925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b600082826040518083805190602001908083835b6020831015156113f157805182526020820191506020810190506020830392506113cc565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905092915050565b6000868686868686604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186805190602001908083835b6020831015156114e657805182526020820191506020810190506020830392506114c1565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b6020831015156115395780518252602082019150602081019050602083039250611514565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b60208310151561158c5780518252602082019150602081019050602083039250611567565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b6020831015156115df57805182526020820191506020810190506020830392506115ba565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019650505050505050604051809103902090509695505050505050565b6000600360020180549050905090565b60006001600060028481548110151561168357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156117415760028281548110151561170e57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611746565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561181b57600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001600280548060010182816118599190612c32565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b6000600360020182815481101515611a1857fe5b9060005260206000209001549050919050565b600080611a36612bd4565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611ae05750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611b5d57600080fd5b87611b6781611dba565b1515611b7257600080fd5b611b7b89612a32565b9550600160036002018054806001018281611b969190612c5e565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611c75929190612c8a565b506040820151816002019080519060200190611c92929190612c8a565b506060820151816003019080519060200190611caf929190612c8a565b506080820151816004019080519060200190611ccc929190612c8a565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015611d74578082015181840152602081019050611d59565b50505050905090810190601f168015611da15780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b600080611dc683612a32565b905060006003600201805490501480611e2257508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515611e0f57fe5b9060005260206000209001546000191614155b915050919050565b6000611e34612d0a565b611e3c612d0a565b611e44612d0a565b611e4c612d0a565b611e54612bd4565b866000600360020180549050118015611eaf57508060001916600360020160036001016000846000191660001916815260200190815260200160002054815481101515611e9d57fe5b90600052602060002090015460001916145b1515611eba57600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611fd35780601f10611fa857610100808354040283529160200191611fd3565b820191906000526020600020905b815481529060010190602001808311611fb657829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156120755780601f1061204a57610100808354040283529160200191612075565b820191906000526020600020905b81548152906001019060200180831161205857829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121175780601f106120ec57610100808354040283529160200191612117565b820191906000526020600020905b8154815290600101906020018083116120fa57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156121b95780601f1061218e576101008083540402835291602001916121b9565b820191906000526020600020905b81548152906001019060200180831161219c57829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806122b55750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561233257600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806124635750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156124e057600080fd5b6124e987612a32565b9450600360010160008660001916600019168152602001908152602001600020549350600360020160016003600201805490500381548110151561252957fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561256d57fe5b9060005260206000209001816000191690555060036002018054809190600190036125989190612d1e565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006125ef9190612d4a565b6002820160006125ff9190612d4a565b60038201600061260f9190612d4a565b60048201600061261f9190612d4a565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b838110156126b4578082015181840152602081019050612699565b50505050905090810190601f1680156126e15780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806127a75750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561282457600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561296f57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000816040518082805190602001908083835b602083101515612a6a5780518252602082019150602081019050602083039250612a45565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b602083101515612b1b5780518252602082019150602081019050602083039250612af6565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001612c05612d92565b8152602001612c12612d92565b8152602001612c1f612d92565b8152602001612c2c612d92565b81525090565b815481835581811511612c5957818360005260206000209182019101612c589190612da6565b5b505050565b815481835581811511612c8557818360005260206000209182019101612c849190612dcb565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612ccb57805160ff1916838001178555612cf9565b82800160010185558215612cf9579182015b82811115612cf8578251825591602001919060010190612cdd565b5b509050612d069190612da6565b5090565b602060405190810160405280600081525090565b815481835581811511612d4557818360005260206000209182019101612d449190612dcb565b5b505050565b50805460018160011615610100020316600290046000825580601f10612d705750612d8f565b601f016020900490600052602060002090810190612d8e9190612da6565b5b50565b602060405190810160405280600081525090565b612dc891905b80821115612dc4576000816000905550600101612dac565b5090565b90565b612ded91905b80821115612de9576000816000905550600101612dd1565b5090565b905600a165627a7a7230582056b15e846aacdb94a4ef93475ae2437285d4d533d236fd114cf706a9c06e8f350029", + "sourceMap": "56:2942:5:-;;;428:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;502:16;894::1;601::0;593:5;;:24;;;;;;;;;;;;;;;;;;524:100;822:92:1;538:1:5;530:5;:9;;;;428:118;56:2942;;;;;;", + "deployedSourceMap": "56:2942:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;343:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1675:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5010:141:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5215:410;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3736:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;2871:125:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4650:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2212:630;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1056:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4050:459;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2657:161:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;404:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:660:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2409:156:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4831:126:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2167:154:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;109:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621:5;915:21;977:18;;:::i;:::-;1040:21;836:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;898:5:5;;:7;;;;;;;;;;;;;939:28;956:10;939:16;:28::i;:::-;915:52;;998:10;:17;;:32;1016:13;998:32;;;;;;;;;;;;;;;;;977:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1064:183;1094:5;:12;;;1120:5;:17;;;1151:5;:10;;;1175:5;:11;;;1200:5;:13;;;1227:10;1064:16;:183::i;:::-;1040:207;;1285:54;;;;;;;;;1297:7;1285:54;;;;;;;1306:13;1285:54;;;;;;;1321:10;1285:54;;;;;;1333:5;1285:54;;;;;1257:16;:25;1274:7;1257:25;;;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621;;;;;;;;:::o;343:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1675:354::-;1732:14;1748:21;1771:17;1790:12;1834:16;:25;1851:7;1834:25;;;;;;;;;;;;;;;;;:29;;;1877:16;:25;1894:7;1877:25;;;;;;;;;;;;;;;;;:39;;;1930:16;:25;1947:7;1930:25;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;1979:16;:25;1996:7;1979:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;1814:208;;;;;;;;1675:354;;;;;:::o;5010:141:1:-;5088:12;5129:5;5136:7;5119:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5112:32:1;;5010:141;;;;:::o;5215:410::-;5413:13;5476:6;5500:11;5529:4;5551:5;5574:7;5599:9;5449:169;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5442:176:1;;5215:410;;;;;;;;:::o;3736:129::-;3793:10;3826;:25;;:32;;;;3819:39;;3736:129;:::o;2378:272:0:-;2441:15;2472:21;:53;2494:22;2517:6;2494:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:53;;;;;;;;;;;;;;;:66;;;;;;;;;;;;2468:176;;;2561:22;2584:6;2561:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:37;;;;2468:176;160:42;2622:11;;2378:272;;;;:::o;1500:247::-;1562:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;1620:78;;;;;;;;;1638:10;1620:78;;;;;;1690:1;1650:22;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:10;1650:39;;;;;;;;;;;;;;;;;;;;;;:41;1620:78;;;;1693:4;1620:78;;;;;1584:21;:33;1606:10;1584:33;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:32;1729:10;1708:32;;;;;;;;;;;;;;;;;;;;;;1500:247;;;:::o;2871:125:5:-;2931:6;2956:16;:25;2973:7;2956:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;2949:40;;2871:125;;;:::o;4650:133:1:-;4711:13;4743:10;:25;;4769:6;4743:33;;;;;;;;;;;;;;;;;;;4736:40;;4650:133;;;:::o;2212:630::-;2408:21;2465:10;2535:18;;:::i;:::-;2352:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2376:5:1;1016:15;1025:5;1016:8;:15::i;:::-;1008:24;;;;;;;;2432:23;2449:5;2432:16;:23::i;:::-;2408:47;;2524:1;2478:10;:25;;:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;2509:13;2478:45;;;;;;;;;;;:47;2465:60;;2556:129;;;;;;;;;2583:4;2556:129;;;;;;2602:12;2556:129;;;;2628:5;2556:129;;;;2647:6;2556:129;;;;2667:8;2556:129;;;2535:150;;2730:5;2695:10;:17;;:32;2713:13;2695:32;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2782:5;2745:10;:19;;:34;2765:13;2745:34;;;;;;;;;;;;;;;;;:42;;;;2822:5;:12;;;2797:38;;;2810:5;:10;;;2797:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:1:0;2212:630:1;;;;;;;;;:::o;1056:271::-;1112:11;1135:21;1159:23;1176:5;1159:16;:23::i;:::-;1135:47;;1236:1;1200:10;:25;;:32;;;;:37;:119;;;;1306:13;1241:78;;;:10;:25;;1267:10;:19;;:34;1287:13;1267:34;;;;;;;;;;;;;;;;;;1241:61;;;;;;;;;;;;;;;;;;;:78;;;;;1200:119;1192:128;;1056:271;;;;:::o;4050:459::-;4161:14;4185:18;;:::i;:::-;4213:12;;:::i;:::-;4235;;:::i;:::-;4257:14;;:::i;:::-;4288:18;;:::i;:::-;4112:14;1790:1;1755:10;:25;;:32;;;;:36;:120;;;;;1861:14;1795:80;;;:10;:25;;1821:10;:19;;:35;1841:14;1821:35;;;;;;;;;;;;;;;;;;1795:62;;;;;;;;;;;;;;;;;;;:80;;;;1755:120;1747:129;;;;;;;;4309:10;:17;;:33;4327:14;4309:33;;;;;;;;;;;;;;;;;4288:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4373:5;:12;;;4399:5;:17;;;4430:5;:10;;;4454:5;:11;;;4479:5;:13;;;4352:150;;;;;;;;;;;;;;;;;;;;;;4050:459;;;;;;;;;:::o;2790:135:0:-;2851:19;2889:22;:29;;;;2882:36;;2790:135;:::o;2657:161:5:-;2710:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2768:5:5;2732:16;:25;2749:7;2732:25;;;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;2783:28;2803:7;2783:28;;;;;;;;;;;;;;;;;;;;;;;;2657:161;;;:::o;404:17::-;;;;:::o;2937:660:1:-;3018:12;3046:21;3103:16;3166:17;2987:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;3070:23:1;3087:5;3070:16;:23::i;:::-;3046:47;;3122:10;:19;;:34;3142:13;3122:34;;;;;;;;;;;;;;;;;;3103:53;;3186:10;:25;;3245:1;3212:10;:25;;:32;;;;:34;3186:61;;;;;;;;;;;;;;;;;;;3166:81;;3290:11;3257:10;:19;;:30;3277:9;3257:30;;;;;;;;;;;;;;;;;:44;;;;3352:9;3311:10;:25;;3337:11;3311:38;;;;;;;;;;;;;;;;;;:50;;;;;;;3371:10;:25;;:34;;;;;;;;;;;;:::i;:::-;;3422:10;:17;;:32;3440:13;3422:32;;;;;;;;;;;;;;;;;;3415:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;3471:10;:19;;:34;3491:13;3471:34;;;;;;;;;;;;;;;;;3464:41;;;3516:53;3529:5;3536:10;:25;;:32;;;;3516:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3586:4:1;3579:11;;2937:660;;;;;;;;:::o;2409:156:5:-;2460:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2518:4:5;2482:16;:25;2499:7;2482:25;;;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;2532:26;2550:7;2532:26;;;;;;;;;;;;;;;;;;;;;;;;2409:156;;;:::o;1945:190:0:-;2012:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;2080:5;2034:21;:30;2056:7;2034:30;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;2095:33;2120:7;2095:33;;;;;;;;;;;;;;;;;;;;;;1945:190;;;:::o;4831:126:1:-;4897:13;4939:10;4929:21;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;4922:28:1;;4831:126;;;:::o;2167:154:5:-;2249:11;2289:7;2298:8;2308:5;;2279:35;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;2272:42:5;;2167:154;;;;:::o;109:20:0:-;;;;;;;;;;;;;:::o;370:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;56:2942:5:-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.17;\n\nimport \"./BadgeManager.sol\";\n\ncontract TransactionManager is BadgeManager {\n\n struct Transaction {\n bytes32 key;\n bytes32 integrityHash;\n address recipient;\n bool revoked;\n }\n\n /// @notice mapping of a unique hash to a recipient address, used to verify issuer of a credential\n mapping (bytes32=>Transaction) public credentialTxnMap;\n\n uint public nonce;\n\n function TransactionManager(address _adminWalletAddr) public BadgeManager(_adminWalletAddr) {\n nonce = 0;\n }\n\n /** @dev sets a new transaction (credential issued to recipient)\n * @param _txnKey the transaction key\n * @param _recipient recipient of the credential\n */\n function setNewTxn(\n bytes32 _txnKey,\n address _recipient,\n string _badgeName) authorized(msg.sender) public\n {\n //increase nonce\n nonce++;\n bytes32 badgeNameHash = getBadgeNameHash(_badgeName);\n Badge memory badge = badgeVault.badges[badgeNameHash];\n bytes32 integrityHash = getIntegrityHash(\n badge.issuer,\n badge.description,\n badge.name,\n badge.image,\n badge.version,\n _recipient\n );\n credentialTxnMap[_txnKey] = Transaction(_txnKey, integrityHash, _recipient, false);\n }\n\n /** @dev gets a transaction\n * @param _txnKey the transaction key\n * @return txnKey the key for the transaction\n * @return integrityHash proof of integrity hash for badge issued in this transaction\n * @return recipient address of the wallet associated with the person who received this badge\n */\n function getTxn(bytes32 _txnKey) constant public returns(bytes32 txnKey, bytes32 integrityHash, address recipient, bool revoked) {\n return(\n credentialTxnMap[_txnKey].key,\n credentialTxnMap[_txnKey].integrityHash,\n credentialTxnMap[_txnKey].recipient,\n credentialTxnMap[_txnKey].revoked\n );\n }\n\n /// @notice generate a credential transaction key\n /// @param _issuer address of the issuer\n /// @param _msgData msg data\n function getCredentialTxnKey(address _issuer, bytes _msgData) public view returns(bytes32 key) {\n return keccak256(_issuer, _msgData, nonce);\n }\n\n event CredentialRevoked(bytes32 _txnKey);\n /// @notice revoke a credential\n function revoke(bytes32 _txnKey) public authorized(msg.sender) {\n credentialTxnMap[_txnKey].revoked = true;\n CredentialRevoked(_txnKey);\n }\n\n event CredentialUnRevoked(bytes32 _txnKey);\n /// @notice unrevoke a credential\n function unRevoke(bytes32 _txnKey) public authorized(msg.sender) {\n credentialTxnMap[_txnKey].revoked = false;\n CredentialUnRevoked(_txnKey);\n }\n\n /// @notice check if credential is revoked\n function isRevoked(bytes32 _txnKey) public constant returns(bool c) {\n return credentialTxnMap[_txnKey].revoked;\n }\n}\n", "sourcePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/TransactionManager.sol", "ast": { "attributes": { "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/TransactionManager.sol", "exportedSymbols": { "TransactionManager": [ - 1515 + 1572 ] } }, @@ -539,56 +620,41 @@ ".17" ] }, - "id": 1310, + "id": 1372, "name": "PragmaDirective", "src": "0:24:5" }, { "attributes": { - "SourceUnit": 1813, - "absolutePath": "BadgeLibrary/contracts/BadgeLibrary.sol", - "file": "BadgeLibrary/contracts/BadgeLibrary.sol", - "scope": 1516, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1311, - "name": "ImportDirective", - "src": "26:49:5" - }, - { - "attributes": { - "SourceUnit": 536, + "SourceUnit": 602, "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/BadgeManager.sol", "file": "./BadgeManager.sol", - "scope": 1516, + "scope": 1573, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1312, + "id": 1373, "name": "ImportDirective", - "src": "77:28:5" + "src": "26:28:5" }, { "attributes": { "contractDependencies": [ 176, - 535 + 601 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 1515, - 535, + 1572, + 601, 176 ], "name": "TransactionManager", - "scope": 1516 + "scope": 1573 }, "children": [ { @@ -602,23 +668,23 @@ "attributes": { "contractScope": null, "name": "BadgeManager", - "referencedDeclaration": 535, + "referencedDeclaration": 601, "type": "contract BadgeManager" }, - "id": 1313, + "id": 1374, "name": "UserDefinedTypeName", - "src": "138:12:5" + "src": "87:12:5" } ], - "id": 1314, + "id": 1375, "name": "InheritanceSpecifier", - "src": "138:12:5" + "src": "87:12:5" }, { "attributes": { "canonicalName": "TransactionManager.Transaction", "name": "Transaction", - "scope": 1515, + "scope": 1572, "visibility": "public" }, "children": [ @@ -626,7 +692,7 @@ "attributes": { "constant": false, "name": "key", - "scope": 1323, + "scope": 1384, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -639,20 +705,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1315, + "id": 1376, "name": "ElementaryTypeName", - "src": "187:7:5" + "src": "136:7:5" } ], - "id": 1316, + "id": 1377, "name": "VariableDeclaration", - "src": "187:11:5" + "src": "136:11:5" }, { "attributes": { "constant": false, "name": "integrityHash", - "scope": 1323, + "scope": 1384, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -665,20 +731,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1317, + "id": 1378, "name": "ElementaryTypeName", - "src": "209:7:5" + "src": "157:7:5" } ], - "id": 1318, + "id": 1379, "name": "VariableDeclaration", - "src": "209:21:5" + "src": "157:21:5" }, { "attributes": { "constant": false, "name": "recipient", - "scope": 1323, + "scope": 1384, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -691,20 +757,20 @@ "name": "address", "type": "address" }, - "id": 1319, + "id": 1380, "name": "ElementaryTypeName", - "src": "240:7:5" + "src": "188:7:5" } ], - "id": 1320, + "id": 1381, "name": "VariableDeclaration", - "src": "240:17:5" + "src": "188:17:5" }, { "attributes": { "constant": false, "name": "revoked", - "scope": 1323, + "scope": 1384, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -717,25 +783,25 @@ "name": "bool", "type": "bool" }, - "id": 1321, + "id": 1382, "name": "ElementaryTypeName", - "src": "267:4:5" + "src": "215:4:5" } ], - "id": 1322, + "id": 1383, "name": "VariableDeclaration", - "src": "267:12:5" + "src": "215:12:5" } ], - "id": 1323, + "id": 1384, "name": "StructDefinition", - "src": "158:128:5" + "src": "107:127:5" }, { "attributes": { "constant": false, "name": "credentialTxnMap", - "scope": 1515, + "scope": 1572, "stateVariable": true, "storageLocation": "default", "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", @@ -753,36 +819,36 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1324, + "id": 1385, "name": "ElementaryTypeName", - "src": "405:7:5" + "src": "352:7:5" }, { "attributes": { "contractScope": null, "name": "Transaction", - "referencedDeclaration": 1323, + "referencedDeclaration": 1384, "type": "struct TransactionManager.Transaction storage pointer" }, - "id": 1325, + "id": 1386, "name": "UserDefinedTypeName", - "src": "414:11:5" + "src": "361:11:5" } ], - "id": 1326, + "id": 1387, "name": "Mapping", - "src": "396:30:5" + "src": "343:30:5" } ], - "id": 1327, + "id": 1388, "name": "VariableDeclaration", - "src": "396:54:5" + "src": "343:54:5" }, { "attributes": { "constant": false, "name": "nonce", - "scope": 1515, + "scope": 1572, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -795,14 +861,14 @@ "name": "uint", "type": "uint256" }, - "id": 1328, + "id": 1389, "name": "ElementaryTypeName", - "src": "457:4:5" + "src": "404:4:5" } ], - "id": 1329, + "id": 1390, "name": "VariableDeclaration", - "src": "457:17:5" + "src": "404:17:5" }, { "attributes": { @@ -811,7 +877,7 @@ "isConstructor": true, "name": "TransactionManager", "payable": false, - "scope": 1515, + "scope": 1572, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -823,7 +889,7 @@ "attributes": { "constant": false, "name": "_adminWalletAddr", - "scope": 1342, + "scope": 1403, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -836,19 +902,19 @@ "name": "address", "type": "address" }, - "id": 1330, + "id": 1391, "name": "ElementaryTypeName", - "src": "509:7:5" + "src": "456:7:5" } ], - "id": 1331, + "id": 1392, "name": "VariableDeclaration", - "src": "509:24:5" + "src": "456:24:5" } ], - "id": 1332, + "id": 1393, "name": "ParameterList", - "src": "508:26:5" + "src": "455:26:5" }, { "attributes": { @@ -857,9 +923,9 @@ ] }, "children": [], - "id": 1336, + "id": 1397, "name": "ParameterList", - "src": "573:0:5" + "src": "520:0:5" }, { "children": [ @@ -869,13 +935,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 535, + "referencedDeclaration": 601, "type": "type(contract BadgeManager)", "value": "BadgeManager" }, - "id": 1333, + "id": 1394, "name": "Identifier", - "src": "542:12:5" + "src": "489:12:5" }, { "attributes": { @@ -883,18 +949,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1331, + "referencedDeclaration": 1392, "type": "address", "value": "_adminWalletAddr" }, - "id": 1334, + "id": 1395, "name": "Identifier", - "src": "555:16:5" + "src": "502:16:5" } ], - "id": 1335, + "id": 1396, "name": "ModifierInvocation", - "src": "542:30:5" + "src": "489:30:5" }, { "children": [ @@ -917,13 +983,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1329, + "referencedDeclaration": 1390, "type": "uint256", "value": "nonce" }, - "id": 1337, + "id": 1398, "name": "Identifier", - "src": "583:5:5" + "src": "530:5:5" }, { "attributes": { @@ -938,29 +1004,29 @@ "type": "int_const 0", "value": "0" }, - "id": 1338, + "id": 1399, "name": "Literal", - "src": "591:1:5" + "src": "538:1:5" } ], - "id": 1339, + "id": 1400, "name": "Assignment", - "src": "583:9:5" + "src": "530:9:5" } ], - "id": 1340, + "id": 1401, "name": "ExpressionStatement", - "src": "583:9:5" + "src": "530:9:5" } ], - "id": 1341, + "id": 1402, "name": "Block", - "src": "573:26:5" + "src": "520:26:5" } ], - "id": 1342, + "id": 1403, "name": "FunctionDefinition", - "src": "481:118:5" + "src": "428:118:5" }, { "attributes": { @@ -969,7 +1035,7 @@ "isConstructor": false, "name": "setNewTxn", "payable": false, - "scope": 1515, + "scope": 1572, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -981,7 +1047,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1403, + "scope": 1460, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -994,20 +1060,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1343, + "id": 1404, "name": "ElementaryTypeName", - "src": "807:7:5" + "src": "753:7:5" } ], - "id": 1344, + "id": 1405, "name": "VariableDeclaration", - "src": "807:15:5" + "src": "753:15:5" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 1403, + "scope": 1460, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1020,20 +1086,20 @@ "name": "address", "type": "address" }, - "id": 1345, + "id": 1406, "name": "ElementaryTypeName", - "src": "833:7:5" + "src": "778:7:5" } ], - "id": 1346, + "id": 1407, "name": "VariableDeclaration", - "src": "833:18:5" + "src": "778:18:5" }, { "attributes": { "constant": false, "name": "_badgeName", - "scope": 1403, + "scope": 1460, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1046,19 +1112,19 @@ "name": "string", "type": "string storage pointer" }, - "id": 1347, + "id": 1408, "name": "ElementaryTypeName", - "src": "862:6:5" + "src": "806:6:5" } ], - "id": 1348, + "id": 1409, "name": "VariableDeclaration", - "src": "862:17:5" + "src": "806:17:5" } ], - "id": 1349, + "id": 1410, "name": "ParameterList", - "src": "797:83:5" + "src": "743:81:5" }, { "attributes": { @@ -1067,9 +1133,9 @@ ] }, "children": [], - "id": 1354, + "id": 1415, "name": "ParameterList", - "src": "920:0:5" + "src": "863:0:5" }, { "children": [ @@ -1083,9 +1149,9 @@ "type": "modifier (address)", "value": "authorized" }, - "id": 1350, + "id": 1411, "name": "Identifier", - "src": "881:10:5" + "src": "825:10:5" }, { "attributes": { @@ -1105,23 +1171,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1351, + "id": 1412, "name": "Identifier", - "src": "892:3:5" + "src": "836:3:5" } ], - "id": 1352, + "id": 1413, "name": "MemberAccess", - "src": "892:10:5" + "src": "836:10:5" } ], - "id": 1353, + "id": 1414, "name": "ModifierInvocation", - "src": "881:22:5" + "src": "825:22:5" }, { "children": [ @@ -1145,28 +1211,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1329, + "referencedDeclaration": 1390, "type": "uint256", "value": "nonce" }, - "id": 1355, + "id": 1416, "name": "Identifier", - "src": "955:5:5" + "src": "898:5:5" } ], - "id": 1356, + "id": 1417, "name": "UnaryOperation", - "src": "955:7:5" + "src": "898:7:5" } ], - "id": 1357, + "id": 1418, "name": "ExpressionStatement", - "src": "955:7:5" + "src": "898:7:5" }, { "attributes": { "assignments": [ - 1359 + 1420 ] }, "children": [ @@ -1174,7 +1240,7 @@ "attributes": { "constant": false, "name": "badgeNameHash", - "scope": 1403, + "scope": 1460, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1187,14 +1253,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1358, + "id": 1419, "name": "ElementaryTypeName", - "src": "972:7:5" + "src": "915:7:5" } ], - "id": 1359, + "id": 1420, "name": "VariableDeclaration", - "src": "972:21:5" + "src": "915:21:5" }, { "attributes": { @@ -1219,33 +1285,16 @@ "typeString": "string memory" } ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getBadgeNameHash", - "referencedDeclaration": 1769, - "type": "function (string memory) pure returns (bytes32)" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 558, + "type": "function (string memory) pure returns (bytes32)", + "value": "getBadgeNameHash" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1812, - "type": "type(library BadgeLibrary)", - "value": "BadgeLibrary" - }, - "id": 1360, - "name": "Identifier", - "src": "996:12:5" - } - ], - "id": 1361, - "name": "MemberAccess", - "src": "996:29:5" + "id": 1421, + "name": "Identifier", + "src": "939:16:5" }, { "attributes": { @@ -1253,28 +1302,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1348, + "referencedDeclaration": 1409, "type": "string memory", "value": "_badgeName" }, - "id": 1362, + "id": 1422, "name": "Identifier", - "src": "1026:10:5" + "src": "956:10:5" } ], - "id": 1363, + "id": 1423, "name": "FunctionCall", - "src": "996:41:5" + "src": "939:28:5" } ], - "id": 1364, + "id": 1424, "name": "VariableDeclarationStatement", - "src": "972:65:5" + "src": "915:52:5" }, { "attributes": { "assignments": [ - 1368 + 1426 ] }, "children": [ @@ -1282,10 +1331,10 @@ "attributes": { "constant": false, "name": "badge", - "scope": 1403, + "scope": 1460, "stateVariable": false, "storageLocation": "memory", - "type": "struct BadgeLibrary.Badge memory", + "type": "struct BadgeManager.Badge memory", "value": null, "visibility": "internal" }, @@ -1293,18 +1342,18 @@ { "attributes": { "contractScope": null, - "name": "BadgeLibrary.Badge", - "referencedDeclaration": 1746, - "type": "struct BadgeLibrary.Badge storage pointer" + "name": "Badge", + "referencedDeclaration": 192, + "type": "struct BadgeManager.Badge storage pointer" }, - "id": 1367, + "id": 1425, "name": "UserDefinedTypeName", - "src": "1047:18:5" + "src": "977:5:5" } ], - "id": 1368, + "id": 1426, "name": "VariableDeclaration", - "src": "1047:31:5" + "src": "977:18:5" }, { "attributes": { @@ -1313,7 +1362,7 @@ "isLValue": true, "isPure": false, "lValueRequested": false, - "type": "struct BadgeLibrary.Badge storage ref" + "type": "struct BadgeManager.Badge storage ref" }, "children": [ { @@ -1324,8 +1373,8 @@ "isPure": false, "lValueRequested": false, "member_name": "badges", - "referencedDeclaration": 186, - "type": "mapping(bytes32 => struct BadgeLibrary.Badge storage ref)" + "referencedDeclaration": 207, + "type": "mapping(bytes32 => struct BadgeManager.Badge storage ref)" }, "children": [ { @@ -1334,18 +1383,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 196, + "referencedDeclaration": 217, "type": "struct BadgeManager.Vault storage ref", "value": "badgeVault" }, - "id": 1369, + "id": 1427, "name": "Identifier", - "src": "1081:10:5" + "src": "998:10:5" } ], - "id": 1370, + "id": 1428, "name": "MemberAccess", - "src": "1081:17:5" + "src": "998:17:5" }, { "attributes": { @@ -1353,28 +1402,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1359, + "referencedDeclaration": 1420, "type": "bytes32", "value": "badgeNameHash" }, - "id": 1371, + "id": 1429, "name": "Identifier", - "src": "1099:13:5" + "src": "1016:13:5" } ], - "id": 1372, + "id": 1430, "name": "IndexAccess", - "src": "1081:32:5" + "src": "998:32:5" } ], - "id": 1373, + "id": 1431, "name": "VariableDeclarationStatement", - "src": "1047:66:5" + "src": "977:53:5" }, { "attributes": { "assignments": [ - 1375 + 1433 ] }, "children": [ @@ -1382,7 +1431,7 @@ "attributes": { "constant": false, "name": "integrityHash", - "scope": 1403, + "scope": 1460, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1395,14 +1444,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1374, + "id": 1432, "name": "ElementaryTypeName", - "src": "1123:7:5" + "src": "1040:7:5" } ], - "id": 1375, + "id": 1433, "name": "VariableDeclaration", - "src": "1123:21:5" + "src": "1040:21:5" }, { "attributes": { @@ -1447,33 +1496,16 @@ "typeString": "address" } ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getIntegrityHash", - "referencedDeclaration": 1811, - "type": "function (address,string memory,string memory,string memory,string memory,address) pure returns (bytes32)" + "overloadedDeclarations": [ + null + ], + "referencedDeclaration": 600, + "type": "function (address,string memory,string memory,string memory,string memory,address) pure returns (bytes32)", + "value": "getIntegrityHash" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 1812, - "type": "type(library BadgeLibrary)", - "value": "BadgeLibrary" - }, - "id": 1376, - "name": "Identifier", - "src": "1147:12:5" - } - ], - "id": 1377, - "name": "MemberAccess", - "src": "1147:29:5" + "id": 1434, + "name": "Identifier", + "src": "1064:16:5" }, { "attributes": { @@ -1483,7 +1515,7 @@ "isPure": false, "lValueRequested": false, "member_name": "issuer", - "referencedDeclaration": 1737, + "referencedDeclaration": 183, "type": "address" }, "children": [ @@ -1493,18 +1525,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1368, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1426, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1378, + "id": 1435, "name": "Identifier", - "src": "1190:5:5" + "src": "1094:5:5" } ], - "id": 1379, + "id": 1436, "name": "MemberAccess", - "src": "1190:12:5" + "src": "1094:12:5" }, { "attributes": { @@ -1514,7 +1546,7 @@ "isPure": false, "lValueRequested": false, "member_name": "description", - "referencedDeclaration": 1739, + "referencedDeclaration": 185, "type": "string memory" }, "children": [ @@ -1524,18 +1556,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1368, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1426, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1380, + "id": 1437, "name": "Identifier", - "src": "1217:5:5" + "src": "1120:5:5" } ], - "id": 1381, + "id": 1438, "name": "MemberAccess", - "src": "1217:17:5" + "src": "1120:17:5" }, { "attributes": { @@ -1545,7 +1577,7 @@ "isPure": false, "lValueRequested": false, "member_name": "name", - "referencedDeclaration": 1741, + "referencedDeclaration": 187, "type": "string memory" }, "children": [ @@ -1555,18 +1587,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1368, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1426, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1382, + "id": 1439, "name": "Identifier", - "src": "1249:5:5" + "src": "1151:5:5" } ], - "id": 1383, + "id": 1440, "name": "MemberAccess", - "src": "1249:10:5" + "src": "1151:10:5" }, { "attributes": { @@ -1576,7 +1608,7 @@ "isPure": false, "lValueRequested": false, "member_name": "image", - "referencedDeclaration": 1743, + "referencedDeclaration": 189, "type": "string memory" }, "children": [ @@ -1586,18 +1618,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1368, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1426, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1384, + "id": 1441, "name": "Identifier", - "src": "1274:5:5" + "src": "1175:5:5" } ], - "id": 1385, + "id": 1442, "name": "MemberAccess", - "src": "1274:11:5" + "src": "1175:11:5" }, { "attributes": { @@ -1607,7 +1639,7 @@ "isPure": false, "lValueRequested": false, "member_name": "version", - "referencedDeclaration": 1745, + "referencedDeclaration": 191, "type": "string memory" }, "children": [ @@ -1617,18 +1649,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1368, - "type": "struct BadgeLibrary.Badge memory", + "referencedDeclaration": 1426, + "type": "struct BadgeManager.Badge memory", "value": "badge" }, - "id": 1386, + "id": 1443, "name": "Identifier", - "src": "1300:5:5" + "src": "1200:5:5" } ], - "id": 1387, + "id": 1444, "name": "MemberAccess", - "src": "1300:13:5" + "src": "1200:13:5" }, { "attributes": { @@ -1636,23 +1668,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1346, + "referencedDeclaration": 1407, "type": "address", "value": "_recipient" }, - "id": 1388, + "id": 1445, "name": "Identifier", - "src": "1328:10:5" + "src": "1227:10:5" } ], - "id": 1389, + "id": 1446, "name": "FunctionCall", - "src": "1147:202:5" + "src": "1064:183:5" } ], - "id": 1390, + "id": 1447, "name": "VariableDeclarationStatement", - "src": "1123:226:5" + "src": "1040:207:5" }, { "children": [ @@ -1683,13 +1715,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1327, + "referencedDeclaration": 1388, "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", "value": "credentialTxnMap" }, - "id": 1391, + "id": 1448, "name": "Identifier", - "src": "1359:16:5" + "src": "1257:16:5" }, { "attributes": { @@ -1697,18 +1729,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1344, + "referencedDeclaration": 1405, "type": "bytes32", "value": "_txnKey" }, - "id": 1392, + "id": 1449, "name": "Identifier", - "src": "1376:7:5" + "src": "1274:7:5" } ], - "id": 1393, + "id": 1450, "name": "IndexAccess", - "src": "1359:25:5" + "src": "1257:25:5" }, { "attributes": { @@ -1748,13 +1780,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1323, + "referencedDeclaration": 1384, "type": "type(struct TransactionManager.Transaction storage pointer)", "value": "Transaction" }, - "id": 1394, + "id": 1451, "name": "Identifier", - "src": "1387:11:5" + "src": "1285:11:5" }, { "attributes": { @@ -1762,13 +1794,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1344, + "referencedDeclaration": 1405, "type": "bytes32", "value": "_txnKey" }, - "id": 1395, + "id": 1452, "name": "Identifier", - "src": "1399:7:5" + "src": "1297:7:5" }, { "attributes": { @@ -1776,13 +1808,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1375, + "referencedDeclaration": 1433, "type": "bytes32", "value": "integrityHash" }, - "id": 1396, + "id": 1453, "name": "Identifier", - "src": "1408:13:5" + "src": "1306:13:5" }, { "attributes": { @@ -1790,13 +1822,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1346, + "referencedDeclaration": 1407, "type": "address", "value": "_recipient" }, - "id": 1397, + "id": 1454, "name": "Identifier", - "src": "1423:10:5" + "src": "1321:10:5" }, { "attributes": { @@ -1811,34 +1843,34 @@ "type": "bool", "value": "false" }, - "id": 1398, + "id": 1455, "name": "Literal", - "src": "1435:5:5" + "src": "1333:5:5" } ], - "id": 1399, + "id": 1456, "name": "FunctionCall", - "src": "1387:54:5" + "src": "1285:54:5" } ], - "id": 1400, + "id": 1457, "name": "Assignment", - "src": "1359:82:5" + "src": "1257:82:5" } ], - "id": 1401, + "id": 1458, "name": "ExpressionStatement", - "src": "1359:82:5" + "src": "1257:82:5" } ], - "id": 1402, + "id": 1459, "name": "Block", - "src": "920:528:5" + "src": "863:483:5" } ], - "id": 1403, + "id": 1460, "name": "FunctionDefinition", - "src": "779:669:5" + "src": "725:621:5" }, { "attributes": { @@ -1850,7 +1882,7 @@ ], "name": "getTxn", "payable": false, - "scope": 1515, + "scope": 1572, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -1862,7 +1894,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1435, + "scope": 1492, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1875,19 +1907,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1404, + "id": 1461, "name": "ElementaryTypeName", - "src": "1795:7:5" + "src": "1691:7:5" } ], - "id": 1405, + "id": 1462, "name": "VariableDeclaration", - "src": "1795:15:5" + "src": "1691:15:5" } ], - "id": 1406, + "id": 1463, "name": "ParameterList", - "src": "1794:17:5" + "src": "1690:17:5" }, { "children": [ @@ -1895,7 +1927,7 @@ "attributes": { "constant": false, "name": "txnKey", - "scope": 1435, + "scope": 1492, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1908,20 +1940,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1407, + "id": 1464, "name": "ElementaryTypeName", - "src": "1836:7:5" + "src": "1732:7:5" } ], - "id": 1408, + "id": 1465, "name": "VariableDeclaration", - "src": "1836:14:5" + "src": "1732:14:5" }, { "attributes": { "constant": false, "name": "integrityHash", - "scope": 1435, + "scope": 1492, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1934,20 +1966,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1409, + "id": 1466, "name": "ElementaryTypeName", - "src": "1852:7:5" + "src": "1748:7:5" } ], - "id": 1410, + "id": 1467, "name": "VariableDeclaration", - "src": "1852:21:5" + "src": "1748:21:5" }, { "attributes": { "constant": false, "name": "recipient", - "scope": 1435, + "scope": 1492, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1960,20 +1992,20 @@ "name": "address", "type": "address" }, - "id": 1411, + "id": 1468, "name": "ElementaryTypeName", - "src": "1875:7:5" + "src": "1771:7:5" } ], - "id": 1412, + "id": 1469, "name": "VariableDeclaration", - "src": "1875:17:5" + "src": "1771:17:5" }, { "attributes": { "constant": false, "name": "revoked", - "scope": 1435, + "scope": 1492, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1986,25 +2018,25 @@ "name": "bool", "type": "bool" }, - "id": 1413, + "id": 1470, "name": "ElementaryTypeName", - "src": "1894:4:5" + "src": "1790:4:5" } ], - "id": 1414, + "id": 1471, "name": "VariableDeclaration", - "src": "1894:12:5" + "src": "1790:12:5" } ], - "id": 1415, + "id": 1472, "name": "ParameterList", - "src": "1835:72:5" + "src": "1731:72:5" }, { "children": [ { "attributes": { - "functionReturnParameters": 1415 + "functionReturnParameters": 1472 }, "children": [ { @@ -2026,7 +2058,7 @@ "isPure": false, "lValueRequested": false, "member_name": "key", - "referencedDeclaration": 1316, + "referencedDeclaration": 1377, "type": "bytes32" }, "children": [ @@ -2046,13 +2078,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1327, + "referencedDeclaration": 1388, "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", "value": "credentialTxnMap" }, - "id": 1416, + "id": 1473, "name": "Identifier", - "src": "1938:16:5" + "src": "1834:16:5" }, { "attributes": { @@ -2060,23 +2092,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1405, + "referencedDeclaration": 1462, "type": "bytes32", "value": "_txnKey" }, - "id": 1417, + "id": 1474, "name": "Identifier", - "src": "1955:7:5" + "src": "1851:7:5" } ], - "id": 1418, + "id": 1475, "name": "IndexAccess", - "src": "1938:25:5" + "src": "1834:25:5" } ], - "id": 1419, + "id": 1476, "name": "MemberAccess", - "src": "1938:29:5" + "src": "1834:29:5" }, { "attributes": { @@ -2086,7 +2118,7 @@ "isPure": false, "lValueRequested": false, "member_name": "integrityHash", - "referencedDeclaration": 1318, + "referencedDeclaration": 1379, "type": "bytes32" }, "children": [ @@ -2106,13 +2138,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1327, + "referencedDeclaration": 1388, "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", "value": "credentialTxnMap" }, - "id": 1420, + "id": 1477, "name": "Identifier", - "src": "1981:16:5" + "src": "1877:16:5" }, { "attributes": { @@ -2120,23 +2152,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1405, + "referencedDeclaration": 1462, "type": "bytes32", "value": "_txnKey" }, - "id": 1421, + "id": 1478, "name": "Identifier", - "src": "1998:7:5" + "src": "1894:7:5" } ], - "id": 1422, + "id": 1479, "name": "IndexAccess", - "src": "1981:25:5" + "src": "1877:25:5" } ], - "id": 1423, + "id": 1480, "name": "MemberAccess", - "src": "1981:39:5" + "src": "1877:39:5" }, { "attributes": { @@ -2146,7 +2178,7 @@ "isPure": false, "lValueRequested": false, "member_name": "recipient", - "referencedDeclaration": 1320, + "referencedDeclaration": 1381, "type": "address" }, "children": [ @@ -2166,13 +2198,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1327, + "referencedDeclaration": 1388, "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", "value": "credentialTxnMap" }, - "id": 1424, + "id": 1481, "name": "Identifier", - "src": "2034:16:5" + "src": "1930:16:5" }, { "attributes": { @@ -2180,23 +2212,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1405, + "referencedDeclaration": 1462, "type": "bytes32", "value": "_txnKey" }, - "id": 1425, + "id": 1482, "name": "Identifier", - "src": "2051:7:5" + "src": "1947:7:5" } ], - "id": 1426, + "id": 1483, "name": "IndexAccess", - "src": "2034:25:5" + "src": "1930:25:5" } ], - "id": 1427, + "id": 1484, "name": "MemberAccess", - "src": "2034:35:5" + "src": "1930:35:5" }, { "attributes": { @@ -2206,7 +2238,7 @@ "isPure": false, "lValueRequested": false, "member_name": "revoked", - "referencedDeclaration": 1322, + "referencedDeclaration": 1383, "type": "bool" }, "children": [ @@ -2226,13 +2258,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1327, + "referencedDeclaration": 1388, "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", "value": "credentialTxnMap" }, - "id": 1428, + "id": 1485, "name": "Identifier", - "src": "2083:16:5" + "src": "1979:16:5" }, { "attributes": { @@ -2240,43 +2272,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1405, + "referencedDeclaration": 1462, "type": "bytes32", "value": "_txnKey" }, - "id": 1429, + "id": 1486, "name": "Identifier", - "src": "2100:7:5" + "src": "1996:7:5" } ], - "id": 1430, + "id": 1487, "name": "IndexAccess", - "src": "2083:25:5" + "src": "1979:25:5" } ], - "id": 1431, + "id": 1488, "name": "MemberAccess", - "src": "2083:33:5" + "src": "1979:33:5" } ], - "id": 1432, + "id": 1489, "name": "TupleExpression", - "src": "1924:202:5" + "src": "1820:202:5" } ], - "id": 1433, + "id": 1490, "name": "Return", - "src": "1918:208:5" + "src": "1814:208:5" } ], - "id": 1434, + "id": 1491, "name": "Block", - "src": "1908:225:5" + "src": "1804:225:5" } ], - "id": 1435, + "id": 1492, "name": "FunctionDefinition", - "src": "1779:354:5" + "src": "1675:354:5" }, { "attributes": { @@ -2288,7 +2320,7 @@ ], "name": "getCredentialTxnKey", "payable": false, - "scope": 1515, + "scope": 1572, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -2300,7 +2332,7 @@ "attributes": { "constant": false, "name": "_issuer", - "scope": 1451, + "scope": 1508, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -2313,20 +2345,20 @@ "name": "address", "type": "address" }, - "id": 1436, + "id": 1493, "name": "ElementaryTypeName", - "src": "2300:7:5" + "src": "2196:7:5" } ], - "id": 1437, + "id": 1494, "name": "VariableDeclaration", - "src": "2300:15:5" + "src": "2196:15:5" }, { "attributes": { "constant": false, "name": "_msgData", - "scope": 1451, + "scope": 1508, "stateVariable": false, "storageLocation": "default", "type": "bytes memory", @@ -2339,19 +2371,19 @@ "name": "bytes", "type": "bytes storage pointer" }, - "id": 1438, + "id": 1495, "name": "ElementaryTypeName", - "src": "2317:5:5" + "src": "2213:5:5" } ], - "id": 1439, + "id": 1496, "name": "VariableDeclaration", - "src": "2317:14:5" + "src": "2213:14:5" } ], - "id": 1440, + "id": 1497, "name": "ParameterList", - "src": "2299:33:5" + "src": "2195:33:5" }, { "children": [ @@ -2359,7 +2391,7 @@ "attributes": { "constant": false, "name": "key", - "scope": 1451, + "scope": 1508, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2372,25 +2404,25 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1441, + "id": 1498, "name": "ElementaryTypeName", - "src": "2353:7:5" + "src": "2249:7:5" } ], - "id": 1442, + "id": 1499, "name": "VariableDeclaration", - "src": "2353:11:5" + "src": "2249:11:5" } ], - "id": 1443, + "id": 1500, "name": "ParameterList", - "src": "2352:13:5" + "src": "2248:13:5" }, { "children": [ { "attributes": { - "functionReturnParameters": 1443 + "functionReturnParameters": 1500 }, "children": [ { @@ -2427,13 +2459,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2409, + "referencedDeclaration": 2465, "type": "function () pure returns (bytes32)", "value": "keccak256" }, - "id": 1444, + "id": 1501, "name": "Identifier", - "src": "2383:9:5" + "src": "2279:9:5" }, { "attributes": { @@ -2441,13 +2473,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1437, + "referencedDeclaration": 1494, "type": "address", "value": "_issuer" }, - "id": 1445, + "id": 1502, "name": "Identifier", - "src": "2393:7:5" + "src": "2289:7:5" }, { "attributes": { @@ -2455,13 +2487,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1439, + "referencedDeclaration": 1496, "type": "bytes memory", "value": "_msgData" }, - "id": 1446, + "id": 1503, "name": "Identifier", - "src": "2402:8:5" + "src": "2298:8:5" }, { "attributes": { @@ -2469,33 +2501,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1329, + "referencedDeclaration": 1390, "type": "uint256", "value": "nonce" }, - "id": 1447, + "id": 1504, "name": "Identifier", - "src": "2412:5:5" + "src": "2308:5:5" } ], - "id": 1448, + "id": 1505, "name": "FunctionCall", - "src": "2383:35:5" + "src": "2279:35:5" } ], - "id": 1449, + "id": 1506, "name": "Return", - "src": "2376:42:5" + "src": "2272:42:5" } ], - "id": 1450, + "id": 1507, "name": "Block", - "src": "2366:59:5" + "src": "2262:59:5" } ], - "id": 1451, + "id": 1508, "name": "FunctionDefinition", - "src": "2271:154:5" + "src": "2167:154:5" }, { "attributes": { @@ -2510,7 +2542,7 @@ "constant": false, "indexed": false, "name": "_txnKey", - "scope": 1455, + "scope": 1512, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2523,24 +2555,24 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1452, + "id": 1509, "name": "ElementaryTypeName", - "src": "2455:7:5" + "src": "2351:7:5" } ], - "id": 1453, + "id": 1510, "name": "VariableDeclaration", - "src": "2455:15:5" + "src": "2351:15:5" } ], - "id": 1454, + "id": 1511, "name": "ParameterList", - "src": "2454:17:5" + "src": "2350:17:5" } ], - "id": 1455, + "id": 1512, "name": "EventDefinition", - "src": "2431:41:5" + "src": "2327:41:5" }, { "attributes": { @@ -2549,7 +2581,7 @@ "isConstructor": false, "name": "revoke", "payable": false, - "scope": 1515, + "scope": 1572, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2561,7 +2593,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1476, + "scope": 1533, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2574,19 +2606,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1456, + "id": 1513, "name": "ElementaryTypeName", - "src": "2529:7:5" + "src": "2425:7:5" } ], - "id": 1457, + "id": 1514, "name": "VariableDeclaration", - "src": "2529:15:5" + "src": "2425:15:5" } ], - "id": 1458, + "id": 1515, "name": "ParameterList", - "src": "2528:17:5" + "src": "2424:17:5" }, { "attributes": { @@ -2595,9 +2627,9 @@ ] }, "children": [], - "id": 1463, + "id": 1520, "name": "ParameterList", - "src": "2576:0:5" + "src": "2472:0:5" }, { "children": [ @@ -2611,9 +2643,9 @@ "type": "modifier (address)", "value": "authorized" }, - "id": 1459, + "id": 1516, "name": "Identifier", - "src": "2553:10:5" + "src": "2449:10:5" }, { "attributes": { @@ -2633,23 +2665,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1460, + "id": 1517, "name": "Identifier", - "src": "2564:3:5" + "src": "2460:3:5" } ], - "id": 1461, + "id": 1518, "name": "MemberAccess", - "src": "2564:10:5" + "src": "2460:10:5" } ], - "id": 1462, + "id": 1519, "name": "ModifierInvocation", - "src": "2553:22:5" + "src": "2449:22:5" }, { "children": [ @@ -2674,7 +2706,7 @@ "isPure": false, "lValueRequested": true, "member_name": "revoked", - "referencedDeclaration": 1322, + "referencedDeclaration": 1383, "type": "bool" }, "children": [ @@ -2694,13 +2726,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1327, + "referencedDeclaration": 1388, "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", "value": "credentialTxnMap" }, - "id": 1464, + "id": 1521, "name": "Identifier", - "src": "2586:16:5" + "src": "2482:16:5" }, { "attributes": { @@ -2708,23 +2740,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1457, + "referencedDeclaration": 1514, "type": "bytes32", "value": "_txnKey" }, - "id": 1465, + "id": 1522, "name": "Identifier", - "src": "2603:7:5" + "src": "2499:7:5" } ], - "id": 1466, + "id": 1523, "name": "IndexAccess", - "src": "2586:25:5" + "src": "2482:25:5" } ], - "id": 1467, + "id": 1524, "name": "MemberAccess", - "src": "2586:33:5" + "src": "2482:33:5" }, { "attributes": { @@ -2739,19 +2771,19 @@ "type": "bool", "value": "true" }, - "id": 1468, + "id": 1525, "name": "Literal", - "src": "2622:4:5" + "src": "2518:4:5" } ], - "id": 1469, + "id": 1526, "name": "Assignment", - "src": "2586:40:5" + "src": "2482:40:5" } ], - "id": 1470, + "id": 1527, "name": "ExpressionStatement", - "src": "2586:40:5" + "src": "2482:40:5" }, { "children": [ @@ -2781,13 +2813,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1455, + "referencedDeclaration": 1512, "type": "function (bytes32)", "value": "CredentialRevoked" }, - "id": 1471, + "id": 1528, "name": "Identifier", - "src": "2636:17:5" + "src": "2532:17:5" }, { "attributes": { @@ -2795,33 +2827,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1457, + "referencedDeclaration": 1514, "type": "bytes32", "value": "_txnKey" }, - "id": 1472, + "id": 1529, "name": "Identifier", - "src": "2654:7:5" + "src": "2550:7:5" } ], - "id": 1473, + "id": 1530, "name": "FunctionCall", - "src": "2636:26:5" + "src": "2532:26:5" } ], - "id": 1474, + "id": 1531, "name": "ExpressionStatement", - "src": "2636:26:5" + "src": "2532:26:5" } ], - "id": 1475, + "id": 1532, "name": "Block", - "src": "2576:93:5" + "src": "2472:93:5" } ], - "id": 1476, + "id": 1533, "name": "FunctionDefinition", - "src": "2513:156:5" + "src": "2409:156:5" }, { "attributes": { @@ -2836,7 +2868,7 @@ "constant": false, "indexed": false, "name": "_txnKey", - "scope": 1480, + "scope": 1537, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2849,24 +2881,24 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1477, + "id": 1534, "name": "ElementaryTypeName", - "src": "2701:7:5" + "src": "2597:7:5" } ], - "id": 1478, + "id": 1535, "name": "VariableDeclaration", - "src": "2701:15:5" + "src": "2597:15:5" } ], - "id": 1479, + "id": 1536, "name": "ParameterList", - "src": "2700:17:5" + "src": "2596:17:5" } ], - "id": 1480, + "id": 1537, "name": "EventDefinition", - "src": "2675:43:5" + "src": "2571:43:5" }, { "attributes": { @@ -2875,7 +2907,7 @@ "isConstructor": false, "name": "unRevoke", "payable": false, - "scope": 1515, + "scope": 1572, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -2887,7 +2919,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1501, + "scope": 1558, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2900,19 +2932,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1481, + "id": 1538, "name": "ElementaryTypeName", - "src": "2779:7:5" + "src": "2675:7:5" } ], - "id": 1482, + "id": 1539, "name": "VariableDeclaration", - "src": "2779:15:5" + "src": "2675:15:5" } ], - "id": 1483, + "id": 1540, "name": "ParameterList", - "src": "2778:17:5" + "src": "2674:17:5" }, { "attributes": { @@ -2921,9 +2953,9 @@ ] }, "children": [], - "id": 1488, + "id": 1545, "name": "ParameterList", - "src": "2826:0:5" + "src": "2722:0:5" }, { "children": [ @@ -2937,9 +2969,9 @@ "type": "modifier (address)", "value": "authorized" }, - "id": 1484, + "id": 1541, "name": "Identifier", - "src": "2803:10:5" + "src": "2699:10:5" }, { "attributes": { @@ -2959,23 +2991,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 2415, + "referencedDeclaration": 2471, "type": "msg", "value": "msg" }, - "id": 1485, + "id": 1542, "name": "Identifier", - "src": "2814:3:5" + "src": "2710:3:5" } ], - "id": 1486, + "id": 1543, "name": "MemberAccess", - "src": "2814:10:5" + "src": "2710:10:5" } ], - "id": 1487, + "id": 1544, "name": "ModifierInvocation", - "src": "2803:22:5" + "src": "2699:22:5" }, { "children": [ @@ -3000,7 +3032,7 @@ "isPure": false, "lValueRequested": true, "member_name": "revoked", - "referencedDeclaration": 1322, + "referencedDeclaration": 1383, "type": "bool" }, "children": [ @@ -3020,13 +3052,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1327, + "referencedDeclaration": 1388, "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", "value": "credentialTxnMap" }, - "id": 1489, + "id": 1546, "name": "Identifier", - "src": "2836:16:5" + "src": "2732:16:5" }, { "attributes": { @@ -3034,23 +3066,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1482, + "referencedDeclaration": 1539, "type": "bytes32", "value": "_txnKey" }, - "id": 1490, + "id": 1547, "name": "Identifier", - "src": "2853:7:5" + "src": "2749:7:5" } ], - "id": 1491, + "id": 1548, "name": "IndexAccess", - "src": "2836:25:5" + "src": "2732:25:5" } ], - "id": 1492, + "id": 1549, "name": "MemberAccess", - "src": "2836:33:5" + "src": "2732:33:5" }, { "attributes": { @@ -3065,19 +3097,19 @@ "type": "bool", "value": "false" }, - "id": 1493, + "id": 1550, "name": "Literal", - "src": "2872:5:5" + "src": "2768:5:5" } ], - "id": 1494, + "id": 1551, "name": "Assignment", - "src": "2836:41:5" + "src": "2732:41:5" } ], - "id": 1495, + "id": 1552, "name": "ExpressionStatement", - "src": "2836:41:5" + "src": "2732:41:5" }, { "children": [ @@ -3107,13 +3139,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1480, + "referencedDeclaration": 1537, "type": "function (bytes32)", "value": "CredentialUnRevoked" }, - "id": 1496, + "id": 1553, "name": "Identifier", - "src": "2887:19:5" + "src": "2783:19:5" }, { "attributes": { @@ -3121,33 +3153,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1482, + "referencedDeclaration": 1539, "type": "bytes32", "value": "_txnKey" }, - "id": 1497, + "id": 1554, "name": "Identifier", - "src": "2907:7:5" + "src": "2803:7:5" } ], - "id": 1498, + "id": 1555, "name": "FunctionCall", - "src": "2887:28:5" + "src": "2783:28:5" } ], - "id": 1499, + "id": 1556, "name": "ExpressionStatement", - "src": "2887:28:5" + "src": "2783:28:5" } ], - "id": 1500, + "id": 1557, "name": "Block", - "src": "2826:96:5" + "src": "2722:96:5" } ], - "id": 1501, + "id": 1558, "name": "FunctionDefinition", - "src": "2761:161:5" + "src": "2657:161:5" }, { "attributes": { @@ -3159,7 +3191,7 @@ ], "name": "isRevoked", "payable": false, - "scope": 1515, + "scope": 1572, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -3171,7 +3203,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1514, + "scope": 1571, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -3184,19 +3216,19 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1502, + "id": 1559, "name": "ElementaryTypeName", - "src": "2994:7:5" + "src": "2890:7:5" } ], - "id": 1503, + "id": 1560, "name": "VariableDeclaration", - "src": "2994:15:5" + "src": "2890:15:5" } ], - "id": 1504, + "id": 1561, "name": "ParameterList", - "src": "2993:17:5" + "src": "2889:17:5" }, { "children": [ @@ -3204,7 +3236,7 @@ "attributes": { "constant": false, "name": "c", - "scope": 1514, + "scope": 1571, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -3217,25 +3249,25 @@ "name": "bool", "type": "bool" }, - "id": 1505, + "id": 1562, "name": "ElementaryTypeName", - "src": "3035:4:5" + "src": "2931:4:5" } ], - "id": 1506, + "id": 1563, "name": "VariableDeclaration", - "src": "3035:6:5" + "src": "2931:6:5" } ], - "id": 1507, + "id": 1564, "name": "ParameterList", - "src": "3034:8:5" + "src": "2930:8:5" }, { "children": [ { "attributes": { - "functionReturnParameters": 1507 + "functionReturnParameters": 1564 }, "children": [ { @@ -3246,7 +3278,7 @@ "isPure": false, "lValueRequested": false, "member_name": "revoked", - "referencedDeclaration": 1322, + "referencedDeclaration": 1383, "type": "bool" }, "children": [ @@ -3266,13 +3298,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1327, + "referencedDeclaration": 1388, "type": "mapping(bytes32 => struct TransactionManager.Transaction storage ref)", "value": "credentialTxnMap" }, - "id": 1508, + "id": 1565, "name": "Identifier", - "src": "3060:16:5" + "src": "2956:16:5" }, { "attributes": { @@ -3280,48 +3312,48 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1503, + "referencedDeclaration": 1560, "type": "bytes32", "value": "_txnKey" }, - "id": 1509, + "id": 1566, "name": "Identifier", - "src": "3077:7:5" + "src": "2973:7:5" } ], - "id": 1510, + "id": 1567, "name": "IndexAccess", - "src": "3060:25:5" + "src": "2956:25:5" } ], - "id": 1511, + "id": 1568, "name": "MemberAccess", - "src": "3060:33:5" + "src": "2956:33:5" } ], - "id": 1512, + "id": 1569, "name": "Return", - "src": "3053:40:5" + "src": "2949:40:5" } ], - "id": 1513, + "id": 1570, "name": "Block", - "src": "3043:57:5" + "src": "2939:57:5" } ], - "id": 1514, + "id": 1571, "name": "FunctionDefinition", - "src": "2975:125:5" + "src": "2871:125:5" } ], - "id": 1515, + "id": 1572, "name": "ContractDefinition", - "src": "107:2995:5" + "src": "56:2942:5" } ], - "id": 1516, + "id": 1573, "name": "SourceUnit", - "src": "0:3102:5" + "src": "0:2999:5" }, "compiler": { "name": "solc", @@ -3329,5 +3361,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.894Z" + "updatedAt": "2018-01-14T10:53:22.997Z" } \ No newline at end of file diff --git a/build/contracts/Verifier.json b/build/contracts/Verifier.json index ffe143f..c07b3ef 100644 --- a/build/contracts/Verifier.json +++ b/build/contracts/Verifier.json @@ -85,6 +85,68 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "_name", + "type": "string" + }, + { + "name": "_issuer", + "type": "address" + } + ], + "name": "getBadgeLinkHash", + "outputs": [ + { + "name": "hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "issuer", + "type": "address" + }, + { + "name": "description", + "type": "string" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "image", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "recipient", + "type": "address" + } + ], + "name": "getIntegrityHash", + "outputs": [ + { + "name": "_hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [], @@ -370,6 +432,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "constant": true, + "inputs": [ + { + "name": "_badgename", + "type": "string" + } + ], + "name": "getBadgeNameHash", + "outputs": [ + { + "name": "_hash", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, { "constant": true, "inputs": [ @@ -572,18 +653,18 @@ "type": "event" } ], - "bytecode": "0x6060604052341561000f57600080fd5b6040516020806133e083398101604052808051906020019091905050808080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505060006007819055505050613357806100896000396000f300606060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a28581461012d5780630decfdea146101b65780631041eb961461024657806324ddd51a146102d65780633557b6c3146102ff5780633b57391a146103625780634294857f1461039b5780635629aec9146103da57806359c293f11461044e5780635c9d3a941461048d57806372ee19a2146105b357806377002fcf146106285780637c59fda01461083f578063a5aef15b14610868578063affed0e01461088f578063b6109221146108b8578063b75c7dc61461092d578063be47aa0914610954578063d8c0941b1461098d578063eb92948114610a57578063f851a44014610aef578063f9afc24214610b44575b600080fd5b341561013857600080fd5b6101b460048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610bcf565b005b34156101c157600080fd5b6101db6004808035600019169060200190919050506114bd565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561025157600080fd5b61026b60048080356000191690602001909190505061151a565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b34156102e157600080fd5b6102e96115d8565b6040518082815260200191505060405180910390f35b341561030a57600080fd5b61032060048080359060200190919050506115e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036d57600080fd5b610399600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116c5565b005b34156103a657600080fd5b6103c0600480803560001916906020019091905050611949565b604051808215151515815260200191505060405180910390f35b34156103e557600080fd5b61041e60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061197e565b60405180841515151581526020018315151515815260200182151515158152602001935050505060405180910390f35b341561045957600080fd5b61046f6004808035906020019091905050611ae5565b60405180826000191660001916815260200191505060405180910390f35b341561049857600080fd5b6105b1600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b0c565b005b34156105be57600080fd5b61060e600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611f85565b604051808215151515815260200191505060405180910390f35b341561063357600080fd5b61064d6004808035600019169060200190919050506120df565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b838110156106cb5780820151818401526020810190506106b0565b50505050905090810190601f1680156106f85780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015610731578082015181840152602081019050610716565b50505050905090810190601f16801561075e5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b8381101561079757808201518184015260208101905061077c565b50505050905090810190601f1680156107c45780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b838110156107fd5780820151818401526020810190506107e2565b50505050905090810190601f16801561082a5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b341561084a57600080fd5b6108526124b3565b6040518082815260200191505060405180910390f35b341561087357600080fd5b61088d6004808035600019169060200190919050506124c0565b005b341561089a57600080fd5b6108a2612662565b6040518082815260200191505060405180910390f35b34156108c357600080fd5b610913600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612668565b604051808215151515815260200191505060405180910390f35b341561093857600080fd5b610952600480803560001916906020019091905050612a9c565b005b341561095f57600080fd5b61098b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c3e565b005b341561099857600080fd5b6109d160048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612dd1565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a1b578082015181840152602081019050610a00565b50505050905090810190601f168015610a485780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3415610a6257600080fd5b610ad1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fd9565b60405180826000191660001916815260200191505060405180910390f35b3415610afa57600080fd5b610b02613093565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b4f57600080fd5b610b7b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130b8565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610bd961310f565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610c855750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610d0257600080fd5b60076000815480929190600101919050555073__BadgeLibrary__________________________63c1eabde9876000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610da3578082015181840152602081019050610d88565b50505050905090810190601f168015610dd05780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515610dec57600080fd5b6102c65a03f41515610dfd57600080fd5b50505060405180519050945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f225780601f10610ef757610100808354040283529160200191610f22565b820191906000526020600020905b815481529060010190602001808311610f0557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fc45780601f10610f9957610100808354040283529160200191610fc4565b820191906000526020600020905b815481529060010190602001808311610fa757829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110665780601f1061103b57610100808354040283529160200191611066565b820191906000526020600020905b81548152906001019060200180831161104957829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111085780601f106110dd57610100808354040283529160200191611108565b820191906000526020600020905b8154815290600101906020018083116110eb57829003601f168201915b505050505081525050935073__BadgeLibrary__________________________631ddb6af6856000015186602001518760400151886060015189608001518d6000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b8381101561122b578082015181840152602081019050611210565b50505050905090810190601f1680156112585780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015611291578082015181840152602081019050611276565b50505050905090810190601f1680156112be5780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b838110156112f75780820151818401526020810190506112dc565b50505050905090810190601f1680156113245780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b8381101561135d578082015181840152602081019050611342565b50505050905090810190601f16801561138a5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b15156113ae57600080fd5b6102c65a03f415156113bf57600080fd5b50505060405180519050925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b6000600360020180549050905090565b6000600160006002848154811015156115fd57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156116bb5760028281548110151561168857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506116c0565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561179557600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001600280548060010182816117d3919061316d565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b60008060008060008060008060006119958b61151a565b9550955095509550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119e2576001600080985098509850611ad8565b82156119f75782600080985098509850611ad8565b8991508173ffffffffffffffffffffffffffffffffffffffff16636bcdaa33876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515611a7957600080fd5b6102c65a03f11515611a8a57600080fd5b5050506040518051905090508285600019168260001916148573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16149850985098505b5050505050509250925092565b6000600360020182815481101515611af957fe5b9060005260206000209001549050919050565b600080611b1761310f565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611bc15750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611c3e57600080fd5b87611c4881611f85565b1515611c5357600080fd5b73__BadgeLibrary__________________________63c1eabde98a6000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ce2578082015181840152602081019050611cc7565b50505050905090810190601f168015611d0f5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515611d2b57600080fd5b6102c65a03f41515611d3c57600080fd5b505050604051805190509550600160036002018054806001018281611d619190613199565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611e409291906131c5565b506040820151816002019080519060200190611e5d9291906131c5565b506060820151816003019080519060200190611e7a9291906131c5565b506080820151816004019080519060200190611e979291906131c5565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015611f3f578082015181840152602081019050611f24565b50505050905090810190601f168015611f6c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008073__BadgeLibrary__________________________63c1eabde9846000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612017578082015181840152602081019050611ffc565b50505050905090810190601f1680156120445780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561206057600080fd5b6102c65a03f4151561207157600080fd5b505050604051805190509050600060036002018054905014806120d7575080600019166003600201600360010160008460001916600019168152602001908152602001600020548154811015156120c457fe5b9060005260206000209001546000191614155b915050919050565b60006120e9613245565b6120f1613245565b6120f9613245565b612101613245565b61210961310f565b8660006003600201805490501180156121645750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561215257fe5b90600052602060002090015460001916145b151561216f57600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122885780601f1061225d57610100808354040283529160200191612288565b820191906000526020600020905b81548152906001019060200180831161226b57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561232a5780601f106122ff5761010080835404028352916020019161232a565b820191906000526020600020905b81548152906001019060200180831161230d57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123cc5780601f106123a1576101008083540402835291602001916123cc565b820191906000526020600020905b8154815290600101906020018083116123af57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561246e5780601f106124435761010080835404028352916020019161246e565b820191906000526020600020905b81548152906001019060200180831161245157829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061256a5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156125e757600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806127185750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561279557600080fd5b73__BadgeLibrary__________________________63c1eabde9886000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612824578082015181840152602081019050612809565b50505050905090810190601f1680156128515780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561286d57600080fd5b6102c65a03f4151561287e57600080fd5b50505060405180519050945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156128c857fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561290c57fe5b9060005260206000209001816000191690555060036002018054809190600190036129379190613259565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061298e9190613285565b60028201600061299e9190613285565b6003820160006129ae9190613285565b6004820160006129be9190613285565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015612a53578082015181840152602081019050612a38565b50505050905090810190601f168015612a805780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612b465750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612bc357600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612d0e57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000612ddb613245565b6000806000612dea878761197e565b9250925092508215612e61576000606060405190810160405280602681526020017f496e76616c69642063726564656e7469616c3a2063726564656e7469616c207281526020017f65766f6b6564000000000000000000000000000000000000000000000000000081525080905094509450612fcf565b801515612ef85780608060405190810160405280604581526020017f496e76616c696420726563697069656e743a20726563697069656e7420646f6581526020017f73206e6f74206d61746368206f726967696e616c207472616e73616374696f6e81526020017f206461746100000000000000000000000000000000000000000000000000000081525080905094509450612fcf565b811515612f8f5781608060405190810160405280605381526020017f496e76616c6964206461746120696e746567726974793a206461746120696e2081526020017f63726564656e7469616c20646f6573206e6f74206d61746368206f726967696e81526020017f616c207472616e73616374696f6e20646174610000000000000000000000000081525080905094509450612fcf565b60016040805190810160405280601381526020017f43726564656e7469616c2069732076616c696400000000000000000000000000815250809050945094505b5050509250929050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b6020831015156130565780518252602082019150602081019050602083039250613031565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016131406132cd565b815260200161314d6132cd565b815260200161315a6132cd565b81526020016131676132cd565b81525090565b8154818355818115116131945781836000526020600020918201910161319391906132e1565b5b505050565b8154818355818115116131c0578183600052602060002091820191016131bf9190613306565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061320657805160ff1916838001178555613234565b82800160010185558215613234579182015b82811115613233578251825591602001919060010190613218565b5b50905061324191906132e1565b5090565b602060405190810160405280600081525090565b8154818355818115116132805781836000526020600020918201910161327f9190613306565b5b505050565b50805460018160011615610100020316600290046000825580601f106132ab57506132ca565b601f0160209004906000526020600020908101906132c991906132e1565b5b50565b602060405190810160405280600081525090565b61330391905b808211156132ff5760008160009055506001016132e7565b5090565b90565b61332891905b8082111561332457600081600090555060010161330c565b5090565b905600a165627a7a72305820eeef563017fc9e945f94ea5061f1f915d71196893a06849358225548f57a32900029", - "deployedBytecode": "0x606060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a28581461012d5780630decfdea146101b65780631041eb961461024657806324ddd51a146102d65780633557b6c3146102ff5780633b57391a146103625780634294857f1461039b5780635629aec9146103da57806359c293f11461044e5780635c9d3a941461048d57806372ee19a2146105b357806377002fcf146106285780637c59fda01461083f578063a5aef15b14610868578063affed0e01461088f578063b6109221146108b8578063b75c7dc61461092d578063be47aa0914610954578063d8c0941b1461098d578063eb92948114610a57578063f851a44014610aef578063f9afc24214610b44575b600080fd5b341561013857600080fd5b6101b460048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610bcf565b005b34156101c157600080fd5b6101db6004808035600019169060200190919050506114bd565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561025157600080fd5b61026b60048080356000191690602001909190505061151a565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b34156102e157600080fd5b6102e96115d8565b6040518082815260200191505060405180910390f35b341561030a57600080fd5b61032060048080359060200190919050506115e8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036d57600080fd5b610399600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116c5565b005b34156103a657600080fd5b6103c0600480803560001916906020019091905050611949565b604051808215151515815260200191505060405180910390f35b34156103e557600080fd5b61041e60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061197e565b60405180841515151581526020018315151515815260200182151515158152602001935050505060405180910390f35b341561045957600080fd5b61046f6004808035906020019091905050611ae5565b60405180826000191660001916815260200191505060405180910390f35b341561049857600080fd5b6105b1600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b0c565b005b34156105be57600080fd5b61060e600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611f85565b604051808215151515815260200191505060405180910390f35b341561063357600080fd5b61064d6004808035600019169060200190919050506120df565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b838110156106cb5780820151818401526020810190506106b0565b50505050905090810190601f1680156106f85780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b83811015610731578082015181840152602081019050610716565b50505050905090810190601f16801561075e5780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b8381101561079757808201518184015260208101905061077c565b50505050905090810190601f1680156107c45780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b838110156107fd5780820151818401526020810190506107e2565b50505050905090810190601f16801561082a5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b341561084a57600080fd5b6108526124b3565b6040518082815260200191505060405180910390f35b341561087357600080fd5b61088d6004808035600019169060200190919050506124c0565b005b341561089a57600080fd5b6108a2612662565b6040518082815260200191505060405180910390f35b34156108c357600080fd5b610913600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612668565b604051808215151515815260200191505060405180910390f35b341561093857600080fd5b610952600480803560001916906020019091905050612a9c565b005b341561095f57600080fd5b61098b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612c3e565b005b341561099857600080fd5b6109d160048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612dd1565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610a1b578082015181840152602081019050610a00565b50505050905090810190601f168015610a485780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3415610a6257600080fd5b610ad1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612fd9565b60405180826000191660001916815260200191505060405180910390f35b3415610afa57600080fd5b610b02613093565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610b4f57600080fd5b610b7b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506130b8565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610bd961310f565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610c855750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610d0257600080fd5b60076000815480929190600101919050555073__BadgeLibrary__________________________63c1eabde9876000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610da3578082015181840152602081019050610d88565b50505050905090810190601f168015610dd05780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515610dec57600080fd5b6102c65a03f41515610dfd57600080fd5b50505060405180519050945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f225780601f10610ef757610100808354040283529160200191610f22565b820191906000526020600020905b815481529060010190602001808311610f0557829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610fc45780601f10610f9957610100808354040283529160200191610fc4565b820191906000526020600020905b815481529060010190602001808311610fa757829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110665780601f1061103b57610100808354040283529160200191611066565b820191906000526020600020905b81548152906001019060200180831161104957829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156111085780601f106110dd57610100808354040283529160200191611108565b820191906000526020600020905b8154815290600101906020018083116110eb57829003601f168201915b505050505081525050935073__BadgeLibrary__________________________631ddb6af6856000015186602001518760400151886060015189608001518d6000604051602001526040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001806020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200185810385528a818151815260200191508051906020019080838360005b8381101561122b578082015181840152602081019050611210565b50505050905090810190601f1680156112585780820380516001836020036101000a031916815260200191505b50858103845289818151815260200191508051906020019080838360005b83811015611291578082015181840152602081019050611276565b50505050905090810190601f1680156112be5780820380516001836020036101000a031916815260200191505b50858103835288818151815260200191508051906020019080838360005b838110156112f75780820151818401526020810190506112dc565b50505050905090810190601f1680156113245780820380516001836020036101000a031916815260200191505b50858103825287818151815260200191508051906020019080838360005b8381101561135d578082015181840152602081019050611342565b50505050905090810190601f16801561138a5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060206040518083038186803b15156113ae57600080fd5b6102c65a03f415156113bf57600080fd5b50505060405180519050925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b6000600360020180549050905090565b6000600160006002848154811015156115fd57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156116bb5760028281548110151561168857fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506116c0565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561179557600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001600280548060010182816117d3919061316d565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b60008060008060008060008060006119958b61151a565b9550955095509550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119e2576001600080985098509850611ad8565b82156119f75782600080985098509850611ad8565b8991508173ffffffffffffffffffffffffffffffffffffffff16636bcdaa33876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515611a7957600080fd5b6102c65a03f11515611a8a57600080fd5b5050506040518051905090508285600019168260001916148573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16149850985098505b5050505050509250925092565b6000600360020182815481101515611af957fe5b9060005260206000209001549050919050565b600080611b1761310f565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611bc15750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611c3e57600080fd5b87611c4881611f85565b1515611c5357600080fd5b73__BadgeLibrary__________________________63c1eabde98a6000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611ce2578082015181840152602081019050611cc7565b50505050905090810190601f168015611d0f5780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b1515611d2b57600080fd5b6102c65a03f41515611d3c57600080fd5b505050604051805190509550600160036002018054806001018281611d619190613199565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611e409291906131c5565b506040820151816002019080519060200190611e5d9291906131c5565b506060820151816003019080519060200190611e7a9291906131c5565b506080820151816004019080519060200190611e979291906131c5565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b83811015611f3f578082015181840152602081019050611f24565b50505050905090810190601f168015611f6c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008073__BadgeLibrary__________________________63c1eabde9846000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612017578082015181840152602081019050611ffc565b50505050905090810190601f1680156120445780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561206057600080fd5b6102c65a03f4151561207157600080fd5b505050604051805190509050600060036002018054905014806120d7575080600019166003600201600360010160008460001916600019168152602001908152602001600020548154811015156120c457fe5b9060005260206000209001546000191614155b915050919050565b60006120e9613245565b6120f1613245565b6120f9613245565b612101613245565b61210961310f565b8660006003600201805490501180156121645750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561215257fe5b90600052602060002090015460001916145b151561216f57600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156122885780601f1061225d57610100808354040283529160200191612288565b820191906000526020600020905b81548152906001019060200180831161226b57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561232a5780601f106122ff5761010080835404028352916020019161232a565b820191906000526020600020905b81548152906001019060200180831161230d57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123cc5780601f106123a1576101008083540402835291602001916123cc565b820191906000526020600020905b8154815290600101906020018083116123af57829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561246e5780601f106124435761010080835404028352916020019161246e565b820191906000526020600020905b81548152906001019060200180831161245157829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061256a5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156125e757600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806127185750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561279557600080fd5b73__BadgeLibrary__________________________63c1eabde9886000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612824578082015181840152602081019050612809565b50505050905090810190601f1680156128515780820380516001836020036101000a031916815260200191505b509250505060206040518083038186803b151561286d57600080fd5b6102c65a03f4151561287e57600080fd5b50505060405180519050945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156128c857fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561290c57fe5b9060005260206000209001816000191690555060036002018054809190600190036129379190613259565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600061298e9190613285565b60028201600061299e9190613285565b6003820160006129ae9190613285565b6004820160006129be9190613285565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015612a53578082015181840152602081019050612a38565b50505050905090810190601f168015612a805780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612b465750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612bc357600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612d0e57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000612ddb613245565b6000806000612dea878761197e565b9250925092508215612e61576000606060405190810160405280602681526020017f496e76616c69642063726564656e7469616c3a2063726564656e7469616c207281526020017f65766f6b6564000000000000000000000000000000000000000000000000000081525080905094509450612fcf565b801515612ef85780608060405190810160405280604581526020017f496e76616c696420726563697069656e743a20726563697069656e7420646f6581526020017f73206e6f74206d61746368206f726967696e616c207472616e73616374696f6e81526020017f206461746100000000000000000000000000000000000000000000000000000081525080905094509450612fcf565b811515612f8f5781608060405190810160405280605381526020017f496e76616c6964206461746120696e746567726974793a206461746120696e2081526020017f63726564656e7469616c20646f6573206e6f74206d61746368206f726967696e81526020017f616c207472616e73616374696f6e20646174610000000000000000000000000081525080905094509450612fcf565b60016040805190810160405280601381526020017f43726564656e7469616c2069732076616c696400000000000000000000000000815250809050945094505b5050509250929050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b6020831015156130565780518252602082019150602081019050602083039250613031565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016131406132cd565b815260200161314d6132cd565b815260200161315a6132cd565b81526020016131676132cd565b81525090565b8154818355818115116131945781836000526020600020918201910161319391906132e1565b5b505050565b8154818355818115116131c0578183600052602060002091820191016131bf9190613306565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061320657805160ff1916838001178555613234565b82800160010185558215613234579182015b82811115613233578251825591602001919060010190613218565b5b50905061324191906132e1565b5090565b602060405190810160405280600081525090565b8154818355818115116132805781836000526020600020918201910161327f9190613306565b5b505050565b50805460018160011615610100020316600290046000825580601f106132ab57506132ca565b601f0160209004906000526020600020908101906132c991906132e1565b5b50565b602060405190810160405280600081525090565b61330391905b808211156132ff5760008160009055506001016132e7565b5090565b90565b61332891905b8082111561332457600081600090555060010161330c565b5090565b905600a165627a7a72305820eeef563017fc9e945f94ea5061f1f915d71196893a06849358225548f57a32900029", - "sourceMap": "136:2221:6:-;;;838:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;908:16;555::5;548::1;601::0;593:5;;:24;;;;;;;;;;;;;;;;;;524:100;476:92:1;591:1:5;583:5;:9;;;;481:118;838:90:6;136:2221;;;;;;", - "deployedSourceMap": "136:2221:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;396:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3468:129:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;2975:125:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1736:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4395:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1892:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;710:284;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3782:472;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2761:161:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;457:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:673:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2513:156:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;942:564:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2271:154:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;109:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669:5;972:21;1047:31;;:::i;:::-;1123:21;892:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;955:5:5;;:7;;;;;;;;;;;;;996:12;:29;1026:10;996:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;972:65:5;;1081:10;:17;;:32;1099:13;1081:32;;;;;;;;;;;;;;;;;1047:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:12;:29;1190:5;:12;;;1217:5;:17;;;1249:5;:10;;;1274:5;:11;;;1300:5;:13;;;1328:10;1147:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1123:226:5;;1387:54;;;;;;;;;1399:7;1387:54;;;;;;;1408:13;1387:54;;;;;;;1423:10;1387:54;;;;;;1435:5;1387:54;;;;;1359:16;:25;1376:7;1359:25;;;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:669;;;;;;;;:::o;396:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1779:354::-;1836:14;1852:21;1875:17;1894:12;1938:16;:25;1955:7;1938:25;;;;;;;;;;;;;;;;;:29;;;1981:16;:25;1998:7;1981:25;;;;;;;;;;;;;;;;;:39;;;2034:16;:25;2051:7;2034:25;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;2083:16;:25;2100:7;2083:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;1918:208;;;;;;;;1779:354;;;;;:::o;3468:129:1:-;3525:10;3558;:25;;:32;;;;3551:39;;3468:129;:::o;2378:272:0:-;2441:15;2472:21;:53;2494:22;2517:6;2494:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:53;;;;;;;;;;;;;;;:66;;;;;;;;;;;;2468:176;;;2561:22;2584:6;2561:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:37;;;;2468:176;160:42;2622:11;;2378:272;;;;:::o;1500:247::-;1562:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;1620:78;;;;;;;;;1638:10;1620:78;;;;;;1690:1;1650:22;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:10;1650:39;;;;;;;;;;;;;;;;;;;;;;:41;1620:78;;;;1693:4;1620:78;;;;;1584:21;:33;1606:10;1584:33;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:32;1729:10;1708:32;;;;;;;;;;;;;;;;;;;;;;1500:247;;;:::o;2975:125:5:-;3035:6;3060:16;:25;3077:7;3060:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;3053:40;;2975:125;;;:::o;1736:618:6:-;1826:13;1842:24;1868:20;1905:3;1910:13;1925:9;1936:7;2130:13;2174:22;1947:15;1954:7;1947:6;:15::i;:::-;1900:62;;;;;;;;785:42;1977:17;;:9;:17;;;1973:147;;;2017:4;2023:5;2030;2010:26;;;;;;;;1973:147;2057:7;2053:67;;;2087:7;2096:5;2103;2080:29;;;;;;;;2053:67;2153:10;2130:34;;2199:6;:23;;;2223:3;2199:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2174:53;;2244:7;2284:13;2266:31;;;:14;:31;;;;2327:9;2313:23;;:10;:23;;;2237:110;;;;;;1736:618;;;;;;;;;;;;:::o;4395:133:1:-;4456:13;4488:10;:25;;4514:6;4488:33;;;;;;;;;;;;;;;;;;;4481:40;;4395:133;;;:::o;1892:669::-;2088:21;2158:10;2228:31;;:::i;:::-;2032:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2056:5:1;670:15;679:5;670:8;:15::i;:::-;662:24;;;;;;;;2112:12;:29;2142:5;2112:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2088:60:1;;2217:1;2171:10;:25;;:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;2202:13;2171:45;;;;;;;;;;;:47;2158:60;;2262:142;;;;;;;;;2302:4;2262:142;;;;;;2321:12;2262:142;;;;2347:5;2262:142;;;;2366:6;2262:142;;;;2386:8;2262:142;;;2228:176;;2449:5;2414:10;:17;;:32;2432:13;2414:32;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2501:5;2464:10;:19;;:34;2484:13;2464:34;;;;;;;;;;;;;;;;;:42;;;;2541:5;:12;;;2516:38;;;2529:5;:10;;;2516:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:1:0;1892:669:1;;;;;;;;;:::o;710:284::-;766:11;789:21;813:12;:29;843:5;813:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;789:60:1;;903:1;867:10;:25;;:32;;;;:37;:119;;;;973:13;908:78;;;:10;:25;;934:10;:19;;:34;954:13;934:34;;;;;;;;;;;;;;;;;;908:61;;;;;;;;;;;;;;;;;;;:78;;;;;867:119;859:128;;710:284;;;;:::o;3782:472::-;3893:14;3917:18;;:::i;:::-;3945:12;;:::i;:::-;3967;;:::i;:::-;3989:14;;:::i;:::-;4020:31;;:::i;:::-;3844:14;1470:1;1435:10;:25;;:32;;;;:36;:120;;;;;1541:14;1475:80;;;:10;:25;;1501:10;:19;;:35;1521:14;1501:35;;;;;;;;;;;;;;;;;;1475:62;;;;;;;;;;;;;;;;;;;:80;;;;1435:120;1427:129;;;;;;;;4054:10;:17;;:33;4072:14;4054:33;;;;;;;;;;;;;;;;;4020:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4118:5;:12;;;4144:5;:17;;;4175:5;:10;;;4199:5;:11;;;4224:5;:13;;;4097:150;;;;;;;;;;;;;;;;;;;;;;3782:472;;;;;;;;;:::o;2790:135:0:-;2851:19;2889:22;:29;;;;2882:36;;2790:135;:::o;2761:161:5:-;2814:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2872:5:5;2836:16;:25;2853:7;2836:25;;;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;2887:28;2907:7;2887:28;;;;;;;;;;;;;;;;;;;;;;;;2761:161;;;:::o;457:17::-;;;;:::o;2656:673:1:-;2737:12;2765:21;2835:16;2898:17;2706:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2789:12:1;:29;2819:5;2789:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:60:1;;2854:10;:19;;:34;2874:13;2854:34;;;;;;;;;;;;;;;;;;2835:53;;2918:10;:25;;2977:1;2944:10;:25;;:32;;;;:34;2918:61;;;;;;;;;;;;;;;;;;;2898:81;;3022:11;2989:10;:19;;:30;3009:9;2989:30;;;;;;;;;;;;;;;;;:44;;;;3084:9;3043:10;:25;;3069:11;3043:38;;;;;;;;;;;;;;;;;;:50;;;;;;;3103:10;:25;;:34;;;;;;;;;;;;:::i;:::-;;3154:10;:17;;:32;3172:13;3154:32;;;;;;;;;;;;;;;;;;3147:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;3203:10;:19;;:34;3223:13;3203:34;;;;;;;;;;;;;;;;;3196:41;;;3248:53;3261:5;3268:10;:25;;:32;;;;3248:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3318:4:1;3311:11;;2656:673;;;;;;;;:::o;2513:156:5:-;2564:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2622:4:5;2586:16;:25;2603:7;2586:25;;;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;2636:26;2654:7;2636:26;;;;;;;;;;;;;;;;;;;;;;;;2513:156;;;:::o;1945:190:0:-;2012:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;2080:5;2034:21;:30;2056:7;2034:30;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;2095:33;2120:7;2095:33;;;;;;;;;;;;;;;;;;;;;;1945:190;;;:::o;942:564:6:-;1029:15;1046:13;;:::i;:::-;1076:8;1086:19;1107:15;1126:40;1146:7;1155:10;1126:19;:40::i;:::-;1071:95;;;;;;1180:8;1176:324;;;1211:5;1218:7;;;;;;;;;;;;;;;;;;;;;;;1204:22;;;;;;;;;1176:324;1248:15;1247:16;1243:257;;;1286:15;1303:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;1279:42;;;;;;;;;1243:257;1343:19;1342:20;1338:162;;;1385:19;1406:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;1378:50;;;;;;;;;1338:162;1466:4;1472:16;;;;;;;;;;;;;;;;;;1459:30;;;;;;;942:564;;;;;;;;;:::o;2271:154:5:-;2353:11;2393:7;2402:8;2412:5;;2383:35;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;2376:42:5;;2271:154;;;;:::o;109:20:0:-;;;;;;;;;;;;;:::o;370:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;136:2221:6:-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.17;\n\nimport \"BadgeLibrary/contracts/BadgeLibrary.sol\";\n\nimport \"./TransactionManager.sol\";\nimport \"./Holder.sol\";\n\ncontract Verifier is TransactionManager {\n \n string constant INVALID_TRANSACTION = \"Invalid transaction: the transaction does not exist\";\n string constant INVALID_INTEGRITYHASH = \"Invalid data integrity: data in credential does not match original transaction data\";\n string constant INVALID_RECIPIENT = \"Invalid recipient: recipient does not match original transaction data\";\n string constant INVALID_TXTKEY = \"Invalid transaction key: transaction keys don't match\";\n string constant REVOKED = \"Invalid credential: credential revoked\";\n string constant VALID_CREDENTIAL = \"Credential is valid\";\n \n address constant NONE = 0x0000000000000000000000000000000000000000;\n \n function Verifier(address _adminWalletAddr) public TransactionManager(_adminWalletAddr) {}\n \n function verifyCredential(bytes32 _txnKey, address _recipient) constant public returns(bool isVerified, string errMsg) {\n var (_revoked, _integrityHashCheck, _recipientCheck) = verifyCredentialTxn(_txnKey, _recipient);\n if (_revoked) {\n return(false, REVOKED);\n } else if (!_recipientCheck) {\n return(_recipientCheck, INVALID_RECIPIENT);\n } else if (!_integrityHashCheck) {\n return(_integrityHashCheck, INVALID_INTEGRITYHASH);\n } else {\n return(true, VALID_CREDENTIAL);\n }\n }\n\n /// @notice check that a transaction key exists in the transaction map (verify credential issuer)\n /// @param _txnKey key to access the transaction\n /// @param _recipient recipient of the credential being verified\n function verifyCredentialTxn(bytes32 _txnKey, address _recipient) constant public returns(bool _revoked, bool _integrityHashCheck, bool _recipientCheck) {\n var (key, integrityHash, recipient, revoked) = getTxn(_txnKey);\n\n if (recipient == NONE) {\n return(true, false, false);\n } else if (revoked) {\n return(revoked, false, false);\n }\n\n Holder holder = Holder(_recipient);\n bytes32 _integrityHash = holder.recomputePOIHash(key);\n return(revoked,\n (_integrityHash == integrityHash),\n (_recipient == recipient)\n );\n }\n\n}", + "bytecode": "0x6060604052341561000f57600080fd5b60405160208061336883398101604052808051906020019091905050808080806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050600060078190555050506132df806100896000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a28581461014e5780630decfdea146101d75780631041eb9614610267578063164f0a4e146102f75780631ddb6af61461038f57806324ddd51a1461050f5780633557b6c3146105385780633b57391a1461059b5780634294857f146105d45780635629aec91461061357806359c293f1146106875780635c9d3a94146106c657806372ee19a2146107ec57806377002fcf146108615780637c59fda014610a78578063a5aef15b14610aa1578063affed0e014610ac8578063b610922114610af1578063b75c7dc614610b66578063be47aa0914610b8d578063c1eabde914610bc6578063d8c0941b14610c3f578063eb92948114610d09578063f851a44014610da1578063f9afc24214610df6575b600080fd5b341561015957600080fd5b6101d560048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610e81565b005b34156101e257600080fd5b6101fc6004808035600019169060200190919050506113f1565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561027257600080fd5b61028c60048080356000191690602001909190505061144e565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561030257600080fd5b610371600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061150c565b60405180826000191660001916815260200191505060405180910390f35b341561039a57600080fd5b6104f1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115bc565b60405180826000191660001916815260200191505060405180910390f35b341561051a57600080fd5b6105226117b2565b6040518082815260200191505060405180910390f35b341561054357600080fd5b61055960048080359060200190919050506117c2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105a657600080fd5b6105d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061189f565b005b34156105df57600080fd5b6105f9600480803560001916906020019091905050611b23565b604051808215151515815260200191505060405180910390f35b341561061e57600080fd5b61065760048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b58565b60405180841515151581526020018315151515815260200182151515158152602001935050505060405180910390f35b341561069257600080fd5b6106a86004808035906020019091905050611cbf565b60405180826000191660001916815260200191505060405180910390f35b34156106d157600080fd5b6107ea600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611ce6565b005b34156107f757600080fd5b610847600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612075565b604051808215151515815260200191505060405180910390f35b341561086c57600080fd5b6108866004808035600019169060200190919050506120e5565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b838110156109045780820151818401526020810190506108e9565b50505050905090810190601f1680156109315780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b8381101561096a57808201518184015260208101905061094f565b50505050905090810190601f1680156109975780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156109d05780820151818401526020810190506109b5565b50505050905090810190601f1680156109fd5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610a36578082015181840152602081019050610a1b565b50505050905090810190601f168015610a635780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3415610a8357600080fd5b610a8b6124b9565b6040518082815260200191505060405180910390f35b3415610aac57600080fd5b610ac66004808035600019169060200190919050506124c6565b005b3415610ad357600080fd5b610adb612668565b6040518082815260200191505060405180910390f35b3415610afc57600080fd5b610b4c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061266e565b604051808215151515815260200191505060405180910390f35b3415610b7157600080fd5b610b8b6004808035600019169060200190919050506129b8565b005b3415610b9857600080fd5b610bc4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b5a565b005b3415610bd157600080fd5b610c21600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612ced565b60405180826000191660001916815260200191505060405180910390f35b3415610c4a57600080fd5b610c8360048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d59565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ccd578082015181840152602081019050610cb2565b50505050905090810190601f168015610cfa5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3415610d1457600080fd5b610d83600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612f61565b60405180826000191660001916815260200191505060405180910390f35b3415610dac57600080fd5b610db461301b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e0157600080fd5b610e2d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613040565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610e8b613097565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610f375750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610fb457600080fd5b600760008154809291906001019190505550610fcf86612ced565b945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110ea5780601f106110bf576101008083540402835291602001916110ea565b820191906000526020600020905b8154815290600101906020018083116110cd57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561118c5780601f106111615761010080835404028352916020019161118c565b820191906000526020600020905b81548152906001019060200180831161116f57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561122e5780601f106112035761010080835404028352916020019161122e565b820191906000526020600020905b81548152906001019060200180831161121157829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112d05780601f106112a5576101008083540402835291602001916112d0565b820191906000526020600020905b8154815290600101906020018083116112b357829003601f168201915b50505050508152505093506112fd846000015185602001518660400151876060015188608001518c6115bc565b925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b600082826040518083805190602001908083835b6020831015156115455780518252602082019150602081019050602083039250611520565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905092915050565b6000868686868686604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186805190602001908083835b60208310151561163a5780518252602082019150602081019050602083039250611615565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b60208310151561168d5780518252602082019150602081019050602083039250611668565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b6020831015156116e057805182526020820191506020810190506020830392506116bb565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515611733578051825260208201915060208101905060208303925061170e565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019650505050505050604051809103902090509695505050505050565b6000600360020180549050905090565b6000600160006002848154811015156117d757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156118955760028281548110151561186257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061189a565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561196f57600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001600280548060010182816119ad91906130f5565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b6000806000806000806000806000611b6f8b61144e565b9550955095509550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611bbc576001600080985098509850611cb2565b8215611bd15782600080985098509850611cb2565b8991508173ffffffffffffffffffffffffffffffffffffffff16636bcdaa33876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515611c5357600080fd5b6102c65a03f11515611c6457600080fd5b5050506040518051905090508285600019168260001916148573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16149850985098505b5050505050509250925092565b6000600360020182815481101515611cd357fe5b9060005260206000209001549050919050565b600080611cf1613097565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611d9b5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611e1857600080fd5b87611e2281612075565b1515611e2d57600080fd5b611e3689612ced565b9550600160036002018054806001018281611e519190613121565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611f3092919061314d565b506040820151816002019080519060200190611f4d92919061314d565b506060820151816003019080519060200190611f6a92919061314d565b506080820151816004019080519060200190611f8792919061314d565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b8381101561202f578082015181840152602081019050612014565b50505050905090810190601f16801561205c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008061208183612ced565b9050600060036002018054905014806120dd575080600019166003600201600360010160008460001916600019168152602001908152602001600020548154811015156120ca57fe5b9060005260206000209001546000191614155b915050919050565b60006120ef6131cd565b6120f76131cd565b6120ff6131cd565b6121076131cd565b61210f613097565b86600060036002018054905011801561216a5750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561215857fe5b90600052602060002090015460001916145b151561217557600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561228e5780601f106122635761010080835404028352916020019161228e565b820191906000526020600020905b81548152906001019060200180831161227157829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123305780601f1061230557610100808354040283529160200191612330565b820191906000526020600020905b81548152906001019060200180831161231357829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123d25780601f106123a7576101008083540402835291602001916123d2565b820191906000526020600020905b8154815290600101906020018083116123b557829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124745780601f1061244957610100808354040283529160200191612474565b820191906000526020600020905b81548152906001019060200180831161245757829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125705750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156125ed57600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061271e5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561279b57600080fd5b6127a487612ced565b945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156127e457fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561282857fe5b90600052602060002090018160001916905550600360020180548091906001900361285391906131e1565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006128aa919061320d565b6002820160006128ba919061320d565b6003820160006128ca919061320d565b6004820160006128da919061320d565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561296f578082015181840152602081019050612954565b50505050905090810190601f16801561299c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612a625750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612adf57600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612c2a57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000816040518082805190602001908083835b602083101515612d255780518252602082019150602081019050602083039250612d00565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b6000612d636131cd565b6000806000612d728787611b58565b9250925092508215612de9576000606060405190810160405280602681526020017f496e76616c69642063726564656e7469616c3a2063726564656e7469616c207281526020017f65766f6b6564000000000000000000000000000000000000000000000000000081525080905094509450612f57565b801515612e805780608060405190810160405280604581526020017f496e76616c696420726563697069656e743a20726563697069656e7420646f6581526020017f73206e6f74206d61746368206f726967696e616c207472616e73616374696f6e81526020017f206461746100000000000000000000000000000000000000000000000000000081525080905094509450612f57565b811515612f175781608060405190810160405280605381526020017f496e76616c6964206461746120696e746567726974793a206461746120696e2081526020017f63726564656e7469616c20646f6573206e6f74206d61746368206f726967696e81526020017f616c207472616e73616374696f6e20646174610000000000000000000000000081525080905094509450612f57565b60016040805190810160405280601381526020017f43726564656e7469616c2069732076616c696400000000000000000000000000815250809050945094505b5050509250929050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b602083101515612fde5780518252602082019150602081019050602083039250612fb9565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016130c8613255565b81526020016130d5613255565b81526020016130e2613255565b81526020016130ef613255565b81525090565b81548183558181151161311c5781836000526020600020918201910161311b9190613269565b5b505050565b81548183558181151161314857818360005260206000209182019101613147919061328e565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061318e57805160ff19168380011785556131bc565b828001600101855582156131bc579182015b828111156131bb5782518255916020019190600101906131a0565b5b5090506131c99190613269565b5090565b602060405190810160405280600081525090565b81548183558181151161320857818360005260206000209182019101613207919061328e565b5b505050565b50805460018160011615610100020316600290046000825580601f106132335750613252565b601f0160209004906000526020600020908101906132519190613269565b5b50565b602060405190810160405280600081525090565b61328b91905b8082111561328757600081600090555060010161326f565b5090565b90565b6132b091905b808211156132ac576000816000905550600101613294565b5090565b905600a165627a7a7230582030a61a9dddfeb96b8b63e5c12e64e437a9e47adb9fc5de51b227cfca4db5e08b0029", + "deployedBytecode": "0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063029a28581461014e5780630decfdea146101d75780631041eb9614610267578063164f0a4e146102f75780631ddb6af61461038f57806324ddd51a1461050f5780633557b6c3146105385780633b57391a1461059b5780634294857f146105d45780635629aec91461061357806359c293f1146106875780635c9d3a94146106c657806372ee19a2146107ec57806377002fcf146108615780637c59fda014610a78578063a5aef15b14610aa1578063affed0e014610ac8578063b610922114610af1578063b75c7dc614610b66578063be47aa0914610b8d578063c1eabde914610bc6578063d8c0941b14610c3f578063eb92948114610d09578063f851a44014610da1578063f9afc24214610df6575b600080fd5b341561015957600080fd5b6101d560048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610e81565b005b34156101e257600080fd5b6101fc6004808035600019169060200190919050506113f1565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561027257600080fd5b61028c60048080356000191690602001909190505061144e565b60405180856000191660001916815260200184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018215151515815260200194505050505060405180910390f35b341561030257600080fd5b610371600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061150c565b60405180826000191660001916815260200191505060405180910390f35b341561039a57600080fd5b6104f1600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115bc565b60405180826000191660001916815260200191505060405180910390f35b341561051a57600080fd5b6105226117b2565b6040518082815260200191505060405180910390f35b341561054357600080fd5b61055960048080359060200190919050506117c2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105a657600080fd5b6105d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061189f565b005b34156105df57600080fd5b6105f9600480803560001916906020019091905050611b23565b604051808215151515815260200191505060405180910390f35b341561061e57600080fd5b61065760048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611b58565b60405180841515151581526020018315151515815260200182151515158152602001935050505060405180910390f35b341561069257600080fd5b6106a86004808035906020019091905050611cbf565b60405180826000191660001916815260200191505060405180910390f35b34156106d157600080fd5b6107ea600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611ce6565b005b34156107f757600080fd5b610847600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612075565b604051808215151515815260200191505060405180910390f35b341561086c57600080fd5b6108866004808035600019169060200190919050506120e5565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018060200180602001858103855289818151815260200191508051906020019080838360005b838110156109045780820151818401526020810190506108e9565b50505050905090810190601f1680156109315780820380516001836020036101000a031916815260200191505b50858103845288818151815260200191508051906020019080838360005b8381101561096a57808201518184015260208101905061094f565b50505050905090810190601f1680156109975780820380516001836020036101000a031916815260200191505b50858103835287818151815260200191508051906020019080838360005b838110156109d05780820151818401526020810190506109b5565b50505050905090810190601f1680156109fd5780820380516001836020036101000a031916815260200191505b50858103825286818151815260200191508051906020019080838360005b83811015610a36578082015181840152602081019050610a1b565b50505050905090810190601f168015610a635780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390f35b3415610a8357600080fd5b610a8b6124b9565b6040518082815260200191505060405180910390f35b3415610aac57600080fd5b610ac66004808035600019169060200190919050506124c6565b005b3415610ad357600080fd5b610adb612668565b6040518082815260200191505060405180910390f35b3415610afc57600080fd5b610b4c600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061266e565b604051808215151515815260200191505060405180910390f35b3415610b7157600080fd5b610b8b6004808035600019169060200190919050506129b8565b005b3415610b9857600080fd5b610bc4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612b5a565b005b3415610bd157600080fd5b610c21600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612ced565b60405180826000191660001916815260200191505060405180910390f35b3415610c4a57600080fd5b610c8360048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612d59565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610ccd578082015181840152602081019050610cb2565b50505050905090810190601f168015610cfa5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b3415610d1457600080fd5b610d83600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050612f61565b60405180826000191660001916815260200191505060405180910390f35b3415610dac57600080fd5b610db461301b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610e0157600080fd5b610e2d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050613040565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182151515158152602001935050505060405180910390f35b6000610e8b613097565b60003360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610f375750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515610fb457600080fd5b600760008154809291906001019190505550610fcf86612ced565b945060036000016000866000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110ea5780601f106110bf576101008083540402835291602001916110ea565b820191906000526020600020905b8154815290600101906020018083116110cd57829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561118c5780601f106111615761010080835404028352916020019161118c565b820191906000526020600020905b81548152906001019060200180831161116f57829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561122e5780601f106112035761010080835404028352916020019161122e565b820191906000526020600020905b81548152906001019060200180831161121157829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112d05780601f106112a5576101008083540402835291602001916112d0565b820191906000526020600020905b8154815290600101906020018083116112b357829003601f168201915b50505050508152505093506112fd846000015185602001518660400151876060015188608001518c6115bc565b925060806040519081016040528089600019168152602001846000191681526020018873ffffffffffffffffffffffffffffffffffffffff16815260200160001515815250600660008a60001916600019168152602001908152602001600020600082015181600001906000191690556020820151816001019060001916905560408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160020160146101000a81548160ff0219169083151502179055509050505050505050505050565b60066020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160149054906101000a900460ff16905084565b600080600080600660008660001916600019168152602001908152602001600020600001546006600087600019166000191681526020019081526020016000206001015460066000886000191660001916815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660066000896000191660001916815260200190815260200160002060020160149054906101000a900460ff1693509350935093509193509193565b600082826040518083805190602001908083835b6020831015156115455780518252602082019150602081019050602083039250611520565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040518091039020905092915050565b6000868686868686604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140186805190602001908083835b60208310151561163a5780518252602082019150602081019050602083039250611615565b6001836020036101000a03801982511681845116808217855250505050505090500185805190602001908083835b60208310151561168d5780518252602082019150602081019050602083039250611668565b6001836020036101000a03801982511681845116808217855250505050505090500184805190602001908083835b6020831015156116e057805182526020820191506020810190506020830392506116bb565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515611733578051825260208201915060208101905060208303925061170e565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019650505050505050604051809103902090509695505050505050565b6000600360020180549050905090565b6000600160006002848154811015156117d757fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156118955760028281548110151561186257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061189a565b600090505b919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561196f57600080fd5b6060604051908101604052808473ffffffffffffffffffffffffffffffffffffffff1681526020016001600280548060010182816119ad91906130f5565b9160005260206000209001600088909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555003815260200160011515815250600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020160006101000a81548160ff0219169083151502179055509050507f7fd215c956537f33ef9064c457003d82df8562a7b03e1f896c0b39c7abc8355883604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600060066000836000191660001916815260200190815260200160002060020160149054906101000a900460ff169050919050565b6000806000806000806000806000611b6f8b61144e565b9550955095509550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611bbc576001600080985098509850611cb2565b8215611bd15782600080985098509850611cb2565b8991508173ffffffffffffffffffffffffffffffffffffffff16636bcdaa33876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1515611c5357600080fd5b6102c65a03f11515611c6457600080fd5b5050506040518051905090508285600019168260001916148573ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16149850985098505b5050505050509250925092565b6000600360020182815481101515611cd357fe5b9060005260206000209001549050919050565b600080611cf1613097565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611d9b5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515611e1857600080fd5b87611e2281612075565b1515611e2d57600080fd5b611e3689612ced565b9550600160036002018054806001018281611e519190613121565b916000526020600020900160008990919091509060001916905503945060a0604051908101604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881525093508360036000016000886000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611f3092919061314d565b506040820151816002019080519060200190611f4d92919061314d565b506060820151816003019080519060200190611f6a92919061314d565b506080820151816004019080519060200190611f8792919061314d565b509050508460036001016000886000191660001916815260200190815260200160002081905550836000015173ffffffffffffffffffffffffffffffffffffffff167fde74f67f0ccaf379531f5b3884d0afb87e86192a992d99e7222390f8870a0b5385604001516040518080602001828103825283818151815260200191508051906020019080838360005b8381101561202f578082015181840152602081019050612014565b50505050905090810190601f16801561205c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a250505050505050505050565b60008061208183612ced565b9050600060036002018054905014806120dd575080600019166003600201600360010160008460001916600019168152602001908152602001600020548154811015156120ca57fe5b9060005260206000209001546000191614155b915050919050565b60006120ef6131cd565b6120f76131cd565b6120ff6131cd565b6121076131cd565b61210f613097565b86600060036002018054905011801561216a5750806000191660036002016003600101600084600019166000191681526020019081526020016000205481548110151561215857fe5b90600052602060002090015460001916145b151561217557600080fd5b60036000016000896000191660001916815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561228e5780601f106122635761010080835404028352916020019161228e565b820191906000526020600020905b81548152906001019060200180831161227157829003601f168201915b50505050508152602001600282018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123305780601f1061230557610100808354040283529160200191612330565b820191906000526020600020905b81548152906001019060200180831161231357829003601f168201915b50505050508152602001600382018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123d25780601f106123a7576101008083540402835291602001916123d2565b820191906000526020600020905b8154815290600101906020018083116123b557829003601f168201915b50505050508152602001600482018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124745780601f1061244957610100808354040283529160200191612474565b820191906000526020600020905b81548152906001019060200180831161245757829003601f168201915b50505050508152505091508160000151826020015183604001518460600151856080015183935082925081915080905096509650965096509650505091939590929450565b6000600280549050905090565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125705750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a18015156125ed57600080fd5b600060066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507fd1e55fd73bb60d490f023f5239b9c0ca41f4503cca514ab5c7c8649a188afdd38360405180826000191660001916815260200191505060405180910390a1505050565b60075481565b6000806000803360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061271e5750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a180151561279b57600080fd5b6127a487612ced565b945060036001016000866000191660001916815260200190815260200160002054935060036002016001600360020180549050038154811015156127e457fe5b906000526020600020900154925083600360010160008560001916600019168152602001908152602001600020819055508260036002018581548110151561282857fe5b90600052602060002090018160001916905550600360020180548091906001900361285391906131e1565b50600360000160008660001916600019168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160006128aa919061320d565b6002820160006128ba919061320d565b6003820160006128ca919061320d565b6004820160006128da919061320d565b5050600360010160008660001916600019168152602001908152602001600020600090557f25011d6c52f8dd436cbad877a1e1bfa99b3fc7b3df1c4f7b68d6f6403e943a51876003600201805490506040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561296f578082015181840152602081019050612954565b50505050905090810190601f16801561299c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1600195505050505050919050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480612a625750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff165b90507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612adf57600080fd5b600160066000856000191660001916815260200190815260200160002060020160146101000a81548160ff0219169083151502179055507f3cc2375f3fc7711ba27361cde93880f578742f9f050acee766bed662d117ba728360405180826000191660001916815260200191505060405180910390a1505050565b3360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161490507f7fca019a0a52664785803f352d793a992f66c4affa261b3daf127976e7ad67998282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001821515151581526020019250505060405180910390a1801515612c2a57600080fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507f56a53756e1db2ff35a90edee9bd205b4b2bb8633ee3d6a53a5e85d5b46f0e9dc83604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b6000816040518082805190602001908083835b602083101515612d255780518252602082019150602081019050602083039250612d00565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b6000612d636131cd565b6000806000612d728787611b58565b9250925092508215612de9576000606060405190810160405280602681526020017f496e76616c69642063726564656e7469616c3a2063726564656e7469616c207281526020017f65766f6b6564000000000000000000000000000000000000000000000000000081525080905094509450612f57565b801515612e805780608060405190810160405280604581526020017f496e76616c696420726563697069656e743a20726563697069656e7420646f6581526020017f73206e6f74206d61746368206f726967696e616c207472616e73616374696f6e81526020017f206461746100000000000000000000000000000000000000000000000000000081525080905094509450612f57565b811515612f175781608060405190810160405280605381526020017f496e76616c6964206461746120696e746567726974793a206461746120696e2081526020017f63726564656e7469616c20646f6573206e6f74206d61746368206f726967696e81526020017f616c207472616e73616374696f6e20646174610000000000000000000000000081525080905094509450612f57565b60016040805190810160405280601381526020017f43726564656e7469616c2069732076616c696400000000000000000000000000815250809050945094505b5050509250929050565b60008282600754604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140183805190602001908083835b602083101515612fde5780518252602082019150602081019050602083039250612fb9565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200193505050506040518091039020905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020160009054906101000a900460ff16905083565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016130c8613255565b81526020016130d5613255565b81526020016130e2613255565b81526020016130ef613255565b81525090565b81548183558181151161311c5781836000526020600020918201910161311b9190613269565b5b505050565b81548183558181151161314857818360005260206000209182019101613147919061328e565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061318e57805160ff19168380011785556131bc565b828001600101855582156131bc579182015b828111156131bb5782518255916020019190600101906131a0565b5b5090506131c99190613269565b5090565b602060405190810160405280600081525090565b81548183558181151161320857818360005260206000209182019101613207919061328e565b5b505050565b50805460018160011615610100020316600290046000825580601f106132335750613252565b601f0160209004906000526020600020908101906132519190613269565b5b50565b602060405190810160405280600081525090565b61328b91905b8082111561328757600081600090555060010161326f565b5090565b90565b6132b091905b808211156132ac576000816000905550600101613294565b5090565b905600a165627a7a7230582030a61a9dddfeb96b8b63e5c12e64e437a9e47adb9fc5de51b227cfca4db5e08b0029", + "sourceMap": "85:2201:6:-;;;775:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;845:16;502::5;894::1;601::0;593:5;;:24;;;;;;;;;;;;;;;;;;524:100;822:92:1;538:1:5;530:5;:9;;;;428:118;775:90:6;85:2201;;;;;;", + "deployedSourceMap": "85:2201:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;343:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1675:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5010:141:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5215:410;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3736:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2378:272:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:247;;;;;;;;;;;;;;;;;;;;;;;;;;;;2871:125:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1665:618:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4650:133:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2212:630;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1056:271;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4050:459;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2657:161:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;404:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:660:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2409:156:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1945:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4831:126:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;871:564:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2167:154:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;109:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;370:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621:5;915:21;977:18;;:::i;:::-;1040:21;836:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;898:5:5;;:7;;;;;;;;;;;;;939:28;956:10;939:16;:28::i;:::-;915:52;;998:10;:17;;:32;1016:13;998:32;;;;;;;;;;;;;;;;;977:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1064:183;1094:5;:12;;;1120:5;:17;;;1151:5;:10;;;1175:5;:11;;;1200:5;:13;;;1227:10;1064:16;:183::i;:::-;1040:207;;1285:54;;;;;;;;;1297:7;1285:54;;;;;;;1306:13;1285:54;;;;;;;1321:10;1285:54;;;;;;1333:5;1285:54;;;;;1257:16;:25;1274:7;1257:25;;;;;;;;;;;;;;;;;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;725:621;;;;;;;;:::o;343:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1675:354::-;1732:14;1748:21;1771:17;1790:12;1834:16;:25;1851:7;1834:25;;;;;;;;;;;;;;;;;:29;;;1877:16;:25;1894:7;1877:25;;;;;;;;;;;;;;;;;:39;;;1930:16;:25;1947:7;1930:25;;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;1979:16;:25;1996:7;1979:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;1814:208;;;;;;;;1675:354;;;;;:::o;5010:141:1:-;5088:12;5129:5;5136:7;5119:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5112:32:1;;5010:141;;;;:::o;5215:410::-;5413:13;5476:6;5500:11;5529:4;5551:5;5574:7;5599:9;5449:169;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5442:176:1;;5215:410;;;;;;;;:::o;3736:129::-;3793:10;3826;:25;;:32;;;;3819:39;;3736:129;:::o;2378:272:0:-;2441:15;2472:21;:53;2494:22;2517:6;2494:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2472:53;;;;;;;;;;;;;;;:66;;;;;;;;;;;;2468:176;;;2561:22;2584:6;2561:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2554:37;;;;2468:176;160:42;2622:11;;2378:272;;;;:::o;1500:247::-;1562:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;1620:78;;;;;;;;;1638:10;1620:78;;;;;;1690:1;1650:22;:39;;;;;;;;;;;:::i;:::-;;;;;;;;;;1678:10;1650:39;;;;;;;;;;;;;;;;;;;;;;:41;1620:78;;;;1693:4;1620:78;;;;;1584:21;:33;1606:10;1584:33;;;;;;;;;;;;;;;:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:32;1729:10;1708:32;;;;;;;;;;;;;;;;;;;;;;1500:247;;;:::o;2871:125:5:-;2931:6;2956:16;:25;2973:7;2956:25;;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;2949:40;;2871:125;;;:::o;1665:618:6:-;1755:13;1771:24;1797:20;1834:3;1839:13;1854:9;1865:7;2059:13;2103:22;1876:15;1883:7;1876:6;:15::i;:::-;1829:62;;;;;;;;726:42;1906:17;;:9;:17;;;1902:147;;;1946:4;1952:5;1959;1939:26;;;;;;;;1902:147;1986:7;1982:67;;;2016:7;2025:5;2032;2009:29;;;;;;;;1982:67;2082:10;2059:34;;2128:6;:23;;;2152:3;2128:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2103:53;;2173:7;2213:13;2195:31;;;:14;:31;;;;2256:9;2242:23;;:10;:23;;;2166:110;;;;;;1665:618;;;;;;;;;;;;:::o;4650:133:1:-;4711:13;4743:10;:25;;4769:6;4743:33;;;;;;;;;;;;;;;;;;;4736:40;;4650:133;;;:::o;2212:630::-;2408:21;2465:10;2535:18;;:::i;:::-;2352:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2376:5:1;1016:15;1025:5;1016:8;:15::i;:::-;1008:24;;;;;;;;2432:23;2449:5;2432:16;:23::i;:::-;2408:47;;2524:1;2478:10;:25;;:45;;;;;;;;;;;:::i;:::-;;;;;;;;;;2509:13;2478:45;;;;;;;;;;;:47;2465:60;;2556:129;;;;;;;;;2583:4;2556:129;;;;;;2602:12;2556:129;;;;2628:5;2556:129;;;;2647:6;2556:129;;;;2667:8;2556:129;;;2535:150;;2730:5;2695:10;:17;;:32;2713:13;2695:32;;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;2782:5;2745:10;:19;;:34;2765:13;2745:34;;;;;;;;;;;;;;;;;:42;;;;2822:5;:12;;;2797:38;;;2810:5;:10;;;2797:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:1:0;2212:630:1;;;;;;;;;:::o;1056:271::-;1112:11;1135:21;1159:23;1176:5;1159:16;:23::i;:::-;1135:47;;1236:1;1200:10;:25;;:32;;;;:37;:119;;;;1306:13;1241:78;;;:10;:25;;1267:10;:19;;:34;1287:13;1267:34;;;;;;;;;;;;;;;;;;1241:61;;;;;;;;;;;;;;;;;;;:78;;;;;1200:119;1192:128;;1056:271;;;;:::o;4050:459::-;4161:14;4185:18;;:::i;:::-;4213:12;;:::i;:::-;4235;;:::i;:::-;4257:14;;:::i;:::-;4288:18;;:::i;:::-;4112:14;1790:1;1755:10;:25;;:32;;;;:36;:120;;;;;1861:14;1795:80;;;:10;:25;;1821:10;:19;;:35;1841:14;1821:35;;;;;;;;;;;;;;;;;;1795:62;;;;;;;;;;;;;;;;;;;:80;;;;1755:120;1747:129;;;;;;;;4309:10;:17;;:33;4327:14;4309:33;;;;;;;;;;;;;;;;;4288:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4373:5;:12;;;4399:5;:17;;;4430:5;:10;;;4454:5;:11;;;4479:5;:13;;;4352:150;;;;;;;;;;;;;;;;;;;;;;4050:459;;;;;;;;;:::o;2790:135:0:-;2851:19;2889:22;:29;;;;2882:36;;2790:135;:::o;2657:161:5:-;2710:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2768:5:5;2732:16;:25;2749:7;2732:25;;;;;;;;;;;;;;;;;:33;;;:41;;;;;;;;;;;;;;;;;;2783:28;2803:7;2783:28;;;;;;;;;;;;;;;;;;;;;;;;2657:161;;;:::o;404:17::-;;;;:::o;2937:660:1:-;3018:12;3046:21;3103:16;3166:17;2987:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;3070:23:1;3087:5;3070:16;:23::i;:::-;3046:47;;3122:10;:19;;:34;3142:13;3122:34;;;;;;;;;;;;;;;;;;3103:53;;3186:10;:25;;3245:1;3212:10;:25;;:32;;;;:34;3186:61;;;;;;;;;;;;;;;;;;;3166:81;;3290:11;3257:10;:19;;:30;3277:9;3257:30;;;;;;;;;;;;;;;;;:44;;;;3352:9;3311:10;:25;;3337:11;3311:38;;;;;;;;;;;;;;;;;;:50;;;;;;;3371:10;:25;;:34;;;;;;;;;;;;:::i;:::-;;3422:10;:17;;:32;3440:13;3422:32;;;;;;;;;;;;;;;;;;3415:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;3471:10;:19;;:34;3491:13;3471:34;;;;;;;;;;;;;;;;;3464:41;;;3516:53;3529:5;3536:10;:25;;:32;;;;3516:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3586:4:1;3579:11;;2937:660;;;;;;;;:::o;2409:156:5:-;2460:10;849:17:0;881:5;;;;;;;;;;;870:16;;:7;:16;;;:63;;;;890:21;:30;912:7;890:30;;;;;;;;;;;;;;;:43;;;;;;;;;;;;870:63;849:85;;944:39;961:7;970:12;944:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1001:12;993:21;;;;;;;;2518:4:5;2482:16;:25;2499:7;2482:25;;;;;;;;;;;;;;;;;:33;;;:40;;;;;;;;;;;;;;;;;;2532:26;2550:7;2532:26;;;;;;;;;;;;;;;;;;;;;;;;2409:156;;;:::o;1945:190:0:-;2012:10;1147:17;1179:5;;;;;;;;;;;1168:16;;:7;:16;;;1147:38;;1195:39;1212:7;1221:12;1195:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1252:12;1244:21;;;;;;;;2080:5;2034:21;:30;2056:7;2034:30;;;;;;;;;;;;;;;:43;;;:51;;;;;;;;;;;;;;;;;;2095:33;2120:7;2095:33;;;;;;;;;;;;;;;;;;;;;;1945:190;;;:::o;4831:126:1:-;4897:13;4939:10;4929:21;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;4922:28:1;;4831:126;;;:::o;871:564:6:-;958:15;975:13;;:::i;:::-;1005:8;1015:19;1036:15;1055:40;1075:7;1084:10;1055:19;:40::i;:::-;1000:95;;;;;;1109:8;1105:324;;;1140:5;1147:7;;;;;;;;;;;;;;;;;;;;;;;1133:22;;;;;;;;;1105:324;1177:15;1176:16;1172:257;;;1215:15;1232:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;1208:42;;;;;;;;;1172:257;1272:19;1271:20;1267:162;;;1314:19;1335:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;1307:50;;;;;;;;;1267:162;1395:4;1401:16;;;;;;;;;;;;;;;;;;1388:30;;;;;;;871:564;;;;;;;;;:::o;2167:154:5:-;2249:11;2289:7;2298:8;2308:5;;2279:35;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;2272:42:5;;2167:154;;;;:::o;109:20:0:-;;;;;;;;;;;;;:::o;370:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;85:2201:6:-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.17;\n\nimport \"./TransactionManager.sol\";\nimport \"./Holder.sol\";\n\ncontract Verifier is TransactionManager {\n\n string constant INVALID_TRANSACTION = \"Invalid transaction: the transaction does not exist\";\n string constant INVALID_INTEGRITYHASH = \"Invalid data integrity: data in credential does not match original transaction data\";\n string constant INVALID_RECIPIENT = \"Invalid recipient: recipient does not match original transaction data\";\n string constant INVALID_TXTKEY = \"Invalid transaction key: transaction keys don't match\";\n string constant REVOKED = \"Invalid credential: credential revoked\";\n string constant VALID_CREDENTIAL = \"Credential is valid\";\n\n address constant NONE = 0x0000000000000000000000000000000000000000;\n\n function Verifier(address _adminWalletAddr) public TransactionManager(_adminWalletAddr) {}\n\n function verifyCredential(bytes32 _txnKey, address _recipient) constant public returns(bool isVerified, string errMsg) {\n var (_revoked, _integrityHashCheck, _recipientCheck) = verifyCredentialTxn(_txnKey, _recipient);\n if (_revoked) {\n return(false, REVOKED);\n } else if (!_recipientCheck) {\n return(_recipientCheck, INVALID_RECIPIENT);\n } else if (!_integrityHashCheck) {\n return(_integrityHashCheck, INVALID_INTEGRITYHASH);\n } else {\n return(true, VALID_CREDENTIAL);\n }\n }\n\n /// @notice check that a transaction key exists in the transaction map (verify credential issuer)\n /// @param _txnKey key to access the transaction\n /// @param _recipient recipient of the credential being verified\n function verifyCredentialTxn(bytes32 _txnKey, address _recipient) constant public returns(bool _revoked, bool _integrityHashCheck, bool _recipientCheck) {\n var (key, integrityHash, recipient, revoked) = getTxn(_txnKey);\n\n if (recipient == NONE) {\n return(true, false, false);\n } else if (revoked) {\n return(revoked, false, false);\n }\n\n Holder holder = Holder(_recipient);\n bytes32 _integrityHash = holder.recomputePOIHash(key);\n return(revoked,\n (_integrityHash == integrityHash),\n (_recipient == recipient)\n );\n }\n\n}\n", "sourcePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Verifier.sol", "ast": { "attributes": { "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Verifier.sol", "exportedSymbols": { "Verifier": [ - 1665 + 1721 ] } }, @@ -597,73 +678,58 @@ ".17" ] }, - "id": 1517, + "id": 1574, "name": "PragmaDirective", "src": "0:24:6" }, { "attributes": { - "SourceUnit": 1813, - "absolutePath": "BadgeLibrary/contracts/BadgeLibrary.sol", - "file": "BadgeLibrary/contracts/BadgeLibrary.sol", - "scope": 1666, - "symbolAliases": [ - null - ], - "unitAlias": "" - }, - "id": 1518, - "name": "ImportDirective", - "src": "26:49:6" - }, - { - "attributes": { - "SourceUnit": 1516, + "SourceUnit": 1573, "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/TransactionManager.sol", "file": "./TransactionManager.sol", - "scope": 1666, + "scope": 1722, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1519, + "id": 1575, "name": "ImportDirective", - "src": "77:34:6" + "src": "26:34:6" }, { "attributes": { - "SourceUnit": 1043, + "SourceUnit": 1109, "absolutePath": "/home/kc1116/Desktop/badgeforce_development/badgeforce/contracts/Holder.sol", "file": "./Holder.sol", - "scope": 1666, + "scope": 1722, "symbolAliases": [ null ], "unitAlias": "" }, - "id": 1520, + "id": 1576, "name": "ImportDirective", - "src": "112:22:6" + "src": "61:22:6" }, { "attributes": { "contractDependencies": [ 176, - 535, - 1515 + 601, + 1572 ], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 1665, - 1515, - 535, + 1721, + 1572, + 601, 176 ], "name": "Verifier", - "scope": 1666 + "scope": 1722 }, "children": [ { @@ -677,23 +743,23 @@ "attributes": { "contractScope": null, "name": "TransactionManager", - "referencedDeclaration": 1515, + "referencedDeclaration": 1572, "type": "contract TransactionManager" }, - "id": 1521, + "id": 1577, "name": "UserDefinedTypeName", - "src": "157:18:6" + "src": "106:18:6" } ], - "id": 1522, + "id": 1578, "name": "InheritanceSpecifier", - "src": "157:18:6" + "src": "106:18:6" }, { "attributes": { "constant": true, "name": "INVALID_TRANSACTION", - "scope": 1665, + "scope": 1721, "stateVariable": true, "storageLocation": "default", "type": "string memory", @@ -705,9 +771,9 @@ "name": "string", "type": "string storage pointer" }, - "id": 1523, + "id": 1579, "name": "ElementaryTypeName", - "src": "187:6:6" + "src": "132:6:6" }, { "attributes": { @@ -722,20 +788,20 @@ "type": "literal_string \"Invalid transaction: the transaction does not exist\"", "value": "Invalid transaction: the transaction does not exist" }, - "id": 1524, + "id": 1580, "name": "Literal", - "src": "225:53:6" + "src": "170:53:6" } ], - "id": 1525, + "id": 1581, "name": "VariableDeclaration", - "src": "187:91:6" + "src": "132:91:6" }, { "attributes": { "constant": true, "name": "INVALID_INTEGRITYHASH", - "scope": 1665, + "scope": 1721, "stateVariable": true, "storageLocation": "default", "type": "string memory", @@ -747,9 +813,9 @@ "name": "string", "type": "string storage pointer" }, - "id": 1526, + "id": 1582, "name": "ElementaryTypeName", - "src": "284:6:6" + "src": "229:6:6" }, { "attributes": { @@ -764,20 +830,20 @@ "type": "literal_string \"Invalid data integrity: data in credential does not match original transaction data\"", "value": "Invalid data integrity: data in credential does not match original transaction data" }, - "id": 1527, + "id": 1583, "name": "Literal", - "src": "324:85:6" + "src": "269:85:6" } ], - "id": 1528, + "id": 1584, "name": "VariableDeclaration", - "src": "284:125:6" + "src": "229:125:6" }, { "attributes": { "constant": true, "name": "INVALID_RECIPIENT", - "scope": 1665, + "scope": 1721, "stateVariable": true, "storageLocation": "default", "type": "string memory", @@ -789,9 +855,9 @@ "name": "string", "type": "string storage pointer" }, - "id": 1529, + "id": 1585, "name": "ElementaryTypeName", - "src": "415:6:6" + "src": "360:6:6" }, { "attributes": { @@ -806,20 +872,20 @@ "type": "literal_string \"Invalid recipient: recipient does not match original transaction data\"", "value": "Invalid recipient: recipient does not match original transaction data" }, - "id": 1530, + "id": 1586, "name": "Literal", - "src": "451:71:6" + "src": "396:71:6" } ], - "id": 1531, + "id": 1587, "name": "VariableDeclaration", - "src": "415:107:6" + "src": "360:107:6" }, { "attributes": { "constant": true, "name": "INVALID_TXTKEY", - "scope": 1665, + "scope": 1721, "stateVariable": true, "storageLocation": "default", "type": "string memory", @@ -831,9 +897,9 @@ "name": "string", "type": "string storage pointer" }, - "id": 1532, + "id": 1588, "name": "ElementaryTypeName", - "src": "528:6:6" + "src": "473:6:6" }, { "attributes": { @@ -848,20 +914,20 @@ "type": "literal_string \"Invalid transaction key: transaction keys don't match\"", "value": "Invalid transaction key: transaction keys don't match" }, - "id": 1533, + "id": 1589, "name": "Literal", - "src": "561:55:6" + "src": "506:55:6" } ], - "id": 1534, + "id": 1590, "name": "VariableDeclaration", - "src": "528:88:6" + "src": "473:88:6" }, { "attributes": { "constant": true, "name": "REVOKED", - "scope": 1665, + "scope": 1721, "stateVariable": true, "storageLocation": "default", "type": "string memory", @@ -873,9 +939,9 @@ "name": "string", "type": "string storage pointer" }, - "id": 1535, + "id": 1591, "name": "ElementaryTypeName", - "src": "622:6:6" + "src": "567:6:6" }, { "attributes": { @@ -890,20 +956,20 @@ "type": "literal_string \"Invalid credential: credential revoked\"", "value": "Invalid credential: credential revoked" }, - "id": 1536, + "id": 1592, "name": "Literal", - "src": "648:40:6" + "src": "593:40:6" } ], - "id": 1537, + "id": 1593, "name": "VariableDeclaration", - "src": "622:66:6" + "src": "567:66:6" }, { "attributes": { "constant": true, "name": "VALID_CREDENTIAL", - "scope": 1665, + "scope": 1721, "stateVariable": true, "storageLocation": "default", "type": "string memory", @@ -915,9 +981,9 @@ "name": "string", "type": "string storage pointer" }, - "id": 1538, + "id": 1594, "name": "ElementaryTypeName", - "src": "694:6:6" + "src": "639:6:6" }, { "attributes": { @@ -932,20 +998,20 @@ "type": "literal_string \"Credential is valid\"", "value": "Credential is valid" }, - "id": 1539, + "id": 1595, "name": "Literal", - "src": "729:21:6" + "src": "674:21:6" } ], - "id": 1540, + "id": 1596, "name": "VariableDeclaration", - "src": "694:56:6" + "src": "639:56:6" }, { "attributes": { "constant": true, "name": "NONE", - "scope": 1665, + "scope": 1721, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -957,9 +1023,9 @@ "name": "address", "type": "address" }, - "id": 1541, + "id": 1597, "name": "ElementaryTypeName", - "src": "761:7:6" + "src": "702:7:6" }, { "attributes": { @@ -974,14 +1040,14 @@ "type": "address", "value": "0x0000000000000000000000000000000000000000" }, - "id": 1542, + "id": 1598, "name": "Literal", - "src": "785:42:6" + "src": "726:42:6" } ], - "id": 1543, + "id": 1599, "name": "VariableDeclaration", - "src": "761:66:6" + "src": "702:66:6" }, { "attributes": { @@ -990,7 +1056,7 @@ "isConstructor": true, "name": "Verifier", "payable": false, - "scope": 1665, + "scope": 1721, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -1002,7 +1068,7 @@ "attributes": { "constant": false, "name": "_adminWalletAddr", - "scope": 1552, + "scope": 1608, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1015,19 +1081,19 @@ "name": "address", "type": "address" }, - "id": 1544, + "id": 1600, "name": "ElementaryTypeName", - "src": "856:7:6" + "src": "793:7:6" } ], - "id": 1545, + "id": 1601, "name": "VariableDeclaration", - "src": "856:24:6" + "src": "793:24:6" } ], - "id": 1546, + "id": 1602, "name": "ParameterList", - "src": "855:26:6" + "src": "792:26:6" }, { "attributes": { @@ -1036,9 +1102,9 @@ ] }, "children": [], - "id": 1550, + "id": 1606, "name": "ParameterList", - "src": "926:0:6" + "src": "863:0:6" }, { "children": [ @@ -1048,13 +1114,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1515, + "referencedDeclaration": 1572, "type": "type(contract TransactionManager)", "value": "TransactionManager" }, - "id": 1547, + "id": 1603, "name": "Identifier", - "src": "889:18:6" + "src": "826:18:6" }, { "attributes": { @@ -1062,18 +1128,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1545, + "referencedDeclaration": 1601, "type": "address", "value": "_adminWalletAddr" }, - "id": 1548, + "id": 1604, "name": "Identifier", - "src": "908:16:6" + "src": "845:16:6" } ], - "id": 1549, + "id": 1605, "name": "ModifierInvocation", - "src": "889:36:6" + "src": "826:36:6" }, { "attributes": { @@ -1082,14 +1148,14 @@ ] }, "children": [], - "id": 1551, + "id": 1607, "name": "Block", - "src": "926:2:6" + "src": "863:2:6" } ], - "id": 1552, + "id": 1608, "name": "FunctionDefinition", - "src": "838:90:6" + "src": "775:90:6" }, { "attributes": { @@ -1101,7 +1167,7 @@ ], "name": "verifyCredential", "payable": false, - "scope": 1665, + "scope": 1721, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -1113,7 +1179,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1600, + "scope": 1656, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1126,20 +1192,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1553, + "id": 1609, "name": "ElementaryTypeName", - "src": "968:7:6" + "src": "897:7:6" } ], - "id": 1554, + "id": 1610, "name": "VariableDeclaration", - "src": "968:15:6" + "src": "897:15:6" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 1600, + "scope": 1656, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1152,19 +1218,19 @@ "name": "address", "type": "address" }, - "id": 1555, + "id": 1611, "name": "ElementaryTypeName", - "src": "985:7:6" + "src": "914:7:6" } ], - "id": 1556, + "id": 1612, "name": "VariableDeclaration", - "src": "985:18:6" + "src": "914:18:6" } ], - "id": 1557, + "id": 1613, "name": "ParameterList", - "src": "967:37:6" + "src": "896:37:6" }, { "children": [ @@ -1172,7 +1238,7 @@ "attributes": { "constant": false, "name": "isVerified", - "scope": 1600, + "scope": 1656, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1185,20 +1251,20 @@ "name": "bool", "type": "bool" }, - "id": 1558, + "id": 1614, "name": "ElementaryTypeName", - "src": "1029:4:6" + "src": "958:4:6" } ], - "id": 1559, + "id": 1615, "name": "VariableDeclaration", - "src": "1029:15:6" + "src": "958:15:6" }, { "attributes": { "constant": false, "name": "errMsg", - "scope": 1600, + "scope": 1656, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -1211,28 +1277,28 @@ "name": "string", "type": "string storage pointer" }, - "id": 1560, + "id": 1616, "name": "ElementaryTypeName", - "src": "1046:6:6" + "src": "975:6:6" } ], - "id": 1561, + "id": 1617, "name": "VariableDeclaration", - "src": "1046:13:6" + "src": "975:13:6" } ], - "id": 1562, + "id": 1618, "name": "ParameterList", - "src": "1028:32:6" + "src": "957:32:6" }, { "children": [ { "attributes": { "assignments": [ - 1563, - 1564, - 1565 + 1619, + 1620, + 1621 ] }, "children": [ @@ -1240,7 +1306,7 @@ "attributes": { "constant": false, "name": "_revoked", - "scope": 1600, + "scope": 1656, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1249,15 +1315,15 @@ "visibility": "internal" }, "children": [], - "id": 1563, + "id": 1619, "name": "VariableDeclaration", - "src": "1076:8:6" + "src": "1005:8:6" }, { "attributes": { "constant": false, "name": "_integrityHashCheck", - "scope": 1600, + "scope": 1656, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1266,15 +1332,15 @@ "visibility": "internal" }, "children": [], - "id": 1564, + "id": 1620, "name": "VariableDeclaration", - "src": "1086:19:6" + "src": "1015:19:6" }, { "attributes": { "constant": false, "name": "_recipientCheck", - "scope": 1600, + "scope": 1656, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1283,9 +1349,9 @@ "visibility": "internal" }, "children": [], - "id": 1565, + "id": 1621, "name": "VariableDeclaration", - "src": "1107:15:6" + "src": "1036:15:6" }, { "attributes": { @@ -1317,13 +1383,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1664, + "referencedDeclaration": 1720, "type": "function (bytes32,address) view returns (bool,bool,bool)", "value": "verifyCredentialTxn" }, - "id": 1566, + "id": 1622, "name": "Identifier", - "src": "1126:19:6" + "src": "1055:19:6" }, { "attributes": { @@ -1331,13 +1397,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1554, + "referencedDeclaration": 1610, "type": "bytes32", "value": "_txnKey" }, - "id": 1567, + "id": 1623, "name": "Identifier", - "src": "1146:7:6" + "src": "1075:7:6" }, { "attributes": { @@ -1345,23 +1411,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1556, + "referencedDeclaration": 1612, "type": "address", "value": "_recipient" }, - "id": 1568, + "id": 1624, "name": "Identifier", - "src": "1155:10:6" + "src": "1084:10:6" } ], - "id": 1569, + "id": 1625, "name": "FunctionCall", - "src": "1126:40:6" + "src": "1055:40:6" } ], - "id": 1570, + "id": 1626, "name": "VariableDeclarationStatement", - "src": "1071:95:6" + "src": "1000:95:6" }, { "children": [ @@ -1371,19 +1437,19 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1563, + "referencedDeclaration": 1619, "type": "bool", "value": "_revoked" }, - "id": 1571, + "id": 1627, "name": "Identifier", - "src": "1180:8:6" + "src": "1109:8:6" }, { "children": [ { "attributes": { - "functionReturnParameters": 1562 + "functionReturnParameters": 1618 }, "children": [ { @@ -1410,9 +1476,9 @@ "type": "bool", "value": "false" }, - "id": 1572, + "id": 1628, "name": "Literal", - "src": "1211:5:6" + "src": "1140:5:6" }, { "attributes": { @@ -1420,28 +1486,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1537, + "referencedDeclaration": 1593, "type": "string memory", "value": "REVOKED" }, - "id": 1573, + "id": 1629, "name": "Identifier", - "src": "1218:7:6" + "src": "1147:7:6" } ], - "id": 1574, + "id": 1630, "name": "TupleExpression", - "src": "1210:16:6" + "src": "1139:16:6" } ], - "id": 1575, + "id": 1631, "name": "Return", - "src": "1204:22:6" + "src": "1133:22:6" } ], - "id": 1576, + "id": 1632, "name": "Block", - "src": "1190:47:6" + "src": "1119:47:6" }, { "children": [ @@ -1463,24 +1529,24 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1565, + "referencedDeclaration": 1621, "type": "bool", "value": "_recipientCheck" }, - "id": 1577, + "id": 1633, "name": "Identifier", - "src": "1248:15:6" + "src": "1177:15:6" } ], - "id": 1578, + "id": 1634, "name": "UnaryOperation", - "src": "1247:16:6" + "src": "1176:16:6" }, { "children": [ { "attributes": { - "functionReturnParameters": 1562 + "functionReturnParameters": 1618 }, "children": [ { @@ -1500,13 +1566,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1565, + "referencedDeclaration": 1621, "type": "bool", "value": "_recipientCheck" }, - "id": 1579, + "id": 1635, "name": "Identifier", - "src": "1286:15:6" + "src": "1215:15:6" }, { "attributes": { @@ -1514,28 +1580,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1531, + "referencedDeclaration": 1587, "type": "string memory", "value": "INVALID_RECIPIENT" }, - "id": 1580, + "id": 1636, "name": "Identifier", - "src": "1303:17:6" + "src": "1232:17:6" } ], - "id": 1581, + "id": 1637, "name": "TupleExpression", - "src": "1285:36:6" + "src": "1214:36:6" } ], - "id": 1582, + "id": 1638, "name": "Return", - "src": "1279:42:6" + "src": "1208:42:6" } ], - "id": 1583, + "id": 1639, "name": "Block", - "src": "1265:67:6" + "src": "1194:67:6" }, { "children": [ @@ -1557,24 +1623,24 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1564, + "referencedDeclaration": 1620, "type": "bool", "value": "_integrityHashCheck" }, - "id": 1584, + "id": 1640, "name": "Identifier", - "src": "1343:19:6" + "src": "1272:19:6" } ], - "id": 1585, + "id": 1641, "name": "UnaryOperation", - "src": "1342:20:6" + "src": "1271:20:6" }, { "children": [ { "attributes": { - "functionReturnParameters": 1562 + "functionReturnParameters": 1618 }, "children": [ { @@ -1594,13 +1660,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1564, + "referencedDeclaration": 1620, "type": "bool", "value": "_integrityHashCheck" }, - "id": 1586, + "id": 1642, "name": "Identifier", - "src": "1385:19:6" + "src": "1314:19:6" }, { "attributes": { @@ -1608,34 +1674,34 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1528, + "referencedDeclaration": 1584, "type": "string memory", "value": "INVALID_INTEGRITYHASH" }, - "id": 1587, + "id": 1643, "name": "Identifier", - "src": "1406:21:6" + "src": "1335:21:6" } ], - "id": 1588, + "id": 1644, "name": "TupleExpression", - "src": "1384:44:6" + "src": "1313:44:6" } ], - "id": 1589, + "id": 1645, "name": "Return", - "src": "1378:50:6" + "src": "1307:50:6" } ], - "id": 1590, + "id": 1646, "name": "Block", - "src": "1364:75:6" + "src": "1293:75:6" }, { "children": [ { "attributes": { - "functionReturnParameters": 1562 + "functionReturnParameters": 1618 }, "children": [ { @@ -1662,9 +1728,9 @@ "type": "bool", "value": "true" }, - "id": 1591, + "id": 1647, "name": "Literal", - "src": "1466:4:6" + "src": "1395:4:6" }, { "attributes": { @@ -1672,53 +1738,53 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1540, + "referencedDeclaration": 1596, "type": "string memory", "value": "VALID_CREDENTIAL" }, - "id": 1592, + "id": 1648, "name": "Identifier", - "src": "1472:16:6" + "src": "1401:16:6" } ], - "id": 1593, + "id": 1649, "name": "TupleExpression", - "src": "1465:24:6" + "src": "1394:24:6" } ], - "id": 1594, + "id": 1650, "name": "Return", - "src": "1459:30:6" + "src": "1388:30:6" } ], - "id": 1595, + "id": 1651, "name": "Block", - "src": "1445:55:6" + "src": "1374:55:6" } ], - "id": 1596, + "id": 1652, "name": "IfStatement", - "src": "1338:162:6" + "src": "1267:162:6" } ], - "id": 1597, + "id": 1653, "name": "IfStatement", - "src": "1243:257:6" + "src": "1172:257:6" } ], - "id": 1598, + "id": 1654, "name": "IfStatement", - "src": "1176:324:6" + "src": "1105:324:6" } ], - "id": 1599, + "id": 1655, "name": "Block", - "src": "1061:445:6" + "src": "990:445:6" } ], - "id": 1600, + "id": 1656, "name": "FunctionDefinition", - "src": "942:564:6" + "src": "871:564:6" }, { "attributes": { @@ -1730,7 +1796,7 @@ ], "name": "verifyCredentialTxn", "payable": false, - "scope": 1665, + "scope": 1721, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -1742,7 +1808,7 @@ "attributes": { "constant": false, "name": "_txnKey", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1755,20 +1821,20 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1601, + "id": 1657, "name": "ElementaryTypeName", - "src": "1765:7:6" + "src": "1694:7:6" } ], - "id": 1602, + "id": 1658, "name": "VariableDeclaration", - "src": "1765:15:6" + "src": "1694:15:6" }, { "attributes": { "constant": false, "name": "_recipient", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1781,19 +1847,19 @@ "name": "address", "type": "address" }, - "id": 1603, + "id": 1659, "name": "ElementaryTypeName", - "src": "1782:7:6" + "src": "1711:7:6" } ], - "id": 1604, + "id": 1660, "name": "VariableDeclaration", - "src": "1782:18:6" + "src": "1711:18:6" } ], - "id": 1605, + "id": 1661, "name": "ParameterList", - "src": "1764:37:6" + "src": "1693:37:6" }, { "children": [ @@ -1801,7 +1867,7 @@ "attributes": { "constant": false, "name": "_revoked", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1814,20 +1880,20 @@ "name": "bool", "type": "bool" }, - "id": 1606, + "id": 1662, "name": "ElementaryTypeName", - "src": "1826:4:6" + "src": "1755:4:6" } ], - "id": 1607, + "id": 1663, "name": "VariableDeclaration", - "src": "1826:13:6" + "src": "1755:13:6" }, { "attributes": { "constant": false, "name": "_integrityHashCheck", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1840,20 +1906,20 @@ "name": "bool", "type": "bool" }, - "id": 1608, + "id": 1664, "name": "ElementaryTypeName", - "src": "1842:4:6" + "src": "1771:4:6" } ], - "id": 1609, + "id": 1665, "name": "VariableDeclaration", - "src": "1842:24:6" + "src": "1771:24:6" }, { "attributes": { "constant": false, "name": "_recipientCheck", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1866,29 +1932,29 @@ "name": "bool", "type": "bool" }, - "id": 1610, + "id": 1666, "name": "ElementaryTypeName", - "src": "1868:4:6" + "src": "1797:4:6" } ], - "id": 1611, + "id": 1667, "name": "VariableDeclaration", - "src": "1868:20:6" + "src": "1797:20:6" } ], - "id": 1612, + "id": 1668, "name": "ParameterList", - "src": "1825:64:6" + "src": "1754:64:6" }, { "children": [ { "attributes": { "assignments": [ - 1613, - 1614, - 1615, - 1616 + 1669, + 1670, + 1671, + 1672 ] }, "children": [ @@ -1896,7 +1962,7 @@ "attributes": { "constant": false, "name": "key", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1905,15 +1971,15 @@ "visibility": "internal" }, "children": [], - "id": 1613, + "id": 1669, "name": "VariableDeclaration", - "src": "1905:3:6" + "src": "1834:3:6" }, { "attributes": { "constant": false, "name": "integrityHash", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -1922,15 +1988,15 @@ "visibility": "internal" }, "children": [], - "id": 1614, + "id": 1670, "name": "VariableDeclaration", - "src": "1910:13:6" + "src": "1839:13:6" }, { "attributes": { "constant": false, "name": "recipient", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -1939,15 +2005,15 @@ "visibility": "internal" }, "children": [], - "id": 1615, + "id": 1671, "name": "VariableDeclaration", - "src": "1925:9:6" + "src": "1854:9:6" }, { "attributes": { "constant": false, "name": "revoked", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -1956,9 +2022,9 @@ "visibility": "internal" }, "children": [], - "id": 1616, + "id": 1672, "name": "VariableDeclaration", - "src": "1936:7:6" + "src": "1865:7:6" }, { "attributes": { @@ -1986,13 +2052,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1435, + "referencedDeclaration": 1492, "type": "function (bytes32) view returns (bytes32,bytes32,address,bool)", "value": "getTxn" }, - "id": 1617, + "id": 1673, "name": "Identifier", - "src": "1947:6:6" + "src": "1876:6:6" }, { "attributes": { @@ -2000,23 +2066,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1602, + "referencedDeclaration": 1658, "type": "bytes32", "value": "_txnKey" }, - "id": 1618, + "id": 1674, "name": "Identifier", - "src": "1954:7:6" + "src": "1883:7:6" } ], - "id": 1619, + "id": 1675, "name": "FunctionCall", - "src": "1947:15:6" + "src": "1876:15:6" } ], - "id": 1620, + "id": 1676, "name": "VariableDeclarationStatement", - "src": "1900:62:6" + "src": "1829:62:6" }, { "children": [ @@ -2041,13 +2107,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1615, + "referencedDeclaration": 1671, "type": "address", "value": "recipient" }, - "id": 1621, + "id": 1677, "name": "Identifier", - "src": "1977:9:6" + "src": "1906:9:6" }, { "attributes": { @@ -2055,24 +2121,24 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1543, + "referencedDeclaration": 1599, "type": "address", "value": "NONE" }, - "id": 1622, + "id": 1678, "name": "Identifier", - "src": "1990:4:6" + "src": "1919:4:6" } ], - "id": 1623, + "id": 1679, "name": "BinaryOperation", - "src": "1977:17:6" + "src": "1906:17:6" }, { "children": [ { "attributes": { - "functionReturnParameters": 1612 + "functionReturnParameters": 1668 }, "children": [ { @@ -2099,9 +2165,9 @@ "type": "bool", "value": "true" }, - "id": 1624, + "id": 1680, "name": "Literal", - "src": "2017:4:6" + "src": "1946:4:6" }, { "attributes": { @@ -2116,9 +2182,9 @@ "type": "bool", "value": "false" }, - "id": 1625, + "id": 1681, "name": "Literal", - "src": "2023:5:6" + "src": "1952:5:6" }, { "attributes": { @@ -2133,24 +2199,24 @@ "type": "bool", "value": "false" }, - "id": 1626, + "id": 1682, "name": "Literal", - "src": "2030:5:6" + "src": "1959:5:6" } ], - "id": 1627, + "id": 1683, "name": "TupleExpression", - "src": "2016:20:6" + "src": "1945:20:6" } ], - "id": 1628, + "id": 1684, "name": "Return", - "src": "2010:26:6" + "src": "1939:26:6" } ], - "id": 1629, + "id": 1685, "name": "Block", - "src": "1996:51:6" + "src": "1925:51:6" }, { "attributes": { @@ -2163,19 +2229,19 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1616, + "referencedDeclaration": 1672, "type": "bool", "value": "revoked" }, - "id": 1630, + "id": 1686, "name": "Identifier", - "src": "2057:7:6" + "src": "1986:7:6" }, { "children": [ { "attributes": { - "functionReturnParameters": 1612 + "functionReturnParameters": 1668 }, "children": [ { @@ -2195,13 +2261,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1616, + "referencedDeclaration": 1672, "type": "bool", "value": "revoked" }, - "id": 1631, + "id": 1687, "name": "Identifier", - "src": "2087:7:6" + "src": "2016:7:6" }, { "attributes": { @@ -2216,9 +2282,9 @@ "type": "bool", "value": "false" }, - "id": 1632, + "id": 1688, "name": "Literal", - "src": "2096:5:6" + "src": "2025:5:6" }, { "attributes": { @@ -2233,39 +2299,39 @@ "type": "bool", "value": "false" }, - "id": 1633, + "id": 1689, "name": "Literal", - "src": "2103:5:6" + "src": "2032:5:6" } ], - "id": 1634, + "id": 1690, "name": "TupleExpression", - "src": "2086:23:6" + "src": "2015:23:6" } ], - "id": 1635, + "id": 1691, "name": "Return", - "src": "2080:29:6" + "src": "2009:29:6" } ], - "id": 1636, + "id": 1692, "name": "Block", - "src": "2066:54:6" + "src": "1995:54:6" } ], - "id": 1637, + "id": 1693, "name": "IfStatement", - "src": "2053:67:6" + "src": "1982:67:6" } ], - "id": 1638, + "id": 1694, "name": "IfStatement", - "src": "1973:147:6" + "src": "1902:147:6" }, { "attributes": { "assignments": [ - 1640 + 1696 ] }, "children": [ @@ -2273,7 +2339,7 @@ "attributes": { "constant": false, "name": "holder", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "contract Holder", @@ -2285,17 +2351,17 @@ "attributes": { "contractScope": null, "name": "Holder", - "referencedDeclaration": 1042, + "referencedDeclaration": 1108, "type": "contract Holder" }, - "id": 1639, + "id": 1695, "name": "UserDefinedTypeName", - "src": "2130:6:6" + "src": "2059:6:6" } ], - "id": 1640, + "id": 1696, "name": "VariableDeclaration", - "src": "2130:13:6" + "src": "2059:13:6" }, { "attributes": { @@ -2323,13 +2389,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1042, + "referencedDeclaration": 1108, "type": "type(contract Holder)", "value": "Holder" }, - "id": 1641, + "id": 1697, "name": "Identifier", - "src": "2146:6:6" + "src": "2075:6:6" }, { "attributes": { @@ -2337,28 +2403,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1660, "type": "address", "value": "_recipient" }, - "id": 1642, + "id": 1698, "name": "Identifier", - "src": "2153:10:6" + "src": "2082:10:6" } ], - "id": 1643, + "id": 1699, "name": "FunctionCall", - "src": "2146:18:6" + "src": "2075:18:6" } ], - "id": 1644, + "id": 1700, "name": "VariableDeclarationStatement", - "src": "2130:34:6" + "src": "2059:34:6" }, { "attributes": { "assignments": [ - 1646 + 1702 ] }, "children": [ @@ -2366,7 +2432,7 @@ "attributes": { "constant": false, "name": "_integrityHash", - "scope": 1664, + "scope": 1720, "stateVariable": false, "storageLocation": "default", "type": "bytes32", @@ -2379,14 +2445,14 @@ "name": "bytes32", "type": "bytes32" }, - "id": 1645, + "id": 1701, "name": "ElementaryTypeName", - "src": "2174:7:6" + "src": "2103:7:6" } ], - "id": 1646, + "id": 1702, "name": "VariableDeclaration", - "src": "2174:22:6" + "src": "2103:22:6" }, { "attributes": { @@ -2416,7 +2482,7 @@ "isPure": false, "lValueRequested": false, "member_name": "recomputePOIHash", - "referencedDeclaration": 1041, + "referencedDeclaration": 1107, "type": "function (bytes32) view external returns (bytes32)" }, "children": [ @@ -2426,18 +2492,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1640, + "referencedDeclaration": 1696, "type": "contract Holder", "value": "holder" }, - "id": 1647, + "id": 1703, "name": "Identifier", - "src": "2199:6:6" + "src": "2128:6:6" } ], - "id": 1648, + "id": 1704, "name": "MemberAccess", - "src": "2199:23:6" + "src": "2128:23:6" }, { "attributes": { @@ -2445,27 +2511,27 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1613, + "referencedDeclaration": 1669, "type": "bytes32", "value": "key" }, - "id": 1649, + "id": 1705, "name": "Identifier", - "src": "2223:3:6" + "src": "2152:3:6" } ], - "id": 1650, + "id": 1706, "name": "FunctionCall", - "src": "2199:28:6" + "src": "2128:28:6" } ], - "id": 1651, + "id": 1707, "name": "VariableDeclarationStatement", - "src": "2174:53:6" + "src": "2103:53:6" }, { "attributes": { - "functionReturnParameters": 1612 + "functionReturnParameters": 1668 }, "children": [ { @@ -2485,13 +2551,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1616, + "referencedDeclaration": 1672, "type": "bool", "value": "revoked" }, - "id": 1652, + "id": 1708, "name": "Identifier", - "src": "2244:7:6" + "src": "2173:7:6" }, { "attributes": { @@ -2525,13 +2591,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1646, + "referencedDeclaration": 1702, "type": "bytes32", "value": "_integrityHash" }, - "id": 1653, + "id": 1709, "name": "Identifier", - "src": "2266:14:6" + "src": "2195:14:6" }, { "attributes": { @@ -2539,23 +2605,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1614, + "referencedDeclaration": 1670, "type": "bytes32", "value": "integrityHash" }, - "id": 1654, + "id": 1710, "name": "Identifier", - "src": "2284:13:6" + "src": "2213:13:6" } ], - "id": 1655, + "id": 1711, "name": "BinaryOperation", - "src": "2266:31:6" + "src": "2195:31:6" } ], - "id": 1656, + "id": 1712, "name": "TupleExpression", - "src": "2265:33:6" + "src": "2194:33:6" }, { "attributes": { @@ -2589,13 +2655,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1604, + "referencedDeclaration": 1660, "type": "address", "value": "_recipient" }, - "id": 1657, + "id": 1713, "name": "Identifier", - "src": "2313:10:6" + "src": "2242:10:6" }, { "attributes": { @@ -2603,53 +2669,53 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 1615, + "referencedDeclaration": 1671, "type": "address", "value": "recipient" }, - "id": 1658, + "id": 1714, "name": "Identifier", - "src": "2327:9:6" + "src": "2256:9:6" } ], - "id": 1659, + "id": 1715, "name": "BinaryOperation", - "src": "2313:23:6" + "src": "2242:23:6" } ], - "id": 1660, + "id": 1716, "name": "TupleExpression", - "src": "2312:25:6" + "src": "2241:25:6" } ], - "id": 1661, + "id": 1717, "name": "TupleExpression", - "src": "2243:104:6" + "src": "2172:104:6" } ], - "id": 1662, + "id": 1718, "name": "Return", - "src": "2237:110:6" + "src": "2166:110:6" } ], - "id": 1663, + "id": 1719, "name": "Block", - "src": "1890:464:6" + "src": "1819:464:6" } ], - "id": 1664, + "id": 1720, "name": "FunctionDefinition", - "src": "1736:618:6" + "src": "1665:618:6" } ], - "id": 1665, + "id": 1721, "name": "ContractDefinition", - "src": "136:2221:6" + "src": "85:2201:6" } ], - "id": 1666, + "id": 1722, "name": "SourceUnit", - "src": "0:2357:6" + "src": "0:2287:6" }, "compiler": { "name": "solc", @@ -2657,5 +2723,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2018-01-12T07:35:13.895Z" + "updatedAt": "2018-01-14T10:53:22.998Z" } \ No newline at end of file diff --git a/contracts/BadgeManager.sol b/contracts/BadgeManager.sol index bee0244..fa19556 100644 --- a/contracts/BadgeManager.sol +++ b/contracts/BadgeManager.sol @@ -1,15 +1,30 @@ pragma solidity ^0.4.17; -import "BadgeLibrary/contracts/BadgeLibrary.sol"; - import "./AuthorizedIssuer.sol"; contract BadgeManager is AuthorizedIssuer { + /// @notice represents simple details about a earnable badge + struct Badge { + address issuer; + string description; + string name; + string image; + string version; + } + + /// @notice represents details of an issued badge + struct Credential { + Badge badge; + uint expires; + address recipient; + bytes32 txnKey; + bool active; + } /// @notice mapping of badgename hash to badge /// @notice array of badge hash names struct Vault { - mapping (bytes32=>BadgeLibrary.Badge) badges; + mapping (bytes32=> Badge) badges; mapping (bytes32=>uint) indexMap; bytes32[] badgeHashNames; } @@ -26,13 +41,13 @@ contract BadgeManager is AuthorizedIssuer { } function isUnique(string _name) public constant returns(bool unique) { - bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_name); + bytes32 badgeNameHash = getBadgeNameHash(_name); return (badgeVault.badgeHashNames.length == 0 || badgeVault.badgeHashNames[badgeVault.indexMap[badgeNameHash]] != badgeNameHash); } /// @notice checks if a badge exists by name modifier badgeExists(string _name) { - bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_name); + bytes32 badgeNameHash = getBadgeNameHash(_name); require(badgeVault.badgeHashNames.length > 0 && badgeVault.badgeHashNames[badgeVault.indexMap[badgeNameHash]] == badgeNameHash); _; } @@ -59,9 +74,9 @@ contract BadgeManager is AuthorizedIssuer { string _version) authorized(msg.sender) uniqueBadge(_name) public { - bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_name); + bytes32 badgeNameHash = getBadgeNameHash(_name); uint index = badgeVault.badgeHashNames.push(badgeNameHash)-1; - BadgeLibrary.Badge memory badge = BadgeLibrary.Badge( + Badge memory badge = Badge( address(this), _description, _name, @@ -79,7 +94,7 @@ contract BadgeManager is AuthorizedIssuer { authorized(msg.sender) public returns(bool success) { - bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_name); + bytes32 badgeNameHash = getBadgeNameHash(_name); uint rowToDelete = badgeVault.indexMap[badgeNameHash]; bytes32 rowToMove = badgeVault.badgeHashNames[badgeVault.badgeHashNames.length-1]; badgeVault.indexMap[rowToMove] = rowToDelete; @@ -108,7 +123,7 @@ contract BadgeManager is AuthorizedIssuer { string image, string version ) { - BadgeLibrary.Badge memory badge = badgeVault.badges[_badgeNameHash]; + Badge memory badge = badgeVault.badges[_badgeNameHash]; return ( badge.issuer, badge.description, @@ -124,4 +139,33 @@ contract BadgeManager is AuthorizedIssuer { return badgeVault.badgeHashNames[_index]; } + /// @notice compute hash of badgename + function getBadgeNameHash(string _badgename) pure public returns (bytes32 _hash) { + return keccak256(_badgename); + } + + /// @notice compute hash for badge linking + function getBadgeLinkHash(string _name, address _issuer) pure public returns (bytes32 hash) { + return keccak256(_name, _issuer); + } + + /// @notice compute integrity hash of credential data + function getIntegrityHash( + address issuer, + string description, + string name, + string image, + string version, + address recipient + ) pure public returns(bytes32 _hash) + { + return keccak256( + issuer, + description, + name, + image, + version, + recipient + ); + } } diff --git a/contracts/Holder.sol b/contracts/Holder.sol index 2e214c6..243929e 100644 --- a/contracts/Holder.sol +++ b/contracts/Holder.sol @@ -3,7 +3,7 @@ pragma solidity ^0.4.17; import "BadgeLibrary/contracts/BadgeLibrary.sol"; contract Holder { - + /// @notice address where holder holds there badgeforce tokens address public holder; @@ -19,15 +19,15 @@ contract Holder { /// @notice vault holding credentials CredentialVault credentialVault; - /// @notice mapping of trusted issuers + /// @notice mapping of trusted issuers mapping (address=>bool) public trustedIssuers; - function Holder(address _holder) { + function Holder(address _holder) public { holder = _holder; } event AuthorizeAttempt(address _actor, bool authorized); - /// @notice make sure caller is the issuer that owns this contract because badgeforce tokens will be used + /// @notice make sure caller is the issuer that owns this contract because badgeforce tokens will be used modifier authorized(address _holder) { bool isAuthorized = (_holder == holder); AuthorizeAttempt(_holder, isAuthorized); @@ -43,12 +43,12 @@ contract Holder { _; } - /// @notice add a new trusted issuer + /// @notice add a new trusted issuer function addTrustedIssuer(address _issuer) public authorized(msg.sender) { trustedIssuers[_issuer] = true; } - /// @notice add a new trusted issuer + /// @notice add a new trusted issuer function removeTrustedIssuer(address _issuer) public authorized(msg.sender) { trustedIssuers[_issuer] = false; } @@ -97,7 +97,7 @@ contract Holder { } event CredentialDeleted(bytes32 _txnKey, uint count); - /// @notice delete a credential + /// @notice delete a credential function deleteCredential(bytes32 _txnKey) authorized(msg.sender) public returns(bool success) { success = _deleteCredential(_txnKey); CredentialDeleted(_txnKey, credentialVault.keys.length); @@ -106,18 +106,18 @@ contract Holder { function _deleteCredential(bytes32 _txnKey) public returns(bool success) { delete credentialVault.credentials[_txnKey]; - uint rowToDelete = credentialVault.indexMap[_txnKey]; + uint rowToDelete = credentialVault.indexMap[_txnKey]; bytes32 rowToMove = credentialVault.keys[credentialVault.keys.length-1]; - credentialVault.indexMap[rowToMove] = rowToDelete; - credentialVault.keys[rowToDelete] = rowToMove; + credentialVault.indexMap[rowToMove] = rowToDelete; + credentialVault.keys[rowToDelete] = rowToMove; credentialVault.keys.length--; delete credentialVault.indexMap[_txnKey]; delete credentialVault.credentials[_txnKey]; return true; } - /// @notice get a holders credential - /// @param _name index of credential to return + /// @notice get a holders credential + /// @param _name index of credential to return function getCredential(bytes32 _txnKey) constant public returns ( address _issuer, string _description, @@ -146,16 +146,16 @@ contract Holder { /// @notice helper function for UI to retrieve all names then retrieve the credentials /// @param _index index of the name you want - function getTxnKey(uint _index) constant public returns(bytes32 name) { + function getTxnKey(uint _index) constant public returns(bytes32 txnKey) { return credentialVault.keys[_index]; } - /// @dev get number of credentials + /// @dev get number of credentials function getNumberOfCredentials() constant public returns(uint count) { return credentialVault.keys.length; } - /// @dev get number of pending credentials + /// @dev get number of pending credentials function getNumberOfPendingCredentials() constant public returns(uint count) { return credentialVault.numOfPendingCreds; } @@ -163,12 +163,12 @@ contract Holder { function recomputePOIHash(bytes32 _txnKey) constant public returns(bytes32 poiHash) { BadgeLibrary.Credential memory credential = credentialVault.credentials[_txnKey]; return BadgeLibrary.getIntegrityHash( - credential.badge.issuer, - credential.badge.description, - credential.badge.name, - credential.badge.image, - credential.badge.version, + credential.badge.issuer, + credential.badge.description, + credential.badge.name, + credential.badge.image, + credential.badge.version, credential.recipient ); } -} \ No newline at end of file +} diff --git a/contracts/Issuer.sol b/contracts/Issuer.sol index 4ad38e9..133a915 100644 --- a/contracts/Issuer.sol +++ b/contracts/Issuer.sol @@ -1,6 +1,5 @@ pragma solidity ^0.4.17; -import "BadgeLibrary/contracts/BadgeLibrary.sol"; import "BadgeForceToken/contracts/BadgeForceToken.sol"; import "./Holder.sol"; @@ -11,14 +10,14 @@ contract Issuer is Verifier { BadgeForceToken private BFT; address constant NONE = 0x0000000000000000000000000000000000000000; - - /// @notice address of this contract - address public issuerContract; + + /// @notice address of this contract + address public issuerContract; string public name; string public url; - - + + function Issuer(address _adminWalletAddr, string _name, string _url, address _token) public Verifier(_adminWalletAddr) { name = _name; url = _url; @@ -36,13 +35,13 @@ contract Issuer is Verifier { address indexed _recipient ); /// @notice issue a new credential to a recipient contract - /// @param _badgeName name of the badge to issue + /// @param _badgeName name of the badge to issue /// @param _recipient address of the holder contract /// @param _expires expire date (number of weeks) function issue( - string _badgeName, - address _recipient, - uint _expires) + string _badgeName, + address _recipient, + uint _expires) public authorized(msg.sender) payForIssue() { uint expires; @@ -53,23 +52,23 @@ contract Issuer is Verifier { } bytes32 _txnKey = getCredentialTxnKey(issuerContract, msg.data); _sendToRecipient( - _badgeName, - expires, + _badgeName, + expires, _recipient, _txnKey ); - setNewTxn(_txnKey, _recipient, _badgeName); + setNewTxn(_txnKey, _recipient, _badgeName); } - + /// @notice internal method that gets instance of recipient contract and stores credential function _sendToRecipient( - string _badgeName, - uint expires, - address _recipient, + string _badgeName, + uint expires, + address _recipient, bytes32 _txnKey ) private - { - BadgeLibrary.Badge memory badge = badgeVault.badges[BadgeLibrary.getBadgeNameHash(_badgeName)]; + { + Badge memory badge = badgeVault.badges[getBadgeNameHash(_badgeName)]; require(badge.issuer != NONE); Holder holder = Holder(_recipient); holder.storeCredential( @@ -79,7 +78,7 @@ contract Issuer is Verifier { badge.image, badge.version, expires, - _recipient, + _recipient, _txnKey ); CredentialIssued( @@ -87,10 +86,10 @@ contract Issuer is Verifier { _recipient ); } - + /// @notice get issuer info function getInfo() public constant returns(address _issuer, address _contract, string _name, string _url) { return(admin, issuerContract, name, url); } -} \ No newline at end of file +} diff --git a/contracts/TransactionManager.sol b/contracts/TransactionManager.sol index 0bc9c15..4050040 100644 --- a/contracts/TransactionManager.sol +++ b/contracts/TransactionManager.sol @@ -1,19 +1,17 @@ pragma solidity ^0.4.17; -import "BadgeLibrary/contracts/BadgeLibrary.sol"; - import "./BadgeManager.sol"; contract TransactionManager is BadgeManager { struct Transaction { - bytes32 key; + bytes32 key; bytes32 integrityHash; address recipient; bool revoked; } - /// @notice mapping of a unique hash to a recipient address, used to verify issuer of a credential + /// @notice mapping of a unique hash to a recipient address, used to verify issuer of a credential mapping (bytes32=>Transaction) public credentialTxnMap; uint public nonce; @@ -23,35 +21,35 @@ contract TransactionManager is BadgeManager { } /** @dev sets a new transaction (credential issued to recipient) - * @param _txnKey the transaction key + * @param _txnKey the transaction key * @param _recipient recipient of the credential */ function setNewTxn( - bytes32 _txnKey, - address _recipient, - string _badgeName) authorized(msg.sender) public + bytes32 _txnKey, + address _recipient, + string _badgeName) authorized(msg.sender) public { //increase nonce nonce++; - bytes32 badgeNameHash = BadgeLibrary.getBadgeNameHash(_badgeName); - BadgeLibrary.Badge memory badge = badgeVault.badges[badgeNameHash]; - bytes32 integrityHash = BadgeLibrary.getIntegrityHash( - badge.issuer, - badge.description, - badge.name, - badge.image, - badge.version, - _recipient + bytes32 badgeNameHash = getBadgeNameHash(_badgeName); + Badge memory badge = badgeVault.badges[badgeNameHash]; + bytes32 integrityHash = getIntegrityHash( + badge.issuer, + badge.description, + badge.name, + badge.image, + badge.version, + _recipient ); credentialTxnMap[_txnKey] = Transaction(_txnKey, integrityHash, _recipient, false); } /** @dev gets a transaction - * @param _txnKey the transaction key + * @param _txnKey the transaction key * @return txnKey the key for the transaction * @return integrityHash proof of integrity hash for badge issued in this transaction * @return recipient address of the wallet associated with the person who received this badge - */ + */ function getTxn(bytes32 _txnKey) constant public returns(bytes32 txnKey, bytes32 integrityHash, address recipient, bool revoked) { return( credentialTxnMap[_txnKey].key, @@ -86,4 +84,4 @@ contract TransactionManager is BadgeManager { function isRevoked(bytes32 _txnKey) public constant returns(bool c) { return credentialTxnMap[_txnKey].revoked; } -} \ No newline at end of file +} diff --git a/contracts/Verifier.sol b/contracts/Verifier.sol index 82c26fc..ca940b6 100644 --- a/contracts/Verifier.sol +++ b/contracts/Verifier.sol @@ -1,23 +1,21 @@ pragma solidity ^0.4.17; -import "BadgeLibrary/contracts/BadgeLibrary.sol"; - import "./TransactionManager.sol"; import "./Holder.sol"; contract Verifier is TransactionManager { - + string constant INVALID_TRANSACTION = "Invalid transaction: the transaction does not exist"; string constant INVALID_INTEGRITYHASH = "Invalid data integrity: data in credential does not match original transaction data"; string constant INVALID_RECIPIENT = "Invalid recipient: recipient does not match original transaction data"; string constant INVALID_TXTKEY = "Invalid transaction key: transaction keys don't match"; string constant REVOKED = "Invalid credential: credential revoked"; string constant VALID_CREDENTIAL = "Credential is valid"; - + address constant NONE = 0x0000000000000000000000000000000000000000; - + function Verifier(address _adminWalletAddr) public TransactionManager(_adminWalletAddr) {} - + function verifyCredential(bytes32 _txnKey, address _recipient) constant public returns(bool isVerified, string errMsg) { var (_revoked, _integrityHashCheck, _recipientCheck) = verifyCredentialTxn(_txnKey, _recipient); if (_revoked) { @@ -51,4 +49,4 @@ contract Verifier is TransactionManager { ); } -} \ No newline at end of file +} diff --git a/index.js b/index.js index cf99382..afa50a1 100644 --- a/index.js +++ b/index.js @@ -12,6 +12,6 @@ module.exports = { badgeLibrary: badgeLibrary_artifacts, badgeManager: badgeManager_artifacts, authorizedIssuer: authorizedIssuer_artifacts, - transactionManagers: transactionManager_artifacts, + transactionManager: transactionManager_artifacts, verifiers: verifier_artifacts };