@verified-network/verified-sdk 0.9.5 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abi/L1distribution/Distribution.json +4 -4
- package/dist/abi/assetmanager/Client.json +13522 -5670
- package/dist/abi/assetmanager/balancer/PrimaryIssueManager.json +59230 -0
- package/dist/abi/assetmanager/balancer/SecondaryIssueManager.json +27235 -0
- package/dist/abi/custody/Vault.json +10 -4
- package/dist/abi/deposits/Bond.json +6 -6
- package/dist/abi/deposits/Cash.json +6 -6
- package/dist/abi/deposits/Factory.json +5 -5
- package/dist/abi/deposits/Rates.json +5 -5
- package/dist/abi/deposits/Security.json +5 -5
- package/dist/abi/liquidity/Liquidity.json +7294 -9689
- package/dist/contract/amm/primary/index.js +3 -2
- package/dist/contract/amm/secondary/index.js +3 -2
- package/dist/contractAddress/index.js +18 -19
- package/package.json +1 -1
|
@@ -18030,15 +18030,21 @@
|
|
|
18030
18030
|
"version": "0.5.7+commit.6da8b019.Emscripten.clang"
|
|
18031
18031
|
},
|
|
18032
18032
|
"networks": {
|
|
18033
|
-
"
|
|
18033
|
+
"4": {
|
|
18034
18034
|
"events": {},
|
|
18035
18035
|
"links": {},
|
|
18036
|
-
"address": "
|
|
18037
|
-
"transactionHash": "
|
|
18036
|
+
"address": "0x8357FB36fFA9dcE78A43Fb33DbFFAAB2738E5B1a",
|
|
18037
|
+
"transactionHash": "0xc1d678d6a2f6aada54f29f3e4923b1036ea0d350cea190e192dbc2a21ca33d4e"
|
|
18038
|
+
},
|
|
18039
|
+
"5": {
|
|
18040
|
+
"events": {},
|
|
18041
|
+
"links": {},
|
|
18042
|
+
"address": "0xF6ebB33E758eC36A2D3065F4633131DFF8307A07",
|
|
18043
|
+
"transactionHash": "0xd87ccb9e2945b1ac990d66f2bfffe9463925e9144efd255c25a0b73cfc68d38b"
|
|
18038
18044
|
}
|
|
18039
18045
|
},
|
|
18040
18046
|
"schemaVersion": "3.4.3",
|
|
18041
|
-
"updatedAt": "2022-
|
|
18047
|
+
"updatedAt": "2022-08-02T14:22:36.484Z",
|
|
18042
18048
|
"networkType": "ethereum",
|
|
18043
18049
|
"devdoc": {
|
|
18044
18050
|
"methods": {
|
|
@@ -742,7 +742,7 @@
|
|
|
742
742
|
"sourceMap": "581:9336:16:-;;;;;;;;;",
|
|
743
743
|
"deployedSourceMap": "581:9336:16:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3878:9;3870:22;;;;;;3943:8;:18;3935:27;;;;;;4021:6;;;;:15;4013:24;;;;;;4229:10;4218:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;4218:31:16;;;;;;;;4201:83;;4218:31;;4251:32;4273:9;4251:21;:32::i;:::-;4201:16;:83::i;:::-;4178:10;4167:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;4167:31:16;;;;;;;:117;;-1:-1:-1;;;;;;4167:117:16;;;;;;;;;;;;581:9336;875:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;875:18:16;;;:::i;:::-;;;;;;;;;;;;;;;;2577:149:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2577:149:3;;;;;;;;:::i;:::-;;;;;;;;1636:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1636:89:3;;;:::i;:::-;;;;;;;;3184:300;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3184:300:3;;;;;;;;:::i;4517:347:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4517:347:16;;;;;;;;:::i;:::-;;3879:207:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3879:207:3;;;;;;;;:::i;9843:65:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9843:65:16;;;:::i;7783:1233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7783:1233:16;;;;;;;;:::i;3226:415::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3226:415:16;;;;;;;;:::i;6924:788::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6924:788:16;;;;;;;;:::i;5702:1153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5702:1153:16;;;;;;;;:::i;5046:182::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5046:182:16;;;;;;;;:::i;3649:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3649:89:16;;;;;;;;:::i;1783:108:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1783:108:3;;;;;;;;:::i;1746:137:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1746:137:2;;;:::i;9064:698:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9064:698:16;;;;;;;;:::i;9774:61::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9774:61:16;;;:::i;959:77:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;959:77:2;;;:::i;:::-;;;;;;;;1310:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1310:92:2;;;:::i;900:20:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;900:20:16;;;:::i;4573:258:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4573:258:3;;;;;;;;:::i;2094:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2094:155:3;;;;;;;;:::i;762:79:27:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;762:79:27;;;:::i;741:142:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;741:142:2;;;;;;;;:::i;5297:105:16:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5297:105:16;;;:::i;:::-;;;;;;;;2307:132:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2307:132:3;;;;;;;;:::i;2032:107:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2032:107:2;;;;;;;;:::i;2992:392:15:-;3045:7;3064:6;3060:320;;-1:-1:-1;3088:1:15;3072:18;;3060:320;3126:1;3109:14;3150:12;3126:1;3150:3;:12::i;:::-;3136:26;;3180:3;3174;:9;3170:83;;;3202:3;3196;:9;3185:20;;;;;3170:83;;;3228:3;3222;:9;3218:35;;;3250:3;3244;:9;3233:20;;;;;3218:35;3313:5;:11;3328:3;3313:18;-1:-1:-1;;;;;3271:39:15;;;;:60;3347:26;;;-1:-1:-1;3060:320:15;2992:392;;;:::o;15491:3613::-;15550:7;15606:6;-1:-1:-1;;;;;15585:11:15;;;;:18;;15600:3;15585:18;;;:27;;;15638:11;;;;:18;;;;;;:27;;;15676:19;;15672:3428;;;15709:9;15722:6;15709:19;15705:104;;;-1:-1:-1;;;;;;15745:6:15;;;;;;;15741:45;;;15760:1;15753:8;;;;;;15741:45;-1:-1:-1;;;;;;15783:3:15;-1:-1:-1;15776:10:15;;-1:-1:-1;15776:10:15;15705:104;15808:1;15801:8;;;;;;15672:3428;15827:9;15840:6;15827:19;15823:3277;;;15855:1;15848:8;;;;;;15823:3277;-1:-1:-1;;;15888:11:15;;;;-1:-1:-1;;;;;15888:49:15;;;;;;;;-1:-1:-1;;;;;15966:44:15;16022:14;16018:91;;16050:1;16038:13;;16018:91;;;-1:-1:-1;;;16064:45:15;16018:91;-1:-1:-1;;;16131:11:15;;;;-1:-1:-1;;;;;16131:49:15;;;;;;;;-1:-1:-1;;;;;16209:44:15;16265:14;16261:91;;16293:1;16281:13;;16261:91;;;-1:-1:-1;;;16307:45:15;16261:91;16365:15;16361:2733;;-1:-1:-1;;;;;;16389:18:15;;-1:-1:-1;;;16389:18:15;:38;;16426:1;16389:38;;;591:34;16389:38;16382:45;;;;;;;;;;16361:2733;16444:15;16440:2654;;-1:-1:-1;;;;;;16468:18:15;;-1:-1:-1;;;16468:18:15;:38;;16505:1;16468:38;;16440:2654;16544:39;;;16600:14;;;;;;;16596:2490;;;16640:3;16632:5;:11;16628:255;;;16652:1;16645:8;;;;;;;;;;;16628:255;16682:1;16674:5;:9;16670:213;;;16685:30;;;;16670:213;;;-1:-1:-1;;16736:5:15;:12;16732:151;;;16757:1;16750:8;;;;;;;;;;;16732:151;16787:1;16779:5;:9;16775:108;;;16829:5;16828:6;;16804:31;;;;;16861:9;16849:21;;16775:108;16897:24;;;;-1:-1:-1;;;16940:45:15;;16936:122;;17016:1;17031:14;;;;17001:16;;;;;16936:122;17076:9;17089:6;17076:19;17072:435;;;17116:5;:45;;-1:-1:-1;;;;;17116:45:15;;;-1:-1:-1;;;;;;17116:45:15;17109:52;;;;;;;;;;;17072:435;-1:-1:-1;;;17196:10:15;:44;17192:126;;;17254:1;17242:13;;17192:126;;;-1:-1:-1;;;;;17274:44:15;;;;17192:126;17481:10;17458:3;17445:9;:16;;17378:5;:46;;17423:1;17378:46;;;-1:-1:-1;;;17378:46:15;-1:-1:-1;;;;;17377:85:15;;:114;17342:151;;17335:158;;;;;;;;;;;16596:2490;17547:1;17539:5;:9;17535:189;;;17579:1;17564:16;;;;;17607:1;17594:14;;;;17535:189;;;17639:1;17631:5;:9;17627:97;;;17671:1;17656:16;;;;;17710:1;17698:9;:13;17686:25;;17627:97;17748:3;17740:5;:11;17736:258;;;17766:1;17753:14;;17736:258;;;17796:1;17788:5;:9;17784:210;;;17848:1;17840:5;:9;17826:1;17813:10;:14;:37;;17854:1;17812:43;17799:56;;17784:210;;;-1:-1:-1;;17876:5:15;:12;17872:122;;;17903:1;17890:14;;17872:122;;;-1:-1:-1;;17925:5:15;:10;17921:73;;;17987:1;17979:5;17978:6;;:10;17964:1;17951:10;:14;:38;;17993:1;17950:44;17937:57;;17921:73;18025:10;18011;:24;18007:161;;18051:10;18037:24;;;;18007:161;;;18118:10;18105;:23;18092:36;;18150:5;18142:13;;18007:161;18184:15;18180:53;;-1:-1:-1;591:34:15;;-1:-1:-1;18213:20:15;;-1:-1:-1;;;;;;18213:20:15;18180:53;18246:11;18260:16;18265:10;18260:3;:16::i;:::-;18246:30;;18293:3;18300;18293:10;18289:515;;;18346:1;18332:10;:15;;-1:-1:-1;;;;;18332:48:15;18319:61;;18407:1;18394:14;;;;18289:515;;;18437:3;18431;:9;18427:377;;;18472:3;:9;;;18499:17;;;18495:247;;;18561:5;18547:10;:19;;-1:-1:-1;;;;;18547:52:15;18534:65;;18628:5;18615:18;;;;18495:247;;;18726:1;;-1:-1:-1;;18685:13:15;18670:28;;;;;18495:247;18427:377;;;;-1:-1:-1;;;;;18760:44:15;;;;18427:377;18821:9;18834:6;18821:19;18817:258;;;18861:5;:45;;-1:-1:-1;;;;;18861:45:15;;;-1:-1:-1;;;;;;18861:45:15;18854:52;;;;;;;;;;;;18817:258;19063:10;19042:3;19029:9;:16;;18964:5;:46;;19009:1;18964:46;;;-1:-1:-1;;;18964:46:15;-1:-1:-1;;;;;18963:83:15;;:110;18930:145;;18923:152;;;;;;;;;;15491:3613;;;;;:::o;875:18:16:-;;;;;;;;;;;;;;;-1:-1:-1;;875:18:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2577:149:3:-;2643:4;2659:39;2668:12;:10;:12::i;:::-;2682:7;2691:6;2659:8;:39::i;:::-;-1:-1:-1;2715:4:3;2577:149;;;;:::o;1636:89::-;1706:12;;1636:89;;:::o;3184:300::-;3273:4;3289:36;3299:6;3307:9;3318:6;3289:9;:36::i;:::-;3335:121;3344:6;3352:12;:10;:12::i;:::-;3366:89;3404:6;3366:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3366:19:3;;;;;;:11;:19;;;;;;3386:12;:10;:12::i;:::-;-1:-1:-1;;;;;3366:33:3;;;;;;;;;;;;-1:-1:-1;3366:33:3;;;:89;;:37;:89;:::i;:::-;3335:8;:121::i;:::-;-1:-1:-1;3473:4:3;3184:300;;;;;;:::o;4517:347:16:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4604:18:16;;;;;;:10;:18;;;;;;4601:256;;4641:20;;:::i;:::-;-1:-1:-1;4664:103:16;;;;;;;;;;;-1:-1:-1;;;;;4664:103:16;;;;;;;;;;4782:6;27:10:-1;;39:1;23:18;;45:23;;-1:-1;4782:14:16;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4782:14:16;;;;;;;;;;;;4832:13;;4811:18;;;:10;:18;;;;;;:34;4601:256;4517:347;;:::o;3879:207:3:-;3959:4;3975:83;3984:12;:10;:12::i;:::-;3998:7;4007:50;4046:10;4007:11;:25;4019:12;:10;:12::i;:::-;-1:-1:-1;;;;;4007:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4007:25:3;;;:34;;;;;;;;;;;:50;:38;:50;:::i;9843:65:16:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;9890:10:16;:8;:10::i;:::-;9843:65::o;7783:1233::-;7981:19;8024:14;8013:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8013:36:16;;;8003:47;;;;;;7981:69;;8061:19;8146:11;8093:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8093:65:16;;;8083:76;;;;;;8061:98;;8215:6;;;;;;;;;-1:-1:-1;;;;;8215:6:16;-1:-1:-1;;;;;8178:43:16;:34;8188:11;8201:2;8205;8209;8178:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8178:34:16;;;;;;;;-1:-1:-1;;;;;8178:43:16;;8170:52;;;;;;8236:7;;:38;;-1:-1:-1;;;;;8236:38:16;;8284:4;;-1:-1:-1;;;;;8236:7:16;;:17;;:38;;8265:8;;8236:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8236:38:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8236:38:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8236:38:16;;;;;;;;;-1:-1:-1;;;;;8236:53:16;;8233:776;;;8305:14;8322:7;:22;8330:13;-1:-1:-1;;;;;8322:22:16;-1:-1:-1;;;;;8322:22:16;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8322:22:16;8305:39;;8359:6;:14;8366:6;-1:-1:-1;;;;;8359:14:16;-1:-1:-1;;;;;8359:14:16;;;;;;;;;;;;:29;8374:13;-1:-1:-1;;;;;8359:29:16;-1:-1:-1;;;;;8359:29:16;;;;;;;;;;;;:44;;8409:9;8359:60;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8359:60:16;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8359:60:16;;;;;-1:-1:-1;;;;;8359:60:16;;;;;;;8487:99;8504:6;:14;8511:6;-1:-1:-1;;;;;8504:14:16;-1:-1:-1;;;;;8504:14:16;;;;;;;;;;;;:29;8519:13;-1:-1:-1;;;;;8504:29:16;-1:-1:-1;;;;;8504:29:16;;;;;;;;;;;;:50;;;;;;;;;;;;8556:29;8578:6;8556:21;:29::i;8487:99::-;8434:6;:14;8441:6;-1:-1:-1;;;;;8434:14:16;-1:-1:-1;;;;;8434:14:16;;;;;;;;;;;;:29;8449:13;-1:-1:-1;;;;;8434:29:16;-1:-1:-1;;;;;8434:29:16;;;;;;;;;;;;:50;;;:152;;;;;-1:-1:-1;;;;;8434:152:16;;;;;;;;;;;;8602:9;:20;8612:9;-1:-1:-1;;;;;8602:20:16;-1:-1:-1;;;;;8602:20:16;;;;;;;;;;;;:35;8623:13;-1:-1:-1;;;;;8602:35:16;-1:-1:-1;;;;;8602:35:16;;;;;;;;;;;;:50;;8658:6;8602:63;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;8602:63:16;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8602:63:16;;;;;-1:-1:-1;;;;;8602:63:16;;;;;;;8739:105;8756:9;:20;8766:9;-1:-1:-1;;;;;8756:20:16;-1:-1:-1;;;;;8756:20:16;;;;;;;;;;;;:35;8777:13;-1:-1:-1;;;;;8756:35:16;-1:-1:-1;;;;;8756:35:16;;;;;;;;;;;;:56;;;;;;;;;;;;8814:29;8836:6;8814:21;:29::i;8739:105::-;-1:-1:-1;;;;;8680:20:16;;;;;;;:9;:20;;;;;;;;:35;;;;;;;;;;;:56;;;:164;;;;;;;-1:-1:-1;;;8680:164:16;-1:-1:-1;;;;;8680:164:16;;;;;;;;;;8859:50;;;;:61;;;8940:57;;;;;8859:61;;8975:6;;8680:35;;8940:57;;;;;;;;;;8233:776;;7783:1233;;;;;;;;;;:::o;3226:415::-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;3357:26:16;3376:6;3357:18;:26::i;:::-;3394:7;:30;;-1:-1:-1;;;;;;3394:30:16;3413:10;3394:30;;;3449:23;;;;3466:5;;3449:23;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3449:23:16;;;3435:4;:38;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3493:20:16;;-1:-1:-1;;;;;3493:20:16;;:15;;;;:20;;:5;;3509:1;;3511;;3493:20;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3493:20:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3493:20:16;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3493:20:16;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;3493::16;;;;;;;;;3484:29;;;;:6;;:29;;;;;;:::i;:::-;-1:-1:-1;3524:8:16;:16;;;3551:12;:24;;;3586:5;:20;;-1:-1:-1;;;;;;3586:20:16;-1:-1:-1;;;;;3586:20:16;;;;;;;;;;3617:6;:16;;-1:-1:-1;;;;;;3617:16:16;3586:20;3617:16;;;;;;;;;;;;;1264:55:5;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;1264:55;3226:415:16;;;;;;:::o;6924:788::-;7124:19;7167:14;7156:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7156:36:16;;;7146:47;;;;;;7124:69;;7204:19;7289:11;7236:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7236:65:16;;;7226:76;;;;;;7204:98;;7358:6;;;;;;;;;-1:-1:-1;;;;;7358:6:16;-1:-1:-1;;;;;7321:43:16;:34;7331:11;7344:2;7348;7352;7321:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7321:34:16;;;;;;;;-1:-1:-1;;;;;7321:43:16;;7313:52;;;;;;7379:7;;:38;;-1:-1:-1;;;;;7379:38:16;;7427:4;;-1:-1:-1;;;;;7379:7:16;;:17;;:38;;7408:8;;7379:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7379:38:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7379:38:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;7379:38:16;;;;;;;;;-1:-1:-1;;;;;7379:53:16;;7376:329;;;7486:29;7508:6;7486:21;:29::i;:::-;-1:-1:-1;;;;;7448:14:16;;;;;;;:6;:14;;;;;;;;:26;;;;;;;;;;;:35;;;:67;;-1:-1:-1;;;;;;7448:67:16;;;;;;;;;;;;;7530:41;;;;:52;;;7597:7;:19;;;;;;;:28;;-1:-1:-1;;;;;;7597:28:16;;;;;7645:48;;;;;7530:52;;7674:6;;7448:26;;7645:48;;;;;;;;;;6924:788;;;;;;;;;;:::o;5702:1153::-;5801:6;;;;:15;5793:52;;;;-1:-1:-1;;;;;5793:52:16;;;;;;;;;-1:-1:-1;;;;;5888:18:16;;5856:10;5888:18;;;:10;:18;;;;;;:20;5885:50;;-1:-1:-1;5931:4:16;5885:50;5949:5;5946:902;;;5970:44;5979:10;5999:4;6006:7;5970:8;:44::i;:::-;-1:-1:-1;;;;;6059:18:16;;6029:20;6059:18;;;:10;:18;;;;;;6052:6;:26;;:6;;6059:18;6052:26;;;;;;;;;;;;;;;;:36;;;6029:59;;6112:6;-1:-1:-1;;;;;6106:26:16;;6133:10;6153:4;6160:7;6106:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:62:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6106:62:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6106:62:16;;;;;;;;;6103:289;;;-1:-1:-1;;;;;6240:18:16;;;;;;:10;:18;;;;;;;;:32;;;;;;;;;6223:82;;6240:32;;6274:30;6296:7;6274:21;:30::i;6223:82::-;-1:-1:-1;;;;;6188:18:16;;;;;;:10;:18;;;;;;;;:32;;;;;;;;;;:117;;-1:-1:-1;;;;;;6188:117:16;;;;;;;;;;;;;6329:47;;;;;;6188:32;;6368:7;;6329:47;;;;;;;;;;6103:289;5946:902;;;;6449:10;6504:1;6438:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6438:31:16;;;;;;;;6421:81;;6438:31;;6471:30;6493:7;6471:21;:30::i;:::-;6421:16;:81::i;:::-;:84;;;6418:430;;6583:10;6572:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6572:31:16;;;;;;;;6555:81;;6572:31;;6605:30;6627:7;6605:21;:30::i;:::-;6555:16;:81::i;:::-;6532:10;6521:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;6521:31:16;;;;;;;;;:115;;-1:-1:-1;;;;;;6521:115:16;;;;;;;;-1:-1:-1;;;;;6698:18:16;;;;:10;:18;;;;;:27;;;;;;;;;6681:77;;6698:27;6727:30;6749:7;6727:21;:30::i;6681:77::-;-1:-1:-1;;;;;6651:18:16;;;;;;:10;:18;;;;;;;;-1:-1:-1;;;;;6651:27:16;;;;;;;;;:107;;-1:-1:-1;;;;;;6651:107:16;;;;;;;;;;;;;6778:42;;;;;;6812:7;;6778:42;;;;;;;;;;6418:430;5702:1153;;;;:::o;5046:182::-;-1:-1:-1;;;;;5133:18:16;;5114:4;5133:18;;;:10;:18;;;;;;:20;5130:90;;-1:-1:-1;5175:4:16;5168:11;;5130:90;-1:-1:-1;5215:5:16;5208:12;;3649:89;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;3714:6:16;:16;;-1:-1:-1;;;;;3714:16:16;;;;;-1:-1:-1;;;;;;3714:16:16;;;;;;;;;3649:89::o;1783:108:3:-;-1:-1:-1;;;;;1866:18:3;1840:7;1866:18;;;:9;:18;;;;;;;1783:108::o;1746:137:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;1828:6;;1807:40;;1844:1;;-1:-1:-1;;;;;1828:6:2;;1807:40;;1844:1;;1807:40;1857:6;:19;;-1:-1:-1;;;;;;1857:19:2;;;1746:137::o;9064:698:16:-;9263:19;9306:14;9295:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9295:36:16;;;9285:47;;;;;;9263:69;;9343:19;9428:11;9375:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9375:65:16;;;9365:76;;;;;;9343:98;;9497:6;;;;;;;;;-1:-1:-1;;;;;9497:6:16;-1:-1:-1;;;;;9460:43:16;:34;9470:11;9483:2;9487;9491;9460:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9460:34:16;;;;;;;;-1:-1:-1;;;;;9460:43:16;;9452:52;;;;;;9518:8;-1:-1:-1;;;;;9518:17:16;9515:169;;;9550:43;;-1:-1:-1;;;;;9550:35:16;;;:43;;;;;9586:6;;9550:43;;;;9586:6;9550:35;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9550:43:16;9515:169;;;9624:48;;-1:-1:-1;;;;;9624:48:16;;-1:-1:-1;;;;;9624:30:16;;;;;:48;;9655:8;;9665:6;;9624:48;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9624:48:16;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9624:48:16;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;9624:48:16;;;;;;;;;;9515:169;9712:8;-1:-1:-1;;;;;9699:55:16;;9722:8;9732:6;9740:13;9699:55;;;;;;;;;9774:61;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;9819:8:16;:6;:8::i;959:77:2:-;1023:6;;-1:-1:-1;;;;;1023:6:2;959:77;:::o;1310:92::-;1389:6;;1350:4;;-1:-1:-1;;;;;1389:6:2;1373:12;:10;:12::i;:::-;-1:-1:-1;;;;;1373:22:2;;1366:29;;1310:92;:::o;900:20:16:-;;;;;;;;;;;;;;;-1:-1:-1;;900:20:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4573:258:3;4658:4;4674:129;4683:12;:10;:12::i;:::-;4697:7;4706:96;4745:15;4706:96;;;;;;;;;;;;;;;;;:11;:25;4718:12;:10;:12::i;:::-;-1:-1:-1;;;;;4706:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4706:25:3;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2094:155::-;2163:4;2179:42;2189:12;:10;:12::i;:::-;2203:9;2214:6;2179:9;:42::i;762:79:27:-;827:6;;;;762:79;:::o;741:142:2:-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;806:6:2;:15;;-1:-1:-1;;;;;;806:15:2;-1:-1:-1;;;;;806:15:2;;;;;;;;;;;836:40;;869:6;;;-1:-1:-1;;836:40:2;;-1:-1:-1;;836:40:2;1268:14:5;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;741:142:2;;:::o;5297:105:16:-;5349:20;5388:6;5381:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5381:13:16;;;;;;;;;;;;;;;;;;;;;;5297:105;:::o;2307:132:3:-;-1:-1:-1;;;;;2405:18:3;;;2379:7;2405:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2307:132::o;2032:107:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;2104:28;2123:8;2104:18;:28::i;:::-;2032:107;:::o;49968:570:15:-;50015:7;50043:1;50039;:5;50030:15;;;;;;50052:14;-1:-1:-1;;;50081:40:15;;50077:75;;50131:3;50125:9;;;;50136:13;50077:75;50166:19;50161:1;:24;50157:57;;50195:2;50189:8;;;;50199:12;50157:57;50228:11;50223:1;:16;50219:49;;50249:2;50243:8;;;;50253:12;50219:49;50282:7;50277:1;:12;50273:45;;50299:2;50293:8;;;;50303:12;50273:45;50332:5;50327:1;:10;50323:41;;50347:1;50341:7;;;;50350:11;50323:41;50378:4;50373:1;:9;50369:40;;50392:1;50386:7;;;;50395:11;50369:40;50423:3;50418:1;:8;50414:39;;50436:1;50430:7;;;;50439:11;50414:39;50467:3;50462:1;:8;50458:25;;50482:1;50472:11;50527:6;49968:570;-1:-1:-1;;49968:570:15:o;867:96:0:-;946:10;867:96;:::o;7427:332:3:-;-1:-1:-1;;;;;7520:19:3;;7512:68;;;;-1:-1:-1;;;;;7512:68:3;;;;;;;;;-1:-1:-1;;;;;7598:21:3;;7590:68;;;;-1:-1:-1;;;;;7590:68:3;;;;;;;;;-1:-1:-1;;;;;7669:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;7720:32;;;;;7699:6;;7720:32;;;;;;;;;;7427:332;;;:::o;5305:464::-;-1:-1:-1;;;;;5402:20:3;;5394:70;;;;-1:-1:-1;;;;;5394:70:3;;;;;;;;;-1:-1:-1;;;;;5482:23:3;;5474:71;;;;-1:-1:-1;;;;;5474:71:3;;;;;;;;;5576;5598:6;5576:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:17:3;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5556:17:3;;;;;;;:9;:17;;;;;;:91;;;;5680:20;;;;;;;:32;;5705:6;5680:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5657:20:3;;;;;;;:9;:20;;;;;;;:55;;;;5727:35;;;;;;;;;;5755:6;;5727:35;;1732:187:1;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;1837:29:1;;;;;;;;;;-1:-1:-1;;;1888:5:1;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;;;938:46:1;;;;;;;;491:88:27;531:6;:14;;-1:-1:-1;;531:14:27;;;561:10;;;;540:5;;561:10;491:88::o;1409:498:5:-;1820:4;1864:17;1895:7;1409:498;:::o;13643:906:15:-;13702:4;-1:-1:-1;;;;;13734:11:15;;;;:48;-1:-1:-1;;;;;13798:47:15;;;13789:57;;;;;;-1:-1:-1;;;;;13884:11:15;;;;:48;-1:-1:-1;;;;;13948:47:15;;;13939:57;;;;;;-1:-1:-1;;;;;;14062:6:15;;;;;;;;;:56;;;-1:-1:-1;;;;;14072:9:15;-1:-1:-1;;;;;14072:46:15;;14062:56;14053:66;;;;;;-1:-1:-1;;;;;;14130:6:15;;;;;;;14126:419;;;14145:1;14138:8;;;;;;14126:419;14165:14;-1:-1:-1;;;14191:1:15;14182:11;;-1:-1:-1;;;;;14182:49:15;;;14165:66;;14239:14;-1:-1:-1;;;14265:1:15;14256:11;;-1:-1:-1;;;;;14256:49:15;;;14239:66;;14318:9;14314:225;;;14343:9;14339:83;;;14373:9;-1:-1:-1;;;;;14361:21:15;:9;-1:-1:-1;;;;;14361:21:15;;:37;;14396:1;14361:37;;;-1:-1:-1;;14361:37:15;14354:44;;;;;;;;14314:225;14452:9;14448:82;;;14470:1;14463:8;;;;;;;;14448:82;14505:9;-1:-1:-1;;;;;14493:21:15;:9;-1:-1:-1;;;;;14493:21:15;;:37;;-1:-1:-1;;14493:37:15;;;14523:1;14486:44;;;;;;;;19578:133;19637:7;19659:47;19664:1;-1:-1:-1;;;19667:38:15;;19659:3;:47::i;298:83:27:-;336:6;:13;;-1:-1:-1;;336:13:27;345:4;336:13;;;365:8;;;;336:6;;365:8;298:83::o;2240:225:2:-;-1:-1:-1;;;;;2313:22:2;;2305:73;;;;-1:-1:-1;;;;;2305:73:2;;;;;;;;;2414:6;;2393:38;;-1:-1:-1;;;;;2393:38:2;;;;2414:6;;2393:38;;2414:6;;2393:38;2441:6;:17;;-1:-1:-1;;;;;;2441:17:2;-1:-1:-1;;;;;2441:17:2;;;;;;;;;;2240:225::o;581:9336:16:-;;;;;;;;;;-1:-1:-1;581:9336:16;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;581:9336:16;;;-1:-1:-1;581:9336:16;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;5:118:-1;;72:46;110:6;97:20;72:46;;130:122;;208:39;239:6;233:13;208:39;;259:116;;334:36;362:6;356:13;334:36;;382:118;;449:46;487:6;474:20;449:46;;508:444;;621:3;614:4;606:6;602:17;598:27;588:2;;639:1;636;629:12;588:2;669:6;663:13;691:65;706:49;748:6;706:49;;;691:65;;;682:74;;776:6;769:5;762:21;812:4;804:6;800:17;845:4;838:5;834:16;880:3;871:6;866:3;862:16;859:25;856:2;;;897:1;894;887:12;856:2;907:39;939:6;934:3;929;907:39;;;581:371;;;;;;;;1085:114;;1150:44;1186:6;1173:20;1150:44;;1206:241;;1310:2;1298:9;1289:7;1285:23;1281:32;1278:2;;;1326:1;1323;1316:12;1278:2;1361:1;1378:53;1423:7;1403:9;1378:53;;;1368:63;1272:175;-1:-1;;;;1272:175;1454:263;;1569:2;1557:9;1548:7;1544:23;1540:32;1537:2;;;1585:1;1582;1575:12;1537:2;1620:1;1637:64;1693:7;1673:9;1637:64;;1724:366;;;1845:2;1833:9;1824:7;1820:23;1816:32;1813:2;;;1861:1;1858;1851:12;1813:2;1896:1;1913:53;1958:7;1938:9;1913:53;;;1903:63;;1875:97;2003:2;2021:53;2066:7;2057:6;2046:9;2042:22;2021:53;;;2011:63;;1982:98;1807:283;;;;;;2097:491;;;;2235:2;2223:9;2214:7;2210:23;2206:32;2203:2;;;2251:1;2248;2241:12;2203:2;2286:1;2303:53;2348:7;2328:9;2303:53;;;2293:63;;2265:97;2393:2;2411:53;2456:7;2447:6;2436:9;2432:22;2411:53;;;2401:63;;2372:98;2501:2;2519:53;2564:7;2555:6;2544:9;2540:22;2519:53;;;2509:63;;2480:98;2197:391;;;;;;2595:366;;;2716:2;2704:9;2695:7;2691:23;2687:32;2684:2;;;2732:1;2729;2722:12;2684:2;2767:1;2784:53;2829:7;2809:9;2784:53;;;2774:63;;2746:97;2874:2;2892:53;2937:7;2928:6;2917:9;2913:22;2892:53;;3341:491;;;;3479:2;3467:9;3458:7;3454:23;3450:32;3447:2;;;3495:1;3492;3485:12;3447:2;3530:1;3547:53;3592:7;3572:9;3547:53;;;3537:63;;3509:97;3637:2;3655:53;3700:7;3691:6;3680:9;3676:22;3655:53;;;3645:63;;3616:98;3745:2;3763:53;3808:7;3799:6;3788:9;3784:22;3763:53;;3839:257;;3951:2;3939:9;3930:7;3926:23;3922:32;3919:2;;;3967:1;3964;3957:12;3919:2;4002:1;4019:61;4072:7;4052:9;4019:61;;4103:743;;;;;;4275:3;4263:9;4254:7;4250:23;4246:33;4243:2;;;4292:1;4289;4282:12;4243:2;4327:1;4344:53;4389:7;4369:9;4344:53;;;4334:63;;4306:97;4434:2;4452:53;4497:7;4488:6;4477:9;4473:22;4452:53;;;4442:63;;4413:98;4542:2;4560:53;4605:7;4596:6;4585:9;4581:22;4560:53;;;4550:63;;4521:98;4650:2;4668:53;4713:7;4704:6;4693:9;4689:22;4668:53;;;4658:63;;4629:98;4758:3;4777:53;4822:7;4813:6;4802:9;4798:22;4777:53;;;4767:63;;4737:99;4237:609;;;;;;;;;4853:362;;4978:2;4966:9;4957:7;4953:23;4949:32;4946:2;;;4994:1;4991;4984:12;4946:2;5029:24;;5073:18;5062:30;;5059:2;;;5105:1;5102;5095:12;5059:2;5125:74;5191:7;5182:6;5171:9;5167:22;5125:74;;5222:1117;;;;;;;;;5443:3;5431:9;5422:7;5418:23;5414:33;5411:2;;;5460:1;5457;5450:12;5411:2;5495:1;5512:53;5557:7;5537:9;5512:53;;;5502:63;;5474:97;5602:2;5620:53;5665:7;5656:6;5645:9;5641:22;5620:53;;;5610:63;;5581:98;5710:2;5728:53;5773:7;5764:6;5753:9;5749:22;5728:53;;;5718:63;;5689:98;5818:2;5836:53;5881:7;5872:6;5861:9;5857:22;5836:53;;;5826:63;;5797:98;5926:3;5945:53;5990:7;5981:6;5970:9;5966:22;5945:53;;;5935:63;;5905:99;6035:3;6054:51;6097:7;6088:6;6077:9;6073:22;6054:51;;;6044:61;;6014:97;6142:3;6161:53;6206:7;6197:6;6186:9;6182:22;6161:53;;;6151:63;;6121:99;6251:3;6270:53;6315:7;6306:6;6295:9;6291:22;6270:53;;;6260:63;;6230:99;5405:934;;;;;;;;;;;;6347:257;;6474:90;6560:3;6552:6;6474:90;;;-1:-1;;6593:4;6584:14;;6467:137;6612:142;6703:45;6742:5;6703:45;;;6698:3;6691:58;6685:69;;;6761:110;6834:31;6859:5;6834:31;;7058:781;;7243:74;7311:5;7243:74;;;7330:106;7429:6;7424:3;7330:106;;;7323:113;;7456:76;7526:5;7456:76;;;7553:1;7538:279;7563:6;7560:1;7557:13;7538:279;;;7610:103;7709:3;7700:6;7694:13;7610:103;;;7603:110;;7730:80;7803:6;7730:80;;;7720:90;-1:-1;7585:1;7578:9;7538:279;;;-1:-1;7830:3;;7222:617;-1:-1;;;;7222:617;7847:111;7924:28;7946:5;7924:28;;7965:110;8038:31;8063:5;8038:31;;8344:159;8445:52;8465:31;8490:5;8465:31;;;8445:52;;8510:150;8609:45;8648:5;8609:45;;8824:347;;8936:39;8969:5;8936:39;;;8987:71;9051:6;9046:3;8987:71;;;8980:78;;9063:52;9108:6;9103:3;9096:4;9089:5;9085:16;9063:52;;;9136:29;9158:6;9136:29;;;9127:39;;;;8916:255;-1:-1;;;8916:255;9525:465;;9685:67;9749:2;9744:3;9685:67;;;9785:66;9765:87;;-1:-1;;;;;9881:2;9872:12;;9865:88;9981:2;9972:12;;9671:319;-1:-1;;9671:319;9999:221;-1:-1;;;;;10135:79;;10128:92;10229:400;;10407:85;10489:2;10484:3;10407:85;;;10525:66;10505:87;;10620:2;10611:12;;10393:236;-1:-1;;10393:236;10638:465;;10798:67;10862:2;10857:3;10798:67;;;10898:66;10878:87;;-1:-1;;;;;10994:2;10985:12;;10978:88;11094:2;11085:12;;10784:319;-1:-1;;10784:319;11112:465;;11272:67;11336:2;11331:3;11272:67;;;11372:66;11352:87;;-1:-1;;;;;11468:2;11459:12;;11452:88;11568:2;11559:12;;11258:319;-1:-1;;11258:319;11586:364;;11746:67;11810:2;11805:3;11746:67;;;11846:66;11826:87;;11941:2;11932:12;;11732:218;-1:-1;;11732:218;11959:221;-1:-1;;;;;12095:79;;12088:92;12189:364;;12349:67;12413:2;12408:3;12349:67;;;12449:66;12429:87;;12544:2;12535:12;;12335:218;-1:-1;;12335:218;12562:364;;12722:67;12786:2;12781:3;12722:67;;;12822:66;12802:87;;12917:2;12908:12;;12708:218;-1:-1;;12708:218;12935:465;;13095:67;13159:2;13154:3;13095:67;;;13195:66;13175:87;;13296:66;13291:2;13282:12;;13275:88;13391:2;13382:12;;13081:319;-1:-1;;13081:319;13409:363;;13569:66;13633:1;13628:3;13569:66;;;-1:-1;;;;;13648:87;;13763:2;13754:12;;13555:217;-1:-1;;13555:217;13781:465;;13941:67;14005:2;14000:3;13941:67;;;14041:66;14021:87;;-1:-1;;;;;14137:2;14128:12;;14121:88;14237:2;14228:12;;13927:319;-1:-1;;13927:319;14255:465;;14415:67;14479:2;14474:3;14415:67;;;14515:66;14495:87;;-1:-1;;;;;14611:2;14602:12;;14595:88;14711:2;14702:12;;14401:319;-1:-1;;14401:319;14775:467;14972:22;;14902:4;14893:14;;;15000:61;14897:3;14972:22;15000:61;;;14922:145;15147:4;15140:5;15136:16;15130:23;15159:62;15215:4;15210:3;15206:14;15193:11;15159:62;;15376:114;15455:29;15478:5;15455:29;;15497:244;;15616:75;15687:3;15678:6;15616:75;;;-1:-1;15713:2;15704:12;;15604:137;-1:-1;15604:137;15748:511;;15975:148;16119:3;15975:148;;;15968:155;;16134:75;16205:3;16196:6;16134:75;;16266:213;16384:2;16369:18;;16398:71;16373:9;16442:6;16398:71;;16486:467;16676:2;16661:18;;16690:79;16665:9;16742:6;16690:79;;;16780:80;16856:2;16845:9;16841:18;16832:6;16780:80;;;16871:72;16939:2;16928:9;16924:18;16915:6;16871:72;;16960:324;17106:2;17091:18;;17120:71;17095:9;17164:6;17120:71;;;17202:72;17270:2;17259:9;17255:18;17246:6;17202:72;;17291:441;17499:2;17513:47;;;17484:18;;17574:148;17484:18;17708:6;17574:148;;17739:201;17851:2;17836:18;;17865:65;17840:9;17903:6;17865:65;;17947:499;18145:2;18130:18;;18159:79;18134:9;18211:6;18159:79;;;18249:88;18333:2;18322:9;18318:18;18309:6;18249:88;;;18348;18432:2;18421:9;18417:18;18408:6;18348:88;;18453:518;18672:2;18657:18;;18686:71;18661:9;18730:6;18686:71;;;18805:9;18799:4;18795:20;18790:2;18779:9;18775:18;18768:48;18830:131;18956:4;18830:131;;18978:324;19124:2;19109:18;;19138:71;19113:9;19182:6;19138:71;;19309:435;19483:2;19468:18;;19497:71;19472:9;19541:6;19497:71;;;19579:72;19647:2;19636:9;19632:18;19623:6;19579:72;;;19662;19730:2;19719:9;19715:18;19706:6;19662:72;;19751:539;19949:3;19934:19;;19964:71;19938:9;20008:6;19964:71;;;20046:68;20110:2;20099:9;20095:18;20086:6;20046:68;;;20125:72;20193:2;20182:9;20178:18;20169:6;20125:72;;;20208;20276:2;20265:9;20261:18;20252:6;20208:72;;;19920:370;;;;;;;;20297:293;20431:2;20445:47;;;20416:18;;20506:74;20416:18;20566:6;20506:74;;20905:407;21096:2;21110:47;;;21081:18;;21171:131;21081:18;21171:131;;21319:450;21528:2;21513:18;;21542:134;21517:9;21542:134;;;21687:72;21755:2;21744:9;21740:18;21731:6;21687:72;;21776:407;21967:2;21981:47;;;21952:18;;22042:131;21952:18;22042:131;;22190:407;22381:2;22395:47;;;22366:18;;22456:131;22366:18;22456:131;;22604:407;22795:2;22809:47;;;22780:18;;22870:131;22780:18;22870:131;;23018:450;23227:2;23212:18;;23241:134;23216:9;23241:134;;23475:407;23666:2;23680:47;;;23651:18;;23741:131;23651:18;23741:131;;23889:407;24080:2;24094:47;;;24065:18;;24155:131;24065:18;24155:131;;24303:407;24494:2;24508:47;;;24479:18;;24569:131;24479:18;24569:131;;24717:407;24908:2;24922:47;;;24893:18;;24983:131;24893:18;24983:131;;25131:407;25322:2;25336:47;;;25307:18;;25397:131;25307:18;25397:131;;25545:213;25663:2;25648:18;;25677:71;25652:9;25721:6;25677:71;;25765:256;25827:2;25821:9;25853:17;;;25928:18;25913:34;;25949:22;;;25910:62;25907:2;;;25985:1;25982;25975:12;25907:2;26001;25994:22;25805:216;;-1:-1;25805:216;26028:259;;26172:18;26164:6;26161:30;26158:2;;;26204:1;26201;26194:12;26158:2;-1:-1;26277:4;26248;26225:17;;;;-1:-1;;26221:33;26267:15;;26095:192;26296:141;26425:4;26413:17;;26394:43;26446:127;26556:12;;26540:33;26926:198;27064:19;;;27113:4;27104:14;;27057:67;27458:105;;27527:31;27552:5;27527:31;;27570:92;27643:13;27636:21;;27619:43;27755:128;-1:-1;;;;;27824:54;;27807:76;27976:88;28054:4;28043:16;;28026:38;28684:129;;28771:37;28802:5;28771:37;;28820:123;;28907:31;28932:5;28907:31;;29080:121;;29159:37;29190:5;29159:37;;29331:268;29396:1;29403:101;29417:6;29414:1;29411:13;29403:101;;;29484:11;;;29478:18;29465:11;;;29458:39;29439:2;29432:10;29403:101;;;29519:6;29516:1;29513:13;29510:2;;;-1:-1;;29584:1;29566:16;;29559:27;29380:219;29688:97;29776:2;29756:14;-1:-1;;29752:28;;29736:49",
|
|
744
744
|
"source": "// Verified bond manager\r\n// (c) Kallol Borah, 2021\r\n\r\npragma solidity 0.5.7;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport \"./interfaces/IBond.sol\";\r\nimport \"./interfaces/IFactory.sol\";\r\nimport \"./interfaces/IRates.sol\";\r\nimport \"./utilities/Pausable.sol\";\r\nimport \"./utilities/StringUtils.sol\";\r\nimport \"abdk-libraries-solidity/ABDKMathQuad.sol\";\r\nimport \"@openzeppelin/upgrades/contracts/Initializable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\";\r\n\r\ncontract Bond is IBond, ERC20, Ownable, Pausable {\r\n\r\n using stringutils for *;\r\n\r\n using ABDKMathQuad for uint256;\r\n using ABDKMathQuad for int256;\r\n using ABDKMathQuad for bytes16;\r\n\r\n //address of bridge\r\n address bridge;\r\n\r\n //name of Verified token (eg, Via-USD)\r\n string public name;\r\n string public symbol;\r\n bytes32 private bondName;\r\n bytes32 private bondCurrency;\r\n\r\n //verified token factory address\r\n IFactory private factory;\r\n \r\n //verified rates\r\n IRates private rates; \r\n \r\n //a Verified bond has some value, corresponds to a fiat currency\r\n //can have many purchasers and a issuer that have agreed to a zero coupon rate which determines the start price of the bond\r\n //and a tenure in unix timestamps of seconds counted from 1970-01-01. Verified bonds are of one year tenure.\r\n struct bond{\r\n address[] counterParties;\r\n bytes16 parValue; //face value of bond issued or purchased in the bond's currency\r\n bytes16 purchasedIssueAmount; //amount purchased at price of bond for paidInCurrency\r\n bytes16 paidInAmount; //amount paid in as collateral for issue of bond or as payment for purchase of bond\r\n bytes32 paidInCurrency; //currency denomination of collateral for issue or payment for purchase of bond\r\n }\r\n\r\n //mapping issuer (address) to address of bond token (address) which acts as identifier for bonds on offer\r\n mapping(address => mapping (address => bond)) private issues;\r\n\r\n //mapping purchaser (address) to address of bond token (address) which acts as identifier for bonds subscribed\r\n mapping(address => mapping (address => bond)) private purchases;\r\n\r\n //mapping issued bond (address) to issuer (address)\r\n mapping(address => address) private issuers;\r\n \r\n //mapping to party => currency deposited => amount\r\n mapping(address => mapping(bytes32 => bytes16)) private L1deposits;\r\n mapping(address => mapping(bytes32 => bytes16)) private L2deposits;\r\n\r\n //supported ERC20 tokens for issuing Verified bond tokens\r\n IBond.token[] private tokens;\r\n mapping(address => uint256) private tokenIndex;\r\n\r\n event BondIssueRequest(address indexed issuer, bytes32 currency, uint256 amount);\r\n event BondIssued(address indexed issuer, bytes32 collateralCurrency, uint256 issuedAmount, address token);\r\n event BondRedeemed(address indexed redeemer, bytes32 redemptionCurrency, uint256 redemptionAmount, address token);\r\n event BondPurchased(address indexed purchaser, bytes32 paidInCurrency, uint256 purchasedAmount, address token);\r\n\r\n function initialize(bytes32 _name, bytes32 _currency, address _owner, address _fee, address _bridge) public initializer {\r\n Ownable.initialize(_owner);\r\n factory = IFactory(msg.sender);\r\n name = string(abi.encodePacked(_name));\r\n symbol = _name.substring(0,5);\r\n bondName = _name;\r\n bondCurrency = _currency;\r\n rates = IRates(_fee);\r\n bridge = _bridge;\r\n }\r\n\r\n function setSigner(address _signer) onlyOwner external{\r\n bridge = _signer;\r\n }\r\n\r\n //handling pay in of ether for issue of via bond tokens\r\n function() external payable{\r\n //ether paid in\r\n require(msg.value !=0);\r\n //only to pay in ether\r\n require(msg.data.length==0);\r\n // contract must not be paused\r\n require(paused == false);\r\n //check aml status\r\n //require(fee.amlCheck(msg.sender)==true); \r\n //issue verified bond tokens\r\n L1deposits[msg.sender][\"ether\"] = ABDKMathQuad.add(L1deposits[msg.sender][\"ether\"], ABDKMathQuad.fromUInt(msg.value)); \r\n }\r\n\r\n /**\r\n Specifies list of supported tokens that can be deposited to issue Verified cash tokens\r\n @param _token address of token supported\r\n @param _name name of token supported\r\n */\r\n function supportTokens(address _token, bytes32 _name) onlyOwner external {\r\n if(tokenIndex[_token]==0){\r\n IBond.token memory t = IBond.token ({\r\n tokenName: _name,\r\n tokenAddress: _token\r\n });\r\n tokens.push(t);\r\n tokenIndex[_token] = tokens.length;\r\n }\r\n }\r\n\r\n /**\r\n Checks if a specified token is supported for issuing Verified cash tokens\r\n @param _token token that is supported for issuing cash tokens\r\n */\r\n function checkSupportForToken(address _token) external view returns(bool){\r\n if(tokenIndex[_token]>0)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n /**\r\n Returns array of tokens supported\r\n */\r\n function getSupportedTokens() external view returns(IBond.token[] memory){\r\n return tokens;\r\n }\r\n\r\n /**\r\n Used by external apps (eg, exchange, wallet) to buy Verified bond token \r\n @param _token address of token used by investor to buy the bond token\r\n @param _amount amount of token that is transferred from investor to this bond token issuing contract\r\n */\r\n function requestIssue(address _token, uint256 _amount, address _buyer) external {\r\n require(paused == false, \"Contract in paused state\");\r\n bool found = false;\r\n if(tokenIndex[_token]>0)\r\n found = true;\r\n if(found){\r\n _approve(msg.sender, address(this), _amount);\r\n bytes32 currencyName = tokens[tokenIndex[_token]].tokenName;\r\n if(ERC20(_token).transferFrom(msg.sender, address(this), _amount)){\r\n L2deposits[_buyer][currencyName] = ABDKMathQuad.add(L2deposits[_buyer][currencyName], ABDKMathQuad.fromUInt(_amount));\r\n emit BondIssueRequest(_buyer, currencyName, _amount);\r\n }\r\n }\r\n else if(ABDKMathQuad.cmp(L1deposits[msg.sender][\"ether\"], ABDKMathQuad.fromUInt(_amount))>=0){\r\n L1deposits[msg.sender][\"ether\"] = ABDKMathQuad.sub(L1deposits[msg.sender][\"ether\"], ABDKMathQuad.fromUInt(_amount));\r\n L2deposits[_buyer][\"ether\"] = ABDKMathQuad.add(L2deposits[_buyer][\"ether\"], ABDKMathQuad.fromUInt(_amount));\r\n emit BondIssueRequest(_buyer, \"ether\", _amount); \r\n }\r\n }\r\n \r\n //adds issued Verified bond tokens to user balances\r\n function addIssuedBalance(uint256 amount, address issuer, bytes32 currency, address issuedBond, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n if(factory.getIssuer(\"ViaBond\", currency)==address(this)){\r\n issues[issuer][issuedBond].parValue = ABDKMathQuad.fromUInt(amount);\r\n issues[issuer][issuedBond].paidInCurrency = currency;\r\n issuers[issuedBond] = issuer;\r\n emit BondIssued(issuer, currency, amount, issuedBond);\r\n }\r\n }\r\n\r\n //adds purchased Verified bond tokens to user balances \r\n function purchase(uint256 amount, address purchaser, bytes32 currency, address purchasedBond, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n if(factory.getIssuer(\"ViaBond\", currency)==address(this)){\r\n address issuer = issuers[purchasedBond];\r\n issues[issuer][purchasedBond].counterParties.push(purchaser);\r\n issues[issuer][purchasedBond].purchasedIssueAmount = ABDKMathQuad.add(issues[issuer][purchasedBond].purchasedIssueAmount, ABDKMathQuad.fromUInt(amount)); \r\n purchases[purchaser][purchasedBond].counterParties.push(issuer);\r\n purchases[purchaser][purchasedBond].purchasedIssueAmount = ABDKMathQuad.add(purchases[purchaser][purchasedBond].purchasedIssueAmount, ABDKMathQuad.fromUInt(amount));\r\n purchases[purchaser][purchasedBond].paidInCurrency = currency;\r\n emit BondPurchased(purchaser, currency, amount, purchasedBond);\r\n }\r\n }\r\n \r\n //redeems issued Verified bond\r\n function redeemBond(uint256 amount, address payOutTo, bytes32 currency, address redeemedToken, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n if(currency==\"ether\")\r\n address(uint160(payOutTo)).transfer(amount); \r\n else{\r\n IERC20(redeemedToken).transfer(payOutTo, amount);\r\n }\r\n emit BondRedeemed(payOutTo, currency, amount, redeemedToken);\r\n }\r\n \r\n function pause() onlyOwner public {\r\n _pause();\r\n }\r\n\r\n function unpause() onlyOwner public {\r\n _unpause();\r\n }\r\n \r\n}",
|
|
745
|
-
"sourcePath": "D:\\Code\\verified-L1\\
|
|
745
|
+
"sourcePath": "D:\\Code\\verified-payments-L1\\contracts\\Bond.sol",
|
|
746
746
|
"ast": {
|
|
747
747
|
"absolutePath": "project:/contracts/Bond.sol",
|
|
748
748
|
"exportedSymbols": {
|
|
@@ -23619,17 +23619,17 @@
|
|
|
23619
23619
|
"version": "0.5.7+commit.6da8b019.Emscripten.clang"
|
|
23620
23620
|
},
|
|
23621
23621
|
"networks": {
|
|
23622
|
-
"
|
|
23622
|
+
"5": {
|
|
23623
23623
|
"events": {},
|
|
23624
23624
|
"links": {
|
|
23625
|
-
"stringutils": "
|
|
23625
|
+
"stringutils": "0x7278c66729698f70c87Cf48727dd24C2b4B25C88"
|
|
23626
23626
|
},
|
|
23627
|
-
"address": "
|
|
23628
|
-
"transactionHash": "
|
|
23627
|
+
"address": "0xc5838564A9eB72a1badc1a7d930b4F380D35c8A7",
|
|
23628
|
+
"transactionHash": "0xa59aaaf938bc47fd58170b842f1057d2c8221c52b597c54efb90b1542f9b78e8"
|
|
23629
23629
|
}
|
|
23630
23630
|
},
|
|
23631
23631
|
"schemaVersion": "3.4.3",
|
|
23632
|
-
"updatedAt": "2022-
|
|
23632
|
+
"updatedAt": "2022-12-06T05:41:00.618Z",
|
|
23633
23633
|
"networkType": "ethereum",
|
|
23634
23634
|
"devdoc": {
|
|
23635
23635
|
"methods": {
|
|
@@ -833,7 +833,7 @@
|
|
|
833
833
|
"sourceMap": "706:17966:17:-;;;;;;;;;",
|
|
834
834
|
"deployedSourceMap": "706:17966:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2945:9;2937:22;;;;;;3010:8;:18;3002:27;;;;;;3087:6;;;;:15;3079:24;;;;;;3271:10;3260:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;3260:31:17;;;;;;;:45;3243:97;;3260:45;;3307:32;3329:9;3307:21;:32::i;:::-;3243:16;:97::i;:::-;3206:10;3195:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;3195:31:17;;;;;;;:145;;-1:-1:-1;;;;;;3195:145:17;;;;;;;;;;;;706:17966;1025:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1025:18:17;;;:::i;:::-;;;;;;;;;;;;;;;;2577:149:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2577:149:3;;;;;;;;:::i;:::-;;;;;;;;1077:28:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1077:28:17;;;:::i;:::-;;;;;;;;1636:89:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1636:89:3;;;:::i;10636:1383:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10636:1383:17;;;;;;;;:::i;3575:347::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3575:347:17;;;;;;;;:::i;:::-;;3879:207:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3879:207:3;;;;;;;;:::i;18602:65:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18602:65:17;;;:::i;2297:411::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2297:411:17;;;;;;;;:::i;4768:1265::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4768:1265:17;;;;;;;;:::i;4104:182::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4104:182:17;;;;;;;;:::i;2716:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2716:89:17;;;;;;;;:::i;1783:108:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1783:108:3;;;;;;;;:::i;1746:137:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1746:137:2;;;:::i;6968:906:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6968:906:17;;;;;;;;:::i;18535:61::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18535:61:17;;;:::i;959:77:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;959:77:2;;;:::i;:::-;;;;;;;;1310:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1310:92:2;;;:::i;1050:20:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1050:20:17;;;:::i;9258:1238::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9258:1238:17;;;;;;;;:::i;4573:258:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4573:258:3;;;;;;;;:::i;2094:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2094:155:3;;;;;;;;:::i;762:79:27:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;762:79:27;;;:::i;741:142:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;741:142:2;;;;;;;;:::i;4355:105:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4355:105:17;;;:::i;:::-;;;;;;;;2307:132:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2307:132:3;;;;;;;;:::i;7925:1270:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7925:1270:17;;;;;;;;:::i;6108:745::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6108:745:17;;;;;;;;:::i;2032:107:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2032:107:2;;;;;;;;:::i;2992:392:15:-;3045:7;3064:6;3060:320;;-1:-1:-1;3088:1:15;3072:18;;3060:320;3126:1;3109:14;3150:12;3126:1;3150:3;:12::i;:::-;3136:26;;3180:3;3174;:9;3170:83;;;3202:3;3196;:9;3185:20;;;;;3170:83;;;3228:3;3222;:9;3218:35;;;3250:3;3244;:9;3233:20;;;;;3218:35;3313:5;:11;3328:3;3313:18;-1:-1:-1;;;;;3271:39:15;;;;:60;3347:26;;;-1:-1:-1;3060:320:15;2992:392;;;:::o;15491:3613::-;15550:7;15606:6;-1:-1:-1;;;;;15585:11:15;;;;:18;;15600:3;15585:18;;;:27;;;15638:11;;;;:18;;;;;;:27;;;15676:19;;15672:3428;;;15709:9;15722:6;15709:19;15705:104;;;-1:-1:-1;;;;;;15745:6:15;;;;;;;15741:45;;;15760:1;15753:8;;;;;;15741:45;-1:-1:-1;;;;;;15783:3:15;-1:-1:-1;15776:10:15;;-1:-1:-1;15776:10:15;15705:104;15808:1;15801:8;;;;;;15672:3428;15827:9;15840:6;15827:19;15823:3277;;;15855:1;15848:8;;;;;;15823:3277;-1:-1:-1;;;15888:11:15;;;;-1:-1:-1;;;;;15888:49:15;;;;;;;;-1:-1:-1;;;;;15966:44:15;16022:14;16018:91;;16050:1;16038:13;;16018:91;;;-1:-1:-1;;;16064:45:15;16018:91;-1:-1:-1;;;16131:11:15;;;;-1:-1:-1;;;;;16131:49:15;;;;;;;;-1:-1:-1;;;;;16209:44:15;16265:14;16261:91;;16293:1;16281:13;;16261:91;;;-1:-1:-1;;;16307:45:15;16261:91;16365:15;16361:2733;;-1:-1:-1;;;;;;16389:18:15;;-1:-1:-1;;;16389:18:15;:38;;16426:1;16389:38;;;591:34;16389:38;16382:45;;;;;;;;;;16361:2733;16444:15;16440:2654;;-1:-1:-1;;;;;;16468:18:15;;-1:-1:-1;;;16468:18:15;:38;;16505:1;16468:38;;16440:2654;16544:39;;;16600:14;;;;;;;16596:2490;;;16640:3;16632:5;:11;16628:255;;;16652:1;16645:8;;;;;;;;;;;16628:255;16682:1;16674:5;:9;16670:213;;;16685:30;;;;16670:213;;;-1:-1:-1;;16736:5:15;:12;16732:151;;;16757:1;16750:8;;;;;;;;;;;16732:151;16787:1;16779:5;:9;16775:108;;;16829:5;16828:6;;16804:31;;;;;16861:9;16849:21;;16775:108;16897:24;;;;-1:-1:-1;;;16940:45:15;;16936:122;;17016:1;17031:14;;;;17001:16;;;;;16936:122;17076:9;17089:6;17076:19;17072:435;;;17116:5;:45;;-1:-1:-1;;;;;17116:45:15;;;-1:-1:-1;;;;;;17116:45:15;17109:52;;;;;;;;;;;17072:435;-1:-1:-1;;;17196:10:15;:44;17192:126;;;17254:1;17242:13;;17192:126;;;-1:-1:-1;;;;;17274:44:15;;;;17192:126;17481:10;17458:3;17445:9;:16;;17378:5;:46;;17423:1;17378:46;;;-1:-1:-1;;;17378:46:15;-1:-1:-1;;;;;17377:85:15;;:114;17342:151;;17335:158;;;;;;;;;;;16596:2490;17547:1;17539:5;:9;17535:189;;;17579:1;17564:16;;;;;17607:1;17594:14;;;;17535:189;;;17639:1;17631:5;:9;17627:97;;;17671:1;17656:16;;;;;17710:1;17698:9;:13;17686:25;;17627:97;17748:3;17740:5;:11;17736:258;;;17766:1;17753:14;;17736:258;;;17796:1;17788:5;:9;17784:210;;;17848:1;17840:5;:9;17826:1;17813:10;:14;:37;;17854:1;17812:43;17799:56;;17784:210;;;-1:-1:-1;;17876:5:15;:12;17872:122;;;17903:1;17890:14;;17872:122;;;-1:-1:-1;;17925:5:15;:10;17921:73;;;17987:1;17979:5;17978:6;;:10;17964:1;17951:10;:14;:38;;17993:1;17950:44;17937:57;;17921:73;18025:10;18011;:24;18007:161;;18051:10;18037:24;;;;18007:161;;;18118:10;18105;:23;18092:36;;18150:5;18142:13;;18007:161;18184:15;18180:53;;-1:-1:-1;591:34:15;;-1:-1:-1;18213:20:15;;-1:-1:-1;;;;;;18213:20:15;18180:53;18246:11;18260:16;18265:10;18260:3;:16::i;:::-;18246:30;;18293:3;18300;18293:10;18289:515;;;18346:1;18332:10;:15;;-1:-1:-1;;;;;18332:48:15;18319:61;;18407:1;18394:14;;;;18289:515;;;18437:3;18431;:9;18427:377;;;18472:3;:9;;;18499:17;;;18495:247;;;18561:5;18547:10;:19;;-1:-1:-1;;;;;18547:52:15;18534:65;;18628:5;18615:18;;;;18495:247;;;18726:1;;-1:-1:-1;;18685:13:15;18670:28;;;;;18495:247;18427:377;;;;-1:-1:-1;;;;;18760:44:15;;;;18427:377;18821:9;18834:6;18821:19;18817:258;;;18861:5;:45;;-1:-1:-1;;;;;18861:45:15;;;-1:-1:-1;;;;;;18861:45:15;18854:52;;;;;;;;;;;;18817:258;19063:10;19042:3;19029:9;:16;;18964:5;:46;;19009:1;18964:46;;;-1:-1:-1;;;18964:46:15;-1:-1:-1;;;;;18963:83:15;;:110;18930:145;;18923:152;;;;;;;;;;15491:3613;;;;;:::o;1025:18:17:-;;;;;;;;;;;;;;;-1:-1:-1;;1025:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2577:149:3:-;2643:4;2659:39;2668:12;:10;:12::i;:::-;2682:7;2691:6;2659:8;:39::i;:::-;-1:-1:-1;2715:4:3;2577:149;;;;:::o;1077:28:17:-;;;;:::o;1636:89:3:-;1706:12;;1636:89;;:::o;10636:1383:17:-;10786:6;;10723:4;;10786:6;;:15;10778:24;;;;;;11120:1;11031:87;11048:40;11070:17;11080:6;11070:9;:17::i;:::-;11048:21;:40::i;:::-;11089:28;11111:5;11089:21;:28::i;:::-;11031:16;:87::i;:::-;:90;;;;11023:99;;;;;;-1:-1:-1;;;;;11207:25:17;;11227:4;11207:25;11204:807;;;11326:69;11333:28;11355:5;11333:21;:28::i;:::-;11363:6;-1:-1:-1;;;;;11389:4:17;11326:6;:69::i;:::-;11323:151;;;-1:-1:-1;11421:4:17;11414:11;;11323:151;-1:-1:-1;11469:5:17;11462:12;;11204:807;11504:7;;:25;;-1:-1:-1;;;;;11504:25:17;;-1:-1:-1;;;;;11504:7:17;;;;:15;;:25;;11520:8;;11504:25;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11504:25:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11504:25:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11504:25:17;;;;;;;;;-1:-1:-1;;;;;11504:36:17;:76;;;-1:-1:-1;11544:7:17;;:25;;-1:-1:-1;;;;;11544:25:17;;-1:-1:-1;;;;;11544:7:17;;;;:15;;:25;;11560:8;;11544:25;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11544:25:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11544:25:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11544:25:17;;;;;;;;;-1:-1:-1;;;;;11544:36:17;11504:76;11501:510;;;11595:34;11605:6;11613:8;11623:5;11595:9;:34::i;:::-;-1:-1:-1;11650:4:17;11643:11;;11501:510;11854:66;11861:28;11883:5;11861:21;:28::i;:::-;11891:6;-1:-1:-1;;;;;11911:8:17;11854:6;:66::i;11851:148::-;10636:1383;;;;;:::o;3575:347::-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3662:18:17;;;;;;:10;:18;;;;;;3659:256;;3699:20;;:::i;:::-;-1:-1:-1;3722:103:17;;;;;;;;;;;-1:-1:-1;;;;;3722:103:17;;;;;;;;;;3840:6;27:10:-1;;39:1;23:18;;45:23;;-1:-1;3840:14:17;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3840:14:17;;;;;;;;;;;;3890:13;;3869:18;;;:10;:18;;;;;;:34;3659:256;3575:347;;:::o;3879:207:3:-;3959:4;3975:83;3984:12;:10;:12::i;:::-;3998:7;4007:50;4046:10;4007:11;:25;4019:12;:10;:12::i;:::-;-1:-1:-1;;;;;4007:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4007:25:3;;;:34;;;;;;;;;;;:50;:38;:50;:::i;:::-;3975:8;:83::i;18602:65:17:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;18649:10:17;:8;:10::i;:::-;18602:65::o;2297:411::-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;2427:26:17;2446:6;2427:18;:26::i;:::-;2464:7;:30;;-1:-1:-1;;;;;;2464:30:17;2483:10;2464:30;;;2519:23;;;;2536:5;;2519:23;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2519:23:17;;;2505:4;:38;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2563:20:17;;-1:-1:-1;;;;;2563:20:17;;:15;;;;:20;;:5;;2579:1;;2581;;2563:20;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2563:20:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2563:20:17;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2563:20:17;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;2563::17;;;;;;;;;2554:29;;;;:6;;:29;;;;;;:::i;:::-;-1:-1:-1;2594:13:17;:25;;;2630:5;:20;;-1:-1:-1;;;;;;2630:20:17;-1:-1:-1;;;;;2630:20:17;;;;;;;;;;2661:6;:16;;-1:-1:-1;;;;;;2661:16:17;2630:20;2661:16;;;;;;;;;;;-1:-1:-1;;;;;;2688:12:17;;;1264:55:5;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;1264:55;2297:411:17;;;;;;:::o;4768:1265::-;4867:6;;;;:15;4859:52;;;;-1:-1:-1;;;;;4859:52:17;;;;;;;;;-1:-1:-1;;;;;4954:18:17;;4922:10;4954:18;;;:10;:18;;;;;;:20;4951:50;;-1:-1:-1;4997:4:17;4951:50;5015:5;5012:1014;;;5048:44;5057:10;5077:4;5084:7;5048:8;:44::i;:::-;-1:-1:-1;;;;;5137:18:17;;5107:20;5137:18;;;:10;:18;;;;;;5130:6;:28;;:6;;-1:-1:-1;;5137:20:17;;5130:28;;;;;;;;;;;;;;;;:38;;;5107:61;;5192:6;-1:-1:-1;;;;;5186:26:17;;5213:10;5233:4;5240:7;5186:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5186:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5186:62:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5186:62:17;;;;;;;;;5183:317;;;-1:-1:-1;;;;;5334:18:17;;;;;;:10;:18;;;;;;;;:32;;;;;;;;:46;5317:96;;5334:46;;5382:30;5404:7;5382:21;:30::i;5317:96::-;-1:-1:-1;;;;;5268:18:17;;;;;;:10;:18;;;;;;;;:32;;;;;;;;;;:145;;-1:-1:-1;;;;;;5268:145:17;;;;;;;;;;;;;5437:47;;;;;;5268:32;;5476:7;;5437:47;;;;;;;;;;5183:317;5012:1014;;;;5557:10;5626:1;5546:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5546:31:17;;;;;;;:45;5529:95;;5546:45;;5593:30;5615:7;5593:21;:30::i;5529:95::-;:98;;;5526:500;;5719:10;5708:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5708:31:17;;;;;;;:45;5691:95;;5708:45;;5755:30;5777:7;5755:21;:30::i;:::-;5691:16;:95::i;:::-;5654:10;5643:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5643:31:17;;;;;;;;;:143;;-1:-1:-1;;;;;;5643:143:17;;;;;;;;-1:-1:-1;;;;;5862:18:17;;;;:10;:18;;;;;:27;;;;;;;;:41;5845:91;;5862:41;5905:30;5927:7;5905:21;:30::i;5845:91::-;-1:-1:-1;;;;;5801:18:17;;;;;;:10;:18;;;;;;;;-1:-1:-1;;;;;5801:27:17;;;;;;;;;:135;;-1:-1:-1;;;;;;5801:135:17;;;;;;;;;;;;;5956:42;;;;;;5990:7;;5956:42;;;;;;;;;;5526:500;4768:1265;;;;:::o;4104:182::-;-1:-1:-1;;;;;4191:18:17;;4172:4;4191:18;;;:10;:18;;;;;;:20;4188:90;;-1:-1:-1;4233:4:17;4226:11;;4188:90;-1:-1:-1;4273:5:17;4266:12;;2716:89;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;2781:6:17;:16;;-1:-1:-1;;;;;2781:16:17;;;;;-1:-1:-1;;;;;;2781:16:17;;;;;;;;;2716:89::o;1783:108:3:-;-1:-1:-1;;;;;1866:18:3;1840:7;1866:18;;;:9;:18;;;;;;;1783:108::o;1746:137:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;1828:6;;1807:40;;1844:1;;-1:-1:-1;;;;;1828:6:2;;1807:40;;1844:1;;1807:40;1857:6;:19;;-1:-1:-1;;;;;;1857:19:2;;;1746:137::o;6968:906:17:-;7175:19;7218:14;7207:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7207:36:17;;;7197:47;;;;;;7175:69;;7255:19;7340:11;7287:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7287:65:17;;;7277:76;;;;;;7255:98;;7409:6;;;;;;;;;-1:-1:-1;;;;;7409:6:17;-1:-1:-1;;;;;7372:43:17;:34;7382:11;7395:2;7399;7403;7372:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7372:34:17;;;;;;;;-1:-1:-1;;;;;7372:43:17;;7364:52;;;;;;-1:-1:-1;;;;;7464:22:17;;7547:1;7464:22;;;:10;:22;;;;;;;;:32;;;;;;;;:46;7430:115;;7447:95;;7464:46;;7512:29;7534:6;7512:21;:29::i;7447:95::-;7543:1;7430:16;:115::i;:::-;:118;;;7427:440;;-1:-1:-1;;;;;7585:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:46;7568:95;;7585:46;;7633:29;7655:6;7633:21;:29::i;7568:95::-;-1:-1:-1;;;;;;7695:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:46;7678:95;;7695:46;;7743:29;7765:6;7743:21;:29::i;7678:95::-;;7814:10;-1:-1:-1;;;;;7793:62:17;;7826:10;7838:8;7848:6;7793:62;;;;;;;;;;;;;;;;;7427:440;6968:906;;;;;;;;;;:::o;18535:61::-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;18580:8:17;:6;:8::i;959:77:2:-;1023:6;;-1:-1:-1;;;;;1023:6:2;959:77;:::o;1310:92::-;1389:6;;1350:4;;-1:-1:-1;;;;;1389:6:2;1373:12;:10;:12::i;:::-;-1:-1:-1;;;;;1373:22:2;;1366:29;;1310:92;:::o;1050:20:17:-;;;;;;;;;;;;;;;-1:-1:-1;;1050:20:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9258:1238;9470:19;9513:14;9502:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9502:36:17;;;9492:47;;;;;;9470:69;;9550:19;9635:11;9582:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9582:65:17;;;9572:76;;;;;;9550:98;;9704:6;;;;;;;;;-1:-1:-1;;;;;9704:6:17;-1:-1:-1;;;;;9667:43:17;:34;9677:11;9690:2;9694;9698;9667:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9667:34:17;;;;;;;;-1:-1:-1;;;;;9667:43:17;;9659:52;;;;;;-1:-1:-1;;;;;9788:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:46;9771:98;;9788:46;;9836:32;9858:9;9836:21;:32::i;9771:98::-;-1:-1:-1;;;;;9722:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:147;;-1:-1:-1;;;;;;9722:147:17;;;;;;;;9946:22;;;:10;:22;;;;;:32;;;;;;:46;9929:98;;9946:46;9994:32;10016:9;9994:21;:32::i;9929:98::-;-1:-1:-1;;;;;9880:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:147;;-1:-1:-1;;;;;;9880:147:17;;;;;;;;;;;;10038:28;10052:4;10059:6;10038:5;:28::i;:::-;10077:44;10095:4;10102:10;10114:6;10077:9;:44::i;:::-;-1:-1:-1;;;;;10197:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:45;10180:94;;-1:-1:-1;;;10197:45:17;;;;10244:29;10266:6;10244:21;:29::i;10180:94::-;-1:-1:-1;;;;;10132:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:142;;-1:-1:-1;;;;;10132:142:17;-1:-1:-1;;;10132:142:17;;;;;;;;;;;;;10350:22;;;:10;:22;;;;;:32;;;;;;;;:45;10333:94;;10350:45;;;;;10397:29;10419:6;10397:21;:29::i;10333:94::-;-1:-1:-1;;;;;10285:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;;;:142;;;;;;;-1:-1:-1;;;10285:142:17;-1:-1:-1;;;;;10285:142:17;;;;;;;;;;10466:13;;10443:45;;10285:22;;10443:45;;;;10466:13;10481:6;;10443:45;;4573:258:3;4658:4;4674:129;4683:12;:10;:12::i;:::-;4697:7;4706:96;4745:15;4706:96;;;;;;;;;;;;;;;;;:11;:25;4718:12;:10;:12::i;:::-;-1:-1:-1;;;;;4706:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4706:25:3;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2094:155::-;2163:4;2179:42;2189:12;:10;:12::i;:::-;2203:9;2214:6;2179:9;:42::i;762:79:27:-;827:6;;;;762:79;:::o;741:142:2:-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;806:6:2;:15;;-1:-1:-1;;;;;;806:15:2;-1:-1:-1;;;;;806:15:2;;;;;;;;;;;836:40;;869:6;;;-1:-1:-1;;836:40:2;;-1:-1:-1;;836:40:2;1268:14:5;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;741:142:2;;:::o;4355:105:17:-;4407:20;4446:6;4439:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4439:13:17;;;;;;;;;;;;;;;;;;;;;;4355:105;:::o;2307:132:3:-;-1:-1:-1;;;;;2405:18:3;;;2379:7;2405:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2307:132::o;7925:1270:17:-;8126:19;8169:14;8158:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8158:36:17;;;8148:47;;;;;;8126:69;;8206:19;8291:11;8238:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8238:65:17;;;8228:76;;;;;;8206:98;;8360:6;;;;;;;;;-1:-1:-1;;;;;8360:6:17;-1:-1:-1;;;;;8323:43:17;:34;8333:11;8346:2;8350;8354;8323:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8323:34:17;;;;;;;;-1:-1:-1;;;;;8323:43:17;;8315:52;;;;;;8424:30;8446:7;8424:21;:30::i;:::-;-1:-1:-1;;;;;8378:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:76;;;;;;;-1:-1:-1;;;8378:76:17;-1:-1:-1;;;;;8378:76:17;;;;;;;;;-1:-1:-1;;;;;8476:17:17;;8473:657;;;8513:43;;-1:-1:-1;;;;;8513:35:17;;;:43;;;;;8549:6;;8513:43;;;;8549:6;8513:35;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;8635:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:44;8618:93;;8635:44;;8681:29;8703:6;8681:21;:29::i;8618:93::-;-1:-1:-1;;;;;8571:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:140;;-1:-1:-1;;;;;;8571:140:17;;;;;;;;;;;;8473:657;;;8756:9;8752:367;8771:6;:13;8769:15;;8752:367;;;8833:8;8812:6;8819:1;8812:9;;;;;;;;;;;;;;;;;;:19;;;:29;8809:295;;;8871:6;8878:1;8871:9;;;;;;;;;;;;;;;;:22;:9;;;;;:22;;8865:56;;-1:-1:-1;;;;;8865:56:17;;-1:-1:-1;;;;;8871:22:17;;;;8865:38;;:56;;8904:8;;8914:6;;8865:56;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8865:56:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8865:56:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8865:56:17;;;;;;;;;-1:-1:-1;;;;;;9008:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:44;8991:93;;9008:44;;9054:29;9076:6;9054:21;:29::i;8991:93::-;-1:-1:-1;;;;;8944:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:140;;-1:-1:-1;;;;;;8944:140:17;;;;;;;;;;;;8809:295;8786:3;;8752:367;;;;8473:657;9160:8;-1:-1:-1;;;;;9147:40:17;;9170:8;9180:6;9147:40;;;;;;;;6108:745;6292:19;6335:14;6324:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6324:36:17;;;6314:47;;;;;;6292:69;;6372:19;6457:11;6404:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6404:65:17;;;6394:76;;;;;;6372:98;;6526:6;;;;;;;;;-1:-1:-1;;;;;6526:6:17;-1:-1:-1;;;;;6489:43:17;:34;6499:11;6512:2;6516;6520;6489:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6489:34:17;;;;;;;;-1:-1:-1;;;;;6489:43:17;;6481:52;;;;;;6555:7;;:38;;-1:-1:-1;;;;;6555:38:17;;6603:4;;-1:-1:-1;;;;;6555:7:17;;:17;;:38;;6584:8;;6555:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6555:38:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6555:38:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6555:38:17;;;;;;;;;-1:-1:-1;;;;;6555:53:17;;6552:294;;;-1:-1:-1;;;;;6629:117:17;;6703:17;;;;:10;:17;;;;;;;;:27;;;;;;;;:40;6629:117;;6651:8;;6661:84;;6674:7;;6683:61;;-1:-1:-1;;;6703:40:17;;;;6683:19;:61::i;:::-;6661:12;:84::i;:::-;6629:117;;;;;;;;;;;;;;;;6804:30;6826:7;6804:21;:30::i;:::-;-1:-1:-1;;;;;6761:17:17;;;;;;:10;:17;;;;;;;;:27;;;;;;;;:73;;;;;;;-1:-1:-1;;;6761:73:17;-1:-1:-1;;;;;6761:73:17;;;;;;;;;6552:294;6108:745;;;;;;;;;:::o;2032:107:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;2104:28;2123:8;2104:18;:28::i;:::-;2032:107;:::o;49968:570:15:-;50015:7;50043:1;50039;:5;50030:15;;;;;;50052:14;-1:-1:-1;;;50081:40:15;;50077:75;;50131:3;50125:9;;;;50136:13;50077:75;50166:19;50161:1;:24;50157:57;;50195:2;50189:8;;;;50199:12;50157:57;50228:11;50223:1;:16;50219:49;;50249:2;50243:8;;;;50253:12;50219:49;50282:7;50277:1;:12;50273:45;;50299:2;50293:8;;;;50303:12;50273:45;50332:5;50327:1;:10;50323:41;;50347:1;50341:7;;;;50350:11;50323:41;50378:4;50373:1;:9;50369:40;;50392:1;50386:7;;;;50395:11;50369:40;50423:3;50418:1;:8;50414:39;;50436:1;50430:7;;;;50439:11;50414:39;50467:3;50462:1;:8;50458:25;;50482:1;50472:11;50527:6;49968:570;-1:-1:-1;;49968:570:15:o;867:96:0:-;946:10;867:96;:::o;7427:332:3:-;-1:-1:-1;;;;;7520:19:3;;7512:68;;;;-1:-1:-1;;;;;7512:68:3;;;;;;;;;-1:-1:-1;;;;;7598:21:3;;7590:68;;;;-1:-1:-1;;;;;7590:68:3;;;;;;;;;-1:-1:-1;;;;;7669:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;7720:32;;;;;7699:6;;7720:32;;;;;;;;;;7427:332;;;:::o;13643:906:15:-;13702:4;-1:-1:-1;;;;;13734:11:15;;;;:48;-1:-1:-1;;;;;13798:47:15;;;13789:57;;;;;;-1:-1:-1;;;;;13884:11:15;;;;:48;-1:-1:-1;;;;;13948:47:15;;;13939:57;;;;;;-1:-1:-1;;;;;;14062:6:15;;;;;;;;;:56;;;-1:-1:-1;;;;;14072:9:15;-1:-1:-1;;;;;14072:46:15;;14062:56;14053:66;;;;;;-1:-1:-1;;;;;;14130:6:15;;;;;;;14126:419;;;14145:1;14138:8;;;;;;14126:419;14165:14;-1:-1:-1;;;14191:1:15;14182:11;;-1:-1:-1;;;;;14182:49:15;;;14165:66;;14239:14;-1:-1:-1;;;14265:1:15;14256:11;;-1:-1:-1;;;;;14256:49:15;;;14239:66;;14318:9;14314:225;;;14343:9;14339:83;;;14373:9;-1:-1:-1;;;;;14361:21:15;:9;-1:-1:-1;;;;;14361:21:15;;:37;;14396:1;14361:37;;;-1:-1:-1;;14361:37:15;14354:44;;;;;;;;14314:225;14452:9;14448:82;;;14470:1;14463:8;;;;;;;;14448:82;14505:9;-1:-1:-1;;;;;14493:21:15;:9;-1:-1:-1;;;;;14493:21:15;;:37;;-1:-1:-1;;14493:37:15;;;14523:1;14486:44;;;;;;;;12241:5486:17;12341:4;;;12395:5302;12411:6;:13;12409:15;;:48;;;;;12456:1;12428:27;12448:6;12428:19;:27::i;:::-;:29;12409:48;12395:5302;;;-1:-1:-1;;;;;12625:17:17;;12687:1;12625:17;;;:10;:17;;;;;12643:6;:9;;12608:77;;12625:17;12687:1;;12650;;12643:9;;;;;;;;;;;;;;;;;;;;;:19;12625:38;;;;;;;;;;;;:51;-1:-1:-1;;;12625:51:17;;;;12678:6;12608:16;:77::i;:::-;:80;;;12605:5081;;12708:13;12724:148;12741:77;12758:6;12766:10;:17;12777:5;-1:-1:-1;;;;;12766:17:17;-1:-1:-1;;;;;12766:17:17;;;;;;;;;;;;:38;12784:6;12791:1;12784:9;;;;;;;;;;;;;;;;;;;;;;;:19;12766:38;;;;;;;;;;;;:51;-1:-1:-1;;;12766:51:17;;;;12741:16;:77::i;:::-;-1:-1:-1;;;;;12819:17:17;;;;;;:10;:17;;;;;12837:6;:9;;12819:17;;;12844:1;;12837:9;;;;;;;;;;;;;;;;;;;;;:19;12819:38;;;;;;;;;;;;:52;;;12724:16;:148::i;:::-;12708:164;;12946:77;12963:10;:17;12974:5;-1:-1:-1;;;;;12963:17:17;-1:-1:-1;;;;;12963:17:17;;;;;;;;;;;;:38;12981:6;12988:1;12981:9;;;;;;;;;;;;;;;;;;;;;;;:19;12963:38;;;;;;;;;;;;:52;;;13017:5;12946:16;:77::i;:::-;-1:-1:-1;;;;;12891:17:17;;;;;;:10;:17;;;;;12909:6;:9;;12891:17;;;12916:1;;12909:9;;;;;;;;;;;;;;;;:19;;;12891:38;;;;;;;;;;;:52;;;:132;;;;;-1:-1:-1;;;;;12891:132:17;;;;;;;;;;;;13096:77;13113:10;:17;13124:5;-1:-1:-1;;;;;13113:17:17;-1:-1:-1;;;;;13113:17:17;;;;;;;;;;;;:38;13131:6;13138:1;13131:9;;;;;;;;;;;;;;;;;;;;;;;:19;13113:38;;;;;;;;;;;;:51;-1:-1:-1;;;13113:51:17;;;;13166:6;13096:16;:77::i;:::-;-1:-1:-1;;;;;13042:17:17;;;;;;:10;:17;;;;;13060:6;:9;;13042:17;;;13067:1;;13060:9;;;;;;;;;;;;;;;;;;;;;:19;13042:38;;;;;;;;;;;;:131;;;;;;;-1:-1:-1;;;13042:131:17;-1:-1:-1;;;;;13042:131:17;;;;;;;;;13201:4;;;-1:-1:-1;;;13201:4:17;;;;13200:5;13192:14;;;;;;13225:4;:11;;-1:-1:-1;;;;;;13225:11:17;-1:-1:-1;;;13225:11:17;;;-1:-1:-1;;;;;13258:19:17;;13255:1629;;;13344:41;13350:5;13357:27;13377:6;13357:19;:27::i;:::-;13344:5;:41::i;:::-;13463:6;13470:1;13463:9;;;;;;;;;;;;;;;;;;:19;;;-1:-1:-1;;;;;13463:28:17;13460:293;;;13535:5;-1:-1:-1;;;;;13519:32:17;:60;13552:26;13572:5;13552:19;:26::i;:::-;13519:60;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13519:60:17;13460:293;;;13662:6;13669:1;13662:9;;;;;;;;;;;;;;;;:22;:9;;;;;:22;;-1:-1:-1;;;;;13662:22:17;13656:38;13695:5;13702:26;13722:5;13702:19;:26::i;:::-;13656:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13656:73:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13656:73:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13656:73:17;;;;;;;;;;13460:293;13831:5;-1:-1:-1;;;;;13818:68:17;;13838:6;13845:1;13838:9;;;;;;;;;;;;;;;;;;:19;;;13859:26;13879:5;13859:19;:26::i;:::-;13818:68;;;;;;;;;;;;;;;;13255:1629;;;13932:9;-1:-1:-1;;;;;13932:21:17;13929:955;;;14106:50;14121:6;14129:5;14136:6;14143:1;14136:9;;;;;;;;;;;;;;;;;;:19;;;14106:14;:50::i;:::-;14088:68;;-1:-1:-1;14088:68:17;-1:-1:-1;14220:41:17;14226:5;14233:27;14088:68;14233:19;:27::i;14220:41::-;14284:44;14290:8;14300:27;14320:6;14300:19;:27::i;:::-;14284:5;:44::i;:::-;-1:-1:-1;;;;;14467:20:17;;;;;;:10;:20;;;;;14488:6;:9;;14450:80;;14467:20;14488:6;14495:1;;14488:9;;;;;;;;;;;;;;;;;;;;;:19;14467:41;;;;;;;;;;;;:55;;;14524:5;14450:16;:80::i;:::-;-1:-1:-1;;;;;14392:20:17;;;;;;:10;:20;;;;;14413:6;:9;;14392:20;;;14420:1;;14413:9;;;;;;;;;;;;;;;;:19;;;14392:41;;;;;;;;;;;:55;;;:138;;;;;-1:-1:-1;;;;;14392:138:17;;;;;;;;;;;;14657:80;14674:10;:20;14685:8;-1:-1:-1;;;;;14674:20:17;-1:-1:-1;;;;;14674:20:17;;;;;;;;;;;;:41;14695:6;14702:1;14695:9;;;;;;;;;;;;;;;;;;;;;;;:19;14674:41;;;;;;;;;;;;:54;-1:-1:-1;;;14674:54:17;;;;14730:6;14657:16;:80::i;:::-;-1:-1:-1;;;;;14600:20:17;;;;;;:10;:20;;;;;14621:6;:9;;14600:20;;;14628:1;;14621:9;;;;;;;;;;;;;;;;:19;;;14600:41;;;;;;;;;;;:54;;;:137;;;;;-1:-1:-1;;;;;14600:137:17;;;;;;;;;;;;14798:5;-1:-1:-1;;;;;14785:79:17;;14805:8;14815:6;14822:1;14815:9;;;;;;;;;;;;;;;;;;:19;;;14836:27;14856:6;14836:19;:27::i;:::-;14785:79;;;;;;;;;;;;;;;;;13929:955;-1:-1:-1;14962:4:17;:12;;-1:-1:-1;;;;;;14962:12:17;;;14911:1;;-1:-1:-1;14939:4:17;;-1:-1:-1;12605:5081:17;;;-1:-1:-1;;;;;15140:17:17;;15196:1;15140:17;;;:10;:17;;;;;15158:6;:9;;15123:72;;15140:17;15196:1;;15165;;15158:9;;;;;;;;;;;;;;;;;;;;;:19;15140:38;;;;;;;;;;;;:51;-1:-1:-1;;;15140:51:17;;;;;15123:16;:72::i;:::-;:74;;;15120:2566;;;15226:4;;-1:-1:-1;;;15226:4:17;;;;15225:5;15217:14;;;;;;15250:4;:11;;-1:-1:-1;;;;;;15250:11:17;-1:-1:-1;;;15250:11:17;;;-1:-1:-1;;;;;15283:19:17;;15280:2018;;;15369:86;15375:5;15382:72;15402:10;:17;15413:5;-1:-1:-1;;;;;15402:17:17;-1:-1:-1;;;;;15402:17:17;;;;;;;;;;;;:38;15420:6;15427:1;15420:9;;;;;;;;;;;;;;;;;;;;;;;:19;15402:38;;;;;;;;;;;;:51;-1:-1:-1;;;15402:51:17;;;;15382:19;:72::i;15369:86::-;-1:-1:-1;;;;;15590:17:17;;15574:13;15590:17;;;:10;:17;;;;;15608:6;:9;;15574:13;;15608:6;15615:1;;15608:9;;;;;;;;;;;;;;;;:19;;;15590:38;;;;;;;;;;;:52;;;;;;;;;;;;15574:68;;15780:6;15787:1;15780:9;;;;;;;;;;;;;;;;;;:19;;;-1:-1:-1;;;;;15780:28:17;15777:297;;;15856:5;-1:-1:-1;;;;;15840:32:17;:60;15873:26;15893:5;15873:19;:26::i;:::-;15840:60;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15840:60:17;15777:297;;;15983:6;15990:1;15983:9;;;;;;;;;;;;;;;;:22;:9;;;;;:22;;-1:-1:-1;;;;;15983:22:17;15977:38;16016:5;16023:26;16043:5;16023:19;:26::i;:::-;15977:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15977:73:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15977:73:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15977:73:17;;;;;;;;;;15777:297;16172:5;-1:-1:-1;;;;;16159:68:17;;16179:6;16186:1;16179:9;;;;;;;;;;;;;;;;;;:19;;;16200:26;16220:5;16200:19;:26::i;:::-;16159:68;;;;;;;;;;;;;;;;15280:2018;;;;16273:9;-1:-1:-1;;;;;16273:21:17;16270:1028;;;16430:11;16443:13;16460:142;16475:10;:17;16486:5;-1:-1:-1;;;;;16475:17:17;-1:-1:-1;;;;;16475:17:17;;;;;;;;;;;;:38;16493:6;16500:1;16493:9;;;;;;;;;;;;;;;;;;:19;;;16475:38;;;;;;;;;;;:51;;;;;;;;;;;;16528:10;:17;16539:5;-1:-1:-1;;;;;16528:17:17;-1:-1:-1;;;;;16528:17:17;;;;;;;;;;;;:38;16546:6;16553:1;16546:9;;;;;;;;;;;;;;;;;;:19;;;16528:38;;;;;;;;;;;:52;;;;;;;;;;;;16582:6;16589:1;16582:9;;;;;;;16460:142;16429:173;;;;16666:38;16672:5;16679:24;16699:3;16679:19;:24::i;16666:38::-;16727:41;16733:8;16743:24;16763:3;16743:19;:24::i;16727:41::-;-1:-1:-1;;;;;16907:20:17;;;;;;:10;:20;;;;;16928:6;:9;;16890:80;;16907:20;16928:6;16935:1;;16928:9;;;;;16890:80;-1:-1:-1;;;;;16832:20:17;;;;;;:10;:20;;;;;16853:6;:9;;16832:20;;;16860:1;;16853:9;;;;;;;;;;;;;;;;:19;;;16832:41;;;;;;;;;;;:55;;;:138;;;;;-1:-1:-1;;;;;16832:138:17;;;;;;;;;;;;17097:77;17114:10;:20;17125:8;-1:-1:-1;;;;;17114:20:17;-1:-1:-1;;;;;17114:20:17;;;;;;;;;;;;:41;17135:6;17142:1;17135:9;;;;;;;;;;;;;;;;;;;;;;;:19;17114:41;;;;;;;;;;;;:54;-1:-1:-1;;;17114:54:17;;;;17170:3;17097:16;:77::i;:::-;-1:-1:-1;;;;;17040:20:17;;;;;;:10;:20;;;;;17061:6;:9;;17040:20;;;17068:1;;17061:9;;;;;;;;;;;;;;;;:19;;;17040:41;;;;;;;;;;;:54;;;:134;;;;;-1:-1:-1;;;;;17040:134:17;;;;;;;;;;;;17215:5;-1:-1:-1;;;;;17202:76:17;;17222:8;17232:6;17239:1;17232:9;;;;;;;;;;;;;;;;;;:19;;;17253:24;17273:3;17253:19;:24::i;:::-;17202:76;;;;;;;;;;;;;;;;;16270:1028;;;17393:77;17410:6;17418:10;:17;17429:5;-1:-1:-1;;;;;17418:17:17;-1:-1:-1;;;;;17418:17:17;;;;;;;;;;;;:38;17436:6;17443:1;17436:9;;;;;;;;;;;;;;;;;;;;;;;:19;17418:38;;;;;;;;;;;;:51;-1:-1:-1;;;17418:51:17;;;;17393:16;:77::i;:::-;-1:-1:-1;;;;;17570:17:17;;;;;;:10;:17;;;;;17588:6;:9;;17384:86;;-1:-1:-1;17570:17:17;;17595:1;;17588:9;;;;;;;;;;;;;;;;;;;;;:19;17570:38;;;;;;;;;;;;17563:45;17658:4;:12;;-1:-1:-1;;;;;;17658:12:17;;;17563:45;;-1:-1:-1;15120:2566:17;12459:3;;12395:5302;;;-1:-1:-1;17714:5:17;-1:-1:-1;12241:5486:17;;;;;;;:::o;5305:464:3:-;-1:-1:-1;;;;;5402:20:3;;5394:70;;;;-1:-1:-1;;;;;5394:70:3;;;;;;;;;-1:-1:-1;;;;;5482:23:3;;5474:71;;;;-1:-1:-1;;;;;5474:71:3;;;;;;;;;5576;5598:6;5576:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:17:3;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5556:17:3;;;;;;;:9;:17;;;;;;:91;;;;5680:20;;;;;;;:32;;5705:6;5680:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5657:20:3;;;;;;;:9;:20;;;;;;;:55;;;;5727:35;;;;;;;;;;5755:6;;5727:35;;834:176:1;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;;;938:46:1;;;;;;;;491:88:27;531:6;:14;;-1:-1:-1;;531:14:27;;;561:10;;;;540:5;;561:10;491:88::o;1409:498:5:-;1820:4;1864:17;1895:7;1409:498;:::o;19578:133:15:-;19637:7;19659:47;19664:1;-1:-1:-1;;;19667:38:15;;19659:3;:47::i;298:83:27:-;336:6;:13;;-1:-1:-1;;336:13:27;345:4;336:13;;;365:8;;;;336:6;;365:8;298:83::o;6039:302:3:-;-1:-1:-1;;;;;6114:21:3;;6106:65;;;;-1:-1:-1;;;;;6106:65:3;;;;;;;;;6197:12;;:24;;6214:6;6197:24;:16;:24;:::i;:::-;6182:12;:39;-1:-1:-1;;;;;6252:18:3;;;;;;:9;:18;;;;;;:30;;6275:6;6252:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6231:18:3;;;;;;:9;:18;;;;;;:51;;;;6297:37;;6231:18;;;6297:37;;;;6327:6;;6297:37;;;;;;;;;;6039:302;;:::o;1732:187:1:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;1837:29:1;;;;;;;;;;-1:-1:-1;;;1888:5:1;;;1732:187::o;3781:543:15:-;3832:7;3887:6;-1:-1:-1;;;;;3866:11:15;;;;:18;3881:3;3866:18;:27;3915:5;3904:16;;3900:30;;;3929:1;3922:8;;;;;3900:30;-1:-1:-1;;;3968:1:15;3959:11;;-1:-1:-1;;;;;3959:48:15;;3950:58;;;;;;4048:5;4036:8;:17;;4027:27;;;;;;-1:-1:-1;;;;;;;;4098:11:15;;;;4089:54;:94;4205:5;4194:16;;4190:109;;;4223:5;:16;;;4212:27;4190:109;;;4265:5;4254:8;:16;4250:49;;;-1:-1:-1;;4283:16:15;;4272:27;4313:6;3781:543;-1:-1:-1;;;3781:543:15:o;1274:134:1:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;2240:225:2:-;-1:-1:-1;;;;;2313:22:2;;2305:73;;;;-1:-1:-1;;;;;2305:73:2;;;;;;;;;2414:6;;2393:38;;-1:-1:-1;;;;;2393:38:2;;;;2414:6;;2393:38;;2414:6;;2393:38;2441:6;:17;;-1:-1:-1;;;;;;2441:17:2;-1:-1:-1;;;;;2441:17:2;;;;;;;;;;2240:225::o;23988:2628:15:-;24047:7;24103:6;-1:-1:-1;;;;;24082:11:15;;;;:18;;24097:3;24082:18;;;:27;;;24135:11;;;;:18;;;;;;:27;;;24173:19;;24169:2443;;;24206:9;24219:6;24206:19;24202:97;;;-1:-1:-1;;;;;;24234:3:15;-1:-1:-1;24227:10:15;;-1:-1:-1;24227:10:15;24202:97;-1:-1:-1;;;;;;24261:38:15;;24257:42;;24250:49;;24169:2443;24316:9;24329:6;24316:19;24312:2300;;;-1:-1:-1;;;;;;;24349:38:15;;:43;24345:139;;-1:-1:-1;;;;;;24401:3:15;-1:-1:-1;24394:10:15;;-1:-1:-1;24394:10:15;24345:139;-1:-1:-1;;;24441:5:15;;;-1:-1:-1;;;24440:44:15;24417:67;;24312:2300;-1:-1:-1;;;;;;;24501:38:15;;24497:2115;;-1:-1:-1;;;;;;;24558:38:15;;24554:143;;-1:-1:-1;;;;;;24610:3:15;-1:-1:-1;24603:10:15;;-1:-1:-1;24603:10:15;24554:143;-1:-1:-1;;;24654:5:15;;;-1:-1:-1;;;24653:44:15;-1:-1:-1;;;;;24633:64:15;24626:71;;24497:2115;-1:-1:-1;;;;;24739:11:15;;;;:44;24795:14;24791:91;;24823:1;24811:13;;24791:91;;;-1:-1:-1;;;24837:45:15;24791:91;-1:-1:-1;;;;;24912:11:15;;;;:44;24968:14;24964:309;;24998:15;;24994:174;;25027:10;25046:16;25051:10;25046:3;:16::i;:::-;25120:1;;-1:-1:-1;25040:3:15;:22;25133:24;;;-1:-1:-1;;25133:24:15;;25075:20;;;;;-1:-1:-1;24994:174:15;24964:309;;;-1:-1:-1;;;25212:44:15;25261:3;25211:53;24964:309;25307:10;25294;:23;;;;;;;-1:-1:-1;25329:15:15;25325:128;;-1:-1:-1;;;25362:5:15;;;25361:44;:92;;591:34;25361:92;;;-1:-1:-1;;;25354:99:15;;;;;;;;25325:128;-1:-1:-1;;;25470:10:15;:44;;25462:53;;;;25524:11;-1:-1:-1;;;25546:10:15;:45;;:194;;-1:-1:-1;;;25621:10:15;:45;;:119;;-1:-1:-1;;;25683:10:15;:45;;:57;;25737:3;25683:57;;;25731:3;25683:57;25621:119;;;25669:3;25621:119;25546:194;;;;;25594:16;25599:10;25594:3;:16::i;:::-;25524:216;;25771:9;25783:5;25771:17;25765:3;25753:9;:15;:35;25749:725;;;25824:6;25812:18;;25853:1;25840:14;;25749:725;;;25900:9;25885:3;25873:9;:15;25891:5;25873:23;:36;25869:605;;;25946:1;25934:13;;25970:1;25957:14;;25869:605;;;26017:9;26002:3;25990:9;:15;26008:5;25990:23;:36;25986:488;;;26075:9;26055;26067:5;26055:17;:29;26051:193;;;26131:9;26111;26123:5;26111:17;:29;26096:44;;;;;26051:193;;;26179:9;26159;26171:5;26159:17;:29;26155:89;;;26239:5;26227:9;26215;:21;:29;26200:44;;;;;26155:89;26267:1;26255:13;;25986:488;;;26313:3;26307;:9;26303:49;;;26349:3;26343;:9;26328:24;;;;;26303:49;-1:-1:-1;;;;;26363:44:15;;;;26456:9;26442:3;26430:9;:15;26448:5;26430:23;:35;26418:47;;25986:488;26593:10;26587:3;26574:9;:16;;26521:1;26517;:5;-1:-1:-1;;;26516:44:15;;;26507:54;;-1:-1:-1;;;;;26507:83:15;;:96;26489:116;;26482:123;;;;;;;;;20389:2342;20448:7;20504:6;-1:-1:-1;;;;;20483:11:15;;;;:18;;20498:3;20483:18;;;:27;;;20536:11;;;;:18;;;;;;:27;;;20574:19;;20570:2157;;;20607:9;20620:6;20607:19;20603:354;;;-1:-1:-1;;;;;;20642:6:15;;;;;;;20638:162;;;-1:-1:-1;;;;;;20661:38:15;;20657:42;;20650:49;;20638:162;-1:-1:-1;;;;;;;;;20718:5:15;;;:43;;20714:86;;;-1:-1:-1;;;20770:5:15;;;20763:12;;20603:354;-1:-1:-1;;;;;;;20829:38:15;;20825:123;;-1:-1:-1;;;;;;20881:3:15;-1:-1:-1;20874:10:15;;-1:-1:-1;20874:10:15;20570:2157;20973:9;20986:6;20973:19;20969:1758;;;-1:-1:-1;;;;;;;21008:38:15;;21004:123;;-1:-1:-1;;;;;;21060:3:15;-1:-1:-1;21053:10:15;;-1:-1:-1;21053:10:15;21004:123;-1:-1:-1;;;;;;21089:38:15;;21085:42;;21078:49;;20969:1758;-1:-1:-1;;;;;21169:11:15;;;;:44;21225:14;21221:91;;21253:1;21241:13;;21221:91;;;-1:-1:-1;;;21267:45:15;21221:91;-1:-1:-1;;;;;21342:11:15;;;;:44;21398:14;21394:91;;21426:1;21414:13;;21394:91;;;-1:-1:-1;;;21440:45:15;21394:91;21494:24;;;;21530:15;21526:128;;-1:-1:-1;;;21563:5:15;;;21562:44;:92;;591:34;21562:92;;21526:128;21663:22;;;;21694:11;-1:-1:-1;;;21716:73:15;;;:196;;-1:-1:-1;;;21806:10:15;:73;;:106;;21896:16;21901:10;21896:3;:16::i;:::-;21806:106;;;21882:3;21806:106;21716:196;;;21792:3;21716:196;21694:218;;21943:5;21937:3;21925:9;:15;:23;21921:668;;;21985:1;21973:13;;22009:1;21996:14;;21921:668;;;22047:5;22041:3;22029:9;:15;:23;22025:564;;;22093:5;22081:9;:17;22077:145;;;22133:9;22125:5;:17;22110:32;;;;;22077:145;;;22173:5;22161:9;:17;22157:65;;;22217:5;22205:9;:17;22190:32;;;;;22157:65;22244:1;22232:13;;22025:564;;;22282:5;22276:3;22264:9;:15;:23;22260:329;;;22311:6;22299:18;;22340:1;22327:14;;22260:329;;;22376:3;22370;:9;22366:113;;;22412:3;22406;:9;22391:24;;;;;22366:113;;;22440:3;22434;:9;22430:49;;;22476:3;22470;:9;22455:24;;;;;22430:49;-1:-1:-1;;;;;22490:44:15;;;;22575:5;22569:3;22557:9;:15;:23;22545:35;;22260:329;22708:10;22702:3;22689:9;:16;;22636:1;22632;:5;-1:-1:-1;;;22631:44:15;;;22622:54;;-1:-1:-1;;;;;22622:83:15;;:96;22604:116;;22597:123;;;;;;;;;6660:342:3;-1:-1:-1;;;;;6735:21:3;;6727:67;;;;-1:-1:-1;;;;;6727:67:3;;;;;;;;;6826:68;6849:6;6826:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6826:18:3;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;6805:18:3;;;;;;:9;:18;;;;;:89;6919:12;;:24;;6936:6;6919:24;:16;:24;:::i;:::-;6904:12;:39;6958:37;;6984:1;;-1:-1:-1;;;;;6958:37:3;;;;;;;6988:6;;6958:37;;17735:788:17;17890:5;;:26;;-1:-1:-1;;;;;17890:26:17;;17825:7;;;;;;17868:49;;-1:-1:-1;;;;;17890:5:17;;;;:12;;:26;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17890:26:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17890:26:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17890:26:17;;;;;;;;17868:49;17853:64;-1:-1:-1;17931:24:17;17853:64;17953:1;17931:16;:24::i;:::-;:27;;17957:1;17931:27;17928:555;;;17990:5;;:22;;;-1:-1:-1;;;;;17990:22:17;;;;17974:13;;-1:-1:-1;;;;;17990:5:17;;:20;;:22;;;;;;;;;;;;;;:5;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;17990:22:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17990:22:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17990:22:17;;;;;;;;;17974:38;-1:-1:-1;;;;;;18030:19:17;;;18027:445;;18069:68;18078:5;18085:51;18105:30;18122:4;18128:6;18105:16;:30::i;:::-;18085:19;:51::i;18069:68::-;;18165:56;18182:6;18190:30;18207:4;18213:6;18190:16;:30::i;18165:56::-;-1:-1:-1;;;;;18301:17:17;;;;;;:10;:17;;;;;;;;:27;;;;;;;;:41;18156:65;;-1:-1:-1;18284:90:17;;18301:41;;18344:29;18361:4;18367:5;18344:16;:29::i;18284:90::-;-1:-1:-1;;;;;18240:17:17;;;;;;:10;:17;;;;;;;;:27;;;;;;;;:134;;-1:-1:-1;;;;;;18240:134:17;;;;;;;;;;;;18402:54;18419:5;18426:29;18443:4;18419:5;18426:16;:29::i;18402:54::-;18394:62;;18027:445;17928:555;;-1:-1:-1;18501:6:17;;18509:5;;-1:-1:-1;;;17735:788:17:o;706:17966::-;;;;;;;;;;-1:-1:-1;706:17966:17;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:17966:17;;;-1:-1:-1;706:17966:17;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;5:118:-1;;72:46;110:6;97:20;72:46;;130:122;;208:39;239:6;233:13;208:39;;259:116;;334:36;362:6;356:13;334:36;;382:118;;449:46;487:6;474:20;449:46;;507:122;;585:39;616:6;610:13;585:39;;637:444;;750:3;743:4;735:6;731:17;727:27;717:2;;768:1;765;758:12;717:2;798:6;792:13;820:65;835:49;877:6;835:49;;;820:65;;;811:74;;905:6;898:5;891:21;941:4;933:6;929:17;974:4;967:5;963:16;1009:3;1000:6;995:3;991:16;988:25;985:2;;;1026:1;1023;1016:12;985:2;1036:39;1068:6;1063:3;1058;1036:39;;;710:371;;;;;;;;1343:114;;1408:44;1444:6;1431:20;1408:44;;1464:241;;1568:2;1556:9;1547:7;1543:23;1539:32;1536:2;;;1584:1;1581;1574:12;1536:2;1619:1;1636:53;1681:7;1661:9;1636:53;;1712:263;;1827:2;1815:9;1806:7;1802:23;1798:32;1795:2;;;1843:1;1840;1833:12;1795:2;1878:1;1895:64;1951:7;1931:9;1895:64;;1982:366;;;2103:2;2091:9;2082:7;2078:23;2074:32;2071:2;;;2119:1;2116;2109:12;2071:2;2154:1;2171:53;2216:7;2196:9;2171:53;;;2161:63;;2133:97;2261:2;2279:53;2324:7;2315:6;2304:9;2300:22;2279:53;;;2269:63;;2240:98;2065:283;;;;;;2355:491;;;;2493:2;2481:9;2472:7;2468:23;2464:32;2461:2;;;2509:1;2506;2499:12;2461:2;2544:1;2561:53;2606:7;2586:9;2561:53;;;2551:63;;2523:97;2651:2;2669:53;2714:7;2705:6;2694:9;2690:22;2669:53;;;2659:63;;2630:98;2759:2;2777:53;2822:7;2813:6;2802:9;2798:22;2777:53;;;2767:63;;2738:98;2455:391;;;;;;2853:366;;;2974:2;2962:9;2953:7;2949:23;2945:32;2942:2;;;2990:1;2987;2980:12;2942:2;3025:1;3042:53;3087:7;3067:9;3042:53;;;3032:63;;3004:97;3132:2;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;;3226:1117;;;;;;;;;3447:3;3435:9;3426:7;3422:23;3418:33;3415:2;;;3464:1;3461;3454:12;3415:2;3499:1;3516:53;3561:7;3541:9;3516:53;;;3506:63;;3478:97;3606:2;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;;;3614:63;;3585:98;3714:2;3732:53;3777:7;3768:6;3757:9;3753:22;3732:53;;;3722:63;;3693:98;3822:2;3840:53;3885:7;3876:6;3865:9;3861:22;3840:53;;;3830:63;;3801:98;3930:3;3949:53;3994:7;3985:6;3974:9;3970:22;3949:53;;;3939:63;;3909:99;4039:3;4058:51;4101:7;4092:6;4081:9;4077:22;4058:51;;;4048:61;;4018:97;4146:3;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;;;4155:63;;4125:99;4255:3;4274:53;4319:7;4310:6;4299:9;4295:22;4274:53;;;4264:63;;4234:99;3409:934;;;;;;;;;;;;4723:491;;;;4861:2;4849:9;4840:7;4836:23;4832:32;4829:2;;;4877:1;4874;4867:12;4829:2;4912:1;4929:53;4974:7;4954:9;4929:53;;;4919:63;;4891:97;5019:2;5037:53;5082:7;5073:6;5062:9;5058:22;5037:53;;;5027:63;;4998:98;5127:2;5145:53;5190:7;5181:6;5170:9;5166:22;5145:53;;5221:1117;;;;;;;;;5442:3;5430:9;5421:7;5417:23;5413:33;5410:2;;;5459:1;5456;5449:12;5410:2;5494:1;5511:53;5556:7;5536:9;5511:53;;;5501:63;;5473:97;5601:2;5619:53;5664:7;5655:6;5644:9;5640:22;5619:53;;;5609:63;;5580:98;5709:2;5727:53;5772:7;5763:6;5752:9;5748:22;5727:53;;6345:257;;6457:2;6445:9;6436:7;6432:23;6428:32;6425:2;;;6473:1;6470;6463:12;6425:2;6508:1;6525:61;6578:7;6558:9;6525:61;;6609:263;;6724:2;6712:9;6703:7;6699:23;6695:32;6692:2;;;6740:1;6737;6730:12;6692:2;6775:1;6792:64;6848:7;6828:9;6792:64;;6879:743;;;;;;7051:3;7039:9;7030:7;7026:23;7022:33;7019:2;;;7068:1;7065;7058:12;7019:2;7103:1;7120:53;7165:7;7145:9;7120:53;;;7110:63;;7082:97;7210:2;7228:53;7273:7;7264:6;7253:9;7249:22;7228:53;;;7218:63;;7189:98;7318:2;7336:53;7381:7;7372:6;7361:9;7357:22;7336:53;;;7326:63;;7297:98;7426:2;7444:53;7489:7;7480:6;7469:9;7465:22;7444:53;;;7434:63;;7405:98;7534:3;7553:53;7598:7;7589:6;7578:9;7574:22;7553:53;;;7543:63;;7513:99;7013:609;;;;;;;;;7629:362;;7754:2;7742:9;7733:7;7729:23;7725:32;7722:2;;;7770:1;7767;7760:12;7722:2;7805:24;;7849:18;7838:30;;7835:2;;;7881:1;7878;7871:12;7835:2;7901:74;7967:7;7958:6;7947:9;7943:22;7901:74;;8268:991;;;;;;;;8472:3;8460:9;8451:7;8447:23;8443:33;8440:2;;;8489:1;8486;8479:12;8440:2;8524:1;8541:53;8586:7;8566:9;8541:53;;;8531:63;;8503:97;8631:2;8649:53;8694:7;8685:6;8674:9;8670:22;8649:53;;;8639:63;;8610:98;8739:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;;;8747:63;;8718:98;8847:2;8865:53;8910:7;8901:6;8890:9;8886:22;8865:53;;;8855:63;;8826:98;8955:3;8974:51;9017:7;9008:6;8997:9;8993:22;8974:51;;;8964:61;;8934:97;9062:3;9081:53;9126:7;9117:6;9106:9;9102:22;9081:53;;;9071:63;;9041:99;9171:3;9190:53;9235:7;9226:6;9215:9;9211:22;9190:53;;;9180:63;;9150:99;8434:825;;;;;;;;;;;9266:1117;;;;;;;;;9487:3;9475:9;9466:7;9462:23;9458:33;9455:2;;;9504:1;9501;9494:12;9455:2;9539:1;9556:53;9601:7;9581:9;9556:53;;;9546:63;;9518:97;9646:2;9664:53;9709:7;9700:6;9689:9;9685:22;9664:53;;10391:257;;10518:90;10604:3;10596:6;10518:90;;;-1:-1;;10637:4;10628:14;;10511:137;10656:142;10747:45;10786:5;10747:45;;;10742:3;10735:58;10729:69;;;10805:110;10878:31;10903:5;10878:31;;11102:781;;11287:74;11355:5;11287:74;;;11374:106;11473:6;11468:3;11374:106;;;11367:113;;11500:76;11570:5;11500:76;;;11597:1;11582:279;11607:6;11604:1;11601:13;11582:279;;;11654:103;11753:3;11744:6;11738:13;11654:103;;;11647:110;;11774:80;11847:6;11774:80;;;11764:90;-1:-1;11629:1;11622:9;11582:279;;;-1:-1;11874:3;;11266:617;-1:-1;;;;11266:617;11891:111;11968:28;11990:5;11968:28;;12009:110;12082:31;12107:5;12082:31;;12388:159;12489:52;12509:31;12534:5;12509:31;;;12489:52;;12554:150;12653:45;12692:5;12653:45;;12868:347;;12980:39;13013:5;12980:39;;;13031:71;13095:6;13090:3;13031:71;;;13024:78;;13107:52;13152:6;13147:3;13140:4;13133:5;13129:16;13107:52;;;13180:29;13202:6;13180:29;;;13171:39;;;;12960:255;-1:-1;;;12960:255;13569:465;;13729:67;13793:2;13788:3;13729:67;;;13829:66;13809:87;;-1:-1;;;;;13925:2;13916:12;;13909:88;14025:2;14016:12;;13715:319;-1:-1;;13715:319;14043:221;-1:-1;;;;;14179:79;;14172:92;14273:400;;14451:85;14533:2;14528:3;14451:85;;;14569:66;14549:87;;14664:2;14655:12;;14437:236;-1:-1;;14437:236;14682:465;;14842:67;14906:2;14901:3;14842:67;;;14942:66;14922:87;;-1:-1;;;;;15038:2;15029:12;;15022:88;15138:2;15129:12;;14828:319;-1:-1;;14828:319;15156:465;;15316:67;15380:2;15375:3;15316:67;;;15416:66;15396:87;;-1:-1;;;;;15512:2;15503:12;;15496:88;15612:2;15603:12;;15302:319;-1:-1;;15302:319;15630:364;;15790:67;15854:2;15849:3;15790:67;;;15890:66;15870:87;;15985:2;15976:12;;15776:218;-1:-1;;15776:218;16003:221;-1:-1;;;;;16139:79;;16132:92;16233:221;-1:-1;;;;;16369:79;;16362:92;16463:364;;16623:67;16687:2;16682:3;16623:67;;;16723:66;16703:87;;16818:2;16809:12;;16609:218;-1:-1;;16609:218;16836:364;;16996:67;17060:2;17055:3;16996:67;;;17096:66;17076:87;;17191:2;17182:12;;16982:218;-1:-1;;16982:218;17209:465;;17369:67;17433:2;17428:3;17369:67;;;17469:66;17449:87;;17570:66;17565:2;17556:12;;17549:88;17665:2;17656:12;;17355:319;-1:-1;;17355:319;17683:363;;17843:66;17907:1;17902:3;17843:66;;;-1:-1;;;;;17922:87;;18037:2;18028:12;;17829:217;-1:-1;;17829:217;18055:465;;18215:67;18279:2;18274:3;18215:67;;;18315:66;18295:87;;-1:-1;;;;;18411:2;18402:12;;18395:88;18511:2;18502:12;;18201:319;-1:-1;;18201:319;18529:465;;18689:67;18753:2;18748:3;18689:67;;;18789:66;18769:87;;-1:-1;;;;;18885:2;18876:12;;18869:88;18985:2;18976:12;;18675:319;-1:-1;;18675:319;19003:465;;19163:67;19227:2;19222:3;19163:67;;;19263:66;19243:87;;-1:-1;;;;;19359:2;19350:12;;19343:88;19459:2;19450:12;;19149:319;-1:-1;;19149:319;19477:364;;19637:67;19701:2;19696:3;19637:67;;;19737:66;19717:87;;19832:2;19823:12;;19623:218;-1:-1;;19623:218;19896:467;20093:22;;20023:4;20014:14;;;20121:61;20018:3;20093:22;20121:61;;;20043:145;20268:4;20261:5;20257:16;20251:23;20280:62;20336:4;20331:3;20327:14;20314:11;20280:62;;20497:114;20576:29;20599:5;20576:29;;20618:244;;20737:75;20808:3;20799:6;20737:75;;;-1:-1;20834:2;20825:12;;20725:137;-1:-1;20725:137;20869:511;;21096:148;21240:3;21096:148;;;21089:155;;21255:75;21326:3;21317:6;21255:75;;21387:213;21505:2;21490:18;;21519:71;21494:9;21563:6;21519:71;;21607:467;21797:2;21782:18;;21811:79;21786:9;21863:6;21811:79;;;21901:80;21977:2;21966:9;21962:18;21953:6;21901:80;;;21992:72;22060:2;22049:9;22045:18;22036:6;21992:72;;22081:435;22255:2;22240:18;;22269:71;22244:9;22313:6;22269:71;;;22351:72;22419:2;22408:9;22404:18;22395:6;22351:72;;22523:324;22669:2;22654:18;;22683:71;22658:9;22727:6;22683:71;;;22765:72;22833:2;22822:9;22818:18;22809:6;22765:72;;22854:441;23062:2;23076:47;;;23047:18;;23137:148;23047:18;23271:6;23137:148;;23302:201;23414:2;23399:18;;23428:65;23403:9;23466:6;23428:65;;23510:213;23628:2;23613:18;;23642:71;23617:9;23686:6;23642:71;;23730:499;23928:2;23913:18;;23942:79;23917:9;23994:6;23942:79;;;24032:88;24116:2;24105:9;24101:18;24092:6;24032:88;;;24131;24215:2;24204:9;24200:18;24191:6;24131:88;;24236:518;24455:2;24440:18;;24469:71;24444:9;24513:6;24469:71;;;24588:9;24582:4;24578:20;24573:2;24562:9;24558:18;24551:48;24613:131;24739:4;24613:131;;24761:324;24907:2;24892:18;;24921:71;24896:9;24965:6;24921:71;;25092:539;25290:3;25275:19;;25305:71;25279:9;25349:6;25305:71;;;25387:68;25451:2;25440:9;25436:18;25427:6;25387:68;;;25466:72;25534:2;25523:9;25519:18;25510:6;25466:72;;;25549;25617:2;25606:9;25602:18;25593:6;25549:72;;;25261:370;;;;;;;;25638:293;25772:2;25786:47;;;25757:18;;25847:74;25757:18;25907:6;25847:74;;26246:407;26437:2;26451:47;;;26422:18;;26512:131;26422:18;26512:131;;26660:450;26869:2;26854:18;;26883:134;26858:9;26883:134;;;27028:72;27096:2;27085:9;27081:18;27072:6;27028:72;;27117:407;27308:2;27322:47;;;27293:18;;27383:131;27293:18;27383:131;;27531:407;27722:2;27736:47;;;27707:18;;27797:131;27707:18;27797:131;;27945:407;28136:2;28150:47;;;28121:18;;28211:131;28121:18;28211:131;;28359:450;28568:2;28553:18;;28582:134;28557:9;28582:134;;28816:339;28997:2;28982:18;;29011:134;28986:9;29011:134;;29162:407;29353:2;29367:47;;;29338:18;;29428:131;29338:18;29428:131;;29576:407;29767:2;29781:47;;;29752:18;;29842:131;29752:18;29842:131;;29990:407;30181:2;30195:47;;;30166:18;;30256:131;30166:18;30256:131;;30404:407;30595:2;30609:47;;;30580:18;;30670:131;30580:18;30670:131;;30818:407;31009:2;31023:47;;;30994:18;;31084:131;30994:18;31084:131;;31232:407;31423:2;31437:47;;;31408:18;;31498:131;31408:18;31498:131;;31646:407;31837:2;31851:47;;;31822:18;;31912:131;31822:18;31912:131;;32280:256;32342:2;32336:9;32368:17;;;32443:18;32428:34;;32464:22;;;32425:62;32422:2;;;32500:1;32497;32490:12;32422:2;32516;32509:22;32320:216;;-1:-1;32320:216;32543:259;;32687:18;32679:6;32676:30;32673:2;;;32719:1;32716;32709:12;32673:2;-1:-1;32792:4;32763;32740:17;;;;-1:-1;;32736:33;32782:15;;32610:192;32811:141;32940:4;32928:17;;32909:43;32961:127;33071:12;;33055:33;33441:198;33579:19;;;33628:4;33619:14;;33572:67;33973:105;;34042:31;34067:5;34042:31;;34085:92;34158:13;34151:21;;34134:43;34270:128;-1:-1;;;;;34339:54;;34322:76;34491:88;34569:4;34558:16;;34541:38;35199:129;;35286:37;35317:5;35286:37;;35335:123;;35422:31;35447:5;35422:31;;35595:121;;35674:37;35705:5;35674:37;;35846:268;35911:1;35918:101;35932:6;35929:1;35926:13;35918:101;;;35999:11;;;35993:18;35980:11;;;35973:39;35954:2;35947:10;35918:101;;;36034:6;36031:1;36028:13;36025:2;;;-1:-1;;36099:1;36081:16;;36074:27;35895:219;36203:97;36291:2;36271:14;-1:-1;;36267:28;;36251:49",
|
|
835
835
|
"source": "// Verified cash manager on mainnet\r\n// (c) Kallol Borah, 2021\r\n\r\npragma solidity 0.5.7;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport \"./interfaces/ICash.sol\";\r\nimport \"./interfaces/IBond.sol\";\r\nimport \"./interfaces/IFactory.sol\";\r\nimport \"./interfaces/IRates.sol\";\r\nimport \"./utilities/Pausable.sol\";\r\nimport \"./utilities/StringUtils.sol\";\r\nimport \"abdk-libraries-solidity/ABDKMathQuad.sol\";\r\nimport \"@openzeppelin/upgrades/contracts/Initializable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\";\r\n\r\ncontract Cash is ICash, ERC20, Ownable, Pausable {\r\n\r\n using stringutils for *;\r\n\r\n using ABDKMathQuad for uint256;\r\n using ABDKMathQuad for int256;\r\n using ABDKMathQuad for bytes16;\r\n\r\n //bridge\r\n address bridge;\r\n\r\n //mutex\r\n bool lock;\r\n\r\n //name of Verified cash token (eg, Via-USD)\r\n string public name;\r\n string public symbol;\r\n bytes32 public cashtokenName;\r\n\r\n //verified factory address\r\n IFactory private factory;\r\n\r\n //verified rates\r\n IRates private rates;\r\n\r\n struct deposit{\r\n bytes16 depositAmount;\r\n bytes16 issuedAmount;\r\n }\r\n\r\n //mapping of buyers (address) to currency (bytes32) to deposits \r\n mapping(address => mapping(bytes32 => deposit)) private L1deposits;\r\n mapping(address => mapping(bytes32 => deposit)) private L2deposits;\r\n\r\n //supported ERC20 tokens for issuing Verified cash tokens\r\n ICash.token[] private tokens;\r\n mapping(address => uint256) private tokenIndex;\r\n\r\n //events to capture by Verified bridge\r\n event CashIssueRequest(address indexed party, bytes32 currency, uint256 amount);\r\n event CashRedeemed(address indexed redeemer, bytes32 currency, uint256 amount);\r\n event CashTransfer(address indexed transferor, address transferee, bytes32 currency, uint256 amount);\r\n event CashIssued(address indexed party, bytes32 currency, uint256 amount);\r\n event addedL2Balance(address indexed party, bytes32 currency, uint256 amount);\r\n event transferredL2Balance(address indexed transferor, address transferee, bytes32 currency, uint256 amount);\r\n\r\n function initialize(bytes32 _name, bytes32 _currency, address _owner, address _fee, address _bridge) public initializer{\r\n Ownable.initialize(_owner);\r\n factory = IFactory(msg.sender);\r\n name = string(abi.encodePacked(_name));\r\n symbol = _name.substring(0,5);\r\n cashtokenName = _currency;\r\n rates = IRates(_fee);\r\n bridge = _bridge;\r\n lock = false;\r\n }\r\n\r\n function setSigner(address _signer) onlyOwner external{\r\n bridge = _signer;\r\n }\r\n\r\n //handling pay in of ether for issue of via cash tokens\r\n function() external payable{\r\n //ether paid in\r\n require(msg.value !=0);\r\n //only to pay in ether\r\n require(msg.data.length==0);\r\n //contract must not be paused\r\n require(paused == false);\r\n //check aml status\r\n //require(amlCheck(msg.sender)==true); \r\n L1deposits[msg.sender][\"ether\"].depositAmount = ABDKMathQuad.add(L1deposits[msg.sender][\"ether\"].depositAmount, ABDKMathQuad.fromUInt(msg.value)); \r\n }\r\n\r\n /**\r\n Specifies list of supported tokens that can be deposited to issue Verified cash tokens\r\n @param _token address of token supported\r\n @param _name name of token supported\r\n */\r\n function supportTokens(address _token, bytes32 _name) onlyOwner external {\r\n if(tokenIndex[_token]==0){\r\n ICash.token memory t = ICash.token ({\r\n tokenName: _name,\r\n tokenAddress: _token\r\n });\r\n tokens.push(t);\r\n tokenIndex[_token] = tokens.length;\r\n }\r\n }\r\n\r\n /**\r\n Checks if a specified token is supported for issuing Verified cash tokens\r\n @param _token token that is supported for issuing cash tokens\r\n */\r\n function checkSupportForToken(address _token) external view returns(bool){\r\n if(tokenIndex[_token]>0)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n /**\r\n Returns array of tokens supported\r\n */\r\n function getSupportedTokens() external view returns(ICash.token[] memory){\r\n return tokens;\r\n }\r\n \r\n /**\r\n Used by external apps (eg, exchange, wallet) to buy Verified cash token \r\n @param _token address of token used by investor to buy the cash token\r\n @param _amount amount of token that is transferred from investor to this cash token issuing contract\r\n */ \r\n function requestIssue(address _token, uint256 _amount, address _buyer) external {\r\n require(paused == false, \"Contract in paused state\");\r\n bool found = false;\r\n if(tokenIndex[_token]>0)\r\n found = true;\r\n if(found){ \r\n _approve(msg.sender, address(this), _amount);\r\n bytes32 currencyName = tokens[tokenIndex[_token]-1].tokenName;\r\n if(ERC20(_token).transferFrom(msg.sender, address(this), _amount)){\r\n L2deposits[_buyer][currencyName].depositAmount = ABDKMathQuad.add(L2deposits[_buyer][currencyName].depositAmount, ABDKMathQuad.fromUInt(_amount));\r\n emit CashIssueRequest(_buyer, currencyName, _amount);\r\n }\r\n }\r\n else if(ABDKMathQuad.cmp(L1deposits[msg.sender][\"ether\"].depositAmount, ABDKMathQuad.fromUInt(_amount))>=0){\r\n L1deposits[msg.sender][\"ether\"].depositAmount = ABDKMathQuad.sub(L1deposits[msg.sender][\"ether\"].depositAmount, ABDKMathQuad.fromUInt(_amount));\r\n L2deposits[_buyer][\"ether\"].depositAmount = ABDKMathQuad.add(L2deposits[_buyer][\"ether\"].depositAmount, ABDKMathQuad.fromUInt(_amount));\r\n emit CashIssueRequest(_buyer, \"ether\", _amount); \r\n }\r\n }\r\n \r\n //adds issued Verified cash tokens in L2 to user balances\r\n function addIssuedBalance(uint256 balance, address buyer, bytes32 currency, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge); \r\n if(factory.getIssuer(\"ViaCash\", currency)==address(this)){\r\n emit addedL2Balance(buyer, currency, SafeMath.sub(balance, ABDKMathQuad.toUInt(L2deposits[buyer][currency].issuedAmount)));\r\n L2deposits[buyer][currency].issuedAmount = ABDKMathQuad.fromUInt(balance);\r\n }\r\n }\r\n \r\n //transfers deposit (against which cash tokens are issued) from transferor to transferee in L2 \r\n function transferDeposit(address transferor, uint256 amount, address transferee, bytes32 currency, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n if(ABDKMathQuad.cmp(ABDKMathQuad.sub(L2deposits[transferor][currency].depositAmount, ABDKMathQuad.fromUInt(amount)),0)>=0){ \r\n ABDKMathQuad.sub(L2deposits[transferor][currency].depositAmount, ABDKMathQuad.fromUInt(amount));\r\n ABDKMathQuad.add(L2deposits[transferee][currency].depositAmount, ABDKMathQuad.fromUInt(amount));\r\n emit transferredL2Balance(transferor, transferee, currency, amount);\r\n }\r\n }\r\n \r\n //redeems deposited amounts in L2\r\n function redeemDeposits(uint256 amount, address redeemer, bytes32 currency, uint256 balance, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n L2deposits[redeemer][currency].issuedAmount = ABDKMathQuad.fromUInt(balance); \r\n if(currency==\"ether\"){ \r\n address(uint160(redeemer)).transfer(amount);\r\n L2deposits[redeemer][currency].depositAmount = ABDKMathQuad.sub(L2deposits[redeemer][currency].depositAmount, ABDKMathQuad.fromUInt(amount));\r\n }\r\n else{\r\n for(uint256 i=0; i<tokens.length; i++){\r\n if(tokens[i].tokenName==currency){\r\n ERC20(tokens[i].tokenAddress).transfer(redeemer, amount);\r\n L2deposits[redeemer][currency].depositAmount = ABDKMathQuad.sub(L2deposits[redeemer][currency].depositAmount, ABDKMathQuad.fromUInt(amount));\r\n }\r\n }\r\n } \r\n emit CashRedeemed(redeemer, currency, amount);\r\n }\r\n\r\n //transfers issued cash tokens in L2 to L1 wallet\r\n function transferIssuedBalance(address transferor, bytes32 currency, uint256 amount, uint256 deposited, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n L2deposits[transferor][currency].depositAmount = ABDKMathQuad.sub(L2deposits[transferor][currency].depositAmount, ABDKMathQuad.fromUInt(deposited));\r\n L1deposits[transferor][currency].depositAmount = ABDKMathQuad.add(L1deposits[transferor][currency].depositAmount, ABDKMathQuad.fromUInt(deposited));\r\n _mint(address(this), amount);\r\n _transfer(address(this), transferor, amount);\r\n L2deposits[transferor][currency].issuedAmount = ABDKMathQuad.sub(L2deposits[transferor][currency].issuedAmount, ABDKMathQuad.fromUInt(amount));\r\n L1deposits[transferor][currency].issuedAmount = ABDKMathQuad.add(L1deposits[transferor][currency].issuedAmount, ABDKMathQuad.fromUInt(amount));\r\n emit CashIssued(transferor, cashtokenName, amount);\r\n }\r\n\r\n //overriding this function of ERC20 standard for transfer of via cash tokens to other users or to this contract for redemption\r\n function transferFrom(address sender, address receiver, uint256 token) public returns (bool){\r\n //contract must not be paused\r\n require(paused == false);\r\n //check aml status\r\n //require(amlCheck(sender)==true);\r\n //require(amlCheck(receiver)==true);\r\n //ensure sender has enough tokens in balance before transferring or redeeming them\r\n require(ABDKMathQuad.cmp(ABDKMathQuad.fromUInt(balanceOf(sender)),ABDKMathQuad.fromUInt(token))>=0);\r\n //check if tokens are being transferred to this cash contract\r\n if(receiver == address(this)){\r\n //if token name is the same, this transfer has to be redeemed\r\n if(redeem(ABDKMathQuad.fromUInt(token), sender, \"redeem\", address(this)))\r\n return true;\r\n else\r\n return false;\r\n }\r\n else if(factory.getType(receiver)==\"ViaCash\" || factory.getType(receiver)==\"ViaBond\"){\r\n _transfer(sender, receiver, token);\r\n return true;\r\n }\r\n else{\r\n //else, tokens are being sent to another user's account\r\n //sending contract should be allowed by token owner to make this transfer\r\n if(redeem(ABDKMathQuad.fromUInt(token), sender, \"transfer\", receiver))\r\n return true;\r\n else\r\n return false;\r\n } \r\n }\r\n \r\n //requesting redemption of Via cash token and transfer of currency it was issued against\r\n //operation parameter indicates whether it is a redemption or a transfer of deposits from one party to another\r\n function redeem(bytes16 amount, address party, bytes32 operation, address receiver) private returns(bool){\r\n bool found = false; \r\n for(uint i=0; i<tokens.length && ABDKMathQuad.toUInt(amount)>0; i++){ \r\n //check if currency in which redemption is to be done has sufficient issued balance for the deposited currency\r\n if(ABDKMathQuad.cmp(L1deposits[party][tokens[i].tokenName].issuedAmount, amount)>=0){\r\n bytes16 value = ABDKMathQuad.mul(ABDKMathQuad.div(amount, L1deposits[party][tokens[i].tokenName].issuedAmount),L1deposits[party][tokens[i].tokenName].depositAmount);\r\n L1deposits[party][tokens[i].tokenName].depositAmount = ABDKMathQuad.sub(L1deposits[party][tokens[i].tokenName].depositAmount, value);\r\n L1deposits[party][tokens[i].tokenName].issuedAmount = ABDKMathQuad.sub(L1deposits[party][tokens[i].tokenName].issuedAmount, amount);\r\n require(!lock);\r\n lock = true;\r\n if(operation==\"redeem\"){\r\n //adjust total supply\r\n _burn(party, ABDKMathQuad.toUInt(amount));\r\n //send redeemed ether to party\r\n if(tokens[i].tokenName==\"ether\"){\r\n address(uint160(party)).transfer(ABDKMathQuad.toUInt(value));\r\n }\r\n else{\r\n ERC20(tokens[i].tokenAddress).transfer(party, ABDKMathQuad.toUInt(value));\r\n }\r\n //generate event\r\n emit CashRedeemed(party, tokens[i].tokenName, ABDKMathQuad.toUInt(value));\r\n }\r\n else if(operation==\"transfer\"){\r\n //check if any fee is payable on remittance and acceptance and pay it if that is the case\r\n (amount, value) = payTransferFee(amount, value, tokens[i].tokenName);\r\n //transfer balances\r\n _burn(party, ABDKMathQuad.toUInt(amount));\r\n _mint(receiver, ABDKMathQuad.toUInt(amount));\r\n //transfer deposits\r\n L1deposits[receiver][tokens[i].tokenName].depositAmount = ABDKMathQuad.add(L1deposits[receiver][tokens[i].tokenName].depositAmount, value);\r\n //transfer issued amounts\r\n L1deposits[receiver][tokens[i].tokenName].issuedAmount = ABDKMathQuad.add(L1deposits[receiver][tokens[i].tokenName].issuedAmount, amount); \r\n emit CashTransfer(party, receiver, tokens[i].tokenName, ABDKMathQuad.toUInt(amount));\r\n }\r\n amount = 0;\r\n found = true;\r\n lock = false;\r\n }\r\n //amount to redeem is more than what is in deposit, so we need to remove deposit after redemption\r\n else if(ABDKMathQuad.cmp(L1deposits[party][tokens[i].tokenName].issuedAmount, 0)>0){\r\n require(!lock);\r\n lock = true;\r\n if(operation==\"redeem\"){\r\n //adjust total supply\r\n _burn(party, ABDKMathQuad.toUInt(L1deposits[party][tokens[i].tokenName].issuedAmount));\r\n //check if any fee is payable on redemption and pay it if that is the case\r\n bytes16 value = L1deposits[party][tokens[i].tokenName].depositAmount;\r\n //send redeemed ether to party which is all of the ether in deposit with this user (party)\r\n if(tokens[i].tokenName==\"ether\"){ \r\n address(uint160(party)).transfer(ABDKMathQuad.toUInt(value));\r\n }\r\n else{\r\n ERC20(tokens[i].tokenAddress).transfer(party, ABDKMathQuad.toUInt(value));\r\n } \r\n //generate event\r\n emit CashRedeemed(party, tokens[i].tokenName, ABDKMathQuad.toUInt(value));\r\n }\r\n else if(operation==\"transfer\"){\r\n //check if any fee is payable on remittance and acceptance and pay it if that is the case\r\n (bytes16 amt, bytes16 value) = payTransferFee(L1deposits[party][tokens[i].tokenName].issuedAmount, L1deposits[party][tokens[i].tokenName].depositAmount, tokens[i].tokenName);\r\n //transfer balances\r\n _burn(party, ABDKMathQuad.toUInt(amt));\r\n _mint(receiver, ABDKMathQuad.toUInt(amt));\r\n //transfer deposits\r\n L1deposits[receiver][tokens[i].tokenName].depositAmount = ABDKMathQuad.add(L1deposits[receiver][tokens[i].tokenName].depositAmount, value);\r\n //transfer issued amounts\r\n L1deposits[receiver][tokens[i].tokenName].issuedAmount = ABDKMathQuad.add(L1deposits[receiver][tokens[i].tokenName].issuedAmount, amt);\r\n emit CashTransfer(party, receiver, tokens[i].tokenName, ABDKMathQuad.toUInt(amt));\r\n }\r\n //calculate remaining amount to redeem or transfer\r\n amount = ABDKMathQuad.sub(amount, L1deposits[party][tokens[i].tokenName].issuedAmount);\r\n //make deposit and issued amount balances zero for ether\r\n delete L1deposits[party][tokens[i].tokenName];\r\n found = true;\r\n lock = false;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n function payTransferFee(bytes16 amount, bytes16 value, bytes32 currency) private returns (bytes16, bytes16){\r\n bytes16 fees = ABDKMathQuad.fromUInt(rates.getFee(\"remittance\"));\r\n if(ABDKMathQuad.cmp(fees,0)==1){\r\n address feeTo = rates.getFeeToSetter();\r\n if(feeTo!=address(0x0)){\r\n transfer(feeTo, ABDKMathQuad.toUInt(ABDKMathQuad.mul(fees, amount)));\r\n amount = ABDKMathQuad.sub(amount, ABDKMathQuad.mul(fees, amount));\r\n L1deposits[feeTo][currency].depositAmount = ABDKMathQuad.add(L1deposits[feeTo][currency].depositAmount, ABDKMathQuad.mul(fees, value)); \r\n value = ABDKMathQuad.sub(value, ABDKMathQuad.mul(fees, value));\r\n }\r\n }\r\n return (amount, value);\r\n } \r\n\r\n function pause() onlyOwner public {\r\n _pause();\r\n }\r\n function unpause() onlyOwner public {\r\n _unpause();\r\n }\r\n\r\n}",
|
|
836
|
-
"sourcePath": "D:\\Code\\verified-L1\\
|
|
836
|
+
"sourcePath": "D:\\Code\\verified-payments-L1\\contracts\\Cash.sol",
|
|
837
837
|
"ast": {
|
|
838
838
|
"absolutePath": "project:/contracts/Cash.sol",
|
|
839
839
|
"exportedSymbols": {
|
|
@@ -52672,17 +52672,17 @@
|
|
|
52672
52672
|
"version": "0.5.7+commit.6da8b019.Emscripten.clang"
|
|
52673
52673
|
},
|
|
52674
52674
|
"networks": {
|
|
52675
|
-
"
|
|
52675
|
+
"5": {
|
|
52676
52676
|
"events": {},
|
|
52677
52677
|
"links": {
|
|
52678
|
-
"stringutils": "
|
|
52678
|
+
"stringutils": "0x7278c66729698f70c87Cf48727dd24C2b4B25C88"
|
|
52679
52679
|
},
|
|
52680
|
-
"address": "
|
|
52681
|
-
"transactionHash": "
|
|
52680
|
+
"address": "0x56770Bb626268588Fa771d09A0A7c942A416ca48",
|
|
52681
|
+
"transactionHash": "0x46a9746f4e1633b7d00a75adcf9efe63baaecfb894d7549b6c14d29e4957dfb3"
|
|
52682
52682
|
}
|
|
52683
52683
|
},
|
|
52684
52684
|
"schemaVersion": "3.4.3",
|
|
52685
|
-
"updatedAt": "2022-
|
|
52685
|
+
"updatedAt": "2022-12-06T05:41:00.638Z",
|
|
52686
52686
|
"networkType": "ethereum",
|
|
52687
52687
|
"devdoc": {
|
|
52688
52688
|
"methods": {
|
|
@@ -705,7 +705,7 @@
|
|
|
705
705
|
"sourceMap": "536:6721:18:-;;;;;283:56:12;;;:::i;:::-;-1:-1:-1;;21:26;;;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;266:79:12;;41:4:-1;30:16;;;;266:79:12;247:16;:98;536:6721:18;;;;;;;;;;:::o;:::-;;;;;;;",
|
|
706
706
|
"deployedSourceMap": "536:6721:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:6721:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1405:23;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1405:23:18;;:::i;:::-;;;;-1:-1:-1;;;;;1405:23:18;;;;;;;;;;;;;;5852:1168;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;5852:1168:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2132:408:12;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2132:408:12;;;-1:-1:-1;;;;;2132:408:12;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;2132:408:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2132:408:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2132:408:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2132:408:12;;;;;;;;-1:-1:-1;2132:408:12;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;2132:408:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2132:408:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2132:408:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2132:408:12;;-1:-1:-1;2132:408:12;;-1:-1:-1;;;;;2132:408:12:i;3380:142:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3380:142:18;;;;;;;:::i;1288:337:12:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1288:337:12;;;-1:-1:-1;;;;;1288:337:12;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1288:337:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1288:337:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1288:337:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1288:337:12;;;;;;;;-1:-1:-1;1288:337:12;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;1288:337:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1288:337:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1288:337:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1288:337:12;;-1:-1:-1;1288:337:12;;-1:-1:-1;;;;;1288:337:12:i;5682:158:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5682:158:18;;;;;;;;;;:::i;7028:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7028:220:18;-1:-1:-1;;;;;7028:220:18;;:::i;:::-;;;;;;;;;;;;;;;;;;3530:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3530:92:18;;;;;;;;;;;;;;;;;2149:188;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2149:188:18;;;;;;;;;;:::i;1375:23::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1375:23:18;;:::i;2655:116::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2655:116:18;-1:-1:-1;;;;;2655:116:18;;:::i;:::-;;;;;;;;;;;;;;;;1104:180:12;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1104:180:12;;;-1:-1:-1;;;;;1104:180:12;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1104:180:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1104:180:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1104:180:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1104:180:12;;-1:-1:-1;1104:180:12;;-1:-1:-1;;;;;1104:180:12:i;2908:162:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2908:162:18;-1:-1:-1;;;;;2908:162:18;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2345:89;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2345:89:18;-1:-1:-1;;;;;2345:89:18;;:::i;1208:36::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1208:36:18;-1:-1:-1;;;;;1208:36:18;;:::i;1746:137:2:-;;;:::i;2442:103:18:-;;;:::i;1629:499:12:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1629:499:12;;;;;;-1:-1:-1;;;;;1629:499:12;;:::i;959:77:2:-;;;:::i;1310:92::-;;;:::i;354:746:12:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;354:746:12;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;354:746:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;354:746:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;354:746:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;354:746:12;;-1:-1:-1;354:746:12;;-1:-1:-1;;;;;354:746:12:i;741:142:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;741:142:2;-1:-1:-1;;;;;741:142:2;;:::i;3630:863:18:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;3630:863:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2553:94::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2553:94:18;;:::i;4501:1173::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;4501:1173:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2032:107:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2032:107:2;-1:-1:-1;;;;;2032:107:2;;:::i;3078:294:18:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3078:294:18;;;;;;;:::i;2779:121::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2779:121:18;-1:-1:-1;;;;;2779:121:18;;:::i;1405:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1405:23:18;;-1:-1:-1;1405:23:18;:::o;5852:1168::-;6086:36;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6086:36:18;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6086:36:18;;;;;6076:47;;;;;;6166:65;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;6166:65:18;;;;;;6156:76;;;;;;;;;6288:6;;6054:19;6251:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6076:47;;6156:76;-1:-1:-1;;;;;6288:6:18;;;;;;6251:34;;;;;-1:-1:-1;;6251:34:18;;;;;;;;;;;6288:6;6251:34;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6251:34:18;;;;;;;;-1:-1:-1;;;;;6251:43:18;;6243:52;;;;;;-1:-1:-1;;;;;6311:24:18;;;6308:705;;-1:-1:-1;;;;;6417:28:18;;;;;;;:18;:28;;;;;;;;:40;;;;;;;;;:47;;;6400:96;;6417:47;;6466:29;6488:6;6466:21;:29::i;:::-;6400:16;:96::i;:::-;-1:-1:-1;;;;;6351:28:18;;;;;;;:18;:28;;;;;;;;:40;;;;;;;;;;;:47;;;;:145;;-1:-1:-1;;;;;;6351:145:18;;;;;;;;6577:40;;;;;;;:47;;6560:96;;6577:47;6626:29;6648:6;6626:21;:29::i;:::-;6560:16;:96::i;:::-;-1:-1:-1;;;;;6511:28:18;;;;;;;:18;:28;;;;;;;;:40;;;;;;;;;;;;:47;;;;:145;;-1:-1:-1;;;;;;6511:145:18;;;;;;;;;;;;;6681:28;;;6710:7;:17;;;;;;;;6681:47;;;;;;;;:53;;;6671:110;;-1:-1:-1;;;;;6671:110:18;;;;;;;;;;;;;;;;;;;;;;;6681:53;;;;;6671:78;;:110;;;;;6511:28;;6671:110;;;;;6511:28;6681:53;6671:110;;;5:2:-1;;;;30:1;27;20:12;5:2;6671:110:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6671:110:18;;;;6308:705;;;6863:29;6885:6;6863:21;:29::i;:::-;-1:-1:-1;;;;;6814:28:18;;;;;;;:18;:28;;;;;;;;:40;;;;;;;;;;;;:47;;;;:78;;-1:-1:-1;;;;;;6814:78:18;;;;;;;;;;;;;6917:28;;;6946:7;:17;;;;;;;;6917:47;;;;;;;;:53;;;6907:94;;-1:-1:-1;;;;;6907:94:18;;;;;;;;;;;;;;;;6917:53;;;;;6907:74;;:94;;;;;6814:28;;6907:94;;;;;6814:28;6917:53;6907:94;;;5:2:-1;;;;30:1;27;20:12;5:2;6907:94:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6907:94:18;;;;6308:705;5852:1168;;;;;;;;;;:::o;2132:408:12:-;2264:7;2279:15;2297:170;2400:5;2407:6;2415;2423:5;2438:4;2372:81;;;;;;;;;;;-1:-1:-1;;;;;2372:81:12;-1:-1:-1;;;;;2372:81:12;;;;;;;;-1:-1:-1;;;;;2372:81:12;-1:-1:-1;;;;;2372:81:12;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2372:81:12;;;;;;;-1:-1:-1;;;;;2372:81:12;-1:-1:-1;;;;;2372:81:12;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2372:81:12;;;2353:108;;;;;;2297:48;:170::i;:::-;2279:188;;2481:54;2515:7;2524:10;2481:33;:54::i;:::-;2474:61;2132:408;-1:-1:-1;;;;;;;2132:408:12:o;3380:142:18:-;3459:7;3485:18;;;:7;:18;;;;;;;;:29;;;;;;;;;-1:-1:-1;;;;;3485:29:18;3380:142;;;;;:::o;1288:337:12:-;1418:7;1433:14;1450:51;1460:5;1467:6;1475;1483:5;1490:10;1450:9;:51::i;:::-;1433:68;-1:-1:-1;;;;;;1515:20:12;;1507:50;;;;;-1:-1:-1;;;;;1507:50:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570;1583:5;1590:6;1598;1606:5;1613:6;1570:12;:50::i;5682:158:18:-;-1:-1:-1;;;;;5790:28:18;;;5764:7;5790:28;;;:18;:28;;;;;;;;:36;;;;;;;;;:42;;;;;5682:158::o;7028:220::-;-1:-1:-1;;;;;7106:21:18;;;7087:4;7106:21;;;:14;:21;;;;;;7087:4;;7106:21;:35;;;:67;;-1:-1:-1;;;;;;7145:14:18;;;7169:3;7145:14;;;:7;:14;;;;;;;:28;;7106:67;7103:137;;;-1:-1:-1;7195:4:18;7188:11;;7103:137;-1:-1:-1;7235:5:18;7103:137;7028:220;;;:::o;3530:92::-;3573:16;3608:6;3601:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3601:13:18;;;;;;;;;;;;;;;;;;;;;;;3530:92;:::o;2149:188::-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1152:12;;;;;;;1151:13;1170:80;;;;1213:4;1198:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;;;;;1170:80;2234:30:18;2253:10;2234:18;:30::i;:::-;2275:15;:27;;-1:-1:-1;;;;;2275:27:18;;;-1:-1:-1;;;;;;2275:27:18;;;;;;;2313:6;:16;;;;;;;;;;;;;;;1264:55:5;;;;1292:12;:20;;-1:-1:-1;;1292:20:5;;;1264:55;2149:188:18;;;:::o;1375:23::-;;;;;;;;;;2655:116;-1:-1:-1;;;;;2741:17:18;2714:7;2741:17;;;:5;:17;;;;;:22;;;;2655:116::o;1104:180:12:-;1203:7;1225:54;1238:5;1245:6;1253;1261:5;1268:10;1225:12;:54::i;:::-;1218:61;1104:180;-1:-1:-1;;;;;1104:180:12:o;2908:162:18:-;-1:-1:-1;;;;;3010:17:18;2974:7;3010:17;;;:5;:17;;;;;:22;;;;3034:27;;3010:22;;2908:162::o;2345:89::-;1163:9:2;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:2;;;;;;;;;;;;;;;2410:6:18;:16;;-1:-1:-1;;;;;;2410:16:18;-1:-1:-1;;;;;2410:16:18;;;;;;;;;;2345:89::o;1208:36::-;;;;;;;;;;;;;;;;;;;:::o;1746:137:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:2;;;;;;;;;;;;;;;1828:6;;1807:40;;1844:1;;-1:-1:-1;;;;;1828:6:2;;1807:40;;1844:1;;1807:40;1857:6;:19;;-1:-1:-1;;;;;;1857:19:2;;;1746:137::o;2442:103:18:-;2524:6;:13;2442:103;:::o;1629:499:12:-;1712:7;1877:12;1892:24;1901:5;1908:7;1892:8;:24::i;:::-;1922:18;2045:16;1960:109;;;-1:-1:-1;;;;;;1960:109:12;;;;;;;;2016:4;1960:109;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1960:109:12;;;;;;;1943:132;;;;;2105:16;;2089:34;;;1629:499;-1:-1:-1;;;;1629:499:12:o;959:77:2:-;1023:6;;-1:-1:-1;;;;;1023:6:2;959:77;:::o;1310:92::-;1389:6;;1350:4;;-1:-1:-1;;;;;1389:6:2;1373:12;:10;:12::i;:::-;-1:-1:-1;;;;;1373:22:2;;1366:29;;1310:92;:::o;354:746:12:-;429:13;588:19;618:6;610:15;;588:37;;667:4;661:11;693:66;686:5;679:81;792:11;785:4;778:5;774:16;767:37;836:66;829:4;822:5;818:16;811:92;936:4;929:5;926:1;919:22;962:28;;;-1:-1:-1;;;;;962:28:12;;;;;;910:31;;-1:-1:-1;962:28:12;;-1:-1:-1;962:28:12;;;;;;;1000:12;;:16;997:95;;1027:12;1044:5;-1:-1:-1;;;;;1044:10:12;1055:5;1044:17;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1044:17:12;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;1026:35:12;;;1077:7;1069:16;;;;;;997:95;;354:746;;;;;:::o;741:142:2:-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1152:12;;;;;;;1151:13;1170:80;;;;1213:4;1198:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;;;;;1170:80;806:6:2;:15;;-1:-1:-1;;;;;;806:15:2;-1:-1:-1;;;;;806:15:2;;;;;;;;;;;836:40;;869:6;;;-1:-1:-1;;836:40:2;;-1:-1:-1;;836:40:2;1268:14:5;1264:55;;;1292:12;:20;;-1:-1:-1;;1292:20:5;;;1264:55;741:142:2;;:::o;3630:863:18:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:2;;;;;;;;;;;;;;;3776:21:18;3879:9;3890:13;3905:7;:5;:7::i;:::-;3923:6;;3800:130;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3800:130:18;;;;;;;;;;;;;;3923:6;3800:130;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3800:130:18;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;3800:130:18;-1:-1:-1;3923:6:18;3986:32;4000:7;3800:130;3986:13;:32::i;:::-;3968:50;;4048:7;-1:-1:-1;;;;;4034:44:18;;4057:9;4068;4034:44;;;;;;;;;;;;;;;;;;;;;;;;4094:9;-1:-1:-1;;;;;4094:19:18;4091:393;;;4146:29;;;;;;;;-1:-1:-1;;;;;4146:29:18;;;;;;;;;-1:-1:-1;;;;;4129:14:18;;-1:-1:-1;4129:14:18;;;:5;:14;;;;;:46;;;;;;;;;;;4190:6;27:10:-1;;23:18;;;45:23;;4190:20:18;;;;;;-1:-1:-1;;;;;;4190:20:18;;;;;;;;4225:33;;;:18;:33;;;;;;;:43;;;;;;;;4091:393;;;4298:9;-1:-1:-1;;;;;4298:19:18;4295:189;;;4350:29;;;;;;;;-1:-1:-1;;;;;4350:29:18;;;;;;;;;-1:-1:-1;;;;;4333:14:18;;-1:-1:-1;4333:14:18;;;:5;:14;;;;;:46;;;;;;;;;;;4394:6;27:10:-1;;23:18;;;45:23;;4394:20:18;;;;;;-1:-1:-1;;;;;;4394:20:18;;;;;;;;4429:33;;;:18;:33;;;;;;;:43;;;;;;;;4295:189;1219:1:2;;3630:863:18;;;;;:::o;2553:94::-;2604:7;2630:6;2637:1;2630:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2630:9:18;;2553:94;-1:-1:-1;;2553:94:18:o;4501:1173::-;4749:36;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4749:36:18;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4749:36:18;;;;;4739:47;;;;;;4829:65;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4829:65:18;;;;;;4819:76;;;;;;;;;4951:6;;4717:19;4914:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4739:47;;4819:76;-1:-1:-1;;;;;4951:6:18;;;;;;4914:34;;;;;-1:-1:-1;;4914:34:18;;;;;;;;;;;4951:6;4914:34;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4914:34:18;;;;;;;;-1:-1:-1;;;;;4914:43:18;;4906:52;;;;;;5096:6;;4995:108;;;;;;;;;;;;;;;5089:4;4995:108;;;;-1:-1:-1;;;;;5096:6:18;;;4995:108;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4995:108:18;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;179:29;160:49;;5178:15:18;;4995:108;;5096:6;;5164:40;;5178:15;4995:108;5164:13;:40::i;:::-;5139:65;;5260:4;5217:18;:28;5236:8;-1:-1:-1;;;;;5217:28:18;-1:-1:-1;;;;;5217:28:18;;;;;;;;;;;;:36;5246:6;-1:-1:-1;;;;;5217:36:18;-1:-1:-1;;;;;5217:36:18;;;;;;;;;;;;:41;;:47;;;;5322:7;5275:18;:28;5294:8;-1:-1:-1;;;;;5275:28:18;-1:-1:-1;;;;;5275:28:18;;;;;;;;;;;;:36;5304:6;-1:-1:-1;;;;;5275:36:18;-1:-1:-1;;;;;5275:36:18;;;;;;;;;;;;:44;;:54;;;;5387:8;5340:18;:28;5359:8;-1:-1:-1;;;;;5340:28:18;-1:-1:-1;;;;;5340:28:18;;;;;;;;;;;;:36;5369:6;-1:-1:-1;;;;;5340:36:18;-1:-1:-1;;;;;5340:36:18;;;;;;;;;;;;:45;;:55;;;;5451:14;5406:18;:28;5425:8;-1:-1:-1;;;;;5406:28:18;-1:-1:-1;;;;;5406:28:18;;;;;;;;;;;;:36;5435:6;-1:-1:-1;;;;;5406:36:18;-1:-1:-1;;;;;5406:36:18;;;;;;;;;;;;:42;;;:59;;;;;-1:-1:-1;;;;;5406:59:18;;;;;-1:-1:-1;;;;;5406:59:18;;;;;;5496:6;5476:7;:17;5484:8;-1:-1:-1;;;;;5476:17:18;-1:-1:-1;;;;;5476:17:18;;;;;;;;;;;;;:26;;;;;-1:-1:-1;;;;;5476:26:18;;;;;-1:-1:-1;;;;;5476:26:18;;;;;;5549:6;5516:14;:30;5531:14;-1:-1:-1;;;;;5516:30:18;-1:-1:-1;;;;;5516:30:18;;;;;;;;;;;;;:39;;;;;-1:-1:-1;;;;;5516:39:18;;;;;-1:-1:-1;;;;;5516:39:18;;;;;;5566:6;5578:14;5566:27;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;5566:27:18;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5566:27:18;;;;;-1:-1:-1;;;;;5566:27:18;;;;;;;5627:14;-1:-1:-1;;;;;5611:55:18;;5643:6;5651:4;5657:8;5611:55;;;;-1:-1:-1;;;;;5611:55:18;-1:-1:-1;;;;;5611:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:1173;;;;;;;;;;;;;:::o;2032:107:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:2;;;;;;;;;;;;;;;2104:28;2123:8;2104:18;:28::i;:::-;2032:107;:::o;3078:294:18:-;3166:7;;3185:180;3204:6;:13;3202:15;;3185:180;;;3266:9;3241:5;:16;3247:6;3254:1;3247:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3247:9:18;3241:16;;;;;;;;;;;;3247:9;3241:21;;:34;:77;;;;;3309:9;3279:5;:16;3285:6;3292:1;3285:9;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3285:9:18;3279:16;;;;;;;;;;;;:26;:39;3241:77;3238:115;;;3344:6;3351:1;3344:9;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3344:9:18;;-1:-1:-1;3337:16:18;;-1:-1:-1;3337:16:18;3238:115;3219:3;;3185:180;;2779:121;-1:-1:-1;;;;;2865:17:18;2838:7;2865:17;;;:5;:17;;;;;:27;;2779:121::o;2992:392:15:-;3045:7;3064:6;3060:320;;-1:-1:-1;3088:1:15;3072:18;;3060:320;3126:1;3109:14;3150:12;3126:1;3150:3;:12::i;:::-;3136:26;;3180:3;3174;:9;3170:83;;;3202:3;3196;:9;3185:20;;;;;3170:83;;;3228:3;3222;:9;3218:35;;;3250:3;3244;:9;3233:20;;;;;3218:35;3313:5;:11;3328:3;3313:18;-1:-1:-1;;;;;3271:39:15;;;;:60;3347:26;;;-1:-1:-1;3340:33:15;;15491:3613;15550:7;15606:6;-1:-1:-1;;;;;15585:11:15;;;;:18;;15600:3;15585:18;;;:27;;;15638:11;;;;:18;;;;;;:27;;;15676:19;;15672:3428;;;15709:9;15722:6;15709:19;15705:104;;;-1:-1:-1;;;;;;15745:6:15;;;;;;;15741:45;;;15760:1;15753:8;;;;;;15741:45;-1:-1:-1;;;;;;15783:3:15;-1:-1:-1;15776:10:15;;-1:-1:-1;15776:10:15;15705:104;15808:1;15801:8;;;;;;15672:3428;15827:9;15840:6;15827:19;15823:3277;;;15855:1;15848:8;;;;;;15823:3277;-1:-1:-1;;;15888:11:15;;;;-1:-1:-1;;;;;15888:49:15;;;;;;;;-1:-1:-1;;;;;15966:44:15;16022:14;16018:91;;16050:1;16038:13;;16018:91;;;-1:-1:-1;;;16064:45:15;16018:91;-1:-1:-1;;;16131:11:15;;;;-1:-1:-1;;;;;16131:49:15;;;;;;;;-1:-1:-1;;;;;16209:44:15;16265:14;16261:91;;16293:1;16281:13;;16261:91;;;-1:-1:-1;;;16307:45:15;16261:91;16365:15;16361:2733;;-1:-1:-1;;;;;;16389:18:15;;-1:-1:-1;;;16389:18:15;:38;;16426:1;16389:38;;;591:34;16389:38;16382:45;;;;;;;;;;16361:2733;16444:15;16440:2654;;-1:-1:-1;;;;;;16468:18:15;;-1:-1:-1;;;16468:18:15;:38;;16505:1;16468:38;;16440:2654;16544:39;;;16600:14;;;;;;;16596:2490;;;16640:3;16632:5;:11;16628:255;;;16652:1;16645:8;;;;;;;;;;;16628:255;16682:1;16674:5;:9;16670:213;;;16685:30;;;;16670:213;;;-1:-1:-1;;16736:5:15;:12;16732:151;;;16757:1;16750:8;;;;;;;;;;;16732:151;16787:1;16779:5;:9;16775:108;;;16829:5;16828:6;;16804:31;;;;;16861:9;16849:21;;16775:108;16897:24;;;;-1:-1:-1;;;16940:45:15;;16936:122;;17016:1;17031:14;;;;17001:16;;;;;16936:122;17076:9;17089:6;17076:19;17072:435;;;17116:5;:45;;-1:-1:-1;;;;;17116:45:15;;;-1:-1:-1;;;;;;17116:45:15;17109:52;;;;;;;;;;;17072:435;-1:-1:-1;;;17196:10:15;:44;17192:126;;;17254:1;17242:13;;17192:126;;;-1:-1:-1;;;;;17274:44:15;;;;17192:126;17481:10;17458:3;17445:9;:16;;17378:5;:46;;17423:1;17378:46;;;-1:-1:-1;;;17378:46:15;-1:-1:-1;;;;;17377:85:15;;:114;17342:151;;17335:158;;;;;;;;;;;16596:2490;17547:1;17539:5;:9;17535:189;;;17579:1;17564:16;;;;;17607:1;17594:14;;;;17535:189;;;17639:1;17631:5;:9;17627:97;;;17671:1;17656:16;;;;;17710:1;17698:9;:13;17686:25;;17627:97;17748:3;17740:5;:11;17736:258;;;17766:1;17753:14;;17736:258;;;17796:1;17788:5;:9;17784:210;;;17848:1;17840:5;:9;17826:1;17813:10;:14;:37;;17854:1;17812:43;17799:56;;17784:210;;;-1:-1:-1;;17876:5:15;:12;17872:122;;;17903:1;17890:14;;17872:122;;;-1:-1:-1;;17925:5:15;:10;17921:73;;;17987:1;17979:5;17978:6;;:10;17964:1;17951:10;:14;:38;;17993:1;17950:44;17937:57;;17921:73;18025:10;18011;:24;18007:161;;18051:10;18037:24;;;;18007:161;;;18118:10;18105;:23;18092:36;;18150:5;18142:13;;18007:161;18184:15;18180:53;;-1:-1:-1;591:34:15;;-1:-1:-1;18213:20:15;;-1:-1:-1;;;;;;18213:20:15;18180:53;18246:11;18260:16;18265:10;18260:3;:16::i;:::-;18246:30;;18293:3;18300;18293:10;18289:515;;;18346:1;18332:10;:15;;-1:-1:-1;;;;;18332:48:15;18319:61;;18407:1;18394:14;;;;18289:515;;;18437:3;18431;:9;18427:377;;;18472:3;:9;;;18499:17;;;18495:247;;;18561:5;18547:10;:19;;-1:-1:-1;;;;;18547:52:15;18534:65;;18628:5;18615:18;;;;18495:247;;;18726:1;;-1:-1:-1;;18685:13:15;18670:28;;;;;18495:247;18427:377;;;;-1:-1:-1;;;;;18760:44:15;;;;18427:377;18821:9;18834:6;18821:19;18817:258;;;18861:5;:45;;-1:-1:-1;;;;;18861:45:15;;;-1:-1:-1;;;;;;18861:45:15;18854:52;;;;;;;;;;;;18817:258;19063:10;19042:3;19029:9;:16;;18964:5;:46;;19009:1;18964:46;;;-1:-1:-1;;;18964:46:15;-1:-1:-1;;;;;18963:83:15;;:110;18930:145;;18923:152;;;;;;;;;;;;19578:133;19637:7;19659:47;19664:1;-1:-1:-1;;;19667:38:15;;19659:3;:47::i;:::-;19652:54;19578:133;-1:-1:-1;;;19578:133:15:o;3142:265:6:-;3341:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3341:58:6;;;;;;;3331:69;;;;;;3142:265::o;1101:1891::-;1179:7;1240:9;:16;1260:2;1240:22;1236:72;;-1:-1:-1;1294:1:6;1278:19;;1236:72;1658:4;1643:20;;1637:27;1703:4;1688:20;;1682:27;1756:4;1741:20;;1735:27;1374:9;1727:36;2674:66;2661:79;;2657:127;;;2771:1;2756:17;;;;;;;2657:127;2798:1;:7;;2803:2;2798:7;;:18;;;;;2809:1;:7;;2814:2;2809:7;;2798:18;2794:66;;;2847:1;2832:17;;;;;;;2794:66;2961:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2961:24:6;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2961:24:6;;-1:-1:-1;;2961:24:6;;;1101:1891;-1:-1:-1;;;;;;;1101:1891:6:o;2544:329:12:-;2668:7;2683:43;2729:28;2742:5;2749:7;2729:12;:28::i;:::-;2768;;;-1:-1:-1;;;;;2768:28:12;;;;;;2683:74;;-1:-1:-1;2768:28:12;;;;;;;;;;2802:39;;-1:-1:-1;;;;;2802:39:12;;-1:-1:-1;;;;;2802:39:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;;;;;;2819:6;;2827;;2835:5;;2802:39;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2802:39:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2802:39:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2862:5:12;;2544:329;-1:-1:-1;;;;;;;;;2544:329:12:o;1409:498:5:-;1820:4;1864:17;1895:7;1409:498;:::o;3356:144:12:-;3461:32;;;;;;;;;;;-1:-1:-1;;;;;3461:32:12;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;3461:32:12;;;;;;3451:43;;;;;;3356:144::o;867:96:0:-;946:10;867:96;:::o;2240:225:2:-;-1:-1:-1;;;;;2313:22:2;;2305:73;;;;-1:-1:-1;;;;;2305:73:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2414:6;;2393:38;;-1:-1:-1;;;;;2393:38:2;;;;2414:6;;2393:38;;2414:6;;2393:38;2441:6;:17;;-1:-1:-1;;;;;;2441:17:2;-1:-1:-1;;;;;2441:17:2;;;;;;;;;;2240:225::o;49968:570:15:-;50015:7;50043:1;50039;:5;50030:15;;;;;;50052:14;-1:-1:-1;;;50081:40:15;;50077:75;;50131:3;50125:9;;;;50136:13;50077:75;50166:19;50161:1;:24;50157:57;;50195:2;50189:8;;;;50199:12;50157:57;-1:-1:-1;;;50223:1:15;:16;50219:49;;50249:2;50243:8;;;;50253:12;50219:49;50282:7;50277:1;:12;50273:45;;50299:2;50293:8;;;;50303:12;50273:45;50332:5;50327:1;:10;50323:41;;50347:1;50341:7;;;;50350:11;50323:41;50378:4;50373:1;:9;50369:40;;50392:1;50386:7;;;;50395:11;50369:40;50423:3;50418:1;:8;50414:39;;50436:1;50430:7;;;;50439:11;50414:39;50467:3;50462:1;:8;50458:25;;50482:1;50472:11;50527:6;49968:570;-1:-1:-1;;49968:570:15:o;2877:475:12:-;2949:37;2994:20;3020:17;3040:56;;;;;;;;:::i;:::-;-1:-1:-1;;21:26;;;;;7:41;;87:2;69:12;;;65:26;61:2;54:38;34:5;-1:-1;3102:12:12;3117:24;3126:5;3133:7;3117:8;:24::i;:::-;3102:39;;3214:4;3207;3201:11;3194:4;3188;3184:15;3181:1;3173:46;3165:54;;3248:4;3236:17;3226:2;;3275:1;3272;3265:12;3226:2;-1:-1:-1;3342:4:12;;2877:475;-1:-1:-1;;;;2877:475:12:o;536:6721:18:-;;;;;;;;:::o",
|
|
707
707
|
"source": "// Factory for Verified cash and bond tokens\r\n// (c) Kallol Borah, 2021\r\n\r\npragma solidity 0.5.7;\r\n\r\nimport \"./interfaces/IFactory.sol\";\r\nimport \"./interfaces/ISecurity.sol\";\r\nimport \"abdk-libraries-solidity/ABDKMathQuad.sol\";\r\nimport \"@openzeppelin/upgrades/contracts/Initializable.sol\";\r\nimport \"@openzeppelin/upgrades/contracts/upgradeability/ProxyFactory.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\";\r\n\r\ncontract Factory is IFactory, ProxyFactory, Initializable, Ownable{\r\n\r\n using ABDKMathQuad for uint256;\r\n using ABDKMathQuad for int256;\r\n using ABDKMathQuad for bytes16;\r\n\r\n //events\r\n event securitiesAdded(address indexed security, address issuer, bytes32 isin, bytes32 currency);\r\n event IssuerCreated(address indexed issuer, bytes32 tokenName, bytes32 tokenType);\r\n\r\n struct via{\r\n bytes32 tokenType;\r\n bytes32 name; \r\n }\r\n\r\n struct securities{\r\n bytes32 currency;\r\n bytes32 company;\r\n bytes32 isin;\r\n address token;\r\n bytes16 amount;\r\n }\r\n\r\n //addresses of all Via proxies\r\n mapping(address => via) public token;\r\n\r\n //mapping token type to token name to issuer address\r\n mapping(bytes32 => mapping(bytes32 => address)) issuers;\r\n\r\n address[] public tokens;\r\n address[] public issues;\r\n\r\n //mapping security to holder to securities struct\r\n mapping(address => mapping(address => securities)) private securitiesHoldings;\r\n\r\n //mapping security to issuer\r\n mapping(address => address) private holders;\r\n mapping(address => address) private securityTokens;\r\n\r\n address private securityAddress;\r\n\r\n address private bridge;\r\n\r\n modifier onlySigner(bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s){\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n _;\r\n }\r\n\r\n function initialize(address _security, address _bridge) public initializer{\r\n Ownable.initialize(msg.sender);\r\n securityAddress = _security;\r\n bridge = _bridge;\r\n }\r\n\r\n function setSigner(address _signer) onlyOwner external{\r\n bridge = _signer;\r\n }\r\n\r\n function getTokenCount() external view returns(uint tokenCount) {\r\n return tokens.length;\r\n }\r\n\r\n function getToken(uint256 n) external view returns(address){\r\n return tokens[n];\r\n }\r\n\r\n function getName(address viaAddress) external view returns(bytes32) {\r\n return token[viaAddress].name;\r\n }\r\n\r\n function getType(address viaAddress) external view returns(bytes32) {\r\n return token[viaAddress].tokenType;\r\n }\r\n\r\n function getNameAndType(address viaAddress) external view returns(bytes32, bytes32){\r\n return (token[viaAddress].name, token[viaAddress].tokenType);\r\n }\r\n\r\n function getTokenByNameType(bytes32 tokenName, bytes32 tokenType) external view returns(address){\r\n for(uint256 q=0; q<tokens.length; q++){\r\n if(token[tokens[q]].name == tokenName && token[tokens[q]].tokenType == tokenType)\r\n return tokens[q];\r\n }\r\n }\r\n\r\n function getIssuer(bytes32 tokenType, bytes32 tokenName) external view returns(address){\r\n return issuers[tokenType][tokenName];\r\n }\r\n\r\n function getIssues() external view returns(address[] memory){\r\n return issues;\r\n }\r\n\r\n function createIssuer(address _target, bytes32 tokenName, bytes32 tokenType, bytes32 tokenCurrency, address feeRate) onlyOwner external{\r\n bytes memory _payload = abi.encodeWithSignature(\"initialize(bytes32,bytes32,address,address,address)\", tokenName, tokenCurrency, owner(), feeRate, bridge);\r\n\r\n // Deploy proxy\r\n address _issuer = deployMinimal(_target, _payload);\r\n emit IssuerCreated(_issuer, tokenName, tokenType);\r\n\r\n if(tokenType == \"Cash\"){\r\n token[_issuer] = via(\"ViaCash\", tokenCurrency);\r\n tokens.push(_issuer);\r\n issuers[\"ViaCash\"][tokenCurrency] = _issuer;\r\n }\r\n else if(tokenType == \"Bond\"){\r\n token[_issuer] = via(\"ViaBond\", tokenCurrency);\r\n tokens.push(_issuer);\r\n issuers[\"ViaBond\"][tokenCurrency] = _issuer;\r\n }\r\n\r\n }\r\n\r\n function issueSecurity(address security, bytes32 company, bytes32 isin, bytes32 currency, address issuer, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external { \r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n\r\n bytes memory _payload = abi.encodeWithSignature(\"initialize(bytes32,bytes32,address,address)\", company, isin, address(this), bridge);\r\n // Deploy proxy\r\n address _securityToken = deployMinimal(securityAddress, _payload);\r\n\r\n securitiesHoldings[security][issuer].isin= isin;\r\n securitiesHoldings[security][issuer].company = company;\r\n securitiesHoldings[security][issuer].currency= currency;\r\n securitiesHoldings[security][issuer].token = _securityToken;\r\n holders[security] = issuer; \r\n securityTokens[_securityToken] = issuer;\r\n issues.push(_securityToken);\r\n\r\n emit securitiesAdded(_securityToken, issuer, isin, currency);\r\n }\r\n\r\n function getSecurityToken(address security, address issuer) external view returns(address){\r\n return securitiesHoldings[security][issuer].token;\r\n }\r\n \r\n function addBalance(address security, address transferor, address transferee, uint256 amount, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n\r\n if(transferor!=address(0x0)){\r\n securitiesHoldings[security][transferee].amount= ABDKMathQuad.add(securitiesHoldings[security][transferee].amount, ABDKMathQuad.fromUInt(amount));\r\n securitiesHoldings[security][transferor].amount= ABDKMathQuad.sub(securitiesHoldings[security][transferor].amount, ABDKMathQuad.fromUInt(amount));\r\n ISecurity(securitiesHoldings[security][holders[security]].token).transferToken(transferor, transferee, amount);\r\n } else {\r\n securitiesHoldings[security][transferee].amount= ABDKMathQuad.fromUInt(amount);\r\n ISecurity(securitiesHoldings[security][holders[security]].token).mintToken(transferee, amount);\r\n }\r\n }\r\n\r\n function checkProduct(address issue) external view returns(bool){\r\n if(securityTokens[issue]!=address(0x0) || holders[issue]!=address(0x0))\r\n return true;\r\n else\r\n return false;\r\n }\r\n \r\n}",
|
|
708
|
-
"sourcePath": "D:\\Code\\verified-L1\\
|
|
708
|
+
"sourcePath": "D:\\Code\\verified-payments-L1\\contracts\\Factory.sol",
|
|
709
709
|
"ast": {
|
|
710
710
|
"absolutePath": "project:/contracts/Factory.sol",
|
|
711
711
|
"exportedSymbols": {
|
|
@@ -20711,7 +20711,7 @@
|
|
|
20711
20711
|
"version": "0.5.7+commit.6da8b019.Emscripten.clang"
|
|
20712
20712
|
},
|
|
20713
20713
|
"networks": {
|
|
20714
|
-
"
|
|
20714
|
+
"5": {
|
|
20715
20715
|
"events": {
|
|
20716
20716
|
"0xc6dcd9892d96224f2231ea63929a93993cc13ba35ed4f182333a05ad231e3a31": {
|
|
20717
20717
|
"anonymous": false,
|
|
@@ -20793,12 +20793,12 @@
|
|
|
20793
20793
|
}
|
|
20794
20794
|
},
|
|
20795
20795
|
"links": {},
|
|
20796
|
-
"address": "
|
|
20797
|
-
"transactionHash": "
|
|
20796
|
+
"address": "0x0d13E5aFECC9b56d7284A9B78DDCDDc00Bd447d0",
|
|
20797
|
+
"transactionHash": "0xd05b2d1f1cc60c4b929511820b4d26d18f05259c3588b8ede99b1e0d10bd12c0"
|
|
20798
20798
|
}
|
|
20799
20799
|
},
|
|
20800
20800
|
"schemaVersion": "3.4.3",
|
|
20801
|
-
"updatedAt": "2022-
|
|
20801
|
+
"updatedAt": "2022-12-06T05:41:00.606Z",
|
|
20802
20802
|
"networkType": "ethereum",
|
|
20803
20803
|
"devdoc": {
|
|
20804
20804
|
"methods": {
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"sourceMap": "303:4820:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4820:20;;;;;;;",
|
|
189
189
|
"deployedSourceMap": "303:4820:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4820:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:166;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2776:166:20;-1:-1:-1;;;;;2776:166:20;;:::i;:::-;;1335:626;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1335:626:20;;;;;;;;;;;;;:::i;4077:535::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4077:535:20;;;;;;-1:-1:-1;;;;;4077:535:20;;:::i;:::-;;;;;;;;;;;;;;;;;;2979:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2979:132:20;;:::i;:::-;;;;;;;;;;;;;;;;1152:175;;;:::i;1969:177::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1969:177:20;-1:-1:-1;;;;;1969:177:20;;:::i;2156:198::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2156:198:20;;;;;;;:::i;3976:89::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3976:89:20;;;;;;;;;;;;;;3157:582;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3157:582:20;;:::i;2362:406::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2362:406:20;-1:-1:-1;;;;;2362:406:20;;:::i;3809:93::-;;;:::i;2776:166::-;2860:11;;-1:-1:-1;;;;;2860:11:20;2846:10;:25;2838:63;;;;;-1:-1:-1;;;;;2838:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;2912:9;:22;;-1:-1:-1;;;;;;2912:22:20;-1:-1:-1;;;;;2912:22:20;;;;;;;;;;2776:166::o;1335:626::-;1440:11;;-1:-1:-1;;;;;1440:11:20;1426:10;:25;1418:52;;;;;-1:-1:-1;;;;;1418:52:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;1484:7;-1:-1:-1;;;;;1484:18:20;1481:473;;;1547:26;1569:3;1547:21;:26::i;:::-;-1:-1:-1;;;;;1518:18:20;;;;;;:11;:18;;;;;:55;;-1:-1:-1;;;;;;1518:55:20;;;;;;;;;;;;1481:473;;;1603:7;-1:-1:-1;;;;;1603:18:20;1600:354;;;1666:26;1688:3;1666:21;:26::i;:::-;-1:-1:-1;;;;;1637:18:20;;;;;;:11;:18;;;;;:55;;;;;;;-1:-1:-1;;;1637:55:20;-1:-1:-1;;;;;1637:55:20;;;;;;;;;1600:354;;;1722:7;-1:-1:-1;;;;;1722:21:20;1719:235;;;1791:26;1813:3;1791:21;:26::i;:::-;-1:-1:-1;;;;;1759:18:20;;;;;;:11;:18;;;;;:58;;-1:-1:-1;;;;;;1759:58:20;;;;;;;;;;;;1719:235;;;1847:7;-1:-1:-1;;;;;1847:21:20;1844:110;;;1916:26;1938:3;1916:21;:26::i;:::-;-1:-1:-1;;;;;1884:18:20;;;;;;:11;:18;;;;;:58;;;;;;;-1:-1:-1;;;1884:58:20;-1:-1:-1;;;;;1884:58:20;;;;;;;;;1844:110;1335:626;;;:::o;4077:535::-;4157:4;4181:23;4193:10;4181:11;:23::i;:::-;:29;;4206:4;4181:29;4173:38;;;;;;4231:4;;;;4230:5;4222:14;;;;;;4247:4;:9;;-1:-1:-1;;4247:9:20;4252:4;4247:9;;;4270;;-1:-1:-1;;;;;4270:9:20;:23;4267:338;;4325:9;;-1:-1:-1;;;;;4325:9:20;;;;4309:151;;4346:113;;4366:92;;4383:43;;4405:20;;;4383:21;:43::i;:::-;4427:30;4449:7;4427:21;:30::i;:::-;4366:16;:92::i;:::-;4346:19;:113::i;:::-;4309:151;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4475:4:20;:12;;-1:-1:-1;;4475:12:20;;;;4502:11;;4267:338;-1:-1:-1;4554:4:20;:12;;-1:-1:-1;;4554:12:20;;;4561:5;4267:338;4077:535;;;;:::o;2979:132::-;3035:14;3089:13;;;:6;:13;;;;;;3069:34;;3089:13;;3069:19;:34::i;:::-;3062:41;;2979:132;;;;:::o;1152:175::-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;1203:11:20;:24;;1217:10;-1:-1:-1;;;;;;1203:24:20;;;;;;;;1238:8;27:10:-1;;-1:-1;23:18;;45:23;;-1:-1;1238:25:20;;;;;;;;;;;;;;1274:9;:22;;;;;;;;;;1307:4;:12;;-1:-1:-1;;1307:12:20;;;1264:55:5;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;1264:55;1152:175:20;:::o;1969:177::-;2057:11;;-1:-1:-1;;;;;2057:11:20;2043:10;:25;2035:66;;;;;-1:-1:-1;;;;;2035:66:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:11;:26;;-1:-1:-1;;;;;;2112:26:20;-1:-1:-1;;;;;2112:26:20;;;;;;;;;;1969:177::o;2156:198::-;2250:11;;-1:-1:-1;;;;;2250:11:20;2236:10;:25;2228:60;;;;;-1:-1:-1;;;;;2228:60:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;2316:30;2338:7;2316:21;:30::i;:::-;2299:14;;;;:6;:14;;;;;;:47;;-1:-1:-1;;;;;;2299:47:20;;;;;;;;;;;;-1:-1:-1;2156:198:20:o;3976:89::-;4048:9;;-1:-1:-1;;;;;4048:9:20;3976:89;:::o;3157:582::-;3212:11;3238:7;-1:-1:-1;;;;;3238:18:20;3235:497;;;3312:10;3300:23;;;;:11;:23;;;;;:31;3280:52;;3300:31;;3280:19;:52::i;:::-;3272:61;;;;3235:497;3363:7;-1:-1:-1;;;;;3363:18:20;3360:372;;;3437:10;3425:23;;;;:11;:23;;;;;:31;3405:52;;-1:-1:-1;;;3425:31:20;;;;3405:19;:52::i;3360:372::-;3488:7;-1:-1:-1;;;;;3488:21:20;3485:247;;;3565:10;3553:23;;;;:11;:23;;;;;:34;3533:55;;3553:34;;3533:19;:55::i;3485:247::-;3619:7;-1:-1:-1;;;;;3619:21:20;3616:116;;;3696:10;3684:23;;;;:11;:23;;;;;:34;3664:55;;-1:-1:-1;;;3684:34:20;;;;3664:19;:55::i;2362:406::-;2444:11;;-1:-1:-1;;;;;2444:11:20;2430:10;:25;2422:62;;;;;-1:-1:-1;;;;;2422:62:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;2495:10;;2546:156;2557:8;:15;2555:17;;2546:156;;;2609:9;-1:-1:-1;;;;;2596:22:20;:8;2605:1;2596:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2596:11:20;:22;2593:98;;;2670:5;;2593:98;2574:3;;2546:156;;;2716:5;2712:48;;2736:8;27:10:-1;;39:1;23:18;;45:23;;-1:-1;2736:24:20;;;;;;;;-1:-1:-1;;;;;2736:24:20;;-1:-1:-1;;;;;;2736:24:20;;;;;;2362:406;;;:::o;3809:93::-;3883:11;;-1:-1:-1;;;;;3883:11:20;3809:93;:::o;2992:392:15:-;3045:7;3064:6;3060:320;;-1:-1:-1;3088:1:15;3072:18;;3060:320;3126:1;3109:14;3150:12;3126:1;3150:3;:12::i;:::-;3136:26;;3180:3;3174;:9;3170:83;;;3202:3;3196;:9;3185:20;;;;;3170:83;;;3228:3;3222;:9;3218:35;;;3250:3;3244;:9;3233:20;;;;;3218:35;3313:5;:11;3328:3;3313:18;-1:-1:-1;;;;;3271:39:15;;;;:60;3347:26;;;-1:-1:-1;3340:33:15;;4749:367:20;4834:11;;4807:4;;-1:-1:-1;;;;;4826:19:20;;;4834:11;;4826:19;4823:48;;;-1:-1:-1;4867:4:20;4860:11;;4823:48;4882:10;;4933:153;4944:8;:15;4942:17;;4933:153;;;4996:6;-1:-1:-1;;;;;4983:19:20;:8;4992:1;4983:11;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4983:11:20;:19;4980:95;;;5054:5;;4980:95;4961:3;;4933:153;;;-1:-1:-1;5103:5:20;4749:367;-1:-1:-1;;4749:367:20:o;20389:2342:15:-;20448:7;20504:6;-1:-1:-1;;;;;20483:11:15;;;;:18;;20498:3;20483:18;;;:27;;;20536:11;;;;:18;;;;;;:27;;;20574:19;;20570:2157;;;20607:9;20620:6;20607:19;20603:354;;;-1:-1:-1;;;;;;20642:6:15;;;;;;;20638:162;;;-1:-1:-1;;;;;;20661:38:15;;20657:42;;20650:49;;20638:162;-1:-1:-1;;;;;;;;;20718:5:15;;;:43;;20714:86;;;-1:-1:-1;;;20770:5:15;;;20763:12;;20714:86;-1:-1:-1;;;;;;20797:3:15;-1:-1:-1;20790:10:15;;-1:-1:-1;20790:10:15;20603:354;-1:-1:-1;;;;;;;20829:38:15;;20825:123;;-1:-1:-1;;;;;;20881:3:15;-1:-1:-1;20874:10:15;;-1:-1:-1;20874:10:15;20825:123;-1:-1:-1;;;;;;20910:38:15;;20906:42;;20899:49;;20570:2157;20973:9;20986:6;20973:19;20969:1758;;;-1:-1:-1;;;;;;;21008:38:15;;21004:123;;-1:-1:-1;;;;;;21060:3:15;-1:-1:-1;21053:10:15;;-1:-1:-1;21053:10:15;21004:123;-1:-1:-1;;;;;;21089:38:15;;21085:42;;21078:49;;20969:1758;-1:-1:-1;;;;;21169:11:15;;;;:44;21225:14;21221:91;;21253:1;21241:13;;21221:91;;;-1:-1:-1;;;21267:45:15;21221:91;-1:-1:-1;;;;;21342:11:15;;;;:44;21398:14;21394:91;;21426:1;21414:13;;21394:91;;;-1:-1:-1;;;21440:45:15;21394:91;21494:24;;;;21530:15;21526:128;;-1:-1:-1;;;21563:5:15;;;21562:44;:92;;591:34;21562:92;;;-1:-1:-1;;;21562:92:15;21555:99;;;;;;;;21526:128;21663:22;;;;21694:11;-1:-1:-1;;;21716:73:15;;;:196;;-1:-1:-1;;;21806:10:15;:73;;:106;;21896:16;21901:10;21896:3;:16::i;:::-;21806:106;;;21882:3;21806:106;21716:196;;;21792:3;21716:196;21694:218;;21943:5;21937:3;21925:9;:15;:23;21921:668;;;21985:1;21973:13;;22009:1;21996:14;;21921:668;;;22047:5;22041:3;22029:9;:15;:23;22025:564;;;22093:5;22081:9;:17;22077:145;;;22133:9;22125:5;:17;22110:32;;;;;22077:145;;;22173:5;22161:9;:17;22157:65;;;22217:5;22205:9;:17;22190:32;;;;;22157:65;22244:1;22232:13;;22025:564;;;22282:5;22276:3;22264:9;:15;:23;22260:329;;;22311:6;22299:18;;22340:1;22327:14;;22260:329;;;22376:3;22370;:9;22366:113;;;22412:3;22406;:9;22391:24;;;;;22366:113;;;22440:3;22434;:9;22430:49;;;22476:3;22470;:9;22455:24;;;;;22430:49;-1:-1:-1;;;;;22490:44:15;;;;22575:5;22569:3;22557:9;:15;:23;22545:35;;22260:329;22708:10;22702:3;22689:9;:16;;22636:1;22632;:5;-1:-1:-1;;;22631:44:15;;;22622:54;;-1:-1:-1;;;;;22622:83:15;;:96;22604:116;;22597:123;;;;;;;;;3781:543;3832:7;3887:6;-1:-1:-1;;;;;3866:11:15;;;;:18;3881:3;3866:18;:27;3915:5;3904:16;;3900:30;;;3929:1;3922:8;;;;;3900:30;-1:-1:-1;;;3968:1:15;3959:11;;-1:-1:-1;;;;;3959:48:15;;3950:58;;;;;;4048:5;4036:8;:17;;4027:27;;;;;;-1:-1:-1;;;;;;;;4098:11:15;;;;4089:54;:94;4205:5;4194:16;;4190:109;;;4223:5;:16;;;4212:27;4190:109;;;4265:5;4254:8;:16;4250:49;;;-1:-1:-1;;4283:16:15;;4272:27;4250:49;4313:6;3781:543;-1:-1:-1;;;3781:543:15:o;1409:498:5:-;1820:4;1864:17;1895:7;1409:498;:::o;49968:570:15:-;50015:7;50043:1;50039;:5;50030:15;;;;;;50052:14;-1:-1:-1;;;50081:40:15;;50077:75;;50131:3;50125:9;;;;50136:13;50077:75;50166:19;50161:1;:24;50157:57;;50195:2;50189:8;;;;50199:12;50157:57;50228:11;50223:1;:16;50219:49;;50249:2;50243:8;;;;50253:12;50219:49;50282:7;50277:1;:12;50273:45;;50299:2;50293:8;;;;50303:12;50273:45;50332:5;50327:1;:10;50323:41;;50347:1;50341:7;;;;50350:11;50323:41;50378:4;50373:1;:9;50369:40;;50392:1;50386:7;;;;50395:11;50369:40;50423:3;50418:1;:8;50414:39;;50436:1;50430:7;;;;50439:11;50414:39;50467:3;50462:1;:8;50458:25;;50482:1;50472:11;50527:6;49968:570;-1:-1:-1;;49968:570:15:o",
|
|
190
190
|
"source": "// (c) Kallol Borah, 2020\r\n// Implementation of authorized persons and rates for services\r\n// SPDX-License-Identifier: MIT\r\n\r\npragma solidity 0.5.7;\r\n\r\nimport \"./interfaces/IRates.sol\";\r\nimport \"abdk-libraries-solidity/ABDKMathQuad.sol\";\r\nimport \"@openzeppelin/upgrades/contracts/Initializable.sol\";\r\n\r\ncontract Rates is IRates, Initializable {\r\n\r\n using ABDKMathQuad for uint256;\r\n using ABDKMathQuad for int256;\r\n using ABDKMathQuad for bytes16;\r\n\r\n //fee structure for payments\r\n struct payments{\r\n bytes16 remittance;\r\n bytes16 redemption;\r\n }\r\n\r\n mapping(address => payments) private paymentFees;\r\n\r\n //fee structure for bond and securities issuing\r\n struct issues{\r\n bytes16 issuing;\r\n bytes16 trading;\r\n }\r\n\r\n mapping(address => issues) private issuingFees;\r\n\r\n //address of who gets Via fees\r\n address private feeToSetter;\r\n\r\n //address of custodian\r\n address private custodian;\r\n\r\n //list of assets and their margins\r\n mapping(bytes32 => bytes16) private assets;\r\n\r\n //list of treasury managers\r\n address[] private managers;\r\n\r\n bool private lock;\r\n\r\n function initialize() public initializer{\r\n feeToSetter = msg.sender;\r\n managers.push(msg.sender);\r\n custodian = msg.sender;\r\n lock = false;\r\n }\r\n\r\n function setFeeTo(address feeTo, uint256 fee, bytes32 feeType) external {\r\n require(msg.sender == feeToSetter, 'Via: FORBIDDEN');\r\n if(feeType==\"issuing\"){\r\n issuingFees[feeTo].issuing = ABDKMathQuad.fromUInt(fee);\r\n }\r\n else if(feeType==\"trading\"){\r\n issuingFees[feeTo].trading = ABDKMathQuad.fromUInt(fee);\r\n }\r\n else if(feeType==\"remittance\"){\r\n paymentFees[feeTo].remittance = ABDKMathQuad.fromUInt(fee);\r\n }\r\n else if(feeType==\"redemption\"){\r\n paymentFees[feeTo].redemption = ABDKMathQuad.fromUInt(fee);\r\n }\r\n }\r\n\r\n function setFeeToSetter(address _feeToSetter) external {\r\n require(msg.sender == feeToSetter, 'Set fee to setter: FORBIDDEN');\r\n feeToSetter = _feeToSetter;\r\n } \r\n\r\n function setMargin(uint256 _margin, bytes32 _asset) external {\r\n require(msg.sender == feeToSetter, 'Set margin : FORBIDDEN');\r\n assets[_asset] = ABDKMathQuad.fromUInt(_margin);\r\n }\r\n\r\n function setTreasury(address _treasury) external {\r\n require(msg.sender == feeToSetter, 'Set treasury : FORBIDDEN');\r\n bool found = false;\r\n uint256 i=0;\r\n for(i=0; i<managers.length; i++){\r\n if(managers[i]==_treasury){\r\n found == true;\r\n break;\r\n }\r\n }\r\n if(!found)\r\n managers.push(_treasury);\r\n }\r\n\r\n function setCustodian(address _custodian) external {\r\n require(msg.sender == feeToSetter, 'Set custodian : FORBIDDEN');\r\n custodian = _custodian;\r\n }\r\n\r\n //get margin for asset \r\n function getMargin(bytes32 asset) external view returns(uint256 margin) {\r\n return ABDKMathQuad.toUInt(assets[asset]);\r\n }\r\n\r\n //get fee for different services\r\n function getFee(bytes32 feeType) external view returns(uint256 fee){\r\n if(feeType==\"issuing\"){\r\n return (ABDKMathQuad.toUInt(issuingFees[msg.sender].issuing));\r\n }\r\n else if(feeType==\"trading\"){\r\n return (ABDKMathQuad.toUInt(issuingFees[msg.sender].trading));\r\n }\r\n else if(feeType==\"remittance\"){\r\n return (ABDKMathQuad.toUInt(paymentFees[msg.sender].remittance));\r\n }\r\n else if(feeType==\"redemption\"){\r\n return (ABDKMathQuad.toUInt(paymentFees[msg.sender].redemption));\r\n }\r\n }\r\n\r\n //gets address to which fee income has to be transferred\r\n function getFeeToSetter() external view returns(address){\r\n return feeToSetter;\r\n }\r\n\r\n //get Custodian address for transferring (backing up) assets\r\n function getCustodian() external view returns(address){\r\n return custodian;\r\n }\r\n \r\n function transferToCustody(uint percent, address transferFrom) external returns(bool){\r\n require(getTreasury(msg.sender)==true);\r\n require(!lock);\r\n lock=true;\r\n if(custodian!=address(0x0)){\r\n address(uint160(custodian)).transfer(ABDKMathQuad.toUInt(ABDKMathQuad.mul(ABDKMathQuad.fromUInt(transferFrom.balance),ABDKMathQuad.fromUInt(percent))));\r\n lock = false;\r\n return true;\r\n }\r\n else{\r\n lock = false;\r\n return false;\r\n }\r\n }\r\n\r\n //verifies if sender (who requests issue of cash tokens against fiat / bond tokens against non-ether assets) is a treasurer\r\n function getTreasury(address sender) private view returns(bool){\r\n if(sender==feeToSetter)\r\n return true;\r\n bool found = false;\r\n uint256 i=0;\r\n for(i=0; i<managers.length; i++){\r\n if(managers[i]==sender){\r\n found == true;\r\n break;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n\r\n}",
|
|
191
|
-
"sourcePath": "D:\\Code\\verified-L1\\
|
|
191
|
+
"sourcePath": "D:\\Code\\verified-payments-L1\\contracts\\Rates.sol",
|
|
192
192
|
"ast": {
|
|
193
193
|
"absolutePath": "project:/contracts/Rates.sol",
|
|
194
194
|
"exportedSymbols": {
|
|
@@ -13401,15 +13401,15 @@
|
|
|
13401
13401
|
"version": "0.5.7+commit.6da8b019.Emscripten.clang"
|
|
13402
13402
|
},
|
|
13403
13403
|
"networks": {
|
|
13404
|
-
"
|
|
13404
|
+
"5": {
|
|
13405
13405
|
"events": {},
|
|
13406
13406
|
"links": {},
|
|
13407
|
-
"address": "
|
|
13408
|
-
"transactionHash": "
|
|
13407
|
+
"address": "0x9b884592F9B73A02EC1C1D62b8ab778307a6C179",
|
|
13408
|
+
"transactionHash": "0x7e78a459473b98585afffb4258ed49e6fe569aa9f36c7792e2c10b37bbde7d09"
|
|
13409
13409
|
}
|
|
13410
13410
|
},
|
|
13411
13411
|
"schemaVersion": "3.4.3",
|
|
13412
|
-
"updatedAt": "2022-
|
|
13412
|
+
"updatedAt": "2022-12-06T05:41:00.660Z",
|
|
13413
13413
|
"networkType": "ethereum",
|
|
13414
13414
|
"devdoc": {
|
|
13415
13415
|
"methods": {}
|
|
@@ -455,7 +455,7 @@
|
|
|
455
455
|
"sourceMap": "340:2546:21:-;;;;;;;;;",
|
|
456
456
|
"deployedSourceMap": "340:2546:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;340:2546:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1147:83:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2577:149:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2577:149:3;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1636:89;;;:::i;:::-;;;;;;;;;;;;;;;;797:280:21;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;797:280:21;;;;;;;;-1:-1:-1;;;;;797:280:21;;;;;;;;;;;;:::i;:::-;;3184:300:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3184:300:3;;;;;;;;;;;;;;;;;:::i;2075:76:21:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3879:207:3;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3879:207:3;;;;;;;;:::i;2441:440:21:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;2441:440:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1783:108:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1783:108:3;-1:-1:-1;;;;;1783:108:3;;:::i;1746:137:2:-;;;:::i;2324:109:21:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2324:109:21;;;;;;;;:::i;959:77:2:-;;;:::i;:::-;;;;-1:-1:-1;;;;;959:77:2;;;;;;;;;;;;;;1310:92;;;:::i;1349:87:21:-;;;:::i;4573:258:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4573:258:3;;;;;;;;:::i;2094:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2094:155:3;;;;;;;;:::i;741:142:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;741:142:2;-1:-1:-1;;;;;741:142:2;;:::i;2307:132:3:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2307:132:3;;;;;;;;;;:::i;2032:107:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2032:107:2;-1:-1:-1;;;;;2032:107:2;;:::i;2159:157:21:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2159:157:21;;;;;;;;;;;;;;;;;:::i;1147:83::-;1217:5;1210:12;;;;;;;;-1:-1:-1;;1210:12:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1184:13;;1210:12;;1217:5;;1210:12;;1217:5;1210:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1147:83;;:::o;2577:149:3:-;2643:4;2659:39;2668:12;:10;:12::i;:::-;2682:7;2691:6;2659:8;:39::i;:::-;-1:-1:-1;2715:4:3;2577:149;;;;:::o;1636:89::-;1706:12;;1636:89;:::o;797:280:21:-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;912:26:21;931:6;912:18;:26::i;:::-;964:23;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;964:23:21;;;;;;949:39;;;;:5;;:39;;;:::i;:::-;-1:-1:-1;1016:25:21;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;1016:25:21;;;;;;999:43;;;;:7;;:43;;;:::i;:::-;-1:-1:-1;1053:6:21;:16;;-1:-1:-1;;;;;;1053:16:21;-1:-1:-1;;;;;1053:16:21;;;;;1264:55:5;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;1264:55;797:280:21;;;;;:::o;3184:300:3:-;3273:4;3289:36;3299:6;3307:9;3318:6;3289:9;:36::i;:::-;3335:121;3344:6;3352:12;:10;:12::i;:::-;3366:89;3404:6;3366:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3366:19:3;;;;;;:11;:19;;;;;;3386:12;:10;:12::i;:::-;-1:-1:-1;;;;;3366:33:3;;;;;;;;;;;;-1:-1:-1;3366:33:3;;;:89;;:37;:89;:::i;:::-;3335:8;:121::i;:::-;-1:-1:-1;3473:4:3;3184:300;;;;;:::o;2075:76:21:-;2141:2;2075:76;:::o;3879:207:3:-;3959:4;3975:83;3984:12;:10;:12::i;:::-;3998:7;4007:50;4046:10;4007:11;:25;4019:12;:10;:12::i;:::-;-1:-1:-1;;;;;4007:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4007:25:3;;;:34;;;;;;;;;;;:50;:38;:50;:::i;2441:440:21:-;2621:36;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2621:36:21;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2621:36:21;;;;;2611:47;;;;;;2701:65;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2701:65:21;;;;;;2691:76;;;;;;;;;2823:6;;2589:19;2786:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2611:47;;2691:76;-1:-1:-1;;;;;2823:6:21;;;;;;2786:34;;;;;-1:-1:-1;;2786:34:21;;;;;;;;;;;2823:6;2786:34;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2786:34:21;;;;;;;;-1:-1:-1;;;;;2786:43:21;;2778:52;;;;;;2841:32;2850:5;2857:7;2866:6;2841:8;:32::i;:::-;2441:440;;;;;;;;;:::o;1783:108:3:-;-1:-1:-1;;;;;1866:18:3;1840:7;1866:18;;;:9;:18;;;;;;;1783:108::o;1746:137:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:2;;;;;;;;;;;;;;;1828:6;;1807:40;;1844:1;;-1:-1:-1;;;;;1828:6:2;;1807:40;;1844:1;;1807:40;1857:6;:19;;-1:-1:-1;;;;;;1857:19:2;;;1746:137::o;2324:109:21:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:2;;;;;;;;;;;;;;;2404:21:21;2410:6;2418;2404:5;:21::i;:::-;2324:109;;:::o;959:77:2:-;1023:6;;-1:-1:-1;;;;;1023:6:2;959:77;:::o;1310:92::-;1389:6;;1350:4;;-1:-1:-1;;;;;1389:6:2;1373:12;:10;:12::i;:::-;-1:-1:-1;;;;;1373:22:2;;1366:29;;1310:92;:::o;1349:87:21:-;1421:7;1414:14;;;;;;;;-1:-1:-1;;1414:14:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1388:13;;1414:14;;1421:7;;1414:14;;1421:7;1414:14;;;;;;;;;;;;;;;;;;;;;;;;4573:258:3;4658:4;4674:129;4683:12;:10;:12::i;:::-;4697:7;4706:96;4745:15;4706:96;;;;;;;;;;;;;;;;;:11;:25;4718:12;:10;:12::i;:::-;-1:-1:-1;;;;;4706:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4706:25:3;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2094:155::-;2163:4;2179:42;2189:12;:10;:12::i;:::-;2203:9;2214:6;2179:9;:42::i;741:142:2:-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;806:6:2;:15;;-1:-1:-1;;;;;;806:15:2;-1:-1:-1;;;;;806:15:2;;;;;;;;;;;836:40;;869:6;;;-1:-1:-1;;836:40:2;;-1:-1:-1;;836:40:2;1268:14:5;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;741:142:2;;:::o;2307:132:3:-;-1:-1:-1;;;;;2405:18:3;;;2379:7;2405:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2307:132::o;2032:107:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:2;;;;;;;;;;;;;;;2104:28;2123:8;2104:18;:28::i;:::-;2032:107;:::o;2159:157:21:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1155:54:2;;;;;;;;;;;;;;;2267:41:21;2277:10;2289;2301:6;2267:9;:41::i;:::-;2159:157;;;:::o;867:96:0:-;946:10;867:96;:::o;7427:332:3:-;-1:-1:-1;;;;;7520:19:3;;7512:68;;;;-1:-1:-1;;;;;7512:68:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7598:21:3;;7590:68;;;;-1:-1:-1;;;;;7590:68:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7669:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7720:32;;;;;;;;;;;;;;;;;7427:332;;;:::o;1409:498:5:-;1820:4;1864:17;1895:7;1409:498;:::o;5305:464:3:-;-1:-1:-1;;;;;5402:20:3;;5394:70;;;;-1:-1:-1;;;;;5394:70:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5482:23:3;;5474:71;;;;-1:-1:-1;;;;;5474:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5576;5598:6;5576:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:17:3;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5556:17:3;;;;;;;:9;:17;;;;;;:91;;;;5680:20;;;;;;;:32;;5705:6;5680:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5657:20:3;;;;;;;:9;:20;;;;;;;;;:55;;;;5727:35;;;;;;;5657:20;;5727:35;;;;;;;;;;;;;5305:464;;;:::o;1732:187:1:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:1;;;1732:187::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;938:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:1:o;6039:302:3:-;-1:-1:-1;;;;;6114:21:3;;6106:65;;;;;-1:-1:-1;;;;;6106:65:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;6197:12;;:24;;6214:6;6197:24;:16;:24;:::i;:::-;6182:12;:39;-1:-1:-1;;;;;6252:18:3;;;;;;:9;:18;;;;;;:30;;6275:6;6252:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6231:18:3;;;;;;:9;:18;;;;;;;;:51;;;;6297:37;;;;;;;6231:18;;;;6297:37;;;;;;;;;;6039:302;;:::o;2240:225:2:-;-1:-1:-1;;;;;2313:22:2;;2305:73;;;;-1:-1:-1;;;;;2305:73:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2414:6;;2393:38;;-1:-1:-1;;;;;2393:38:2;;;;2414:6;;2393:38;;2414:6;;2393:38;2441:6;:17;;-1:-1:-1;;;;;;2441:17:2;-1:-1:-1;;;;;2441:17:2;;;;;;;;;;2240:225::o;340:2546:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;340:2546:21;;;-1:-1:-1;340:2546:21;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;",
|
|
457
457
|
"source": "// Verified securities manager that updates holdings of securities by users\r\n// (c) Kallol Borah, 2021\r\n\r\npragma solidity 0.5.7;\r\n\r\nimport \"./interfaces/ISecurity.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\";\r\n\r\ncontract Security is ISecurity, ERC20, Ownable {\r\n\r\n string private _name;\r\n string private _symbol;\r\n\r\n address private bridge;\r\n\r\n /**\r\n * @dev Sets the values for {name} and {symbol}.\r\n *\r\n * The default value of {decimals} is 18. To select a different value for\r\n * {decimals} you should overload it.\r\n *\r\n * All two of these values are immutable: they can only be set once during\r\n * construction.\r\n */\r\n function initialize(bytes32 name_, bytes32 symbol_, address _owner, address _bridge) public initializer {\r\n Ownable.initialize(_owner);\r\n _name = string(abi.encodePacked(name_));\r\n _symbol = string(abi.encodePacked(symbol_));\r\n bridge = _bridge;\r\n }\r\n\r\n /**\r\n * @dev Returns the name of the token.\r\n */\r\n function name() public view returns (string memory) {\r\n return _name;\r\n }\r\n\r\n /**\r\n * @dev Returns the symbol of the token, usually a shorter version of the\r\n * name.\r\n */\r\n function symbol() public view returns (string memory) {\r\n return _symbol;\r\n }\r\n\r\n /**\r\n * @dev Returns the number of decimals used to get its user representation.\r\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\r\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\r\n *\r\n * Tokens usually opt for a value of 18, imitating the relationship between\r\n * Ether and Wei. This is the value {ERC20} uses, unless this function is\r\n * overridden;\r\n *\r\n * NOTE: This information is only used for _display_ purposes: it in\r\n * no way affects any of the arithmetic of the contract, including\r\n * {IERC20-balanceOf} and {IERC20-transfer}.\r\n */\r\n function decimals() public view returns (uint8) {\r\n return 18;\r\n }\r\n\r\n function transferToken(address transferor, address transferee, uint256 amount) onlyOwner external{\r\n _transfer(transferor, transferee, amount);\r\n }\r\n\r\n function mintToken(address issuer, uint256 amount) onlyOwner external{\r\n _mint(issuer, amount);\r\n }\r\n\r\n function approveToken(address owner, address spender, uint256 amount, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n _approve(owner, spender, amount);\r\n }\r\n\r\n}\r\n\r\n",
|
|
458
|
-
"sourcePath": "D:\\Code\\verified-L1\\
|
|
458
|
+
"sourcePath": "D:\\Code\\verified-payments-L1\\contracts\\Security.sol",
|
|
459
459
|
"ast": {
|
|
460
460
|
"absolutePath": "project:/contracts/Security.sol",
|
|
461
461
|
"exportedSymbols": {
|
|
@@ -5091,15 +5091,15 @@
|
|
|
5091
5091
|
"version": "0.5.7+commit.6da8b019.Emscripten.clang"
|
|
5092
5092
|
},
|
|
5093
5093
|
"networks": {
|
|
5094
|
-
"
|
|
5094
|
+
"5": {
|
|
5095
5095
|
"events": {},
|
|
5096
5096
|
"links": {},
|
|
5097
|
-
"address": "
|
|
5098
|
-
"transactionHash": "
|
|
5097
|
+
"address": "0x9892B3200A52E5051ba991b8F70c286B53f6966d",
|
|
5098
|
+
"transactionHash": "0xdf0e2ec577325001db12a292ac159904284f1f4c7242de333b00f171c8affdc2"
|
|
5099
5099
|
}
|
|
5100
5100
|
},
|
|
5101
5101
|
"schemaVersion": "3.4.3",
|
|
5102
|
-
"updatedAt": "2022-
|
|
5102
|
+
"updatedAt": "2022-12-06T05:41:00.669Z",
|
|
5103
5103
|
"networkType": "ethereum",
|
|
5104
5104
|
"devdoc": {
|
|
5105
5105
|
"methods": {
|