{"abi":[{"type":"constructor","inputs":[{"name":"name_","type":"string","internalType":"string"},{"name":"symbol_","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getPastVotes","inputs":[{"name":"subject","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x608060405234801561000f575f5ffd5b50604051610d90380380610d9083398101604081905261002e9161026c565b8181600361003c8382610355565b5060046100498282610355565b5050506100653368056bc75e2d6310000061006c60201b60201c565b5050610434565b6001600160a01b03821661009a5760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6100a55f83836100a9565b5050565b6001600160a01b0383166100d3578060025f8282546100c8919061040f565b909155506101439050565b6001600160a01b0383165f90815260208190526040902054818110156101255760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610091565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661015f5760028054829003905561017d565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516101c291815260200190565b60405180910390a3505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126101f2575f5ffd5b81516001600160401b0381111561020b5761020b6101cf565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610239576102396101cf565b604052818152838201602001851015610250575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f6040838503121561027d575f5ffd5b82516001600160401b03811115610292575f5ffd5b61029e858286016101e3565b602085015190935090506001600160401b038111156102bb575f5ffd5b6102c7858286016101e3565b9150509250929050565b600181811c908216806102e557607f821691505b60208210810361030357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561035057805f5260205f20601f840160051c8101602085101561032e5750805b601f840160051c820191505b8181101561034d575f815560010161033a565b50505b505050565b81516001600160401b0381111561036e5761036e6101cf565b6103828161037c84546102d1565b84610309565b6020601f8211600181146103b4575f831561039d5750848201515b5f19600385901b1c1916600184901b17845561034d565b5f84815260208120601f198516915b828110156103e357878501518255602094850194600190920191016103c3565b508482101561040057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561042e57634e487b7160e01b5f52601160045260245ffd5b92915050565b61094f806104415f395ff3fe608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c80633a46b1a81161007257806395d89b411161005857806395d89b411461017a578063a9059cbb14610182578063dd62ed3e14610195575f5ffd5b80633a46b1a81461013257806370a0823114610145575f5ffd5b806318160ddd116100a257806318160ddd146100fe57806323b872dd14610110578063313ce56714610123575f5ffd5b806306fdde03146100bd578063095ea7b3146100db575b5f5ffd5b6100c56101da565b6040516100d29190610769565b60405180910390f35b6100ee6100e93660046107e4565b61026a565b60405190151581526020016100d2565b6002545b6040519081526020016100d2565b6100ee61011e36600461080c565b610283565b604051601281526020016100d2565b6101026101403660046107e4565b6102a6565b610102610153366004610846565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6100c56102d3565b6100ee6101903660046107e4565b6102e2565b6101026101a336600461085f565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101e990610890565b80601f016020809104026020016040519081016040528092919081815260200182805461021590610890565b80156102605780601f1061023757610100808354040283529160200191610260565b820191905f5260205f20905b81548152906001019060200180831161024357829003601f168201915b5050505050905090565b5f336102778185856102ef565b60019150505b92915050565b5f33610290858285610301565b61029b8585856103d4565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152602081905260408120545b9392505050565b6060600480546101e990610890565b5f336102778185856103d4565b6102fc838383600161047d565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156103ce57818110156103c0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103ce84848484035f61047d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610423576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016103b7565b73ffffffffffffffffffffffffffffffffffffffff8216610472576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016103b7565b6102fc8383836105c2565b73ffffffffffffffffffffffffffffffffffffffff84166104cc576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016103b7565b73ffffffffffffffffffffffffffffffffffffffff831661051b576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016103b7565b73ffffffffffffffffffffffffffffffffffffffff8085165f90815260016020908152604080832093871683529290522082905580156103ce578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105b491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166105f9578060025f8282546105ee91906108e1565b909155506106a99050565b73ffffffffffffffffffffffffffffffffffffffff83165f908152602081905260409020548181101561067e576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103b7565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166106d2576002805482900390556106fd565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161075c91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107df575f5ffd5b919050565b5f5f604083850312156107f5575f5ffd5b6107fe836107bc565b946020939093013593505050565b5f5f5f6060848603121561081e575f5ffd5b610827846107bc565b9250610835602085016107bc565b929592945050506040919091013590565b5f60208284031215610856575f5ffd5b6102cc826107bc565b5f5f60408385031215610870575f5ffd5b610879836107bc565b9150610887602084016107bc565b90509250929050565b600181811c908216806108a457607f821691505b6020821081036108db577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b8082018082111561027d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea2646970667358221220a1e5a5dd89bfae14009e8e63935b6799447b6ad7c41be7d6368815abadec2b1c64736f6c634300081c0033","sourceMap":"195:384:82:-:0;;;234:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;296:5;303:7;1667:5:90;:13;296:5:82;1667::90;:13;:::i;:::-;-1:-1:-1;1690:7:90;:17;1700:7;1690;:17;:::i;:::-;;1601:113;;322:25:82::1;328:10;340:6;322:5;;;:25;;:::i;:::-;234:120:::0;;195:384;;7458:208:90;-1:-1:-1;;;;;7528:21:90;;7524:91;;7572:32;;-1:-1:-1;;;7572:32:90;;7601:1;7572:32;;;4091:51:133;4064:18;;7572:32:90;;;;;;;;7524:91;7624:35;7640:1;7644:7;7653:5;7624:7;:35::i;:::-;7458:208;;:::o;6008:1107::-;-1:-1:-1;;;;;6097:18:90;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:90;;-1:-1:-1;6093:540:90;;-1:-1:-1;;;;;6307:15:90;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6386:50;;-1:-1:-1;;;6386:50:90;;-1:-1:-1;;;;;4600:32:133;;6386:50:90;;;4582:51:133;4649:18;;;4642:34;;;4692:18;;;4685:34;;;4555:18;;6386:50:90;4380:345:133;6336:115:90;-1:-1:-1;;;;;6571:15:90;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:90;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:90;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:90;7092:4;-1:-1:-1;;;;;7083:25:90;;7102:5;7083:25;;;;4876::133;;4864:2;4849:18;;4730:177;7083:25:90;;;;;;;;6008:1107;;;:::o;14:127:133:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:723;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:133;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:133;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:133;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:133;;;725:1;722;715:12;670:59;782:6;775:4;767:6;763:17;756:4;748:6;744:17;738:51;837:1;809:19;;;830:4;805:30;798:41;;;;813:6;146:723;-1:-1:-1;;;146:723:133:o;874:557::-;973:6;981;1034:2;1022:9;1013:7;1009:23;1005:32;1002:52;;;1050:1;1047;1040:12;1002:52;1077:16;;-1:-1:-1;;;;;1105:30:133;;1102:50;;;1148:1;1145;1138:12;1102:50;1171:61;1224:7;1215:6;1204:9;1200:22;1171:61;:::i;:::-;1278:2;1263:18;;1257:25;1161:71;;-1:-1:-1;1257:25:133;-1:-1:-1;;;;;;1294:32:133;;1291:52;;;1339:1;1336;1329:12;1291:52;1362:63;1417:7;1406:8;1395:9;1391:24;1362:63;:::i;:::-;1352:73;;;874:557;;;;;:::o;1436:380::-;1515:1;1511:12;;;;1558;;;1579:61;;1633:4;1625:6;1621:17;1611:27;;1579:61;1686:2;1678:6;1675:14;1655:18;1652:38;1649:161;;1732:10;1727:3;1723:20;1720:1;1713:31;1767:4;1764:1;1757:15;1795:4;1792:1;1785:15;1649:161;;1436:380;;;:::o;1947:518::-;2049:2;2044:3;2041:11;2038:421;;;2085:5;2082:1;2075:16;2129:4;2126:1;2116:18;2199:2;2187:10;2183:19;2180:1;2176:27;2170:4;2166:38;2235:4;2223:10;2220:20;2217:47;;;-1:-1:-1;2258:4:133;2217:47;2313:2;2308:3;2304:12;2301:1;2297:20;2291:4;2287:31;2277:41;;2368:81;2386:2;2379:5;2376:13;2368:81;;;2445:1;2431:16;;2412:1;2401:13;2368:81;;;2372:3;;2038:421;1947:518;;;:::o;2641:1299::-;2761:10;;-1:-1:-1;;;;;2783:30:133;;2780:56;;;2816:18;;:::i;:::-;2845:97;2935:6;2895:38;2927:4;2921:11;2895:38;:::i;:::-;2889:4;2845:97;:::i;:::-;2991:4;3022:2;3011:14;;3039:1;3034:649;;;;3727:1;3744:6;3741:89;;;-1:-1:-1;3796:19:133;;;3790:26;3741:89;-1:-1:-1;;2598:1:133;2594:11;;;2590:24;2586:29;2576:40;2622:1;2618:11;;;2573:57;3843:81;;3004:930;;3034:649;1894:1;1887:14;;;1931:4;1918:18;;-1:-1:-1;;3070:20:133;;;3188:222;3202:7;3199:1;3196:14;3188:222;;;3284:19;;;3278:26;3263:42;;3391:4;3376:20;;;;3344:1;3332:14;;;;3218:12;3188:222;;;3192:3;3438:6;3429:7;3426:19;3423:201;;;3499:19;;;3493:26;-1:-1:-1;;3582:1:133;3578:14;;;3594:3;3574:24;3570:37;3566:42;3551:58;3536:74;;3423:201;-1:-1:-1;;;;3670:1:133;3654:14;;;3650:22;3637:36;;-1:-1:-1;2641:1299:133:o;4153:222::-;4218:9;;;4239:10;;;4236:133;;;4291:10;4286:3;4282:20;4279:1;4272:31;4326:4;4323:1;4316:15;4354:4;4351:1;4344:15;4236:133;4153:222;;;;:::o;4730:177::-;195:384:82;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f5ffd5b50600436106100b9575f3560e01c80633a46b1a81161007257806395d89b411161005857806395d89b411461017a578063a9059cbb14610182578063dd62ed3e14610195575f5ffd5b80633a46b1a81461013257806370a0823114610145575f5ffd5b806318160ddd116100a257806318160ddd146100fe57806323b872dd14610110578063313ce56714610123575f5ffd5b806306fdde03146100bd578063095ea7b3146100db575b5f5ffd5b6100c56101da565b6040516100d29190610769565b60405180910390f35b6100ee6100e93660046107e4565b61026a565b60405190151581526020016100d2565b6002545b6040519081526020016100d2565b6100ee61011e36600461080c565b610283565b604051601281526020016100d2565b6101026101403660046107e4565b6102a6565b610102610153366004610846565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6100c56102d3565b6100ee6101903660046107e4565b6102e2565b6101026101a336600461085f565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b6060600380546101e990610890565b80601f016020809104026020016040519081016040528092919081815260200182805461021590610890565b80156102605780601f1061023757610100808354040283529160200191610260565b820191905f5260205f20905b81548152906001019060200180831161024357829003601f168201915b5050505050905090565b5f336102778185856102ef565b60019150505b92915050565b5f33610290858285610301565b61029b8585856103d4565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f908152602081905260408120545b9392505050565b6060600480546101e990610890565b5f336102778185856103d4565b6102fc838383600161047d565b505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156103ce57818110156103c0576040517ffb8f41b200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101829052604481018390526064015b60405180910390fd5b6103ce84848484035f61047d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610423576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016103b7565b73ffffffffffffffffffffffffffffffffffffffff8216610472576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016103b7565b6102fc8383836105c2565b73ffffffffffffffffffffffffffffffffffffffff84166104cc576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016103b7565b73ffffffffffffffffffffffffffffffffffffffff831661051b576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016103b7565b73ffffffffffffffffffffffffffffffffffffffff8085165f90815260016020908152604080832093871683529290522082905580156103ce578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105b491815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff83166105f9578060025f8282546105ee91906108e1565b909155506106a99050565b73ffffffffffffffffffffffffffffffffffffffff83165f908152602081905260409020548181101561067e576040517fe450d38c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260248101829052604481018390526064016103b7565b73ffffffffffffffffffffffffffffffffffffffff84165f9081526020819052604090209082900390555b73ffffffffffffffffffffffffffffffffffffffff82166106d2576002805482900390556106fd565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604090208054820190555b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161075c91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107df575f5ffd5b919050565b5f5f604083850312156107f5575f5ffd5b6107fe836107bc565b946020939093013593505050565b5f5f5f6060848603121561081e575f5ffd5b610827846107bc565b9250610835602085016107bc565b929592945050506040919091013590565b5f60208284031215610856575f5ffd5b6102cc826107bc565b5f5f60408385031215610870575f5ffd5b610879836107bc565b9150610887602084016107bc565b90509250929050565b600181811c908216806108a457607f821691505b6020821081036108db577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b8082018082111561027d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea2646970667358221220a1e5a5dd89bfae14009e8e63935b6799447b6ad7c41be7d6368815abadec2b1c64736f6c634300081c0033","sourceMap":"195:384:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89:90;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3998:186;;;;;;:::i;:::-;;:::i;:::-;;;1167:14:133;;1160:22;1142:41;;1130:2;1115:18;3998:186:90;1002:187:133;2849:97:90;2927:12;;2849:97;;;1340:25:133;;;1328:2;1313:18;2849:97:90;1194:177:133;4776:244:90;;;;;;:::i;:::-;;:::i;2707:82::-;;;2780:2;1897:36:133;;1885:2;1870:18;2707:82:90;1755:184:133;457:120:82;;;;;;:::i;:::-;;:::i;3004:116:90:-;;;;;;:::i;:::-;3095:18;;3069:7;3095:18;;;;;;;;;;;;3004:116;1981:93;;;:::i;3315:178::-;;;;;;:::i;:::-;;:::i;3551:140::-;;;;;;:::i;:::-;3657:18;;;;3631:7;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3551:140;1779:89;1824:13;1856:5;1849:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89;:::o;3998:186::-;4071:4;735:10:98;4125:31:90;735:10:98;4141:7:90;4150:5;4125:8;:31::i;:::-;4173:4;4166:11;;;3998:186;;;;;:::o;4776:244::-;4863:4;735:10:98;4919:37:90;4935:4;735:10:98;4950:5:90;4919:15;:37::i;:::-;4966:26;4976:4;4982:2;4986:5;4966:9;:26::i;:::-;-1:-1:-1;5009:4:90;;4776:244;-1:-1:-1;;;;4776:244:90:o;457:120:82:-;3095:18:90;;;526:7:82;3095:18:90;;;;;;;;;;;552::82;545:25;457:120;-1:-1:-1;;;457:120:82:o;1981:93:90:-;2028:13;2060:7;2053:14;;;;;:::i;3315:178::-;3384:4;735:10:98;3438:27:90;735:10:98;3455:2:90;3459:5;3438:9;:27::i;8726:128::-;8810:37;8819:5;8826:7;8835:5;8842:4;8810:8;:37::i;:::-;8726:128;;;:::o;10415:476::-;3657:18;;;;10514:24;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10599:17;10580:36;;10576:309;;;10655:5;10636:16;:24;10632:130;;;10687:60;;;;;3074:42:133;3062:55;;10687:60:90;;;3044:74:133;3134:18;;;3127:34;;;3177:18;;;3170:34;;;3017:18;;10687:60:90;;;;;;;;10632:130;10803:57;10812:5;10819:7;10847:5;10828:16;:24;10854:5;10803:8;:57::i;:::-;10504:387;10415:476;;;:::o;5393:300::-;5476:18;;;5472:86;;5517:30;;;;;5544:1;5517:30;;;3361:74:133;3334:18;;5517:30:90;3215:226:133;5472:86:90;5571:16;;;5567:86;;5610:32;;;;;5639:1;5610:32;;;3361:74:133;3334:18;;5610:32:90;3215:226:133;5567:86:90;5662:24;5670:4;5676:2;5680:5;5662:7;:24::i;9701:432::-;9813:19;;;9809:89;;9855:32;;;;;9884:1;9855:32;;;3361:74:133;3334:18;;9855:32:90;3215:226:133;9809:89:90;9911:21;;;9907:90;;9955:31;;;;;9983:1;9955:31;;;3361:74:133;3334:18;;9955:31:90;3215:226:133;9907:90:90;10006:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10051:76;;;;10101:7;10085:31;;10094:5;10085:31;;;10110:5;10085:31;;;;1340:25:133;;1328:2;1313:18;;1194:177;10085:31:90;;;;;;;;9701:432;;;;:::o;6008:1107::-;6097:18;;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:90;;-1:-1:-1;6093:540:90;;6307:15;;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6386:50;;;;;3074:42:133;3062:55;;6386:50:90;;;3044:74:133;3134:18;;;3127:34;;;3177:18;;;3170:34;;;3017:18;;6386:50:90;2842:368:133;6336:115:90;6571:15;;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;6647:16;;;6643:425;;6810:12;:21;;;;;;;6643:425;;;7021:13;;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;7083:25;;7092:4;7083:25;;;7102:5;7083:25;;;;1340::133;;1328:2;1313:18;;1194:177;7083:25:90;;;;;;;;6008:1107;;;:::o;14:477:133:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;482:2;412:66;407:2;399:6;395:15;391:88;380:9;376:104;372:113;364:121;;;14:477;;;;:::o;496:196::-;564:20;;624:42;613:54;;603:65;;593:93;;682:1;679;672:12;593:93;496:196;;;:::o;697:300::-;765:6;773;826:2;814:9;805:7;801:23;797:32;794:52;;;842:1;839;832:12;794:52;865:29;884:9;865:29;:::i;:::-;855:39;963:2;948:18;;;;935:32;;-1:-1:-1;;;697:300:133:o;1376:374::-;1453:6;1461;1469;1522:2;1510:9;1501:7;1497:23;1493:32;1490:52;;;1538:1;1535;1528:12;1490:52;1561:29;1580:9;1561:29;:::i;:::-;1551:39;;1609:38;1643:2;1632:9;1628:18;1609:38;:::i;:::-;1376:374;;1599:48;;-1:-1:-1;;;1716:2:133;1701:18;;;;1688:32;;1376:374::o;1944:186::-;2003:6;2056:2;2044:9;2035:7;2031:23;2027:32;2024:52;;;2072:1;2069;2062:12;2024:52;2095:29;2114:9;2095:29;:::i;2135:260::-;2203:6;2211;2264:2;2252:9;2243:7;2239:23;2235:32;2232:52;;;2280:1;2277;2270:12;2232:52;2303:29;2322:9;2303:29;:::i;:::-;2293:39;;2351:38;2385:2;2374:9;2370:18;2351:38;:::i;:::-;2341:48;;2135:260;;;;;:::o;2400:437::-;2479:1;2475:12;;;;2522;;;2543:61;;2597:4;2589:6;2585:17;2575:27;;2543:61;2650:2;2642:6;2639:14;2619:18;2616:38;2613:218;;2687:77;2684:1;2677:88;2788:4;2785:1;2778:15;2816:4;2813:1;2806:15;2613:218;;2400:437;;;:::o;3446:279::-;3511:9;;;3532:10;;;3529:190;;;3575:77;3572:1;3565:88;3676:4;3673:1;3666:15;3704:4;3701:1;3694:15","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","getPastVotes(address,uint256)":"3a46b1a8","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subject\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"getPastVotes(address,uint256)\":{\"returns\":{\"_0\":\"The past votes for the account\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"title\":\"MockERC20Votes\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getPastVotes(address,uint256)\":{\"notice\":\"Get the past votes for an account\"}},\"notice\":\"A mock ERC20Votes contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/extensions/mocks/MockERC20Votes.sol\":\"MockERC20Votes\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@semaphore-protocol/=node_modules/@semaphore-protocol/\",\":@solady/=node_modules/solady/\",\":@zk-kit/=node_modules/@zk-kit/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=node_modules/forge-std/\",\":hardhat/=node_modules/hardhat/\",\":poseidon-solidity/=node_modules/poseidon-solidity/\",\":solady/=node_modules/solady/\"]},\"sources\":{\"contracts/test/extensions/mocks/MockERC20Votes.sol\":{\"keccak256\":\"0x281f6e079d6285e44563480e1cf08ec84149ab530289ef223a84a202f2dc89f3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc26b6686cdc8c582ced416f6b3da3927c146d55b93e784a26fb8ba67d085ae0\",\"dweb:/ipfs/QmYws8E6EesoAMh5Ptk3eVjGpzsRqeitUYayCgDJwTXwhE\"]},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x6ef9389a2c07bc40d8a7ba48914724ab2c108fac391ce12314f01321813e6368\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7a5cb39b1e6df68f4dd9a5e76e853d745a74ffb3dfd7df4ae4d2ace6992a171\",\"dweb:/ipfs/QmPbzKR19rdM8X3PLQjsmHRepUKhvoZnedSR63XyGtXZib\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"subject","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPastVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"getPastVotes(address,uint256)":{"returns":{"_0":"The past votes for the account"}},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{"getPastVotes(address,uint256)":{"notice":"Get the past votes for an account"}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@semaphore-protocol/=node_modules/@semaphore-protocol/","@solady/=node_modules/solady/","@zk-kit/=node_modules/@zk-kit/","eth-gas-reporter/=node_modules/eth-gas-reporter/","forge-std/=node_modules/forge-std/","hardhat/=node_modules/hardhat/","poseidon-solidity/=node_modules/poseidon-solidity/","solady/=node_modules/solady/"],"optimizer":{"enabled":true,"runs":200000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/test/extensions/mocks/MockERC20Votes.sol":"MockERC20Votes"},"evmVersion":"prague","libraries":{}},"sources":{"contracts/test/extensions/mocks/MockERC20Votes.sol":{"keccak256":"0x281f6e079d6285e44563480e1cf08ec84149ab530289ef223a84a202f2dc89f3","urls":["bzz-raw://fc26b6686cdc8c582ced416f6b3da3927c146d55b93e784a26fb8ba67d085ae0","dweb:/ipfs/QmYws8E6EesoAMh5Ptk3eVjGpzsRqeitUYayCgDJwTXwhE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x6ef9389a2c07bc40d8a7ba48914724ab2c108fac391ce12314f01321813e6368","urls":["bzz-raw://b7a5cb39b1e6df68f4dd9a5e76e853d745a74ffb3dfd7df4ae4d2ace6992a171","dweb:/ipfs/QmPbzKR19rdM8X3PLQjsmHRepUKhvoZnedSR63XyGtXZib"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"}},"version":1},"id":82}