From e633deea8baf6f798eef7404f7da39db34dd3d27 Mon Sep 17 00:00:00 2001 From: ts0yu <120932697+ts0yu@users.noreply.github.com> Date: Thu, 15 Aug 2024 18:56:43 +0000 Subject: [PATCH] feat(refactor): add artifacts --- src/artifacts/ArenaToken.json | 1 + src/artifacts/LiquidExchange.json | 1 + src/artifacts/PoolManager.json | 1 + 3 files changed, 3 insertions(+) create mode 100644 src/artifacts/ArenaToken.json create mode 100644 src/artifacts/LiquidExchange.json create mode 100644 src/artifacts/PoolManager.json diff --git a/src/artifacts/ArenaToken.json b/src/artifacts/ArenaToken.json new file mode 100644 index 0000000..e4d9182 --- /dev/null +++ b/src/artifacts/ArenaToken.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60e060405234801561001057600080fd5b50604051610f71380380610f7183398101604081905261002f916101c1565b828282600061003e84826102cd565b50600161004b83826102cd565b5060ff81166080524660a05261005f61006e565b60c05250610400945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516100a0919061038b565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261012f57600080fd5b81516001600160401b0381111561014857610148610108565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017657610176610108565b60405281815283820160200185101561018e57600080fd5b60005b828110156101ad57602081860181015183830182015201610191565b506000918101602001919091529392505050565b6000806000606084860312156101d657600080fd5b83516001600160401b038111156101ec57600080fd5b6101f88682870161011e565b602086015190945090506001600160401b0381111561021657600080fd5b6102228682870161011e565b925050604084015160ff8116811461023957600080fd5b809150509250925092565b600181811c9082168061025857607f821691505b60208210810361027857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102c857806000526020600020601f840160051c810160208510156102a55750805b601f840160051c820191505b818110156102c557600081556001016102b1565b50505b505050565b81516001600160401b038111156102e6576102e6610108565b6102fa816102f48454610244565b8461027e565b6020601f82116001811461032e57600083156103165750848201515b600019600385901b1c1916600184901b1784556102c5565b600084815260208120601f198516915b8281101561035e578785015182556020948501946001909201910161033e565b508482101561037c5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600080835461039981610244565b6001821680156103b057600181146103c5576103f5565b60ff19831686528115158202860193506103f5565b86600052602060002060005b838110156103ed578154888201526001909101906020016103d1565b505081860193505b509195945050505050565b60805160a05160c051610b4261042f60003960006104540152600061041f015260006101440152610b426000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c57806395d89b411161006657806395d89b41146101d3578063a9059cbb146101db578063d505accf146101ee578063dd62ed3e1461020357600080fd5b806340c10f191461018057806370a08231146101935780637ecebe00146101b357600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd1461012c578063313ce5671461013f5780633644e51514610178575b600080fd5b6100dc61022e565b6040516100e9919061085e565b60405180910390f35b6101056101003660046108c8565b6102bc565b60405190151581526020016100e9565b61011e60025481565b6040519081526020016100e9565b61010561013a3660046108f2565b610329565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e9565b61011e61041b565b61010561018e3660046108c8565b610476565b61011e6101a136600461092f565b60036020526000908152604090205481565b61011e6101c136600461092f565b60056020526000908152604090205481565b6100dc61048b565b6101056101e93660046108c8565b610498565b6102016101fc366004610951565b610510565b005b61011e6102113660046109c4565b600460209081526000928352604080842090915290825290205481565b6000805461023b906109f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610267906109f7565b80156102b45780601f10610289576101008083540402835291602001916102b4565b820191906000526020600020905b81548152906001019060200180831161029757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103179086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610385576103608382610a47565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103ad908490610a47565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104089087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104515761044c610759565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600061048283836107f3565b50600192915050565b6001805461023b906109f7565b336000908152600360205260408120805483919083906104b9908490610a47565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103179086815260200190565b428410156105655760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161057161041b565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561067d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106b35750876001600160a01b0316816001600160a01b0316145b6106f05760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161055c565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161078b9190610a5a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108059190610af9565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b602081526000825180602084015260005b8181101561088c576020818601810151604086840101520161086f565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146108c357600080fd5b919050565b600080604083850312156108db57600080fd5b6108e4836108ac565b946020939093013593505050565b60008060006060848603121561090757600080fd5b610910846108ac565b925061091e602085016108ac565b929592945050506040919091013590565b60006020828403121561094157600080fd5b61094a826108ac565b9392505050565b600080600080600080600060e0888a03121561096c57600080fd5b610975886108ac565b9650610983602089016108ac565b95506040880135945060608801359350608088013560ff811681146109a757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156109d757600080fd5b6109e0836108ac565b91506109ee602084016108ac565b90509250929050565b600181811c90821680610a0b57607f821691505b602082108103610a2b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032357610323610a31565b6000808354818160011c90506001821680610a7657607f821691505b602082108103610a9457634e487b7160e01b84526022600452602484fd5b808015610aa85760018114610abd57610aed565b60ff1984168752821515830287019450610aed565b60008881526020902060005b84811015610ae557815489820152600190910190602001610ac9565b505082870194505b50929695505050505050565b8082018082111561032357610323610a3156fea2646970667358221220ccfebb1e4e8032872e76643f45a308f5dc7882203f45905855bb86665e59033d64736f6c634300081a0033","sourceMap":"62:276:2:-:0;;;97:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;173:4;179:6;187:8;2094:4:0;:12;173:4:2;2094::0;:12;:::i;:::-;-1:-1:-1;2116:6:0;:16;2125:7;2116:6;:16;:::i;:::-;-1:-1:-1;2142:20:0;;;;;2192:13;2173:32;;2242:24;:22;:24::i;:::-;2215:51;;-1:-1:-1;62:276:2;;-1:-1:-1;;;;;62:276:2;5510:446:0;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;5269:25:4;;;;5310:18;;5303:34;;;;5833:14:0;5353:18:4;;;5346:34;5869:13:0;5396:18:4;;;5389:34;5912:4:0;5439:19:4;;;5432:61;5241:19;;5640:295:0;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;14:127:4:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:834;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:4;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:4;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:4;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:4;;;725:1;722;715:12;670:59;747:1;757:143;771:6;768:1;765:13;757:143;;;883:4;867:14;;;863:25;;857:32;834:14;;;830:25;;823:67;786:12;757:143;;;-1:-1:-1;948:1:4;920:19;;;941:4;916:30;909:41;;;;924:6;146:834;-1:-1:-1;;;146:834:4:o;985:707::-;1091:6;1099;1107;1160:2;1148:9;1139:7;1135:23;1131:32;1128:52;;;1176:1;1173;1166:12;1128:52;1203:16;;-1:-1:-1;;;;;1231:30:4;;1228:50;;;1274:1;1271;1264:12;1228:50;1297:61;1350:7;1341:6;1330:9;1326:22;1297:61;:::i;:::-;1404:2;1389:18;;1383:25;1287:71;;-1:-1:-1;1383:25:4;-1:-1:-1;;;;;;1420:32:4;;1417:52;;;1465:1;1462;1455:12;1417:52;1488:63;1543:7;1532:8;1521:9;1517:24;1488:63;:::i;:::-;1478:73;;;1594:2;1583:9;1579:18;1573:25;1638:4;1631:5;1627:16;1620:5;1617:27;1607:55;;1658:1;1655;1648:12;1607:55;1681:5;1671:15;;;985:707;;;;;:::o;1697:380::-;1776:1;1772:12;;;;1819;;;1840:61;;1894:4;1886:6;1882:17;1872:27;;1840:61;1947:2;1939:6;1936:14;1916:18;1913:38;1910:161;;1993:10;1988:3;1984:20;1981:1;1974:31;2028:4;2025:1;2018:15;2056:4;2053:1;2046:15;1910:161;;1697:380;;;:::o;2208:518::-;2310:2;2305:3;2302:11;2299:421;;;2346:5;2343:1;2336:16;2390:4;2387:1;2377:18;2460:2;2448:10;2444:19;2441:1;2437:27;2431:4;2427:38;2496:4;2484:10;2481:20;2478:47;;;-1:-1:-1;2519:4:4;2478:47;2574:2;2569:3;2565:12;2562:1;2558:20;2552:4;2548:31;2538:41;;2629:81;2647:2;2640:5;2637:13;2629:81;;;2706:1;2692:16;;2673:1;2662:13;2629:81;;;2633:3;;2299:421;2208:518;;;:::o;2902:1299::-;3022:10;;-1:-1:-1;;;;;3044:30:4;;3041:56;;;3077:18;;:::i;:::-;3106:97;3196:6;3156:38;3188:4;3182:11;3156:38;:::i;:::-;3150:4;3106:97;:::i;:::-;3252:4;3283:2;3272:14;;3300:1;3295:649;;;;3988:1;4005:6;4002:89;;;-1:-1:-1;4057:19:4;;;4051:26;4002:89;-1:-1:-1;;2859:1:4;2855:11;;;2851:24;2847:29;2837:40;2883:1;2879:11;;;2834:57;4104:81;;3265:930;;3295:649;2155:1;2148:14;;;2192:4;2179:18;;-1:-1:-1;;3331:20:4;;;3449:222;3463:7;3460:1;3457:14;3449:222;;;3545:19;;;3539:26;3524:42;;3652:4;3637:20;;;;3605:1;3593:14;;;;3479:12;3449:222;;;3453:3;3699:6;3690:7;3687:19;3684:201;;;3760:19;;;3754:26;-1:-1:-1;;3843:1:4;3839:14;;;3855:3;3835:24;3831:37;3827:42;3812:58;3797:74;;3684:201;-1:-1:-1;;;;3931:1:4;3915:14;;;3911:22;3898:36;;-1:-1:-1;2902:1299:4:o;4206:799::-;4336:3;4365:1;4398:6;4392:13;4428:36;4454:9;4428:36;:::i;:::-;4495:1;4480:17;;4506:133;;;;4653:1;4648:332;;;;4473:507;;4506:133;-1:-1:-1;;4539:24:4;;4527:37;;4612:14;;4605:22;4593:35;;4584:45;;;-1:-1:-1;4506:133:4;;4648:332;4679:6;4676:1;4669:17;4727:4;4724:1;4714:18;4754:1;4768:166;4782:6;4779:1;4776:13;4768:166;;;4862:14;;4849:11;;;4842:35;4918:1;4905:15;;;;4804:4;4797:12;4768:166;;;4772:3;;4963:6;4958:3;4954:16;4947:23;;4473:507;-1:-1:-1;4996:3:4;;4206:799;-1:-1:-1;;;;;4206:799:4:o;5010:489::-;62:276:2;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c57806395d89b411161006657806395d89b41146101d3578063a9059cbb146101db578063d505accf146101ee578063dd62ed3e1461020357600080fd5b806340c10f191461018057806370a08231146101935780637ecebe00146101b357600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd1461012c578063313ce5671461013f5780633644e51514610178575b600080fd5b6100dc61022e565b6040516100e9919061085e565b60405180910390f35b6101056101003660046108c8565b6102bc565b60405190151581526020016100e9565b61011e60025481565b6040519081526020016100e9565b61010561013a3660046108f2565b610329565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e9565b61011e61041b565b61010561018e3660046108c8565b610476565b61011e6101a136600461092f565b60036020526000908152604090205481565b61011e6101c136600461092f565b60056020526000908152604090205481565b6100dc61048b565b6101056101e93660046108c8565b610498565b6102016101fc366004610951565b610510565b005b61011e6102113660046109c4565b600460209081526000928352604080842090915290825290205481565b6000805461023b906109f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610267906109f7565b80156102b45780601f10610289576101008083540402835291602001916102b4565b820191906000526020600020905b81548152906001019060200180831161029757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103179086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610385576103608382610a47565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103ad908490610a47565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104089087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104515761044c610759565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600061048283836107f3565b50600192915050565b6001805461023b906109f7565b336000908152600360205260408120805483919083906104b9908490610a47565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103179086815260200190565b428410156105655760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161057161041b565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561067d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106b35750876001600160a01b0316816001600160a01b0316145b6106f05760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161055c565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161078b9190610a5a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108059190610af9565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b602081526000825180602084015260005b8181101561088c576020818601810151604086840101520161086f565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146108c357600080fd5b919050565b600080604083850312156108db57600080fd5b6108e4836108ac565b946020939093013593505050565b60008060006060848603121561090757600080fd5b610910846108ac565b925061091e602085016108ac565b929592945050506040919091013590565b60006020828403121561094157600080fd5b61094a826108ac565b9392505050565b600080600080600080600060e0888a03121561096c57600080fd5b610975886108ac565b9650610983602089016108ac565b95506040880135945060608801359350608088013560ff811681146109a757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156109d757600080fd5b6109e0836108ac565b91506109ee602084016108ac565b90509250929050565b600181811c90821680610a0b57607f821691505b602082108103610a2b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032357610323610a31565b6000808354818160011c90506001821680610a7657607f821691505b602082108103610a9457634e487b7160e01b84526022600452602484fd5b808015610aa85760018114610abd57610aed565b60ff1984168752821515830287019450610aed565b60008881526020902060005b84811015610ae557815489820152600190910190602001610ac9565b505082870194505b50929695505050505050565b8082018082111561032357610323610a3156fea2646970667358221220ccfebb1e4e8032872e76643f45a308f5dc7882203f45905855bb86665e59033d64736f6c634300081a0033","sourceMap":"62:276:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:18:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2461:211;;;;;;:::i;:::-;;:::i;:::-;;;1194:14:4;;1187:22;1169:41;;1157:2;1142:18;2461:211:0;1029:187:4;1304:26:0;;;;;;;;;1367:25:4;;;1355:2;1340:18;1304:26:0;1221:177:4;3057:592:0;;;;;;:::i;:::-;;:::i;1083:31::-;;;;;;;;1954:4:4;1942:17;;;1924:36;;1912:2;1897:18;1083:31:0;1782:184:4;5327:177:0;;;:::i;205:131:2:-;;;;;;:::i;:::-;;:::i;1337:44:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1751:41;;;;;;:::i;:::-;;;;;;;;;;;;;;1056:20;;;:::i;2678:373::-;;;;;;:::i;:::-;;:::i;3838:1483::-;;;;;;:::i;:::-;;:::i;:::-;;1388:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1031:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2461:211::-;2561:10;2535:4;2551:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2551:30:0;;;;;;;;;;:39;;;2606:37;2535:4;;2551:30;;2606:37;;;;2584:6;1367:25:4;;1355:2;1340:18;;1221:177;2606:37:0;;;;;;;;-1:-1:-1;2661:4:0;2461:211;;;;;:::o;3057:592::-;-1:-1:-1;;;;;3209:15:0;;3175:4;3209:15;;;:9;:15;;;;;;;;3225:10;3209:27;;;;;;;;-1:-1:-1;;3287:28:0;;3283:80;;3347:16;3357:6;3347:7;:16;:::i;:::-;-1:-1:-1;;;;;3317:15:0;;;;;;:9;:15;;;;;;;;3333:10;3317:27;;;;;;;:46;3283:80;-1:-1:-1;;;;;3374:15:0;;;;;;:9;:15;;;;;:25;;3393:6;;3374:15;:25;;3393:6;;3374:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3545:13:0;;;;;;;:9;:13;;;;;;;:23;;;;;;3594:26;3545:13;;3594:26;;;;;;;3562:6;1367:25:4;;1355:2;1340:18;;1221:177;3594:26:0;;;;;;;;-1:-1:-1;3638:4:0;;3057:592;-1:-1:-1;;;;3057:592:0:o;5327:177::-;5384:7;5427:16;5410:13;:33;:87;;5473:24;:22;:24::i;:::-;5403:94;;5327:177;:::o;5410:87::-;-1:-1:-1;5446:24:0;;5327:177::o;205:131:2:-;269:4;285:23;291:8;301:6;285:5;:23::i;:::-;-1:-1:-1;325:4:2;205:131;;;;:::o;1056:20:0:-;;;;;;;:::i;2678:373::-;2774:10;2748:4;2764:21;;;:9;:21;;;;;:31;;2789:6;;2764:21;2748:4;;2764:31;;2789:6;;2764:31;:::i;:::-;;;;-1:-1:-1;;;;;;;2941:13:0;;;;;;:9;:13;;;;;;;:23;;;;;;2990:32;2999:10;;2990:32;;;;2958:6;1367:25:4;;1355:2;1340:18;;1221:177;3838:1483:0;4057:15;4045:8;:27;;4037:63;;;;-1:-1:-1;;;4037:63:0;;4369:2:4;4037:63:0;;;4351:21:4;4408:2;4388:18;;;4381:30;4447:25;4427:18;;;4420:53;4490:18;;4037:63:0;;;;;;;;;4265:24;4292:805;4428:18;:16;:18::i;:::-;-1:-1:-1;;;;;4873:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4511:449;;4555:165;4511:449;;;4806:25:4;4847:18;;;4840:60;;;;4936:32;;;4916:18;;;4909:60;4985:18;;;4978:34;;;5028:19;;;5021:35;;;;5072:19;;;;5065:35;;;4511:449:0;;;;;;;;;;4778:19:4;;;4511:449:0;;;4472:514;;;;;;;;-1:-1:-1;;;4350:658:0;;;5369:27:4;5412:11;;;5405:27;;;;5448:12;;;5441:28;;;;5485:12;;4350:658:0;;;-1:-1:-1;;4350:658:0;;;;;;;;;4319:707;;4350:658;4319:707;;;;4292:805;;;;;;;;;5735:25:4;5808:4;5796:17;;5776:18;;;5769:45;5830:18;;;5823:34;;;5873:18;;;5866:34;;;5707:19;;4292:805:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4292:805:0;;-1:-1:-1;;4292:805:0;;;-1:-1:-1;;;;;;;5120:30:0;;;;;;:59;;;5174:5;-1:-1:-1;;;;;5154:25:0;:16;-1:-1:-1;;;;;5154:25:0;;5120:59;5112:86;;;;-1:-1:-1;;;5112:86:0;;6113:2:4;5112:86:0;;;6095:21:4;6152:2;6132:18;;;6125:30;-1:-1:-1;;;6171:18:4;;;6164:44;6225:18;;5112:86:0;5911:338:4;5112:86:0;-1:-1:-1;;;;;5213:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5283:31;1367:25:4;;;5213:36:0;;5283:31;;;;;1340:18:4;5283:31:0;;;;;;;3838:1483;;;;;;;:::o;5510:446::-;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;7736:25:4;;;;7777:18;;7770:34;;;;5833:14:0;7820:18:4;;;7813:34;5869:13:0;7863:18:4;;;7856:34;5912:4:0;7906:19:4;;;7899:61;7708:19;;5640:295:0;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;6150:325::-;6235:6;6220:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6387:13:0;;;;;;:9;:13;;;;;;;;:23;;;;;;6436:32;1367:25:4;;;6436:32:0;;1340:18:4;6436:32:0;;;;;;;6150:325;;:::o;14:527:4:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;546:173::-;614:20;;-1:-1:-1;;;;;663:31:4;;653:42;;643:70;;709:1;706;699:12;643:70;546:173;;;:::o;724:300::-;792:6;800;853:2;841:9;832:7;828:23;824:32;821:52;;;869:1;866;859:12;821:52;892:29;911:9;892:29;:::i;:::-;882:39;990:2;975:18;;;;962:32;;-1:-1:-1;;;724:300:4:o;1403:374::-;1480:6;1488;1496;1549:2;1537:9;1528:7;1524:23;1520:32;1517:52;;;1565:1;1562;1555:12;1517:52;1588:29;1607:9;1588:29;:::i;:::-;1578:39;;1636:38;1670:2;1659:9;1655:18;1636:38;:::i;:::-;1403:374;;1626:48;;-1:-1:-1;;;1743:2:4;1728:18;;;;1715:32;;1403:374::o;2153:186::-;2212:6;2265:2;2253:9;2244:7;2240:23;2236:32;2233:52;;;2281:1;2278;2271:12;2233:52;2304:29;2323:9;2304:29;:::i;:::-;2294:39;2153:186;-1:-1:-1;;;2153:186:4:o;2344:903::-;2455:6;2463;2471;2479;2487;2495;2503;2556:3;2544:9;2535:7;2531:23;2527:33;2524:53;;;2573:1;2570;2563:12;2524:53;2596:29;2615:9;2596:29;:::i;:::-;2586:39;;2644:38;2678:2;2667:9;2663:18;2644:38;:::i;:::-;2634:48;-1:-1:-1;2751:2:4;2736:18;;2723:32;;-1:-1:-1;2852:2:4;2837:18;;2824:32;;-1:-1:-1;2934:3:4;2919:19;;2906:33;2983:4;2970:18;;2958:31;;2948:59;;3003:1;3000;2993:12;2948:59;2344:903;;;;-1:-1:-1;2344:903:4;;;;3026:7;3106:3;3091:19;;3078:33;;-1:-1:-1;3210:3:4;3195:19;;;3182:33;;2344:903;-1:-1:-1;;2344:903:4:o;3252:260::-;3320:6;3328;3381:2;3369:9;3360:7;3356:23;3352:32;3349:52;;;3397:1;3394;3387:12;3349:52;3420:29;3439:9;3420:29;:::i;:::-;3410:39;;3468:38;3502:2;3491:9;3487:18;3468:38;:::i;:::-;3458:48;;3252:260;;;;;:::o;3517:380::-;3596:1;3592:12;;;;3639;;;3660:61;;3714:4;3706:6;3702:17;3692:27;;3660:61;3767:2;3759:6;3756:14;3736:18;3733:38;3730:161;;3813:10;3808:3;3804:20;3801:1;3794:31;3848:4;3845:1;3838:15;3876:4;3873:1;3866:15;3730:161;;3517:380;;;:::o;3902:127::-;3963:10;3958:3;3954:20;3951:1;3944:31;3994:4;3991:1;3984:15;4018:4;4015:1;4008:15;4034:128;4101:9;;;4122:11;;;4119:37;;;4136:18;;:::i;6383:1089::-;6513:3;6542:1;6575:6;6569:13;6605:3;6634:9;6631:1;6627:17;6617:27;;6694:1;6683:9;6679:17;6715:18;6705:61;;6759:4;6751:6;6747:17;6737:27;;6705:61;6812:2;6804:6;6801:14;6781:18;6778:38;6775:165;;-1:-1:-1;;;6839:33:4;;6895:4;6892:1;6885:15;6925:4;6846:3;6913:17;6775:165;6956:18;6983:133;;;;7130:1;7125:322;;;;6949:498;;6983:133;-1:-1:-1;;7016:24:4;;7004:37;;7089:14;;7082:22;7070:35;;7061:45;;;-1:-1:-1;6983:133:4;;7125:322;6330:1;6323:14;;;6367:4;6354:18;;7223:1;7237:164;7251:6;7248:1;7245:13;7237:164;;;7329:14;;7316:11;;;7309:35;7385:1;7372:15;;;;7273:2;7266:10;7237:164;;;7241:3;;7430:6;7425:3;7421:16;7414:23;;6949:498;-1:-1:-1;7463:3:4;;6383:1089;-1:-1:-1;;;;;;6383:1089:4:o;7971:125::-;8036:9;;;8057:10;;;8054:36;;;8070:18;;:::i","linkReferences":{},"immutableReferences":{"24":[{"start":324,"length":32}],"38":[{"start":1055,"length":32}],"40":[{"start":1108,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ArenaToken.sol\":\"ArenaToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/solmate/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"src/ArenaToken.sol\":{\"keccak256\":\"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a\",\"urls\":[\"bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105\",\"dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["ds-test/=lib/solmate/lib/ds-test/src/","forge-std/=lib/forge-std/src/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ArenaToken.sol":"ArenaToken"},"evmVersion":"paris","libraries":{}},"sources":{"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"src/ArenaToken.sol":{"keccak256":"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a","urls":["bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105","dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF"],"license":null}},"version":1},"id":2} \ No newline at end of file diff --git a/src/artifacts/LiquidExchange.json b/src/artifacts/LiquidExchange.json new file mode 100644 index 0000000..971feac --- /dev/null +++ b/src/artifacts/LiquidExchange.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"arenaTokenX_","type":"address","internalType":"address"},{"name":"arenaTokenY_","type":"address","internalType":"address"},{"name":"price_","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"arenaTokenX","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"arenaTokenY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setPrice","inputs":[{"name":"_price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"PriceChange","inputs":[{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50604051610542380380610542833981016040819052602c91607e565b600080546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911790915560025560b5565b80516001600160a01b0381168114607957600080fd5b919050565b600080600060608486031215609257600080fd5b6099846063565b925060a5602085016063565b9150604084015190509250925092565b61047e806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806358dbbe811461005c57806391b7f5ed1461008c578063a035b1fe146100a1578063d004f0f7146100b8578063f5992699146100cb575b600080fd5b60015461006f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009f61009a3660046103d5565b6100de565b005b6100aa60025481565b604051908152602001610083565b61009f6100c63660046103ee565b610119565b60005461006f906001600160a01b031681565b60028190556040518181527ff347ee99503bf19c028bd6b18f3c676e82a9bb5b2bb5225aebe0fd62fd6a0d199060200160405180910390a150565b6000805481906001600160a01b039081169085160361015757506001546002546001600160a01b039091169061015090849061038a565b91506101c8565b6001546001600160a01b039081169085160361018b57506000546002546001600160a01b03909116906101509084906103a6565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303816000875af115801561021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023f9190610426565b61027d5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101bf565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303816000875af11580156102ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ee9190610426565b61032c5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101bf565b604080516001600160a01b03808716825283166020820152908101849052606081018390523360808201527fb39c9bc43f811e1a7ce159c5f147458fdb80266bf23c17322013316e27e086d09060a00160405180910390a150505050565b600061039f8383670de0b6b3a76400006103b7565b9392505050565b600061039f83670de0b6b3a7640000845b60008260001904841183021582026103ce57600080fd5b5091020490565b6000602082840312156103e757600080fd5b5035919050565b6000806040838503121561040157600080fd5b82356001600160a01b038116811461041857600080fd5b946020939093013593505050565b60006020828403121561043857600080fd5b8151801515811461039f57600080fdfea264697066735822122046949de5dd33fffb53ee34004519f8e0867392736ad6f958075fab6090afbbb264736f6c634300081a0033","sourceMap":"251:1413:3:-:0;;;492:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;574:11;:26;;-1:-1:-1;;;;;574:26:3;;;-1:-1:-1;;;;;;574:26:3;;;;;;;;610;;;;;;;;;;;;;;;647:5;:14;251:1413;;14:177:4;93:13;;-1:-1:-1;;;;;135:31:4;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;540:2;529:9;525:18;519:25;509:35;;196:354;;;;;:::o;:::-;251:1413:3;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c806358dbbe811461005c57806391b7f5ed1461008c578063a035b1fe146100a1578063d004f0f7146100b8578063f5992699146100cb575b600080fd5b60015461006f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009f61009a3660046103d5565b6100de565b005b6100aa60025481565b604051908152602001610083565b61009f6100c63660046103ee565b610119565b60005461006f906001600160a01b031681565b60028190556040518181527ff347ee99503bf19c028bd6b18f3c676e82a9bb5b2bb5225aebe0fd62fd6a0d199060200160405180910390a150565b6000805481906001600160a01b039081169085160361015757506001546002546001600160a01b039091169061015090849061038a565b91506101c8565b6001546001600160a01b039081169085160361018b57506000546002546001600160a01b03909116906101509084906103a6565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303816000875af115801561021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023f9190610426565b61027d5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101bf565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303816000875af11580156102ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ee9190610426565b61032c5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101bf565b604080516001600160a01b03808716825283166020820152908101849052606081018390523360808201527fb39c9bc43f811e1a7ce159c5f147458fdb80266bf23c17322013316e27e086d09060a00160405180910390a150505050565b600061039f8383670de0b6b3a76400006103b7565b9392505050565b600061039f83670de0b6b3a7640000845b60008260001904841183021582026103ce57600080fd5b5091020490565b6000602082840312156103e757600080fd5b5035919050565b6000806040838503121561040157600080fd5b82356001600160a01b038116811461041857600080fd5b946020939093013593505050565b60006020828403121561043857600080fd5b8151801515811461039f57600080fdfea264697066735822122046949de5dd33fffb53ee34004519f8e0867392736ad6f958075fab6090afbbb264736f6c634300081a0033","sourceMap":"251:1413:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:26;;;;;-1:-1:-1;;;;;395:26:3;;;;;;-1:-1:-1;;;;;178:32:4;;;160:51;;148:2;133:18;395:26:3;;;;;;;;813:105;;;;;;:::i;:::-;;:::i;:::-;;428:20;;;;;;;;;599:25:4;;;587:2;572:18;428:20:3;453:177:4;924:738:3;;;;;;:::i;:::-;;:::i;363:26::-;;;;;-1:-1:-1;;;;;363:26:3;;;813:105;864:5;:14;;;893:18;;599:25:4;;;893:18:3;;587:2:4;572:18;893::3;;;;;;;813:105;:::o;924:738::-;990:17;1059:11;;990:17;;-1:-1:-1;;;;;1059:11:3;;;1048:22;;;;1044:352;;-1:-1:-1;1097:11:3;;1173:5;;-1:-1:-1;;;;;1097:11:3;;;;1134:45;;1163:8;;1134:28;:45::i;:::-;1122:57;;1044:352;;;1211:11;;-1:-1:-1;;;;;1211:11:3;;;1200:22;;;;1196:200;;-1:-1:-1;1249:11:3;;1325:5;;-1:-1:-1;;;;;1249:11:3;;;;1286:45;;1315:8;;1286:28;:45::i;1196:200::-;1362:23;;-1:-1:-1;;;1362:23:3;;1248:2:4;1362:23:3;;;1230:21:4;1287:2;1267:18;;;1260:30;-1:-1:-1;;;1306:18:4;;;1299:43;1359:18;;1362:23:3;;;;;;;;1196:200;1414:64;;-1:-1:-1;;;1414:64:3;;1442:10;1414:64;;;1590:51:4;1462:4:3;1657:18:4;;;1650:60;1726:18;;;1719:34;;;-1:-1:-1;;;;;1414:27:3;;;;;1563:18:4;;1414:64:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1406:92;;;;-1:-1:-1;;;1406:92:3;;2248:2:4;1406:92:3;;;2230:21:4;2287:2;2267:18;;;2260:30;-1:-1:-1;;;2306:18:4;;;2299:45;2361:18;;1406:92:3;2046:339:4;1406:92:3;1516:47;;-1:-1:-1;;;1516:47:3;;1541:10;1516:47;;;2564:51:4;2631:18;;;2624:34;;;-1:-1:-1;;;;;1516:24:3;;;;;2537:18:4;;1516:47:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1508:75;;;;-1:-1:-1;;;1508:75:3;;2248:2:4;1508:75:3;;;2230:21:4;2287:2;2267:18;;;2260:30;-1:-1:-1;;;2306:18:4;;;2299:45;2361:18;;1508:75:3;2046:339:4;1508:75:3;1599:56;;;-1:-1:-1;;;;;2946:32:4;;;2928:51;;3015:32;;3010:2;2995:18;;2988:60;3064:18;;;3057:34;;;3122:2;3107:18;;3100:34;;;1644:10:3;3165:3:4;3150:19;;3143:61;1599:56:3;;2915:3:4;2900:19;1599:56:3;;;;;;;980:682;;924:738;;:::o;704:164:1:-;769:7;795:21;806:1;809;655:4;795:10;:21::i;:::-;788:28;704:164;-1:-1:-1;;;704:164:1:o;1038:::-;1103:7;1129:21;1140:1;655:4;1148:1;1564:526;1680:9;1928:1;-1:-1:-1;;1911:19:1;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:1;;2047:27;;1564:526::o;222:226:4:-;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;-1:-1:-1;395:23:4;;222:226;-1:-1:-1;222:226:4:o;635:406::-;703:6;711;764:2;752:9;743:7;739:23;735:32;732:52;;;780:1;777;770:12;732:52;806:23;;-1:-1:-1;;;;;858:31:4;;848:42;;838:70;;904:1;901;894:12;838:70;927:5;1005:2;990:18;;;;977:32;;-1:-1:-1;;;635:406:4:o;1764:277::-;1831:6;1884:2;1872:9;1863:7;1859:23;1855:32;1852:52;;;1900:1;1897;1890:12;1852:52;1932:9;1926:16;1985:5;1978:13;1971:21;1964:5;1961:32;1951:60;;2007:1;2004;1997:12","linkReferences":{}},"methodIdentifiers":{"arenaTokenX()":"f5992699","arenaTokenY()":"58dbbe81","price()":"a035b1fe","setPrice(uint256)":"91b7f5ed","swap(address,uint256)":"d004f0f7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"arenaTokenX_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"arenaTokenY_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"PriceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"arenaTokenX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"arenaTokenY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the test interface for Arbiter writing contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LiquidExchange.sol\":\"LiquidExchange\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/solmate/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"src/ArenaToken.sol\":{\"keccak256\":\"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a\",\"urls\":[\"bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105\",\"dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF\"]},\"src/LiquidExchange.sol\":{\"keccak256\":\"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5\",\"dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"arenaTokenX_","type":"address"},{"internalType":"address","name":"arenaTokenY_","type":"address"},{"internalType":"uint256","name":"price_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"PriceChange","anonymous":false},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address","indexed":false},{"internalType":"address","name":"tokenOut","type":"address","indexed":false},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"arenaTokenX","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"arenaTokenY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPrice"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["ds-test/=lib/solmate/lib/ds-test/src/","forge-std/=lib/forge-std/src/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LiquidExchange.sol":"LiquidExchange"},"evmVersion":"paris","libraries":{}},"sources":{"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"src/ArenaToken.sol":{"keccak256":"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a","urls":["bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105","dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF"],"license":null},"src/LiquidExchange.sol":{"keccak256":"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22","urls":["bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5","dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/src/artifacts/PoolManager.json b/src/artifacts/PoolManager.json new file mode 100644 index 0000000..45711ba --- /dev/null +++ b/src/artifacts/PoolManager.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"controllerGasLimit","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clear","inputs":[{"name":"currency","type":"address","internalType":"Currency"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"Currency"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountCollected","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"donate","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"delta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"extsload","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"extsload","inputs":[{"name":"startSlot","type":"bytes32","internalType":"bytes32"},{"name":"nSlots","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"extsload","inputs":[{"name":"slots","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"exttload","inputs":[{"name":"slots","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"exttload","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"tick","type":"int24","internalType":"int24"}],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"isOperator","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"modifyLiquidity","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct IPoolManager.ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callerDelta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IProtocolFeeController"}],"stateMutability":"view"},{"type":"function","name":"protocolFeesAccrued","inputs":[{"name":"currency","type":"address","internalType":"Currency"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFee","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"newProtocolFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"controller","type":"address","internalType":"contract IProtocolFeeController"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[],"outputs":[{"name":"paid","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"settleFor","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[{"name":"paid","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct IPoolManager.SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"swapDelta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"sync","inputs":[{"name":"currency","type":"address","internalType":"Currency"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"take","inputs":[{"name":"currency","type":"address","internalType":"Currency"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateDynamicLPFee","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"newDynamicLPFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialize","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"currency0","type":"address","indexed":true,"internalType":"Currency"},{"name":"currency1","type":"address","indexed":true,"internalType":"Currency"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"tickSpacing","type":"int24","indexed":false,"internalType":"int24"},{"name":"hooks","type":"address","indexed":false,"internalType":"contract IHooks"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"}],"anonymous":false},{"type":"event","name":"ModifyLiquidity","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":false,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":false,"internalType":"int24"},{"name":"liquidityDelta","type":"int256","indexed":false,"internalType":"int256"},{"name":"salt","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OperatorSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerUpdated","inputs":[{"name":"protocolFeeController","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeUpdated","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"protocolFee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"int128","indexed":false,"internalType":"int128"},{"name":"amount1","type":"int128","indexed":false,"internalType":"int128"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AlreadyUnlocked","inputs":[]},{"type":"error","name":"CurrenciesOutOfOrderOrEqual","inputs":[{"name":"currency0","type":"address","internalType":"address"},{"name":"currency1","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotSettled","inputs":[]},{"type":"error","name":"DelegateCallNotAllowed","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"ManagerLocked","inputs":[]},{"type":"error","name":"MustClearExactPositiveDelta","inputs":[]},{"type":"error","name":"NonZeroNativeValue","inputs":[]},{"type":"error","name":"PoolNotInitialized","inputs":[]},{"type":"error","name":"ProtocolFeeCannotBeFetched","inputs":[]},{"type":"error","name":"ProtocolFeeTooLarge","inputs":[{"name":"fee","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"SwapAmountCannotBeZero","inputs":[]},{"type":"error","name":"TickSpacingTooLarge","inputs":[{"name":"tickSpacing","type":"int24","internalType":"int24"}]},{"type":"error","name":"TickSpacingTooSmall","inputs":[{"name":"tickSpacing","type":"int24","internalType":"int24"}]},{"type":"error","name":"UnauthorizedDynamicLPFeeUpdate","inputs":[]}],"bytecode":{"object":"0x60c034609d57601f615fff38819003918201601f19168301916001600160401b0383118484101760a157808492602094604052833981010312609d57515f80546001600160a01b03191633908117825560405192917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36080523060a052615f4990816100b6823960805181611317015260a051816135f40152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612d7f5750806301ffc9a714612cc0578063095bcdb614612c165780630b0d9c0914612b8a57806311da60b414612b2f578063156e29f614612a7f5780631e2eaeaf14612a45578063234266d7146127ce5780632d7713891461270c57806335fd631a146126985780633dd45adb14612634578063426a8493146125b057806348c8949114612325578063527596511461220d578063558a729714612136578063598af9e71461209e5780635a6bcfda146115e2578063695c5bf514610f3f5780637e87ce7d14610e0257806380f0b44c14610ce15780638161b87414610be95780638da5cb5b14610b9957806397e8cd4e14610b365780639bf6645f14610ae9578063a584119414610aa8578063b6363cf214610a17578063dbd035ff146109c1578063f02de3b214610970578063f135baaa14610936578063f2fde38b1461088a578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612de9565b6101c5612e0c565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254613097565b90551693845f52600460205260405f20865f5260205260405f2061025f8282546130a4565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391613097565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612e2f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b38661322a565b339089613270565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254613097565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291613097565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612f2b565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906060820182811067ffffffffffffffff82111761085d5760405260a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105e1903690600401612ff7565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576106136135dd565b51156108355760a0822092835f52600660205260405f209061063482613644565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361065f94613c01565b90949195606088015160020b968b511515915173ffffffffffffffffffffffffffffffffffffffff1691604051986106968a612ebc565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107b7986106ec6107a49860209d6108155773ffffffffffffffffffffffffffffffffffffffff8b511695614d47565b9492968291926107e8575b505073ffffffffffffffffffffffffffffffffffffffff6040850151169360606fffffffffffffffffffffffffffffffff60a08301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613e3e565b809491946107bf575b5050823391613720565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107e19251169083613720565b84806107ad565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106f7565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614d47565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108e2612de9565b73ffffffffffffffffffffffffffffffffffffffff5f549161090782841633146130b1565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b34610330576109cf36613025565b6040519160408360208152836020820152019160051b8301916020806040850193925b8335548152019101908483821015610a0e5750602080916109f2565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a4e612de9565b73ffffffffffffffffffffffffffffffffffffffff610a6b612e0c565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610ae7610ae2612de9565b613154565b005b3461033057610af736613025565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c8152019101908483821015610a0e575060208091610b1a565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610b82612de9565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c20612de9565b610c28612e0c565b9060443573ffffffffffffffffffffffffffffffffffffffff600254163303610cb9576020926107b79180610cb1575073ffffffffffffffffffffffffffffffffffffffff81165f526001845260405f20549283915b73ffffffffffffffffffffffffffffffffffffffff81165f526001865260405f20610caa848254613097565b9055613378565b928391610c7e565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610d18612de9565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610d6e60243561322a565b600f0b908103610dda577fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610dad57610ae79133915f0390613270565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e3a36612f2b565b610e42612f19565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610cb9576103e9610fff831610623e900062fff0008416101615610f0e57602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610eb881613644565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610f7736612f2b565b60a4359073ffffffffffffffffffffffffffffffffffffffff82168083036103305760c43567ffffffffffffffff811161033057610fb9903690600401612ff7565b90610fc26135dd565b6060840193845160020b617fff81136115b75750845160020b6001811261158c575073ffffffffffffffffffffffffffffffffffffffff81511692602082019373ffffffffffffffffffffffffffffffffffffffff855116908181101561155e5750506080820173ffffffffffffffffffffffffffffffffffffffff81511695604084019661105762ffffff89511682613a74565b15611533575061106c62ffffff885116613b32565b91805173ffffffffffffffffffffffffffffffffffffffff811690813303611470575b505060a08520955f73ffffffffffffffffffffffffffffffffffffffff6002541680611312575b50875f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112ea5773ffffffffffffffffffffffffffffffffffffffff7fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d64389860a09860209f98839662ffffff96859661114e7cffffff00000000000000000000000000000000000000000000000000009d614989565b9c8d9460d01b169079ffffff00000000000000000000000000000000000000000000008f76ffffff00000000000000000000000000000000000000008f9188901b16179160b81b16171790558851908a868316928333036111e8575b5050505050505116995116995116995160020b91511690604051998a528a8a01526040890152606088015260020b95866080820152a4604051908152f35b611000166111f7575b816111aa565b6112ae6112da926112df96604051966020947fa910f80f00000000000000000000000000000000000000000000000000000000899687015233602487015261128c604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e486015260020b610104850152610120610124850152610144840191613116565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612ed8565b613fe2565b508f8881808a6111f1565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b90505a7f0000000000000000000000000000000000000000000000000000000000000000809110611448575f8091604051938260208601917f553bfc370000000000000000000000000000000000000000000000000000000083526113c58d602489019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a487526113d460c488612ed8565b81965193f160203d141680611435575b80611427575b8061140c575b156114045762ffffff600191165b906110b6565b505f806113fe565b506103e9610fff821610623e900062fff000831610166113f0565b5062ffffff811681146113ea565b60405191503d5f833e5f825192526113e4565b7f1ee49702000000000000000000000000000000000000000000000000000000005f5260045ffd5b6120001661147f575b8061108f565b61152c90604051907f3440d82000000000000000000000000000000000000000000000000000000000602083015233602483015261150a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8460e48301526101006101048301526112da826112ae61012482018a8d613116565b508a611479565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f6e6c9830000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761161b36612f2b565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061165282612e84565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff8111610330576116a5903690600401612ff7565b92907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576116d66135dd565b60a0832093845f52600660205260405f20906116f182613644565b608085015173ffffffffffffffffffffffffffffffffffffffff811690813303611fc5575b5050835160020b92602085015160020b966117346040870151613853565b95606088015160020b9860608201516040519a6117508c612ea0565b338c528860208d01528260408d015289600f0b60608d015260808c015260a08b01525f9080881215611f8e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611f6257620d89e88113611f3757604051986117ba8a612e84565b5f8a525f60208b01525f60408b01525f60608b015280600f0b611c87575b60048801988060020b5f528960205260405f20998360020b5f5260205260405f20895460a01c60020b8281125f14611c35575060028060018d0154600184015490039c015491015490039c5b60a073ffffffffffffffffffffffffffffffffffffffff8251169101519060405191602683015284600683015282600383015281525f603a600c83012091816040820152816020820152525f526006890160205260405f20986fffffffffffffffffffffffffffffffff8a54169a83600f0b155f14611bd8578b15611bb0576118e760409f6119c59c6118e1916119d79f5b60018301956118d960026118cd848a5485036141c1565b950192835485036141c1565b96555561322a565b9161322a565b6fffffffffffffffffffffffffffffffff169060801b179b5f84600f0b12611b46575b5082600f0b611a0f575b5050505061193b61192c8960801d8360801d01613853565b9189600f0b90600f0b01613853565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8b8401516060850151918d5194855260208501528c84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38773ffffffffffffffffffffffffffffffffffffffff608082015116613922565b809491946119e3575b50833391613720565b82519182526020820152f35b611a099073ffffffffffffffffffffffffffffffffffffffff6080840151169083613720565b856119ce565b809192939450548060a01c60020b9073ffffffffffffffffffffffffffffffffffffffff16908381125f14611a775750505091611a6591611a5f611a55611a6a956144e5565b91600f0b926144e5565b906148b4565b613853565b60801b5b8a808080611914565b948091939295125f14611b12576fffffffffffffffffffffffffffffffff92611acf611a65611ae594611abc611a65600396611ab68b600f0b916144e5565b876148b4565b93611aca89600f0b926144e5565b614857565b84169060801b17940192600f0b828454166148fb565b167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055611a6e565b9150611b2f935091611b29611a55611a65946144e5565b90614857565b6fffffffffffffffffffffffffffffffff16611a6e565b808f9151611b86575b0151611b5c575b8e61190a565b611b81848260049160020b5f52016020525f6002604082208281558260018201550155565b611b56565b611bab848460049160020b5f52016020525f6002604082208281558260018201550155565b611b4f565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b6118e760409f6119c59c6118e1916119d79f6fffffffffffffffffffffffffffffffff611c088a600f0b836148fb565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008454161783556118b6565b909a908413611c5b5760028060018d0154600184015490039c015491015490039c611824565b99600260018b015460018d01549003600183015490039b81808d0154910154900391015490039c611824565b8860020b5f5260048801602052886fffffffffffffffffffffffffffffffff60405f20805490611ce1838316928d611cc288600f0b866148fb565b9415968787871615141597611f08575b505086600f0b9060801d613df7565b60801b8383161790551660208c01528a528160020b5f526004880160205260405f208054906fffffffffffffffffffffffffffffffff8216611d2684600f0b826148fb565b901592836fffffffffffffffffffffffffffffffff831615141593611ee1575b84600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217610dad57826fffffffffffffffffffffffffffffffff935060801b8383161790551660608c015260408b0152898c5f83600f0b1215611e09575b5051611def575b60408a0151156117d857611dea60808d015160020b8360058b01614499565b6117d8565b611e0460808d015160020b8a60058b01614499565b611dcb565b60016fffffffffffffffffffffffffffffffff602060808294015160020b940151169280807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761805028180620d89e80502030501810416809111611eb5576fffffffffffffffffffffffffffffffff60608c01511611611e8957898c611dc4565b507fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8b5460a01c60020b8613611d465760018c0154600184015560028c01546002840155611d46565b815460a01c60020b1215611f1d575b8f611cd2565b80600160029201546001860155015460028401558d611f17565b7f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b87604491604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b5f604087015113808091612091575b156120265750506040517f259982e500000000000000000000000000000000000000000000000000000000602082015261201d916112da826112ae86898b8d3360248701613799565b505b8680611716565b159081612083575b5061203a575b5061201f565b6040517f21d0ee7000000000000000000000000000000000000000000000000000000000602082015261207c916112da826112ae86898b8d3360248701613799565b5086612034565b61020091501615158861202e565b5061080082161515611fd4565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120d5612de9565b73ffffffffffffffffffffffffffffffffffffffff6120f2612e0c565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761216d612de9565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761224536612f2b565b61224d612f19565b906280000062ffffff60408301511614801590612301575b6122d95760a0906122758361375c565b205f52600660205260405f209061228b82613644565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff608082015116331415612265565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff811161033057612374903690600401612ff7565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61258857612400915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd7346000000000000000000000000000000000000000000000000000000008452602060048501526024840191613116565b038183335af190811561257d575f916124d5575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6124ad5760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e6124e68183612ed8565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff821161085d576040519261255960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612ed8565b8284526020838301011161033057815f9260208093018386015e8301015281612414565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff6125d336612e2f565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612666612de9565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107b76020916134fb565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b83548152019101908483821015610a0e575060206001916126f0565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043573ffffffffffffffffffffffffffffffffffffffff81168091036103305761277e73ffffffffffffffffffffffffffffffffffffffff5f541633146130b1565b807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761280736612f2b565b60c4359060a43560e43567ffffffffffffffff81116103305761282e903690600401612ff7565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576128606135dd565b60a084205f52600660205260405f209461287986613644565b6080850194855173ffffffffffffffffffffffffffffffffffffffff8116908133036129ed575b50506fffffffffffffffffffffffffffffffff6003880154169586156129c5576020976128cc8661322a565b5f036128d78661322a565b5f036fffffffffffffffffffffffffffffffff169060801b1797866129ac575b85612991575b505061290a338884613720565b519273ffffffffffffffffffffffffffffffffffffffff841693843303612936575b8888604051908152f35b601016612944575b8061292c565b612985956112da936112ae926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d880152336024880161368a565b5082808080808061293e565b61299d60029187614100565b910190815401905588806128fd565b6129b68188614100565b600183019081540190556128f7565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b6020166129fb575b806128a0565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612a3e916112da826112ae8a888a8c8a336024880161368a565b50876129f5565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b3461033057612a8d36612e2f565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612b0c612aff8761322a565b8603600f0b339089613270565b16938484526004602052604084208685526020526040842061025f8282546130a4565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107b7336134fb565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612bc1612de9565b612bc9612e0c565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610ae792612c11612c048461322a565b5f03600f0b339083613270565b613378565b346103305773ffffffffffffffffffffffffffffffffffffffff612c3936612e2f565b91929092335f52600460205260405f20845f5260205260405f20612c5e848254613097565b90551690815f52600460205260405f20835f5260205260405f20612c838282546130a4565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612d55575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612d4a565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612dce612de9565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff82111761085d57604052565b60c0810190811067ffffffffffffffff82111761085d57604052565b60a0810190811067ffffffffffffffff82111761085d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761085d57604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612f6282612ebc565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211610dad57565b91908201809211610dad57565b156130b857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c166132025773ffffffffffffffffffffffffffffffffffffffff81169081156131fe576131b790613b4f565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d565b5050565b7f996caf65000000000000000000000000000000000000000000000000000000005f5260045ffd5b6f8000000000000000000000000000000081101561324857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b918215613373576132a6919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b6132b2815c9283613be6565b80915d61332357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b1561332a57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816134165750505f80808093855af1156133aa5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937f8549db59000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d1160018551141617169282815282602082015201521561348f5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937fb12c5f9c000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613550576133219034935b61354a8561322a565b90613270565b346135b5576133219061358c7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c61358786613b4f565b613097565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613541565b7f19d245cf000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361361c57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561366257565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926137056101209473ffffffffffffffffffffffffffffffffffffffff61371d999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e0820152816101008201520191613116565b90565b9073ffffffffffffffffffffffffffffffffffffffff6020613321949361374f85848351168660801d90613270565b01511690600f0b90613270565b62ffffff16620f4240811161376e5750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061371d95936138166101609473ffffffffffffffffffffffffffffffffffffffff61384594168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b816101408201520191613116565b9081600f0b91820361324857565b91610180936138df61390e9273ffffffffffffffffffffffffffffffffffffffff61371d9a9895168652602086019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08601526020820151900b60e0850152604081015161010085015260600151610120840152565b610140820152816101608201520191613116565b929593945f9573ffffffffffffffffffffffffffffffffffffffff85163314613a6a57875f6040860151135f146139fc576104008616613965575b505050505050565b6139f0969897506139dd926139e9969594926139b1926040519687957f5a2a81000000000000000000000000000000000000000000000000000000000060208801523360248801613861565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612ed8565b6002821615159161492c565b809261494c565b915f808080808061395d565b94939291906101008516613a1257505050505050565b6139f0969850859750613a5e92916139b1916139e9976040519687957f8db2b6520000000000000000000000000000000000000000000000000000000060208801523360248801613861565b6001821615159161492c565b505f955050505050565b608081161580613b26575b613afc57604081161580613b1a575b613afc5761040081161580613b0e575b613afc5761010081161580613b02575b613afc5773ffffffffffffffffffffffffffffffffffffffff8116613adc575062ffffff1662800000141590565b613fff161590811591613aed575090565b62800000915062ffffff161490565b50505f90565b50600181161515613aae565b50600281161515613a9e565b50600481161515613a8e565b50600881161515613a7f565b6280000062ffffff821614613b4a5761371d8161375c565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613b6f57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa90811561257d575f91613bb7575090565b90506020813d602011613bde575b81613bd260209383612ed8565b81010312610330575190565b3d9150613bc5565b9190915f8382019384129112908015821691151617610dad57565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613dea5760808416613c3b575b5050505050565b613d23926139b1613d1d92613d09946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613cd3604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b610140610144850152610164840191613116565b82613fe2565b916060835103613dc2576040015162ffffff166280000014613db6575b600816613d51575b80808080613c34565b604001519250608083901d600f0b8015613d4857613d72905f861295613be6565b9315613dae575f84135b613d86575f613d48565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613d7c565b60608201519350613d40565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317610dad57565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613fd5578460801d94600f0b938860408516613efd575b50505050505f9481600f0b15801590613ef1575b613e95575b5050509190565b613ecc9395505f60208201511290511515145f14613ed4576fffffffffffffffffffffffffffffffff169060801b175b809361494c565b5f8080613e8e565b906fffffffffffffffffffffffffffffffff169060801b17613ec5565b5082600f0b1515613e89565b613fb9613fc5946139b1611a6595613fcb999895613f9e613cd3966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c610144850152610160610164850152610184840191613116565b6004821615159161492c565b90613df7565b5f80808088613e75565b5050505050909150905f90565b9190915f80602085519501948582855af11561407e5750604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e602084511091821561404a575b5050613dc257565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80614042565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d73ffffffffffffffffffffffffffffffffffffffff604051947f319d54c300000000000000000000000000000000000000000000000000000000865216600485015260406024850152806044850152805f606486013e011660640190fd5b908160801b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70010000000000000000000000000000000084099282808510940393808503948584111561033057146141ba5770010000000000000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461423a57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f4240111561033057146142c2577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c010000000000000000000000001115610330571461433f576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c0100000000000000000000000084099282808510940393808503948584111561033057146141ba576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395868511156103305714614491579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b919060020b9060020b908181076144c75705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161482b5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661480f575b600481166147f3575b600881166147d7575b601081166147bb575b6020811661479f575b60408116614783575b60808116614767575b610100811661474b575b610200811661472f575b6104008116614713575b61080081166146f7575b61100081166146db575b61200081166146bf575b61400081166146a3575b6180008116614687575b62010000811661466b575b620200008116614650575b620400008116614635575b620800001661461c575b5f126145f5575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff046145ee565b6b048a170391f7dc42444e8fa290910260801c906145e7565b6d2216e584f5fa1ea926041bedfe9890920260801c916145dd565b916e5d6af8dedb81196699c329225ee6040260801c916145d2565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916145c7565b916f31be135f97d08fd981231505542fcfa60260801c916145bc565b916f70d869a156d2a1b890bb3df62baf32f70260801c916145b2565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916145a8565b916fd097f3bdfd2022b8845ad8f792aa58250260801c9161459e565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614594565b916ff3392b0822b70005940c7a398e4b70f30260801c9161458a565b916ff987a7253ac413176f2b074cf7815e540260801c91614580565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614576565b916ffe5dee046a99a2a811c461f1969c30530260801c9161456c565b916fff2ea16466c96a3843ec78b326b528610260801c91614563565b916fff973b41fa98c081472e6896dfb254c00260801c9161455a565b916fffcb9843d60f6159c9db58835c9266440260801c91614551565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91614548565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161453f565b916ffff97272373d413259a46990580e213a0260801c91614536565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f1461488c57614882925f036fffffffffffffffffffffffffffffffff1691615c21565b5f81126132485790565b6148a8926fffffffffffffffffffffffffffffffff1691615bc6565b5f8112613248575f0390565b905f83600f0b125f146148df57614882925f036fffffffffffffffffffffffffffffffff1691615d18565b6148a8926fffffffffffffffffffffffffffffffff1691615c61565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61491f57565b6393dafdf15f526004601cfd5b9061493691613fe2565b9015613b4a576040815103613dc2576040015190565b61496f906149618360801d8260801d03613853565b92600f0b90600f0b03613853565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d83011611614cce5777ffffffffffffffffffffffffffffffffffffffff000000008160201b16806fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c1196171717171717179060808210155f14614cc4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f14614c815750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff614cb5846144e5565b1611614cbf575090565b905090565b81607f031b614a99565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b8115614d1a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190915f604051614d5781612ea0565b5f815260208101905f8252604081015f815260608201965f885260808301965f885260a08401975f895284998854906020850151159a6fffffffffffffffffffffffffffffffff60038c0154169384928d155f14615bb7575f610fff8660b81c169b5b60408a01518c52528473ffffffffffffffffffffffffffffffffffffffff168099528460a01c60020b90528c155f14615bac5760018c0154905b5252608084015162400000811615615b9d5762bfffff16614e148161375c565b61ffff8816615b7757945b855f60408701511297620f424062ffffff83161480615b6f575b615b4757604087015115615b315750508a615ad157606085019073ffffffffffffffffffffffffffffffffffffffff82511681811015615a9a5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38110615a6f57505b60405160805260e060805101608051811067ffffffffffffffff82111761085d576040525f608051525f602060805101525f604060805101525f606060805101525f6080805101525f60a060805101525f60c060805101525b8a51158015615a32575b6158e55773ffffffffffffffffffffffffffffffffffffffff60408c0151166080515260608b015160020b845160020b90815f818307129105038b155f1461578c5760ff8116918160020b60081d60010b5f5260058c0160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60018086011b0190541691821592831593845f1461575757610330577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761894817f07060605060205040602030205040301060502050303040105050304000000006f8421084210842108cc6318c6db6d54be60ff946fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c861060031b1792831c1c601f161a1790031660020b900360020b0260020b5b905b15156040608051015260020b8060206080510152131561572a575b620d89e86020608051015160020b121561571a575b8973ffffffffffffffffffffffffffffffffffffffff6150aa6020608051015160020b6144e5565b1680606060805101528c73ffffffffffffffffffffffffffffffffffffffff60408201511673ffffffffffffffffffffffffffffffffffffffff606089015116906fffffffffffffffffffffffffffffffff60a08401511692519262ffffff8b169473ffffffffffffffffffffffffffffffffffffffff60ff8815168583101885831802851816831015935f86125f1461554a5786620f4240039161515183885f03614243565b861561552b57615170858760ff8d151686861018868618028618615c61565b975b8882106154525750508160ff73ffffffffffffffffffffffffffffffffffffffff9a15168183101891180218958691620f424082145f14615443575050845b935b1561543557916151c292615c21565b905b60c0608051015260a060805101526080805101521660408c015285155f146153f75760a060805101515f8112613248578b51038b5261520f60808051015160c06080510151906130a4565b5f81126132485760208c018051918203918213600116610dad57525b61ffff87166153c4575b6fffffffffffffffffffffffffffffffff60a08c015116806153a4575b5073ffffffffffffffffffffffffffffffffffffffff60408c01511673ffffffffffffffffffffffffffffffffffffffff606060805101511681145f146153665750604060805101516152bd575b60ff8a15166020608051015160020b0360020b60608c0152614ef3565b89615342576fffffffffffffffffffffffffffffffff61532960808d015160028c01545b6020608051015160020b60020b5f5260048d0160205260405f2091600183019081549003905560028201908154900390555460801d8d8d15615334575b60a0015183166148fb565b1660a08c01526152a0565b5f91909103600f0b9061531e565b6fffffffffffffffffffffffffffffffff6153298c608060018d01549101516152e1565b73ffffffffffffffffffffffffffffffffffffffff6080515116810361538d575b50614ef3565b61539690614989565b60020b60608c01525f615387565b6153b49060c06080510151614100565b60808c019081510190525f615252565b96620f424060808051015161ffff89169060c06080510151010204908160c060805101510360c060805101520196615235565b60808051015160c06080510151015f8112613248578b51018b5260a060805101515f81126132485761542e60208d01918251613be6565b905261522b565b61543e92615d18565b6151c2565b61544d9187615dbf565b6151b1565b975098505050508094501581151761551e5773ffffffffffffffffffffffffffffffffffffffff9482156154ba5761548b908583615e5e565b935b8480828486156154ab576154a092615c61565b8095015f03936151b3565b916154b592615bc6565b6154a0565b6154f6906154f1908781116154fc576154e9906fffffffffffffffffffffffffffffffff88169060601b614d10565b8784166130a4565b615ef2565b9361548d565b615519906fffffffffffffffffffffffffffffffff881690614348565b6154e9565b634f2461b85f526004601cfd5b6155448560ff8c15168585101885851802851888615bc6565b97615172565b91969395949386156156fb5761556f888560ff84151686861018868618028618615c21565b945b8581106155d657509173ffffffffffffffffffffffffffffffffffffffff97918160ff6155c396951516818310189118021880965b156155c857916155b592615c61565b809380620f42400391615dbf565b6151c4565b6155d192615bc6565b6155b5565b945050505081851582151761551e5784156156d15773ffffffffffffffffffffffffffffffffffffffff81116156785760601b6fffffffffffffffffffffffffffffffff86168082061515910401905b73ffffffffffffffffffffffffffffffffffffffff8116958287111561566b5773ffffffffffffffffffffffffffffffffffffffff6155c393819803165b80966155a6565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff86166156a3816c01000000000000000000000000846143fa565b918115614d1a576c0100000000000000000000000090096156c5575b90615626565b600101806156bf575f80fd5b90856156f66155c39373ffffffffffffffffffffffffffffffffffffffff9884615de8565b615664565b6157148860ff8315168585101885851802851886615d18565b94615571565b620d89e860206080510152615082565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020608051015261506d565b50507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189360020b900360020b0260020b615050565b600101908160020b908260ff16928260081d60010b5f5260058d016020527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff60405f2093161b011990541691821592831593845f146158ac57610330577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189481600160ff931901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff860260f81c161b60f71c1692831c63d76453e004161a17031660020b0160020b0260020b5b90615052565b505060ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189481031660020b0160020b0260020b6158a6565b90919996989397929550606087015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff60408a0151169216171782556fffffffffffffffffffffffffffffffff60a0870151168091036159ed575b5081156159de57600260808601519101555b15146159c1576159a7604061599b6020850151613853565b92015183519003613853565b6fffffffffffffffffffffffffffffffff169060801b1793565b6040015181516159d19103613853565b6159a76020830151613853565b60016080860151910155615983565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003830154161760038201555f615971565b5073ffffffffffffffffffffffffffffffffffffffff60408c01511673ffffffffffffffffffffffffffffffffffffffff60608601511614614efd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606085019073ffffffffffffffffffffffffffffffffffffffff82511681811115615a9a5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d26811015615a6f5750614e9a565b9a509a50505050975050505050505f925f929190565b7f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b508815614e39565b62ffffff168061ffff891602620f424080820615159104019061ffff8916010394614e1f565b508060d01c62ffffff16614e14565b60028c015490614df4565b5f610fff8660c41c169b614dba565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615c1881856142ce565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061371d9594169116038060ff1d9081011891166142ce565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615d12575b73ffffffffffffffffffffffffffffffffffffffff8216928315615d06577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615cfa948185169403169160601b16615dbf565b90808206151591040190565b62bfc9215f526004601cfd5b90615c96565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615db9575b73ffffffffffffffffffffffffffffffffffffffff8116918215615d065761371d937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615db4948185169403169160601b166143fa565b614d10565b90615d4c565b929190615dcd8282866143fa565b938215614d1a5709615ddb57565b9060010190811561033057565b91908115615e59577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615e4c5761371d926154f192820391615dbf565b63f5c787f15f526004601cfd5b505090565b90918015615eec5773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615eae8483614d10565b14615ed4575b5090615ec3615ec89284614d10565b6130a4565b80820615159104011690565b8301838110615eb4579150615ee892615dbf565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036132485756fea2646970667358221220869bd0bb084561b6548d25f7df7705a61a4ab603a2e434d0334613bc910ea31364736f6c634300081a0033","sourceMap":"4729:12013:35:-:0;;;;;;;;;;;;;-1:-1:-1;;4729:12013:35;;;;-1:-1:-1;;;;;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4729:12013:35;;-1:-1:-1;;;;;;4729:12013:35;1165:10:36;4729:12013:35;;;;;;;;;1075:40:27;-1:-1:-1;;1075:40:27;1187::36;;724:4:34;705:24;;4729:12013:35;;;;;;1187:40:36;4729:12013:35;;;;;705:24:34;4729:12013:35;;;;;;;-1:-1:-1;4729:12013:35;;;;;;-1:-1:-1;4729:12013:35;;;;;-1:-1:-1;4729:12013:35","linkReferences":{}},"deployedBytecode":{"object":"0x60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612d7f5750806301ffc9a714612cc0578063095bcdb614612c165780630b0d9c0914612b8a57806311da60b414612b2f578063156e29f614612a7f5780631e2eaeaf14612a45578063234266d7146127ce5780632d7713891461270c57806335fd631a146126985780633dd45adb14612634578063426a8493146125b057806348c8949114612325578063527596511461220d578063558a729714612136578063598af9e71461209e5780635a6bcfda146115e2578063695c5bf514610f3f5780637e87ce7d14610e0257806380f0b44c14610ce15780638161b87414610be95780638da5cb5b14610b9957806397e8cd4e14610b365780639bf6645f14610ae9578063a584119414610aa8578063b6363cf214610a17578063dbd035ff146109c1578063f02de3b214610970578063f135baaa14610936578063f2fde38b1461088a578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612de9565b6101c5612e0c565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254613097565b90551693845f52600460205260405f20865f5260205260405f2061025f8282546130a4565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391613097565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612e2f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b38661322a565b339089613270565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254613097565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291613097565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612f2b565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906060820182811067ffffffffffffffff82111761085d5760405260a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105e1903690600401612ff7565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576106136135dd565b51156108355760a0822092835f52600660205260405f209061063482613644565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361065f94613c01565b90949195606088015160020b968b511515915173ffffffffffffffffffffffffffffffffffffffff1691604051986106968a612ebc565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107b7986106ec6107a49860209d6108155773ffffffffffffffffffffffffffffffffffffffff8b511695614d47565b9492968291926107e8575b505073ffffffffffffffffffffffffffffffffffffffff6040850151169360606fffffffffffffffffffffffffffffffff60a08301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613e3e565b809491946107bf575b5050823391613720565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107e19251169083613720565b84806107ad565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106f7565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614d47565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108e2612de9565b73ffffffffffffffffffffffffffffffffffffffff5f549161090782841633146130b1565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b34610330576109cf36613025565b6040519160408360208152836020820152019160051b8301916020806040850193925b8335548152019101908483821015610a0e5750602080916109f2565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a4e612de9565b73ffffffffffffffffffffffffffffffffffffffff610a6b612e0c565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610ae7610ae2612de9565b613154565b005b3461033057610af736613025565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c8152019101908483821015610a0e575060208091610b1a565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610b82612de9565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c20612de9565b610c28612e0c565b9060443573ffffffffffffffffffffffffffffffffffffffff600254163303610cb9576020926107b79180610cb1575073ffffffffffffffffffffffffffffffffffffffff81165f526001845260405f20549283915b73ffffffffffffffffffffffffffffffffffffffff81165f526001865260405f20610caa848254613097565b9055613378565b928391610c7e565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610d18612de9565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610d6e60243561322a565b600f0b908103610dda577fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610dad57610ae79133915f0390613270565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e3a36612f2b565b610e42612f19565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610cb9576103e9610fff831610623e900062fff0008416101615610f0e57602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610eb881613644565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610f7736612f2b565b60a4359073ffffffffffffffffffffffffffffffffffffffff82168083036103305760c43567ffffffffffffffff811161033057610fb9903690600401612ff7565b90610fc26135dd565b6060840193845160020b617fff81136115b75750845160020b6001811261158c575073ffffffffffffffffffffffffffffffffffffffff81511692602082019373ffffffffffffffffffffffffffffffffffffffff855116908181101561155e5750506080820173ffffffffffffffffffffffffffffffffffffffff81511695604084019661105762ffffff89511682613a74565b15611533575061106c62ffffff885116613b32565b91805173ffffffffffffffffffffffffffffffffffffffff811690813303611470575b505060a08520955f73ffffffffffffffffffffffffffffffffffffffff6002541680611312575b50875f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112ea5773ffffffffffffffffffffffffffffffffffffffff7fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d64389860a09860209f98839662ffffff96859661114e7cffffff00000000000000000000000000000000000000000000000000009d614989565b9c8d9460d01b169079ffffff00000000000000000000000000000000000000000000008f76ffffff00000000000000000000000000000000000000008f9188901b16179160b81b16171790558851908a868316928333036111e8575b5050505050505116995116995116995160020b91511690604051998a528a8a01526040890152606088015260020b95866080820152a4604051908152f35b611000166111f7575b816111aa565b6112ae6112da926112df96604051966020947fa910f80f00000000000000000000000000000000000000000000000000000000899687015233602487015261128c604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e486015260020b610104850152610120610124850152610144840191613116565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612ed8565b613fe2565b508f8881808a6111f1565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b90505a7f0000000000000000000000000000000000000000000000000000000000000000809110611448575f8091604051938260208601917f553bfc370000000000000000000000000000000000000000000000000000000083526113c58d602489019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a487526113d460c488612ed8565b81965193f160203d141680611435575b80611427575b8061140c575b156114045762ffffff600191165b906110b6565b505f806113fe565b506103e9610fff821610623e900062fff000831610166113f0565b5062ffffff811681146113ea565b60405191503d5f833e5f825192526113e4565b7f1ee49702000000000000000000000000000000000000000000000000000000005f5260045ffd5b6120001661147f575b8061108f565b61152c90604051907f3440d82000000000000000000000000000000000000000000000000000000000602083015233602483015261150a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8460e48301526101006101048301526112da826112ae61012482018a8d613116565b508a611479565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f6e6c9830000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761161b36612f2b565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061165282612e84565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff8111610330576116a5903690600401612ff7565b92907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576116d66135dd565b60a0832093845f52600660205260405f20906116f182613644565b608085015173ffffffffffffffffffffffffffffffffffffffff811690813303611fc5575b5050835160020b92602085015160020b966117346040870151613853565b95606088015160020b9860608201516040519a6117508c612ea0565b338c528860208d01528260408d015289600f0b60608d015260808c015260a08b01525f9080881215611f8e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611f6257620d89e88113611f3757604051986117ba8a612e84565b5f8a525f60208b01525f60408b01525f60608b015280600f0b611c87575b60048801988060020b5f528960205260405f20998360020b5f5260205260405f20895460a01c60020b8281125f14611c35575060028060018d0154600184015490039c015491015490039c5b60a073ffffffffffffffffffffffffffffffffffffffff8251169101519060405191602683015284600683015282600383015281525f603a600c83012091816040820152816020820152525f526006890160205260405f20986fffffffffffffffffffffffffffffffff8a54169a83600f0b155f14611bd8578b15611bb0576118e760409f6119c59c6118e1916119d79f5b60018301956118d960026118cd848a5485036141c1565b950192835485036141c1565b96555561322a565b9161322a565b6fffffffffffffffffffffffffffffffff169060801b179b5f84600f0b12611b46575b5082600f0b611a0f575b5050505061193b61192c8960801d8360801d01613853565b9189600f0b90600f0b01613853565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8b8401516060850151918d5194855260208501528c84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38773ffffffffffffffffffffffffffffffffffffffff608082015116613922565b809491946119e3575b50833391613720565b82519182526020820152f35b611a099073ffffffffffffffffffffffffffffffffffffffff6080840151169083613720565b856119ce565b809192939450548060a01c60020b9073ffffffffffffffffffffffffffffffffffffffff16908381125f14611a775750505091611a6591611a5f611a55611a6a956144e5565b91600f0b926144e5565b906148b4565b613853565b60801b5b8a808080611914565b948091939295125f14611b12576fffffffffffffffffffffffffffffffff92611acf611a65611ae594611abc611a65600396611ab68b600f0b916144e5565b876148b4565b93611aca89600f0b926144e5565b614857565b84169060801b17940192600f0b828454166148fb565b167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055611a6e565b9150611b2f935091611b29611a55611a65946144e5565b90614857565b6fffffffffffffffffffffffffffffffff16611a6e565b808f9151611b86575b0151611b5c575b8e61190a565b611b81848260049160020b5f52016020525f6002604082208281558260018201550155565b611b56565b611bab848460049160020b5f52016020525f6002604082208281558260018201550155565b611b4f565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b6118e760409f6119c59c6118e1916119d79f6fffffffffffffffffffffffffffffffff611c088a600f0b836148fb565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008454161783556118b6565b909a908413611c5b5760028060018d0154600184015490039c015491015490039c611824565b99600260018b015460018d01549003600183015490039b81808d0154910154900391015490039c611824565b8860020b5f5260048801602052886fffffffffffffffffffffffffffffffff60405f20805490611ce1838316928d611cc288600f0b866148fb565b9415968787871615141597611f08575b505086600f0b9060801d613df7565b60801b8383161790551660208c01528a528160020b5f526004880160205260405f208054906fffffffffffffffffffffffffffffffff8216611d2684600f0b826148fb565b901592836fffffffffffffffffffffffffffffffff831615141593611ee1575b84600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217610dad57826fffffffffffffffffffffffffffffffff935060801b8383161790551660608c015260408b0152898c5f83600f0b1215611e09575b5051611def575b60408a0151156117d857611dea60808d015160020b8360058b01614499565b6117d8565b611e0460808d015160020b8a60058b01614499565b611dcb565b60016fffffffffffffffffffffffffffffffff602060808294015160020b940151169280807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761805028180620d89e80502030501810416809111611eb5576fffffffffffffffffffffffffffffffff60608c01511611611e8957898c611dc4565b507fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8b5460a01c60020b8613611d465760018c0154600184015560028c01546002840155611d46565b815460a01c60020b1215611f1d575b8f611cd2565b80600160029201546001860155015460028401558d611f17565b7f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b87604491604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b5f604087015113808091612091575b156120265750506040517f259982e500000000000000000000000000000000000000000000000000000000602082015261201d916112da826112ae86898b8d3360248701613799565b505b8680611716565b159081612083575b5061203a575b5061201f565b6040517f21d0ee7000000000000000000000000000000000000000000000000000000000602082015261207c916112da826112ae86898b8d3360248701613799565b5086612034565b61020091501615158861202e565b5061080082161515611fd4565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120d5612de9565b73ffffffffffffffffffffffffffffffffffffffff6120f2612e0c565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761216d612de9565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761224536612f2b565b61224d612f19565b906280000062ffffff60408301511614801590612301575b6122d95760a0906122758361375c565b205f52600660205260405f209061228b82613644565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff608082015116331415612265565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff811161033057612374903690600401612ff7565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61258857612400915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd7346000000000000000000000000000000000000000000000000000000008452602060048501526024840191613116565b038183335af190811561257d575f916124d5575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6124ad5760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e6124e68183612ed8565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff821161085d576040519261255960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612ed8565b8284526020838301011161033057815f9260208093018386015e8301015281612414565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff6125d336612e2f565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612666612de9565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107b76020916134fb565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b83548152019101908483821015610a0e575060206001916126f0565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043573ffffffffffffffffffffffffffffffffffffffff81168091036103305761277e73ffffffffffffffffffffffffffffffffffffffff5f541633146130b1565b807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761280736612f2b565b60c4359060a43560e43567ffffffffffffffff81116103305761282e903690600401612ff7565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576128606135dd565b60a084205f52600660205260405f209461287986613644565b6080850194855173ffffffffffffffffffffffffffffffffffffffff8116908133036129ed575b50506fffffffffffffffffffffffffffffffff6003880154169586156129c5576020976128cc8661322a565b5f036128d78661322a565b5f036fffffffffffffffffffffffffffffffff169060801b1797866129ac575b85612991575b505061290a338884613720565b519273ffffffffffffffffffffffffffffffffffffffff841693843303612936575b8888604051908152f35b601016612944575b8061292c565b612985956112da936112ae926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d880152336024880161368a565b5082808080808061293e565b61299d60029187614100565b910190815401905588806128fd565b6129b68188614100565b600183019081540190556128f7565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b6020166129fb575b806128a0565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612a3e916112da826112ae8a888a8c8a336024880161368a565b50876129f5565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b3461033057612a8d36612e2f565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612b0c612aff8761322a565b8603600f0b339089613270565b16938484526004602052604084208685526020526040842061025f8282546130a4565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107b7336134fb565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612bc1612de9565b612bc9612e0c565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610ae792612c11612c048461322a565b5f03600f0b339083613270565b613378565b346103305773ffffffffffffffffffffffffffffffffffffffff612c3936612e2f565b91929092335f52600460205260405f20845f5260205260405f20612c5e848254613097565b90551690815f52600460205260405f20835f5260205260405f20612c838282546130a4565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612d55575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612d4a565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612dce612de9565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff82111761085d57604052565b60c0810190811067ffffffffffffffff82111761085d57604052565b60a0810190811067ffffffffffffffff82111761085d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761085d57604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612f6282612ebc565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211610dad57565b91908201809211610dad57565b156130b857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c166132025773ffffffffffffffffffffffffffffffffffffffff81169081156131fe576131b790613b4f565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d565b5050565b7f996caf65000000000000000000000000000000000000000000000000000000005f5260045ffd5b6f8000000000000000000000000000000081101561324857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b918215613373576132a6919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b6132b2815c9283613be6565b80915d61332357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b1561332a57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816134165750505f80808093855af1156133aa5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937f8549db59000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d1160018551141617169282815282602082015201521561348f5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937fb12c5f9c000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613550576133219034935b61354a8561322a565b90613270565b346135b5576133219061358c7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c61358786613b4f565b613097565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613541565b7f19d245cf000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361361c57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561366257565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926137056101209473ffffffffffffffffffffffffffffffffffffffff61371d999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e0820152816101008201520191613116565b90565b9073ffffffffffffffffffffffffffffffffffffffff6020613321949361374f85848351168660801d90613270565b01511690600f0b90613270565b62ffffff16620f4240811161376e5750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061371d95936138166101609473ffffffffffffffffffffffffffffffffffffffff61384594168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b816101408201520191613116565b9081600f0b91820361324857565b91610180936138df61390e9273ffffffffffffffffffffffffffffffffffffffff61371d9a9895168652602086019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08601526020820151900b60e0850152604081015161010085015260600151610120840152565b610140820152816101608201520191613116565b929593945f9573ffffffffffffffffffffffffffffffffffffffff85163314613a6a57875f6040860151135f146139fc576104008616613965575b505050505050565b6139f0969897506139dd926139e9969594926139b1926040519687957f5a2a81000000000000000000000000000000000000000000000000000000000060208801523360248801613861565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612ed8565b6002821615159161492c565b809261494c565b915f808080808061395d565b94939291906101008516613a1257505050505050565b6139f0969850859750613a5e92916139b1916139e9976040519687957f8db2b6520000000000000000000000000000000000000000000000000000000060208801523360248801613861565b6001821615159161492c565b505f955050505050565b608081161580613b26575b613afc57604081161580613b1a575b613afc5761040081161580613b0e575b613afc5761010081161580613b02575b613afc5773ffffffffffffffffffffffffffffffffffffffff8116613adc575062ffffff1662800000141590565b613fff161590811591613aed575090565b62800000915062ffffff161490565b50505f90565b50600181161515613aae565b50600281161515613a9e565b50600481161515613a8e565b50600881161515613a7f565b6280000062ffffff821614613b4a5761371d8161375c565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613b6f57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa90811561257d575f91613bb7575090565b90506020813d602011613bde575b81613bd260209383612ed8565b81010312610330575190565b3d9150613bc5565b9190915f8382019384129112908015821691151617610dad57565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613dea5760808416613c3b575b5050505050565b613d23926139b1613d1d92613d09946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613cd3604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b610140610144850152610164840191613116565b82613fe2565b916060835103613dc2576040015162ffffff166280000014613db6575b600816613d51575b80808080613c34565b604001519250608083901d600f0b8015613d4857613d72905f861295613be6565b9315613dae575f84135b613d86575f613d48565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613d7c565b60608201519350613d40565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317610dad57565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613fd5578460801d94600f0b938860408516613efd575b50505050505f9481600f0b15801590613ef1575b613e95575b5050509190565b613ecc9395505f60208201511290511515145f14613ed4576fffffffffffffffffffffffffffffffff169060801b175b809361494c565b5f8080613e8e565b906fffffffffffffffffffffffffffffffff169060801b17613ec5565b5082600f0b1515613e89565b613fb9613fc5946139b1611a6595613fcb999895613f9e613cd3966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c610144850152610160610164850152610184840191613116565b6004821615159161492c565b90613df7565b5f80808088613e75565b5050505050909150905f90565b9190915f80602085519501948582855af11561407e5750604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e602084511091821561404a575b5050613dc257565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80614042565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d73ffffffffffffffffffffffffffffffffffffffff604051947f319d54c300000000000000000000000000000000000000000000000000000000865216600485015260406024850152806044850152805f606486013e011660640190fd5b908160801b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70010000000000000000000000000000000084099282808510940393808503948584111561033057146141ba5770010000000000000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461423a57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f4240111561033057146142c2577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c010000000000000000000000001115610330571461433f576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c0100000000000000000000000084099282808510940393808503948584111561033057146141ba576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395868511156103305714614491579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b919060020b9060020b908181076144c75705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161482b5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661480f575b600481166147f3575b600881166147d7575b601081166147bb575b6020811661479f575b60408116614783575b60808116614767575b610100811661474b575b610200811661472f575b6104008116614713575b61080081166146f7575b61100081166146db575b61200081166146bf575b61400081166146a3575b6180008116614687575b62010000811661466b575b620200008116614650575b620400008116614635575b620800001661461c575b5f126145f5575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff046145ee565b6b048a170391f7dc42444e8fa290910260801c906145e7565b6d2216e584f5fa1ea926041bedfe9890920260801c916145dd565b916e5d6af8dedb81196699c329225ee6040260801c916145d2565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916145c7565b916f31be135f97d08fd981231505542fcfa60260801c916145bc565b916f70d869a156d2a1b890bb3df62baf32f70260801c916145b2565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916145a8565b916fd097f3bdfd2022b8845ad8f792aa58250260801c9161459e565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614594565b916ff3392b0822b70005940c7a398e4b70f30260801c9161458a565b916ff987a7253ac413176f2b074cf7815e540260801c91614580565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614576565b916ffe5dee046a99a2a811c461f1969c30530260801c9161456c565b916fff2ea16466c96a3843ec78b326b528610260801c91614563565b916fff973b41fa98c081472e6896dfb254c00260801c9161455a565b916fffcb9843d60f6159c9db58835c9266440260801c91614551565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91614548565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161453f565b916ffff97272373d413259a46990580e213a0260801c91614536565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f1461488c57614882925f036fffffffffffffffffffffffffffffffff1691615c21565b5f81126132485790565b6148a8926fffffffffffffffffffffffffffffffff1691615bc6565b5f8112613248575f0390565b905f83600f0b125f146148df57614882925f036fffffffffffffffffffffffffffffffff1691615d18565b6148a8926fffffffffffffffffffffffffffffffff1691615c61565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61491f57565b6393dafdf15f526004601cfd5b9061493691613fe2565b9015613b4a576040815103613dc2576040015190565b61496f906149618360801d8260801d03613853565b92600f0b90600f0b03613853565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d83011611614cce5777ffffffffffffffffffffffffffffffffffffffff000000008160201b16806fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c1196171717171717179060808210155f14614cc4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f14614c815750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff614cb5846144e5565b1611614cbf575090565b905090565b81607f031b614a99565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b8115614d1a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190915f604051614d5781612ea0565b5f815260208101905f8252604081015f815260608201965f885260808301965f885260a08401975f895284998854906020850151159a6fffffffffffffffffffffffffffffffff60038c0154169384928d155f14615bb7575f610fff8660b81c169b5b60408a01518c52528473ffffffffffffffffffffffffffffffffffffffff168099528460a01c60020b90528c155f14615bac5760018c0154905b5252608084015162400000811615615b9d5762bfffff16614e148161375c565b61ffff8816615b7757945b855f60408701511297620f424062ffffff83161480615b6f575b615b4757604087015115615b315750508a615ad157606085019073ffffffffffffffffffffffffffffffffffffffff82511681811015615a9a5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38110615a6f57505b60405160805260e060805101608051811067ffffffffffffffff82111761085d576040525f608051525f602060805101525f604060805101525f606060805101525f6080805101525f60a060805101525f60c060805101525b8a51158015615a32575b6158e55773ffffffffffffffffffffffffffffffffffffffff60408c0151166080515260608b015160020b845160020b90815f818307129105038b155f1461578c5760ff8116918160020b60081d60010b5f5260058c0160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60018086011b0190541691821592831593845f1461575757610330577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761894817f07060605060205040602030205040301060502050303040105050304000000006f8421084210842108cc6318c6db6d54be60ff946fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c861060031b1792831c1c601f161a1790031660020b900360020b0260020b5b905b15156040608051015260020b8060206080510152131561572a575b620d89e86020608051015160020b121561571a575b8973ffffffffffffffffffffffffffffffffffffffff6150aa6020608051015160020b6144e5565b1680606060805101528c73ffffffffffffffffffffffffffffffffffffffff60408201511673ffffffffffffffffffffffffffffffffffffffff606089015116906fffffffffffffffffffffffffffffffff60a08401511692519262ffffff8b169473ffffffffffffffffffffffffffffffffffffffff60ff8815168583101885831802851816831015935f86125f1461554a5786620f4240039161515183885f03614243565b861561552b57615170858760ff8d151686861018868618028618615c61565b975b8882106154525750508160ff73ffffffffffffffffffffffffffffffffffffffff9a15168183101891180218958691620f424082145f14615443575050845b935b1561543557916151c292615c21565b905b60c0608051015260a060805101526080805101521660408c015285155f146153f75760a060805101515f8112613248578b51038b5261520f60808051015160c06080510151906130a4565b5f81126132485760208c018051918203918213600116610dad57525b61ffff87166153c4575b6fffffffffffffffffffffffffffffffff60a08c015116806153a4575b5073ffffffffffffffffffffffffffffffffffffffff60408c01511673ffffffffffffffffffffffffffffffffffffffff606060805101511681145f146153665750604060805101516152bd575b60ff8a15166020608051015160020b0360020b60608c0152614ef3565b89615342576fffffffffffffffffffffffffffffffff61532960808d015160028c01545b6020608051015160020b60020b5f5260048d0160205260405f2091600183019081549003905560028201908154900390555460801d8d8d15615334575b60a0015183166148fb565b1660a08c01526152a0565b5f91909103600f0b9061531e565b6fffffffffffffffffffffffffffffffff6153298c608060018d01549101516152e1565b73ffffffffffffffffffffffffffffffffffffffff6080515116810361538d575b50614ef3565b61539690614989565b60020b60608c01525f615387565b6153b49060c06080510151614100565b60808c019081510190525f615252565b96620f424060808051015161ffff89169060c06080510151010204908160c060805101510360c060805101520196615235565b60808051015160c06080510151015f8112613248578b51018b5260a060805101515f81126132485761542e60208d01918251613be6565b905261522b565b61543e92615d18565b6151c2565b61544d9187615dbf565b6151b1565b975098505050508094501581151761551e5773ffffffffffffffffffffffffffffffffffffffff9482156154ba5761548b908583615e5e565b935b8480828486156154ab576154a092615c61565b8095015f03936151b3565b916154b592615bc6565b6154a0565b6154f6906154f1908781116154fc576154e9906fffffffffffffffffffffffffffffffff88169060601b614d10565b8784166130a4565b615ef2565b9361548d565b615519906fffffffffffffffffffffffffffffffff881690614348565b6154e9565b634f2461b85f526004601cfd5b6155448560ff8c15168585101885851802851888615bc6565b97615172565b91969395949386156156fb5761556f888560ff84151686861018868618028618615c21565b945b8581106155d657509173ffffffffffffffffffffffffffffffffffffffff97918160ff6155c396951516818310189118021880965b156155c857916155b592615c61565b809380620f42400391615dbf565b6151c4565b6155d192615bc6565b6155b5565b945050505081851582151761551e5784156156d15773ffffffffffffffffffffffffffffffffffffffff81116156785760601b6fffffffffffffffffffffffffffffffff86168082061515910401905b73ffffffffffffffffffffffffffffffffffffffff8116958287111561566b5773ffffffffffffffffffffffffffffffffffffffff6155c393819803165b80966155a6565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff86166156a3816c01000000000000000000000000846143fa565b918115614d1a576c0100000000000000000000000090096156c5575b90615626565b600101806156bf575f80fd5b90856156f66155c39373ffffffffffffffffffffffffffffffffffffffff9884615de8565b615664565b6157148860ff8315168585101885851802851886615d18565b94615571565b620d89e860206080510152615082565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020608051015261506d565b50507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189360020b900360020b0260020b615050565b600101908160020b908260ff16928260081d60010b5f5260058d016020527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff60405f2093161b011990541691821592831593845f146158ac57610330577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189481600160ff931901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff860260f81c161b60f71c1692831c63d76453e004161a17031660020b0160020b0260020b5b90615052565b505060ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189481031660020b0160020b0260020b6158a6565b90919996989397929550606087015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff60408a0151169216171782556fffffffffffffffffffffffffffffffff60a0870151168091036159ed575b5081156159de57600260808601519101555b15146159c1576159a7604061599b6020850151613853565b92015183519003613853565b6fffffffffffffffffffffffffffffffff169060801b1793565b6040015181516159d19103613853565b6159a76020830151613853565b60016080860151910155615983565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003830154161760038201555f615971565b5073ffffffffffffffffffffffffffffffffffffffff60408c01511673ffffffffffffffffffffffffffffffffffffffff60608601511614614efd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606085019073ffffffffffffffffffffffffffffffffffffffff82511681811115615a9a5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d26811015615a6f5750614e9a565b9a509a50505050975050505050505f925f929190565b7f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b508815614e39565b62ffffff168061ffff891602620f424080820615159104019061ffff8916010394614e1f565b508060d01c62ffffff16614e14565b60028c015490614df4565b5f610fff8660c41c169b614dba565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615c1881856142ce565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061371d9594169116038060ff1d9081011891166142ce565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615d12575b73ffffffffffffffffffffffffffffffffffffffff8216928315615d06577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615cfa948185169403169160601b16615dbf565b90808206151591040190565b62bfc9215f526004601cfd5b90615c96565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615db9575b73ffffffffffffffffffffffffffffffffffffffff8116918215615d065761371d937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615db4948185169403169160601b166143fa565b614d10565b90615d4c565b929190615dcd8282866143fa565b938215614d1a5709615ddb57565b9060010190811561033057565b91908115615e59577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615e4c5761371d926154f192820391615dbf565b63f5c787f15f526004601cfd5b505090565b90918015615eec5773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615eae8483614d10565b14615ed4575b5090615ec3615ec89284614d10565b6130a4565b80820615159104011690565b8301838110615eb4579150615ee892615dbf565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036132485756fea2646970667358221220869bd0bb084561b6548d25f7df7705a61a4ab603a2e434d0334613bc910ea31364736f6c634300081a0033","sourceMap":"4729:12013:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6668:13;4729:12013;6668:13;;;4729:12013;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;1928:50:30;;4729:12013:35;;;;;;1594:10:30;;;:20;;:55;;;4729:12013:35;1590:237:30;;4729:12013:35;;;;;;;;;;;;;;;;;;1837:31:30;4729:12013:35;;;1837:31:30;:::i;:::-;4729:12013:35;;;;;;;;;;;;;;;;;;;;;1879:33:30;4729:12013:35;;;1879:33:30;:::i;:::-;4729:12013:35;;;;;1594:10:30;4729:12013:35;;;;;;;;;;;;;;;;;1928:50:30;;;;4729:12013:35;;;;;;;1590:237:30;4729:12013:35;;;1683:9:30;4729:12013:35;;;;;1594:10:30;;4729:12013:35;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;1734:28:30;1745:17;1734:28;;1730:86;;1590:237;;;;;1730:86;1800:16;;;:::i;:::-;4729:12013:35;;;1683:9:30;4729:12013:35;;;;;1594:10:30;;4729:12013:35;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;1730:86:30;;;;1594:55;4729:12013:35;;;;1619:10:30;4729:12013:35;;;;;1594:10:30;;4729:12013:35;-1:-1:-1;4729:12013:35;;;;;-1:-1:-1;4729:12013:35;;;1618:31:30;1594:55;;4729:12013:35;;;;;;;;;;;:::i;:::-;837:84:56;;5543:18:35;5539:59;;3435:52:30;;4729:12013:35;;;;;14489:17;14508:10;14489:17;;;:::i;:::-;14508:10;;;;:::i;:::-;4729:12013;14508:10;;651:14:31;;;:43;;;4729:12013:35;647:269:31;;4729:12013:35;;;;;;;;;;;;;;;;;;3388:31:30;4729:12013:35;;;3388:31:30;:::i;3435:52::-;;;;4729:12013:35;647:269:31;4729:12013:35;;;736:9:31;4729:12013:35;;;;;;14508:10;4729:12013;;;;;;;;;;;;;;;;;781:36:31;800:17;781:36;;777:129;;647:269;;;;;777:129;867:24;;;:::i;:::-;4729:12013:35;;;736:9:31;4729:12013:35;;;;;;14508:10;4729:12013;;;;;;;;;;;;;;;;;777:129:31;;;;651:43;4729:12013:35;;;;670:10:31;4729:12013:35;;;;;;14508:10;4729:12013;;;;;;;;;;;669:25:31;651:43;;5539:59:35;5563:22;4729:12013;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:56;;;;;5543:18:35;5539:59;;1174:76:34;;:::i;:::-;4729:12013:35;9599:27;9595:77;;4729:12013;357:89:112;;4729:12013:35;;;;16723:6;4729:12013;;;;;9762:25;;;;:::i;:::-;9971:9;;;4729:12013;;;;;;;;;9971:43;;;;:::i;:::-;10290:15;;;;4729:12013;10290:15;;4729:12013;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10239:302;;4729:12013;;10239:302;;4729:12013;;10239:302;;4729:12013;;;9971:9;10239:302;;4729:12013;;;;;10559:49;;;4729:12013;11057:10;10559:49;11458:17;10715:70;10559:49;4729:12013;10559:49;;;4729:12013;5274:25;;4729:12013;10559:49;11458:17;:::i;:::-;11534:18;;;;;;11530:74;;10559:49;11787:18;;4729:12013;;11787:18;;4729:12013;;11807:15;4729:12013;;;11807:15;;4729:12013;;11824:10;;4729:12013;;;;;;2052:83:109;;9971:9:35;2052:83:109;2241:89;4729:12013:35;;;2241:89:109;;;4729:12013:35;;;;;;;;;;;;9971:9;4729:12013;;;;;;;5274:25;11719:134;4729:12013;11741:10;11719:134;;4729:12013;;;;;10715:70;:::i;:::-;1676:48:109;;;;10896:109:35;;10559:49;11741:10;;;;11057;;:::i;:::-;4729:12013;;;;;;10896:109;4729:12013;10986:18;4729:12013;;;10986:18;;;:::i;:::-;10896:109;;;;11530:74;4729:12013;;;;;;;;;;;;;271:35:50;4729:12013:35;;11530:74;;;;10559:49;4729:12013;10595:13;;;5274:25;4729:12013;10559:49;11458:17;:::i;9595:77::-;9628:31;4729:12013;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;756:44:27;4729:12013:35;;;764:10:27;:19;756:44;:::i;:::-;4729:12013:35;;;;;;;;764:10:27;1424:42;4729:12013:35;1424:42:27;;4729:12013:35;;;;;;;;;;;;;;422:99:33;4729:12013:35;422:99:33;4729:12013:35;;422:99:33;4729:12013:35;;;;;;;;;;;;;1009:51:36;4729:12013:35;;;;;;;;;;;;;;;:::i;:::-;;1664:936:32;;4729:12013:35;1664:936:32;;;;;;;;;;;;;;;;;;4729:12013:35;1664:936:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:12013:35;1664:936:32;;;;;;4729:12013:35;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;697:88:30;4729:12013:35;;;;;;697:88:30;4729:12013:35;-1:-1:-1;4729:12013:35;;;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;658:936:33;;4729:12013:35;658:936:33;;;;;;;;;;;;;;;;;;4729:12013:35;658:936:33;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;;897:71:36;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;2162:21:36;4729:12013:35;;2140:10:36;:44;2136:85;;4729:12013:35;;2401:15:36;;2251:11;;;4729:12013:35;;;;;;;;;;;;;2250:54:36;;;;4729:12013:35;;;;;;;;;;;2314:48:36;4729:12013:35;;;2314:48:36;:::i;:::-;4729:12013:35;;2401:15:36;:::i;2250:54::-;;;;;;2136:85;2186:22;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;;;;;;:::i;:::-;837:84:56;;5543:18:35;5539:59;;13589:10;547:238:47;;;;;;;;;;;;956:57;13708:17:35;4729:12013;;13708:17;:::i;:::-;4729:12013;;13739:22;;;13735:77;;4729:12013;;;;;13862:10;13589;;4729:12013;;;13862:10;;:::i;4729:12013::-;;;;;;;;;;13735:77;13763:36;4729:12013;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;1629:21:36;4729:12013:35;;1607:10:36;:44;1603:85;;1101:252:61;;;;;;;;;;;1702:36:36;1698:97;;4729:12013:35;;1895:38:36;357:89:112;;4729:12013:35;;;;16723:6;4729:12013;;;;;4750:25:59;;;:::i;:::-;4729:12013:35;;2855:254:114;;;;;;;;;4729:12013:35;;;;;;;5274:25;;1895:38:36;4729:12013:35;1698:97:36;4729:12013:35;937:176:49;1740:28:36;4729:12013:35;937:176:49;4729:12013:35;;937:176:49;;4729:12013:35;937:176:49;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1174:76:34;;;:::i;:::-;6439:15:35;;;4729:12013;;;;;1400:15:67;6439:34:35;;6435:96;;4729:12013;;;;;;6545:34;;6541:96;;5274:25;4729:12013;5274:25;;4729:12013;6668:13;;;;5274:25;4729:12013;5274:25;;4729:12013;887:51:111;;;;;6647:202:35;;6863:9;;;;;4729:12013;;;;6892:7;4729:12013;6892:7;;4729:12013;6863:37;4729:12013;;;;6863:37;;:::i;:::-;6862:38;6858:109;;4729:12013;6993:25;4729:12013;;;;6993:25;:::i;:::-;4729:12013;;;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;357:89:112;;4729:12013:35;357:89:112;;7152:22:35;4729:12013;;;;;3249:44:36;3245:1577;;4729:12013:35;;;;;7192:6;6668:13;4729:12013;;;;;;;;1502:93:114;4368:80:59;;4729:12013:35;7537:101;4466:41:59;4729:12013:35;4466:41:59;6668:13:35;4466:41:59;;;;4729:12013:35;4466:41:59;;;;3217:178:114;4466:41:59;;:::i;:::-;3217:178:114;;;;;;2578:157;2855:254;2578:157;;;;;;;;2855:254;;;;;3217:178;;4729:12013:35;;;;;;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;5274:25;;;;;;;4729:12013;5274:25;;4729:12013;;;;;;;;;;;;;;5274:25;;;;;;4729:12013;;5274:25;;4729:12013;6439:15;5274:25;;4729:12013;;;5274:25;;6863:9;5274:25;;4729:12013;7537:101;4729:12013;;;;;;8761:59:53;4729:12013:35;16279:29:53;9522:174;;8761:59;;;;9522:174;1383:7;9597:87;4729:12013:35;9583:102:53;4729:12013:35;;;9597:87:53;6668:13:35;9597:87:53;;;;;;;8765:10;9597:87;;;4729:12013:35;1383:7:53;;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;1383:7;;;;4729:12013:35;;;1383:7:53;;;4729:12013:35;1383:7:53;;;;;;;;;;:::i;:::-;9597:87;;;;;;;;:::i;:::-;9583:102;:::i;:::-;;9522:174;;;;;;;4368:80:59;4404:31;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;3245:1577:36;3539:9;;;3551:18;3539:30;;;3535:84;;4729:12013:35;;;;;3770:64:36;;6668:13:35;3770:64:36;;;;;;4729:12013:35;3770:64:36;;;;4729:12013:35;;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;4729:12013:35;;3770:64:36;;;4729:12013:35;3770:64:36;;:::i;:::-;3848:18;3880:637;;;;6668:13:35;3880:637:36;;;;;;3245:1577;4665:45;;;3245:1577;4665:104;;;3245:1577;4665:146;;;4729:12013:35;;;;4665:146:36;4640:171;3245:1577;;4665:146;;4729:12013:35;;4665:146:36;;:104;-1:-1:-1;1101:252:61;;;;;;;;;;;4665:104:36;;:45;4729:12013:35;;;;4677:32:36;;4665:45;;3880:637;4729:12013:35;3880:637:36;;-1:-1:-1;3880:637:36;4729:12013:35;3880:637:36;;4729:12013:35;3880:637:36;;;;;;3535:84;3571:35;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;8761:59:53;4729:12013:35;16279:29:53;9081:170;;8761:59;;;;9081:170;9143:97;4729:12013:35;;;9157:82:53;;6668:13:35;9157:82:53;;;8765:10;9157:82;;;4729:12013:35;1320:7:53;;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;1320:7;;;;;4729:12013:35;1320:7:53;;;;;9157:82;1320:7;;;;;;;;:::i;9143:97::-;;9081:170;;;6858:109:35;6902:34;4729:12013;937:176:49;4729:12013:35;937:176:49;;4729:12013:35;937:176:49;6647:202:35;6697:36;4729:12013;2861:260:49;4729:12013:35;2861:260:49;;;;4729:12013:35;2861:260:49;6541:96:35;6581:28;4729:12013;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;6435:96:35;6475:28;4729:12013;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:56;;;;5543:18:35;5539:59;;1174:76:34;;:::i;:::-;4729:12013:35;357:89:112;;4729:12013:35;;;;16723:6;4729:12013;;;;;8026:25;;;;:::i;:::-;4729:12013;8064:9;;4729:12013;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;;;;;;;;;;;;;;;8418:32;4729:12013;;;;8418:32;:::i;:::-;8481:15;4729:12013;8481:15;;4729:12013;;;;;;;;;;;;;;:::i;:::-;8765:10:53;4729:12013:35;;8232:314;4729:12013;8232:314;;4729:12013;8232:314;4729:12013;8232:314;;4729:12013;;;;;8232:314;;4729:12013;;8232:314;;4729:12013;;8232:314;;4729:12013;;3926:22:59;;;;;3922:85;;881:7:67;4021:29:59;;4017:86;;1041:6:67;4117:29:59;;4113:86;;4729:12013:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6562:1188:59;;4729:12013:35;;21799:10:59;;:21;4729:12013:35;;;;;;;;;;;21855:21:59;4729:12013:35;;;;;;;;;;;;;1682:98:114;4729:12013:35;1682:98:114;21962:23:59;;;21958:800;21962:23;;;22028:27;4729:12013:35;22028:27:59;4729:12013:35;22028:27:59;;4729:12013:35;;22058:27:59;;4729:12013:35;;;22126:27:59;;4729:12013:35;22156:27:59;;4729:12013:35;;;21958:800:59;;4729:12013:35;;5274:25;;4729:12013;8232:314;;4729:12013;2443:609:60;4729:12013:35;2443:609:60;;;;;;;16723:6:35;2443:609:60;;;;;;;;;;4729:12013:35;2443:609:60;;;;;;;4729:12013:35;2443:609:60;;;;4729:12013:35;2443:609:60;;;;4729:12013:35;;16723:6;7963:14:59;;4729:12013:35;;;;;;;;;;;;;;6566:19:59;3965:270:60;4729:12013:35;;;4064:14:60;;4060:67;;8322:20:59;4729:12013:35;3965:270:60;8980:66:35;3965:270:60;8300:20:59;3965:270:60;9320:10:35;3965:270:60;;4729:12013:35;4429:29:60;;4729:12013:35;4532:100:60;4729:12013:35;4390:100:60;4729:12013:35;;;;;4390:100:60;:::i;:::-;4571:29;;4729:12013:35;;;;;4532:100:60;:::i;:::-;4729:12013:35;;;8300:20:59;:::i;:::-;8322;;:::i;:::-;4729:12013:35;553:115:109;;4729:12013:35;553:115:109;;4729:12013:35;;;;;8436:18:59;8432:255;;3965:270:60;4729:12013:35;;;;8707:1774:59;;3965:270:60;785:220:109;;;;1049:15;1032;785:220;4729:12013:35;785:220:109;;4729:12013:35;785:220:109;;1032:15;:::i;:::-;785:220;;4729:12013:35;785:220:109;;4729:12013:35;785:220:109;;1049:15;:::i;:::-;4729:12013:35;553:115:109;;4729:12013:35;553:115:109;;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8807:103;4729:12013;8765:10:53;8807:103:35;;8064:9;4729:12013;;8064:9;;4729:12013;;8980:66;:::i;:::-;1676:48:109;;;;9157:109:35;;3965:270:60;8765:10:53;;;9320::35;;:::i;:::-;4729:12013;;;;;;;;;;9157:109;9247:18;8064:9;4729:12013;;8064:9;;4729:12013;;9247:18;;;:::i;:::-;9157:109;;;8707:1774:59;4729:12013:35;;;;;;;1682:98:114;4729:12013:35;1682:98:114;4729:12013:35;1682:98:114;1502:93;4729:12013:35;1502:93:114;8878:16:59;;;;8874:1597;8878:16;;;9245:38;;;;9190:171;9245:38;9285;9245;9190:182;9245:38;;:::i;:::-;4729:12013:35;;;9285:38:59;;:::i;:::-;9190:171;;:::i;:::-;:182;:::i;:::-;4729:12013:35;553:115:109;8874:1597:59;8707:1774;;;;;;8874:1597;9438:16;;;;;;;9434:1037;4729:12013:35;;;;;9675:135:59;:99;9864:54;4729:12013:35;9518:135:59;:99;2443:609:60;4729:12013:35;9562:38:59;4729:12013:35;;;9562:38:59;;:::i;:::-;9518:99;;:::i;:135::-;4729:12013:35;9705:38:59;4729:12013:35;;;9705:38:59;;:::i;:::-;9675:99;:::i;:135::-;553:115:109;;;4729:12013:35;553:115:109;;9887:14:59;;4729:12013:35;;;;;;;9864:54:59;:::i;:::-;4729:12013:35;;;;;;;;8874:1597:59;;9434:1037;10311:38;;10256:182;10311:38;;;10351;10311;10256:171;10311:38;;:::i;10351:::-;10256:171;;:::i;:182::-;4729:12013:35;553:115:109;8874:1597:59;;8432:255;4729:12013:35;;;;8474:91:59;;8432:255;4729:12013:35;;8582:91:59;;8432:255;;;;8582:91;8644:9;;;27694:10;27617:100;4729:12013:35;;-1:-1:-1;4729:12013:35;27694:10:59;4729:12013:35;;27687:23:59;4729:12013:35;;;;;;;;;;;;;;27617:100:59;8644:9;8582:91;;8474;8536:9;;;27694:10;27617:100;4729:12013:35;;-1:-1:-1;4729:12013:35;27694:10:59;4729:12013:35;;27687:23:59;4729:12013:35;;;;;;;;;;;;;;27617:100:59;8536:9;8474:91;;4060:67:60;4080:34;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;3965:270:60;8322:20:59;4729:12013:35;;8980:66;4729:12013;8300:20:59;4729:12013:35;9320:10;4729:12013;;4175:49:60;4729:12013:35;;;4175:49:60;;:::i;:::-;4729:12013:35;;;;;;;;3965:270:60;;21958:800:59;22208:24;;;;-1:-1:-1;4729:12013:35;;;22275:27:59;4729:12013:35;22275:27:59;;4729:12013:35;;22305:27:59;;4729:12013:35;;;22373:27:59;;4729:12013:35;22403:27:59;;4729:12013:35;;;22204:554:59;21958:800;;22204:554;22512:25;4729:12013:35;;22512:25:59;;4729:12013:35;;22540:27:59;;4729:12013:35;;;;22570:27:59;;4729:12013:35;;;22658:25:59;;;;;4729:12013:35;22686:27:59;;4729:12013:35;;;22716:27:59;;4729:12013:35;;;22204:554:59;21958:800;;6562:1188;4729:12013:35;;;;;;23715:10:59;;4729:12013:35;;;23815:554:59;4729:12013:35;;;23815:554:59;;;25100:35;23815:554;;;4729:12013:35;;24401:60:59;4729:12013:35;;;24401:60:59;;:::i;:::-;24513:25;;4729:12013:35;;;;;24483:24:59;24482:57;;24550:357;;;6562:1188;25054:81;;4729:12013:35;;;23815:554:59;4729:12013:35;23815:554:59;25100:35;:::i;:::-;4729:12013:35;25145:696:59;4729:12013:35;;;25145:696:59;;;4729:12013:35;;;;;;;;;;;;;23715:10:59;;4729:12013:35;;;;;23815:554:59;;;;;;24401:60;4729:12013:35;;;24401:60:59;;:::i;:::-;24513:25;;4729:12013:35;;23815:554:59;4729:12013:35;;24483:24:59;24482:57;;24550:357;;;6562:1188;4729:12013:35;;;23815:554:59;4729:12013:35;23815:554:59;4729:12013:35;;;;;;;;;;;;;25054:81:59;23815:554;25054:81;25145:696;4729:12013:35;25145:696:59;4729:12013:35;;;25145:696:59;;;4729:12013:35;;;;;;;;;;;;;;;6957:19:59;;6953:508;;6562:1188;4729:12013:35;;7479:120:59;;6562:1188;4729:12013:35;;;;7616:120:59;6562:1188;7616:120;7698:18;4729:12013:35;8232:314;;4729:12013;;;7662:15:59;;;;7698:18;:::i;:::-;6562:1188;;7479:120;7561:18;4729:12013:35;8232:314;;4729:12013;;;7525:15:59;;;;7561:18;:::i;:::-;7479:120;;6953:508;4729:12013:35;23815:554:59;4729:12013:35;;8232:314;;;4729:12013;;;;;;;26824:370:59;;;881:7:67;26824:370:59;;;;1041:6:67;26824:370:59;;;;;;;4729:12013:35;7108:52:59;;;7104:159;;23815:554;4729:12013:35;;;;;7288:52:59;7284:159;;6953:508;;;;7284:159;1284:143:49;7368:30:59;4729:12013:35;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;7104:159:59;1284:143:49;7188:30:59;4729:12013:35;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;24550:357:59;4729:12013:35;;;1682:98:114;4729:12013:35;1682:98:114;24711:25:59;;24550:357;24707:190;4729:12013:35;24785:25:59;;4729:12013:35;;24756:26:59;;4729:12013:35;;24857:25:59;;4729:12013:35;;24828:26:59;;4729:12013:35;24550:357:59;;;4729:12013:35;;;1682:98:114;4729:12013:35;1682:98:114;-1:-1:-1;24711:25:59;24707:190;;24550:357;;;;24707:190;24785:25;4729:12013:35;;24785:25:59;;4729:12013:35;;24756:26:59;;4729:12013:35;24857:25:59;4729:12013:35;;24828:26:59;;4729:12013:35;24707:190:59;;;4113:86;4148:29;4729:12013:35;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;4017:86:59;1284:143:49;4052:29:59;4729:12013:35;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;3922:85:59;1945:251:49;;;4729:12013:35;1945:251:49;;3950:24:59;1945:251:49;;4729:12013:35;1945:251:49;;;;;;;;8761:59:53;4729:12013:35;;;;;10017:25:53;;;:74;;;8761:59;10013:409;;;-1:-1:-1;;4729:12013:35;;10121:78:53;4729:12013:35;10121:78:53;;;10107:93;;10121:78;4729:12013:35;10121:78:53;8765:10;;;;;10121:78;;;;:::i;10107:93::-;;10013:409;8761:59;;;;10013:409;10221:26;:78;;;;10013:409;10217:205;;;10013:409;;;;10217:205;4729:12013:35;;10329:81:53;4729:12013:35;10329:81:53;;;10315:96;;10329:81;4729:12013:35;10329:81:53;8765:10;;;;;10329:81;;;;:::i;10315:96::-;;10217:205;;;10221:78;4729:12013:35;10251:48:53;;16279:29;:34;;10221:78;;;10017:74;10046:45;4729:12013:35;16279:29:53;;:34;;10017:74;;4729:12013:35;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;880:108:30;4729:12013:35;;;;;;880:108:30;4729:12013:35;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2355:10:30;;4729:12013:35;;2344:10:30;4729:12013:35;;;;;;;;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;;;;;;;2355:10:30;2403:43;4729:12013:35;2355:10:30;2403:43;;4729:12013:35;;;2464:4:30;4729:12013:35;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;14711:7;564:8:54;4729:12013:35;;14711:7;;4729:12013;;1391:24:54;14710:23:35;;:59;;;4729:12013;14706:142;;4729:12013;14857:24;;;;:::i;:::-;357:89:112;4729:12013:35;;14925:6;4729:12013;;;;;4984:25:59;;;;:::i;:::-;4729:12013:35;;3217:178:114;;;;;;;;;;4729:12013:35;;;14706:142;14785:39;4729:12013;667:96:49;4729:12013:35;;667:96:49;14710:59:35;14759:9;4729:12013;14759:9;;;4729:12013;;14737:10;:32;;14710:59;;4729:12013;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:56;;5750:60:35;;4729:12013;527:101:56;4729:12013:35;527:101:56;;837:84;527:101;4729:12013:35;;5961:48;;;;;4729:12013;5961:48;;4729:12013;;5961:48;;4729:12013;;;;;;:::i;:::-;5961:48;5977:10;;;5961:48;;;;;;;4729:12013;5961:48;;;4729:12013;622:89:57;;;6020:75:35;;4729:12013;;675:80:56;;837:84;675:80;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6020:75;6055:27;4729:12013;667:96:49;4729:12013:35;;667:96:49;5961:48:35;;;;;4729:12013;5961:48;;;;;;:::i;:::-;;;4729:12013;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5961:48;;;;4729:12013;;;;;;;;;5750:60;5773:24;4729:12013;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;:::i;:::-;2125:10:30;;;;;4729:12013:35;;2115:9:30;4729:12013:35;;;;;;;;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;;;;;;;2125:10:30;2174:41;4729:12013:35;2125:10:30;2174:41;;4729:12013:35;;;2233:4:30;4729:12013:35;;;;;;;;;;;;;:::i;:::-;837:84:56;;5543:18:35;5539:59;;13404:18;4729:12013;13404:18;;:::i;4729:12013::-;;;;;;;;;;;;;;;;656:871:32;;4729:12013:35;656:871:32;4729:12013:35;656:871:32;;;4729:12013:35;656:871:32;;;;;;;;;;4729:12013:35;;;656:871:32;;;;;;;;;;;;;;;;;;;;4729:12013:35;;656:871:32;;;4729:12013:35;;;;;;;;;;;;;;;;;;;;;756:44:27;4729:12013:35;;;;764:10:27;:19;756:44;:::i;:::-;4729:12013:35;;1372:34:36;4729:12013:35;;;1372:34:36;4729:12013:35;1421:49:36;4729:12013:35;1421:49:36;;4729:12013:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:56;;;;;5543:18:35;5539:59;;1174:76:34;;:::i;:::-;4729:12013:35;357:89:112;;4729:12013:35;;16723:6;4729:12013;;;;;12189:25;;;;:::i;:::-;12227:9;;;4729:12013;;;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;20507:15:59;;4729:12013:35;20507:15:59;;;4729:12013:35;;20536:14:59;;;20532:66;;4729:12013:35;20729:18:59;;;;:::i;:::-;4729:12013:35;;20752:18:59;;;:::i;:::-;4729:12013:35;;;553:115:109;;12227:9:35;553:115:109;;20790:11:59;;20786:135;;4729:12013:35;20938:11:59;20934:135;;4729:12013:35;8765:10:53;;12378::35;8765::53;12378::35;;;:::i;:::-;4729:12013;;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;;;;;;;;;8761:59:53;4729:12013:35;16279:29:53;16007:164;;8761:59;;;;16007:164;16064:96;4729:12013:35;16078:81:53;4729:12013:35;16078:81:53;4729:12013:35;;;16078:81:53;;;;;;;;8765:10;16078:81;;;;:::i;16064:96::-;;16007:164;;;;;;;;20934:135:59;20999:55;20969:26;20999:55;;;:::i;:::-;20969:26;;4729:12013:35;;;271:35:50;4729:12013:35;;20934:135:59;;;;20786;20851:55;;;;:::i;:::-;4729:12013:35;20821:26:59;;4729:12013:35;;;271:35:50;4729:12013:35;;20786:135:59;;20532:66;20552:33;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;8761:59:53;4729:12013:35;16279:29:53;15578:166;;8761:59;;;;15578:166;4729:12013:35;;15650:82:53;4729:12013:35;15650:82:53;;;15636:97;;15650:82;4729:12013:35;15650:82:53;8765:10;;;;;;15650:82;;;;:::i;15636:97::-;;15578:166;;;4729:12013:35;;;;;;;;;;;;;411:99:32;4729:12013:35;411:99:32;4729:12013:35;;411:99:32;4729:12013:35;;;;;;;:::i;:::-;837:84:56;;;5543:18:35;5539:59;;3235:54:30;;4729:12013:35;;;;;14182:17;14202:10;14182:17;;;:::i;:::-;4729:12013;;;;14202:10;;;;:::i;:::-;4729:12013;;;;;;;;;;;;;;;;;;;3186:33:30;4729:12013:35;;;3186:33:30;:::i;4729:12013:35:-;;;;;;;;837:84:56;;5543:18:35;5539:59;;4729:12013;13227:19;13235:10;13227:19;:::i;4729:12013::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;837:84:56;;;5543:18:35;5539:59;;13072:6;13005:17;13025:10;13005:17;;;:::i;:::-;4729:12013;;;;13025:10;;;;:::i;:::-;13072:6;:::i;4729:12013::-;;;;;;;;:::i;:::-;1292:10:30;;;;;4729:12013:35;;;;;;;;;;;;;;;;1282:35:30;4729:12013:35;;;1282:35:30;:::i;:::-;4729:12013:35;;;;;;;;;;;;;;;;;;;;;1328:33:30;4729:12013:35;;;1328:33:30;:::i;:::-;4729:12013:35;;;;;1292:10:30;4729:12013:35;;;;;;;;;;1377:54:30;;4729:12013:35;;;;1377:54:30;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;2762:25:30;4729:12013:35;;2762:25:30;;:100;;;;;4729:12013:35;;;;;;;;;;2762:100:30;4729:12013:35;2837:25:30;;;2762:100;;;4729:12013:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;:::o;12500:256::-;4729:12013;902:65:48;;4729:12013:35;714:95:48;;4729:12013:35;;;4932:52:111;;;12597:32:35;;12656:24;;;:::i;:::-;1178:157:48;902:65;1178:157;;;12500:256:35:o;12597:32::-;12622:7;;:::o;714:95:48:-;763:22;-1:-1:-1;667:96:49;;-1:-1:-1;667:96:49;1780:168:62;1859:8;1854:13;;;1850:57;;4729:12013:35;;1780:168:62;:::o;1850:57::-;1869:25;667:96:49;;;;;15873:356:35;;;4729:12013;;15968:10;;;15964:23;;1351:30:47;;439:352;547:238;439:352;;547:238;;;;;;;;;439:352;;1351:30;1484:16;1392:76;;1484:16;;;:::i;:::-;1510:71;;;16079:9:35;;1271:180:57;;;;;;;16075:148:35;15873:356::o;16075:148::-;16154:13;16150:73;;15873:356::o;16150:73::-;763:180:57;;;;;;15873:356:35:o;15964:23::-;15980:7;;;:::o;1588:2706:111:-;;;;4729:12013:35;;;;4932:52:111;1885:19;;1920:163;;-1:-1:-1;1920:163:111;;;;;;;2196:8;2192:75;;1881:2407;1588:2706::o;2192:75::-;3449:551:49;;;;;;2206:35:111;3449:551:49;;;;;;;;;;;;;;;;;-1:-1:-1;3449:551:49;;;;;;;;;;1881:2407:111;2298:1774;-1:-1:-1;2298:1774:111;;;;;;;4729:12013:35;2298:1774:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4184:8;4180:97;;1881:2407;1588:2706::o;4180:97::-;3449:551:49;2298:1774:111;3449:551:49;2298:1774:111;3449:551:49;;4194:34:111;3449:551:49;;2298:1774:111;3449:551:49;;;2298:1774:111;;3449:551:49;;;;2298:1774:111;3449:551:49;;;;-1:-1:-1;3449:551:49;;;;;;;;;;14974:821:35;902:65:48;;;14974:821:35;4729:12013;;;15242:19;;15778:9;15284;;15238:490;;15761:15;;;:::i;:::-;15778:9;;:::i;15238:490::-;15328:9;15324:59;;15778:9;1424:65:48;15643:28:35;1424:65:48;;15598:24:35;;;:::i;:::-;15643:28;:::i;:::-;1023:57:48;4729:12013:35;902:65:48;1023:57;15238:490:35;;15324:59;15343:27;4729:12013;667:96:49;;4729:12013:35;667:96:49;968:137:34;4729:12013:35;1044:8:34;4729:12013:35;1035:4:34;1027:25;1023:75;;968:137::o;1023:75::-;1054:31;667:96:49;;;;;27273:157:59;4729:12013:35;1502:93:114;;27351:30:59;27347:76;;27273:157::o;27347:76::-;27383:27;-1:-1:-1;667:96:49;;-1:-1:-1;667:96:49;1830:6:53;;;;;;4729:12013:35;1830:6:53;;;;4729:12013:35;;;1830:6:53;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;1830:6:53;;;;;;;;:::i;:::-;;:::o;16307:232:35:-;;4729:12013;16493:13;16525:6;16307:232;;16462:6;5274:25;;;;4729:12013;2052:83:109;;;16462:6:35;;:::i;:::-;16493:13;5274:25;4729:12013;2241:89:109;;;16525:6:35;;:::i;1846:122:54:-;4729:12013:35;;1123:7:54;1680:18;;1901:60;;1846:122;:::o;1901:60::-;1922:22;-1:-1:-1;937:176:49;;;;-1:-1:-1;937:176:49;1588:6:53;;;;;;;;4729:12013:35;1588:6:53;;4729:12013:35;;;1588:6:53;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;1588;;;4729:12013:35;;;;1588:6:53;;;4729:12013:35;1588:6:53;;;;4729:12013:35;;1588:6:53;;;4729:12013:35;1588:6:53;;;;;;;4729:12013:35;1588:6:53;;;;;;4729:12013:35;1588:6:53;;;;;;;;;;:::i;1142:151:62:-;;4729:12013:35;;;1240:6:62;;;1236:50;;1142:151::o;1656:6:53:-;;;;;;;4729:12013:35;1656:6:53;;;;4729:12013:35;;;1656:6:53;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;1656;1588;;4729:12013:35;;;;1656:6:53;;;4729:12013:35;1588:6:53;;;;4729:12013:35;;1588:6:53;;;4729:12013:35;1588:6:53;;;;;;;4729:12013:35;1588:6:53;;;;;;4729:12013:35;1588:6:53;1656;;;;4729:12013:35;1656:6:53;;;;;;;;:::i;10525:1403::-;;;;;4729:12013:35;;;;;10811:10:53;:27;10807:79;;10897:19;4729:12013:35;10930:21:53;;;4729:12013:35;10930:25:53;10926:996;4729:12013:35;;;;16279:29:53;;10971:451;;10926:996;;;;;;;10525:1403::o;10971:451::-;11384:23;4729:12013:35;;;;11144:84:53;4729:12013:35;11090:244:53;4729:12013:35;;;;11144:84:53;4729:12013:35;10930:21:53;4729:12013:35;11144:84:53;;;;;;;;10811:10;11144:84;;;;:::i;:::-;;;;;;;;;:::i;:::-;4729:12013:35;16279:29:53;;:34;;11090:244;;:::i;:::-;11384:23;;;:::i;:::-;10971:451;;;;;;;;;10926:996;11456:47;;;;;4729:12013:35;16279:29:53;;11452:460;;10926:996;;;;;;10525:1403::o;11452:460::-;11874:23;4729:12013:35;;;;;;11628:87:53;4729:12013:35;;11628:87:53;4729:12013:35;11574:250:53;4729:12013:35;10930:21:53;4729:12013:35;11628:87:53;;;;;;;;10811:10;11628:87;;;;:::i;:::-;4729:12013:35;16279:29:53;;:34;;11574:250;;:::i;10807:79::-;-1:-1:-1;4729:12013:35;;-1:-1:-1;;;;;10840:46:53:o;5460:1119::-;4729:12013:35;16279:29:53;;:34;;5678:91;;5460:1119;5674:109;;4729:12013:35;16279:29:53;;:34;;5797:89;;5460:1119;5793:107;;4729:12013:35;16279:29:53;;:34;;5914:107;;5460:1119;5910:158;;4729:12013:35;16279:29:53;;:34;;6094:129;;5460:1119;6077:169;;4729:12013:35;;;;;-1:-1:-1;4729:12013:35;;564:8:54;1391:24;6472:19:53;;5460:1119::o;6430:142::-;1248:13;6507:38;:42;;;;:64;;;6430:142;5460:1119;:::o;6507:64::-;564:8:54;4729:12013:35;;;;1391:24:54;5460:1119:53;:::o;6077:169::-;6234:12;;4729:12013:35;6234:12:53;:::o;6094:129::-;6162:61;4729:12013:35;16279:29:53;;:34;;6094:129;;5914:107;5963:58;4729:12013:35;16279:29:53;;:34;;5914:107;;5797:89;5837:49;4729:12013:35;16279:29:53;;:34;;5797:89;;5678:91;5719:50;4729:12013:35;16279:29:53;;:34;;5678:91;;2346:220:54;564:8;4729:12013:35;;;1391:24:54;2480:33;;2523:13;;;:::i;2480:33::-;2505:8;4729:12013:35;2505:8:54;:::o;4300:271:111:-;4729:12013:35;;4932:52:111;4388:19;;4430:21;;4423:28;:::o;4384:181::-;4729:12013:35;4489:65:111;4729:12013:35;;;4489:65:111;;;;4729:12013:35;4489:65:111;;4548:4;4489:65;;;4729:12013:35;4489:65:111;;;;;;;4729:12013:35;4489:65:111;;;4482:72;;:::o;4489:65::-;;;4729:12013:35;4489:65:111;;4729:12013:35;4489:65:111;;;;;;4729:12013:35;4489:65:111;;;:::i;:::-;;;4729:12013:35;;;;;4482:72:111;:::o;4489:65::-;;;-1:-1:-1;4489:65:111;;809:23:110;;;;;;;;;;;;;;;;;;;;;;;;:::o;12015:1867:53:-;12266:22;;;4729:12013:35;;;;;;12015:1867:53;;;12302:10;4729:12013:35;;;12302:27:53;12298:104;;4729:12013:35;16279:29:53;;12413:1463;;12015:1867;;;;;;:::o;12413:1463::-;12491:86;4729:12013:35;809:23:110;12506:70:53;4729:12013:35;809:23:110;4729:12013:35;;;12506:70:53;;;;12266:22;12506:70;;;12302:10;12506:70;;;4729:12013:35;809:23:110;;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;809:23:110;;;4729:12013:35;;809:23:110;;;4729:12013:35;809:23:110;;;;;;;4729:12013:35;809:23:110;;;4729:12013:35;;809:23:110;;;4729:12013:35;809:23:110;;;;;;;;;;;;:::i;12506:70:53:-;12491:86;;:::i;:::-;4729:12013:35;12712:2:53;4729:12013:35;;12695:19:53;12691:66;;4729:12013:35;12919:7:53;4729:12013:35;;;564:8:54;1391:24;12915:61:53;;12413:1463;4729:12013:35;16279:29:53;13062:804;;12413:1463;;;;;;;13062:804;4729:12013:35;1117:87:58;;;-1:-1:-1;1714:6:53;2052:83:109;;;4729:12013:35;;13520:332:53;;13062:804;13520:332;13627:34;13589:16;4729:12013:35;13589:16:53;;13627:34;;:::i;:::-;13687:48;;;;4729:12013:35;13700:16:53;;13687:48;13683:151;;13520:332;13062:804;;13683:151;13763:35;4729:12013:35;667:96:49;;4729:12013:35;667:96:49;13687:48:53;4729:12013:35;13719:16:53;;13687:48;;12915:61;12712:2;841:82:58;;;;-1:-1:-1;12915:61:53;;12691:66;12716:28;4729:12013:35;667:96:49;;4729:12013:35;667:96:49;12298:104:53;-1:-1:-1;4729:12013:35;;-1:-1:-1;4729:12013:35;;-1:-1:-1;;;;;12331:71:53:o;4729:12013:35:-;;;;;;;;;;;;;;;;;;:::o;13968:1351:53:-;;;;;;;;4729:12013:35;;;14260:10:53;:27;14256:83;;2052::109;;;2241:89;;;14515:35:53;16279:29;4729:12013:35;16279:29:53;;14511:308;;13968:1351;14829:22;;;;;4729:12013:35;;;2241:89:109;4729:12013:35;14865:25:53;;;:52;;;13968:1351;14861:413;;13968:1351;15283:29;;;;13968:1351;:::o;14861:413::-;15242:21;14946:22;;;4729:12013:35;14946:22:53;;;4729:12013:35;14946:26:53;4729:12013:35;;;;14946:47:53;14945:199;;;;553:115:109;;;2052:83;553:115;;14945:199:53;14933:211;15242:21;;:::i;:::-;14861:413;;;;;14945:199;553:115:109;;;;2052:83;553:115;;14945:199:53;;14865:52;4729:12013:35;;2241:89:109;4729:12013:35;14894:23:53;;14865:52;;14511:308;14636:80;14590:218;4729:12013:35;;14590:207:53;4729:12013:35;14566:242:53;4729:12013:35;;;;;;1770:6:53;4729:12013:35;14636:80:53;;;;;;;;14260:10;14636:80;;;4729:12013:35;;;;;;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;4729:12013:35;;;;;;;;;;;;;;;;:::i;14636:80:53:-;4729:12013:35;16279:29:53;;:34;;14590:207;;:::i;:218::-;14566:242;;:::i;:::-;14511:308;;;;;;;14256:83;14289:50;;;;;;;;;4729:12013:35;14289:50:53;:::o;6754:1254::-;;;;-1:-1:-1;6875:116:53;;;;;;;;;;;;7085:8;7081:80;;7232:504;;;;;;;;;;;;;;;;;;6875:116;7232:504;;;-1:-1:-1;7232:504:53;;6875:116;4729:12013:35;;7866:18:53;:68;;;;;6754:1254;7862:140;;;;6754:1254::o;7866:68::-;576:85:58;;;4729:12013:35;;;;;;7888:46:53;;;-1:-1:-1;7866:68:53;;;;7081:80;3449:551:49;;;4729:12013:35;3449:551:49;;;7095:29:53;3449:551:49;;4729:12013:35;3449:551:49;;;;;;;;;;;;;;;-1:-1:-1;3449:551:49;;;;;;;;;;741:4141:52;;4729:12013:35;;;1347:147:52;;271:35:50;1347:147:52;;;;;;;;;;;;;1619:19;;;;4729:12013:35;;;1720:10:52;1716:177;;271:35:50;2224:95:52;;;4729:12013:35;;;;2716:31:52;2811:94;;;3776:1;4729:12013:35;3757:1:52;4729:12013:35;3756:21:52;4729:12013:35;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;3254:96:52;;;;4729:12013:35;3254:96:52;;;2391:145;;;;;;4729:12013:35;2391:145:52;;2977:82;3363:21;4729:12013:35;741:4141:52;:::o;1716:177::-;1750:98;;;;1865:13;:::o;741:4141::-;;4729:12013:35;;;1347:147:52;;;;;;;;;;;;;;;;1619:19;;271:35:50;1619:19:52;4729:12013:35;;;1720:10:52;1716:177;;271:35:50;2224:95:52;;2391:145;;;;;;2977:82;4729:12013:35;2391:145:52;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;4729:12013:35;;;1347:147:52;;;;;;;;;;;;;;;;1619:19;;1123:7:54;1619:19:52;4729:12013:35;;;1720:10:52;1716:177;;4729:12013:35;2224:95:52;1123:7:54;2224:95:52;;2391:145;;;;;;4729:12013:35;;2391:145:52;;2977:82;;3363:21;4729:12013:35;741:4141:52;:::o;1716:177::-;1750:98;;1123:7:54;1750:98:52;;;1865:13;:::o;741:4141::-;;4729:12013:35;;;1347:147:52;;;;;;;;;;;;;;;;1619:19;;348:27:51;1619:19:52;4729:12013:35;;;1720:10:52;1716:177;;348:27:51;2224:95:52;;2391:145;;;;;;4729:12013:35;;2391:145:52;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;;4729:12013:35;;;1347:147:52;;348:27:51;1347:147:52;;;;;;;;;;;;;1619:19;;;;4729:12013:35;;;1720:10:52;1716:177;;348:27:51;2224:95:52;;;4729:12013:35;;;;2716:31:52;2811:94;;;3776:1;4729:12013:35;3757:1:52;4729:12013:35;3756:21:52;4729:12013:35;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;3254:96:52;;;;4729:12013:35;3254:96:52;;;2391:145;;;;;;4729:12013:35;2391:145:52;;2977:82;3363:21;4729:12013:35;741:4141:52;:::o;:::-;;4729:12013:35;;;1347:147:52;;;;;;;;;;;;;;;;1619:19;;;;4729:12013:35;;;1720:10:52;1716:177;;2224:95;;;;4729:12013:35;;;;2716:31:52;2811:94;;;3776:1;4729:12013:35;3757:1:52;4729:12013:35;3756:21:52;4729:12013:35;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;3254:96:52;;;;4729:12013:35;3254:96:52;;;2391:145;;;;;;4729:12013:35;2391:145:52;;2977:82;3363:21;4729:12013:35;741:4141:52;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;2108:1410:66:-;;;2509:1003;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2108:1410::o;2509:1003::-;;;;;;;;;;;;;;;;;;;;;2873:3767:67;3021:459;;;;;;;;;;1041:6;3498:35;;3494:78;;5897:727;3829:13;;3856:160;;;;;;;4033:13;3021:459;4033:13;;4029:83;;2873:3767;4140:3;4130:13;;4126:83;;2873:3767;4237:3;4227:13;;4223:83;;2873:3767;4334:4;4324:14;;4320:84;;2873:3767;4432:4;4422:14;;4418:84;;2873:3767;4530:4;4520:14;;4516:84;;2873:3767;3856:160;4618:14;;4614:84;;2873:3767;4726:5;4716:15;;4712:85;;2873:3767;4825:5;4815:15;;4811:85;;2873:3767;4924:5;4914:15;;4910:85;;2873:3767;5023:5;5013:15;;5009:85;;2873:3767;5122:6;5112:16;;5108:86;;2873:3767;5222:6;5212:16;;5208:86;;2873:3767;5322:6;5312:16;;5308:86;;2873:3767;5422:6;5412:16;;5408:86;;2873:3767;5522:7;5512:17;;5508:86;;2873:3767;5622:7;5612:17;;5608:85;;2873:3767;5721:7;5711:17;;5707:83;;2873:3767;5818:7;5808:17;5804:78;;2873:3767;-1:-1:-1;;5897:727:67;;2873:3767;5897:727;4432:4;5897:727;2873:3767;:::o;5897:727::-;;;;;5804:78;5849:25;4729:12013:35;;;3856:160:67;4729:12013:35;;5804:78:67;;5707:83;5752:30;4729:12013:35;;;3856:160:67;4729:12013:35;;5707:83:67;;5608:85;4729:12013:35;5653:32:67;4729:12013:35;3856:160:67;4729:12013:35;5608:85:67;;;5508:86;4729:12013:35;5553:33:67;4729:12013:35;3856:160:67;4729:12013:35;5508:86:67;;;5408;4729:12013:35;5452:34:67;4729:12013:35;3856:160:67;4729:12013:35;5408:86:67;;;5308;4729:12013:35;5352:34:67;4729:12013:35;3856:160:67;4729:12013:35;5308:86:67;;;5208;4729:12013:35;5252:34:67;4729:12013:35;3856:160:67;4729:12013:35;5208:86:67;;;5108;4729:12013:35;5152:34:67;4729:12013:35;3856:160:67;4729:12013:35;5108:86:67;;;5009:85;4729:12013:35;5052:34:67;4729:12013:35;3856:160:67;4729:12013:35;5009:85:67;;;4910;4729:12013:35;4953:34:67;4729:12013:35;3856:160:67;4729:12013:35;4910:85:67;;;4811;4729:12013:35;4854:34:67;4729:12013:35;3856:160:67;4729:12013:35;4811:85:67;;;4712;4729:12013:35;4755:34:67;4729:12013:35;3856:160:67;4729:12013:35;4712:85:67;;;4614:84;4729:12013:35;4656:34:67;4729:12013:35;3856:160:67;4729:12013:35;4614:84:67;;;4516;4729:12013:35;4558:34:67;4729:12013:35;3856:160:67;4729:12013:35;4516:84:67;;;4418;4729:12013:35;4460:34:67;4729:12013:35;3856:160:67;4729:12013:35;4418:84:67;;;4320;4729:12013:35;4362:34:67;4729:12013:35;3856:160:67;4729:12013:35;4320:84:67;;;4223:83;4729:12013:35;4264:34:67;4729:12013:35;3856:160:67;4729:12013:35;4223:83:67;;;4126;4729:12013:35;4167:34:67;4729:12013:35;3856:160:67;4729:12013:35;4126:83:67;;;4029;4729:12013:35;4070:34:67;4729:12013:35;3856:160:67;4729:12013:35;4029:83:67;;;3494:78;1284:143:49;3535:20:67;1284:143:49;;;;;;;13802:424:63;;14003:1;4729:12013:35;;;13991:13:63;:218;14003:1;;;14023:73;4729:12013:35;14003:1:63;4729:12013:35;;;14023:73:63;;:::i;:::-;14003:1;1557:5:62;;1553:49;;13802:424:63;:::o;13991:218::-;14127:71;4729:12013:35;;;14127:71:63;;:::i;:::-;14003:1;1557:5:62;;1553:49;;14003:1:63;4729:12013:35;13802:424:63;:::o;13029:::-;;13230:1;4729:12013:35;;;13218:13:63;:218;13230:1;;;13250:73;4729:12013:35;13230:1:63;4729:12013:35;;;13250:73:63;;:::i;13218:218::-;13354:71;4729:12013:35;;;13354:71:63;;:::i;382:370:55:-;;465:281;382:370;465:281;;;;;;;;;;;382:370::o;465:281::-;;;;;;;8148:484:53;;8289:20;8148:484;8289:20;:::i;:::-;8400:12;;8396:26;;8538:2;4729:12013:35;;8521:19:53;8517:66;;8538:2;1117:87:58;;8148:484:53;:::o;1070:396:109:-;1447:15;1070:396;1430:15;1183:220;;;;;;;1430:15;:::i;:::-;1183:220;;;;;;;1447:15;:::i;:::-;553:115;;;1183:220;553:115;;1070:396;:::o;7059:5619:67:-;2006:66;4729:12013:35;1586:10:67;;;4729:12013:35;7614:79:67;7610:168;;4729:12013:35;;7833:2:67;4729:12013:35;;2006:66:67;7911:180;;;;;;;;8104:164;;;;;;;;8281:156;;;;;;;;8450:152;;;;;;;;8615:150;4729:12013:35;8615:150:67;;;;;;;8778:149;;;;;;;;;8940;;8615:150;8940:149;;;;;;;9102:110;8104:164;;8281:156;8450:152;8615:150;8778:149;8940;9102:110;9230:10;9237:3;9230:10;;;9226:83;9237:3;;;4729:12013:35;;;;9226:83:67;9379:196;;;;;;4729:12013:35;9379:196:67;;9588;;;9379;9588;;4729:12013:35;9588:196:67;;9797;;;9379;9797;;4729:12013:35;9797:196:67;;10006;;;9379;10006;;4729:12013:35;10006:196:67;;10215;;;9379;10215;;4729:12013:35;10215:196:67;;10424;;;9379;10424;;4729:12013:35;10424:196:67;;10633;;;;9379;10633;;4729:12013:35;10633:196:67;;10842;;;;9379;10842;;4729:12013:35;10842:196:67;;11051;;;;9379;11051;;4729:12013:35;11051:196:67;;11260;;;;9379;11260;;4729:12013:35;11260:196:67;;11469;;;;9379;11469;;4729:12013:35;11469:196:67;;11678;;;;9379;11678;;4729:12013:35;11678:196:67;;11887;;;;;9379;11887;;4729:12013:35;11887:196:67;;12096:165;;;;;;11887:196;;;;;11678;;;;;11469;;;;;11260;;;;;11051;;;;;10842;;;;;10633;;;;;10424;;;;;10215;;;;;10006;;;;;9797;;;;;9588;;;;;9379;;;;;2006:66;;;9362:2;4729:12013:35;9379:196:67;9588;9797;10006;10215;10424;10633;10842;11051;11260;11469;11678;11887;12096:165;12306:24;2006:66;;;;9237:3;2006:66;8778:149;4729:12013:35;2006:66:67;12500:39;2006:66;9237:3;2006:66;8778:149;4729:12013:35;12570:91:67;:17;;;:91;4729:12013:35;;;12570:91:67;;;7059:5619;:::o;12570:91::-;4729:12013:35;;;12600:26:67;;;:::i;:::-;4729:12013:35;12600:42:67;:61;;;7059:5619;:::o;12600:61::-;;;1830:6:53;:::o;9226:83:67:-;4729:12013:35;9299:3:67;4729:12013:35;;9226:83:67;;7610:168;4729:12013:35;937:176:49;7713:25:67;937:176:49;;;;;;;;646:9:61;;;;;;;:::o;:::-;;;;;;;;;;12083:8199:59;;;;4729:12013:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12238:22:59;4729:12013:35;;;12333:17:59;4729:12013:35;12333:17:59;;4729:12013:35;;12386:14:59;4729:12013:35;12386:14:59;;;4729:12013:35;;12444:102:59;;;4729:12013:35;;12444:102:59;4729:12013:35;;;;763:5:61;1882:117:114;;;756:12:61;12444:102:59;;4729:12013:35;12590:22:59;;4729:12013:35;;;;1502:93:114;;;4729:12013:35;;;1682:98:114;4729:12013:35;1682:98:114;;;4729:12013:35;;;;12782:66:59;4729:12013:35;;;12795:25:59;;;4729:12013:35;12782:66:59;;4729:12013:35;;;13047:20:59;;4729:12013:35;831:8:54;2849:24;;:29;831:8;;987;3160:27;3585:12;;;:::i;:::-;4729:12013:35;;;;;13213:70:59;;13203:80;4729:12013:35;;12590:22:59;;4729:12013:35;13322:26:59;4729:12013:35;1123:7:54;4729:12013:35;;;13363:34:59;:49;;;13213:70;13359:123;;4729:12013:35;12590:22:59;;4729:12013:35;13496:27:59;13492:91;;-1:-1:-1;;4729:12013:35;;;;13628:24:59;;4729:12013:35;1502:93:114;4729:12013:35;;;13628:53:59;;;;13624:190;;-1:-1:-1;;4729:12013:35;1502:93:114;4729:12013:35;1586:10:67;13831:50:59;;13827:156;;13594:789;;4729:12013:35;;;;1766:49:67;4729:12013:35;;;;;;;;;;;;;;;;1766:49:67;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;14548:4771:59;4729:12013:35;;14557:35:59;:85;;;;14548:4771;14555:88;;1502:93:114;4729:12013:35;14684:18:59;;4729:12013:35;;;;;;14818:10:59;;4729:12013:35;1682:98:114;4729:12013:35;;;1682:98:114;4729:12013:35;14769:92:59;846:396:66;4729:12013:35;846:396:66;;;;;;;4729:12013:35;;4565:1658:66;4729:12013:35;;;;1676:170:66;;4815:13;1676:170;1682:98:114;1676:170:66;;;4729:12013:35;;-1:-1:-1;4729:12013:35;14769:15:59;;;4729:12013:35;;;-1:-1:-1;4729:12013:35;;4749:1:66;271:35:50;;;4729:12013:35;;;;4815:20:66;4990:11;;;;;;5140:194;;;;;;4729:12013:35;;881:7:67;772:575:46;;;;4729:12013:35;772:575:46;4729:12013:35;772:575:46;;;;;;4729:12013:35;772:575:46;;;;;;;;;14769:15:59;772:575:46;;;;;4729:12013:35;772:575:46;;;;;;;;;12386:14:59;772:575:46;;;;;;4729:12013:35;772:575:46;;;4729:12013:35;;;1682:98:114;4729:12013:35;646:9:61;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;5140:194:66;4565:1658;;4729:12013:35;;;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;1766:49:67;4729:12013:35;1766:49:67;;;4729:12013:35;14993:34:59;;14989:106;;4565:1658:66;1041:6:67;4729:12013:35;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;15112:34:59;;15108:106;;4565:1658:66;1766:49:67;1502:93:114;15299:42:59;4729:12013:35;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;15299:42:59;:::i;:::-;4729:12013:35;1766:49:67;4729:12013:35;1766:49:67;;;4729:12013:35;14684:18:59;1502:93:114;4729:12013:35;14684:18:59;;4729:12013:35;;1502:93:114;4729:12013:35;15686:24:59;;4729:12013:35;;15729:15:59;4729:12013:35;;15729:15:59;;4729:12013:35;;;;15545:286:59;4729:12013:35;;;;1502:93:114;4729:12013:35;;;1165:920:65;;;;;;;;;;;4729:12013:35;3762:41:65;;;3832:19;4729:12013:35;3832:19:65;;3866:2982;4729:12013:35;;;;1123:7:54;4729:12013:35;;3950:81:65;4729:12013:35;;;;3950:81:65;:::i;:::-;4060:230;;;;4093:87;4729:12013:35;;;;;1165:920:65;;;;;;;;;;;4093:87;:::i;:::-;4060:230;;4312:34;;;;;4729:12013:35;;;;1502:93:114;4729:12013:35;;1165:920:65;;;;;;;;;4505:156;;;1123:7:54;4505:24:65;;:156;1123:7:54;;;4505:156:65;;;;4308:1029;;5366:228;;;5399:86;;;;:::i;:::-;3866:2982;;4729:12013:35;1766:49:67;;;4729:12013:35;;1766:49:67;;;4729:12013:35;;1766:49:67;;;4729:12013:35;;;14684:18:59;;4729:12013:35;15850:11:59;;15846:577;15850:11;;;4729:12013:35;1766:49:67;;;;4729:12013:35;1557:5:62;;1553:49;;4729:12013:35;;;;;16035:30:59;4729:12013:35;1766:49:67;;;;4729:12013:35;1766:49:67;;;;16035:30:59;;:::i;:::-;4729:12013:35;1557:5:62;;1553:49;;4729:12013:35;16008:22:59;;4729:12013:35;;1766:49:67;;;;;;;;;;4729:12013:35;15846:577:59;4729:12013:35;;;16554:730:59;;15846:577;4729:12013:35;;15729:15:59;;4729:12013:35;;17343:19:59;17339:205;;15846:577;14684:18;1502:93:114;4729:12013:35;14684:18:59;;4729:12013:35;;1502:93:114;4729:12013:35;1766:49:67;;;4729:12013:35;;17617:43:59;;17613:1696;1502:93:114;;;1766:49:67;4729:12013:35;1766:49:67;;;4729:12013:35;17751:835:59;;17613:1696;4729:12013:35;;;1165:920:65;4729:12013:35;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;646:9:61;1682:98:114;4729:12013:35;;14818:10:59;;4729:12013:35;14548:4771:59;;17751:835;4729:12013:35;;;;18514:53:59;4729:12013:35;17896:25:59;;1766:49:67;1682:98:114;17923:25:59;;4729:12013:35;17858:172:59;4729:12013:35;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;;;-1:-1:-1;4729:12013:35;28451:10:59;;;4729:12013:35;;;-1:-1:-1;4729:12013:35;28533:26:59;;;;4729:12013:35;;;;;;;1682:98:114;28625:26:59;;4729:12013:35;;;;;;;;;;;;;18407:44:59;;17858:172;4729:12013:35;15729:15:59;4729:12013:35;;;18514:53:59;:::i;:::-;4729:12013:35;;15729:15:59;;4729:12013:35;17751:835:59;;18407:44;4729:12013:35;;;;;;;;18407:44:59;;17858:172;4729:12013:35;18514:53:59;17977:25;4729:12013:35;17977:25:59;;;4729:12013:35;18004:25:59;;1766:49:67;17858:172:59;;17613:1696;1502:93:114;19072:22:59;;4729:12013:35;;19050:44:59;;19046:263;;17613:1696;;14548:4771;;19046:263;19247:47;;;:::i;:::-;1682:98:114;4729:12013:35;;14818:10:59;;4729:12013:35;19046:263:59;;;17339:205;17443:68;1766:49:67;4729:12013:35;1766:49:67;;;;17443:68:59;:::i;:::-;4729:12013:35;17414:25:59;;1766:49:67;;;271:35:50;4729:12013:35;;17339:205:59;;;16554:730;1766:49:67;1123:7:54;4729:12013:35;1766:49:67;;;;4729:12013:35;;;1766:49:67;4729:12013:35;1766:49:67;;;;271:35:50;4729:12013:35;646:9:61;1766:49:67;;4729:12013:35;1766:49:67;;;;4729:12013:35;;1766:49:67;;;4729:12013:35;271:35:50;16554:730:59;;;15846:577;4729:12013:35;1766:49:67;;;;4729:12013:35;1766:49:67;;;;271:35:50;4729:12013:35;1557:5:62;;1553:49;;4729:12013:35;;271:35:50;4729:12013:35;;;1766:49:67;;;;4729:12013:35;1557:5:62;;1553:49;;16357:51:59;4729:12013:35;16357:22:59;;4729:12013:35;;;16357:51:59;:::i;:::-;4729:12013:35;;15846:577:59;;5366:228:65;5508:86;;;:::i;:::-;5366:228;;4505:156;4591:70;;;;:::i;:::-;4505:156;;4308:1029;6744:358:63;;;;;;;;;;;;;;;;1502:93:114;;7185:190:63;;;;7210:74;;;;;:::i;:::-;7185:190;;4708:172:65;;4913:234;;;;;;4950:85;;;:::i;:::-;4902:245;4729:12013:35;;;;4308:1029:65;;;4913:234;5062:85;;;;:::i;:::-;4913:234;;7185:190:63;5055:42;;5056:28;;4847:27;;;4729:12013:35;;4897:47:63;4729:12013:35;;;;;308:2:51;4729:12013:35;4897:47:63;:::i;:::-;4729:12013:35;;;5056:28:63;:::i;:::-;5055:42;:::i;:::-;7185:190;;;4847:172;4967:52;4729:12013:35;;;;4967:52:63;;:::i;:::-;4847:172;;6744:358;;4729:12013:35;6744:358:63;;;;4060:230:65;4203:87;4729:12013:35;;;;1165:920:65;;;;;;;;;;;4203:87;;:::i;:::-;4060:230;;;3866:2982;5645:232;;;;;;;;;;5678:88;4729:12013:35;;;;;1165:920:65;;;;;;;;;;;5678:88;:::i;:::-;5645:232;;5899:37;;;;;4729:12013:35;;1502:93:114;4729:12013:35;;;;6763:70:65;4729:12013:35;;;1165:920:65;;;;;;;;;5895:516;;;6439:226;;;6472:85;;;;:::i;:::-;6428:237;4729:12013:35;;1123:7:54;4729:12013:35;6763:70:65;;:::i;:::-;3866:2982;;6439:226;6580:85;;;:::i;:::-;6439:226;;5895:516;6196:36;;;;;;8224:358:63;;;;;;;8659:194;;;;4729:12013:35;5165:27:63;;4729:12013:35;;308:2:51;4729:12013:35;;;;604:94:69;;;;;;;;5165:205:63;;4729:12013:35;5481:277:63;;;;;;;;;4729:12013:35;6763:70:65;4729:12013:35;;;;;8659:194:63;5895:516:65;;;;5481:277:63;;4729:12013:35;5481:277:63;;;;5165:205;4729:12013:35;;;5315:25:52;;348:27:51;5315:25:52;;:::i;:::-;5358;;;;;348:27:51;5358:25:52;;5354:90;;5165:205:63;;;;5354:90:52;4729:12013:35;;5416:12:52;5354:90;4729:12013:35;;;;8659:194:63;8777:76;;;6763:70:65;8777:76:63;1502:93:114;8777:76:63;;;:::i;:::-;8659:194;;5645:232:65;5789:88;4729:12013:35;;;;1165:920:65;;;;;;;;;;;5789:88;;:::i;:::-;5645:232;;;15108:106:59;1041:6:67;4729:12013:35;1766:49:67;;;4729:12013:35;15108:106:59;;14989;881:7:67;4729:12013:35;1766:49:67;;;4729:12013:35;14989:106:59;;5140:194:66;4729:12013:35;;881:7:67;4729:12013:35;1682:98:114;4729:12013:35;646:9:61;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;5140:194:66;;4565:1658;4729:12013:35;;;;1682:98:114;4729:12013:35;1676:170:66;;4729:12013:35;1676:170:66;5678:13;1676:170;;;4729:12013:35;;;;14769:15:59;;;4729:12013:35;;;;;;;;;;;;5623:20:66;4729:12013:35;;5678:20:66;5845:11;;;;;;5995:213;;;;;;4729:12013:35;;881:7:67;1802:839:46;;4729:12013:35;;1802:839:46;;;;;4729:12013:35;1802:839:46;;;;;;;;;;;;;;;;;;;;;4729:12013:35;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;5995:213:66;4565:1658;;;5995:213;4729:12013:35;;;881:7:67;4729:12013:35;;;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;5995:213:66;;14555:88:59;;;;;;;;;;;4729:12013:35;19361:10:59;;4729:12013:35;;2578:157:114;;;2342:131;1502:93;4729:12013:35;19389:18:59;;4729:12013:35;;2342:131:114;;;;4729:12013:35;;;;19483:15:59;;4729:12013:35;;19465:33:59;;;19461:71;;14548:4771;-1:-1:-1;4729:12013:35;;;;1682:98:114;4729:12013:35;19638:25:59;;1766:49:67;19610:25:59;;4729:12013:35;19579:179:59;4729:12013:35;19796:24:59;4729:12013:35;;19940:68:59;4729:12013:35;19885:33:59;4729:12013:35;19885:22:59;;4729:12013:35;19885:33:59;:::i;:::-;12590:22;;4729:12013:35;;;;;19940:68:59;:::i;:::-;4729:12013:35;553:115:109;;4729:12013:35;553:115:109;;19792:474:59;12083:8199::o;19792:474::-;4729:12013:35;12590:22:59;4729:12013:35;;;20110:68:59;;4729:12013:35;20110:68:59;:::i;:::-;20200:33;4729:12013:35;20200:22:59;;4729:12013:35;20200:33:59;:::i;19579:179::-;19694:25;4729:12013:35;19722:25:59;;1766:49:67;19694:25:59;;4729:12013:35;19579:179:59;;19461:71;4729:12013:35;;;12386:14:59;;;4729:12013:35;;;12386:14:59;;;4729:12013:35;19461:71:59;;;14557:85;14596:18;1502:93:114;4729:12013:35;14596:18:59;;4729:12013:35;;1502:93:114;4729:12013:35;14618:24:59;;4729:12013:35;;14596:46:59;14557:85;;13827:156;13901:30;4729:12013:35;937:176:49;;;;4729:12013:35;937:176:49;13624:190:59;2369:319:49;;;4729:12013:35;2369:319:49;;13701:34:59;2369:319:49;;;;;;;;;;;13594:789:59;4729:12013:35;14017:24:59;;4729:12013:35;1502:93:114;4729:12013:35;;;14017:53:59;;;;14013:190;;-1:-1:-1;;4729:12013:35;1502:93:114;4729:12013:35;1766:49:67;14220:51:59;;;14216:157;;13594:789;;;13492:91;13525:58;;;;;;;;;;;;;;4729:12013:35;13525:58:59;4729:12013:35;13525:58:59;;;:::o;13359:123::-;13428:30;4729:12013:35;667:96:49;;4729:12013:35;667:96:49;13363:49:59;13401:11;;;13363:49;;13213:70;4729:12013:35;1911:334:61;4729:12013:35;;;;1911:334:61;;;;;;;;;;4729:12013:35;;;;1911:334:61;;13213:70:59;;;13047:141;2089:105:114;;;;4729:12013:35;2089:105:114;13047:141:59;;12782:66;1682:98:114;12823:25:59;;4729:12013:35;12782:66:59;;;12444:102;4729:12013:35;;;;;;12444:102:59;;;11602:1078:63;11927:153;348:27:51;11602:1078:63;10608:530;11602:1078;14193:4;11602:1078;10608:530;;;;;;;;;;;11927:153;;12476:51;;;;;:::i;:::-;12537:137;;;;;;11602:1078;:::o;:::-;11927:153;11602:1078;10608:530;11602:1078;12476:51;11602:1078;;10608:530;;;;;;;;;;;11927:153;;12476:51;:::i;9411:1050::-;;4729:12013:35;;;;;;9613:29:63;9609:98;;9411:1050;4729:12013:35;9796:262:63;;;;;;;4729:12013:35;;10275:64:63;10224:220;4729:12013:35;;;1586:10:67;;4729:12013:35;;308:2:51;4729:12013:35;;10275:64:63;:::i;:::-;604:94:69;;;;;;;;;9411:1050:63;:::o;9796:262::-;;;;;;;9609:98;;;;9411:1050;4729:12013:35;;;;;;9613:29:63;9609:98;;9411:1050;4729:12013:35;9796:262:63;;;;;;;10374:70;10224:220;4729:12013:35;;10374:54:63;10224:220;4729:12013:35;;;1586:10:67;;4729:12013:35;;308:2:51;4729:12013:35;;10374:54:63;:::i;:::-;:70;:::i;9609:98::-;9644:63;9609:98;;5164:296:52;;;;5315:25;;;;;:::i;:::-;5358;;;;;;5354:90;;5164:296::o;5354:90::-;4729:12013:35;;;5416:12:52;;;4729:12013:35;;5164:296:52:o;1548:2065:63:-;;;1844:11;;1840:32;;4729:12013:35;;;308:2:51;4729:12013:35;;1959:1648:63;4729:12013:35;;;;;2964:462:63;;;;;;;;;;;;;3510:72;4729:12013:35;3510:60:63;4729:12013:35;;;3510:60:63;;:::i;2964:462::-;;1959:1648;2964:462;;;;1840:32;1857:15;;;:::o;1548:2065::-;;;1844:11;;1840:32;;4729:12013:35;;;;308:2:51;4729:12013:35;;;;;;;2067:16:63;;;;;:::i;:::-;:28;2063:345;;1548:2065;2539:21;;;2538:32;2539:21;;;:::i;:::-;2538:32;:::i;:::-;604:94:69;;;;;;;;4729:12013:35;1548:2065:63;:::o;2063:345::-;271:35:50;;2187:25:63;;;2063:345;2183:207;2306:60;;;;;:::i;:::-;4729:12013:35;2291:76:63;:::o;1840:32::-;1857:15;;;;:::o;473:155:62:-;;4729:12013:35;;;575:6:62;;;571:50;;473:155::o","linkReferences":{},"immutableReferences":{"48289":[{"start":13812,"length":32}],"49587":[{"start":4887,"length":32}]}},"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","burn(address,uint256,uint256)":"f5298aca","clear(address,uint256)":"80f0b44c","collectProtocolFees(address,address,uint256)":"8161b874","donate((address,address,uint24,int24,address),uint256,uint256,bytes)":"234266d7","extsload(bytes32)":"1e2eaeaf","extsload(bytes32,uint256)":"35fd631a","extsload(bytes32[])":"dbd035ff","exttload(bytes32)":"f135baaa","exttload(bytes32[])":"9bf6645f","initialize((address,address,uint24,int24,address),uint160,bytes)":"695c5bf5","isOperator(address,address)":"b6363cf2","mint(address,uint256,uint256)":"156e29f6","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"5a6bcfda","owner()":"8da5cb5b","protocolFeeController()":"f02de3b2","protocolFeesAccrued(address)":"97e8cd4e","setOperator(address,bool)":"558a7297","setProtocolFee((address,address,uint24,int24,address),uint24)":"7e87ce7d","setProtocolFeeController(address)":"2d771389","settle()":"11da60b4","settleFor(address)":"3dd45adb","supportsInterface(bytes4)":"01ffc9a7","swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"f3cd914c","sync(address)":"a5841194","take(address,address,uint256)":"0b0d9c09","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a","transferOwnership(address)":"f2fde38b","unlock(bytes)":"48c89491","updateDynamicLPFee((address,address,uint24,int24,address),uint24)":"52759651"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"controllerGasLimit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyUnlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currency1\",\"type\":\"address\"}],\"name\":\"CurrenciesOutOfOrderOrEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurrencyNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegateCallNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ManagerLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustClearExactPositiveDelta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonZeroNativeValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeCannotBeFetched\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapAmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickSpacingTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickSpacingTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedDynamicLPFeeUpdate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"ModifyLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"protocolFee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"clear\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCollected\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"startSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nSlots\",\"type\":\"uint256\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"exttload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"exttload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPoolManager.ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"modifyLiquidity\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"callerDelta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"feesAccrued\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"protocolFeesAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint24\",\"name\":\"newProtocolFee\",\"type\":\"uint24\"}],\"name\":\"setProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"settleFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IPoolManager.SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"swapDelta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"take\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint24\",\"name\":\"newDynamicLPFee\",\"type\":\"uint24\"}],\"name\":\"updateDynamicLPFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)\":{\"params\":{\"currency0\":\"The first currency of the pool by address sort order\",\"currency1\":\"The second currency of the pool by address sort order\",\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"hooks\":\"The hooks contract address for the pool, or address(0) if none\",\"id\":\"The abi encoded hash of the pool key struct for the new pool\",\"sqrtPriceX96\":\"The price of the pool on initialization\",\"tick\":\"The initial tick of the pool corresponding to the intialized price\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\"}},\"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)\":{\"params\":{\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidityDelta\":\"The amount of liquidity that was added or removed\",\"salt\":\"The extra data to make positions unique\",\"sender\":\"The address that modified the pool\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"params\":{\"amount0\":\"The delta of the currency0 balance of the pool\",\"amount1\":\"The delta of the currency1 balance of the pool\",\"fee\":\"The swap fee in hundredths of a bip\",\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidity\":\"The liquidity of the pool after the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of the price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"spender\":\"The address of the spender.\"},\"returns\":{\"_0\":\"bool True, always\"}},\"burn(address,uint256,uint256)\":{\"details\":\"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out\",\"params\":{\"amount\":\"The amount of currency to burn\",\"from\":\"The address to burn the tokens from\",\"id\":\"The currency address to burn from ERC6909s, as a uint256\"}},\"clear(address,uint256)\":{\"details\":\"This could be used to clear a balance that is considered dust. Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared.\"},\"collectProtocolFees(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of currency to withdraw\",\"currency\":\"The currency to withdraw\",\"recipient\":\"The address to receive the protocol fees\"},\"returns\":{\"amountCollected\":\"The amount of currency successfully withdrawn\"}},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"params\":{\"amount0\":\"The amount of currency0 to donate\",\"amount1\":\"The amount of currency1 to donate\",\"hookData\":\"The data to pass through to the donate hooks\",\"key\":\"The key of the pool to donate to\"},\"returns\":{\"delta\":\"BalanceDelta The delta of the caller after the donate\"}},\"extsload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to sload\"},\"returns\":{\"_0\":\"The value of the slot as bytes32\"}},\"extsload(bytes32,uint256)\":{\"params\":{\"nSlots\":\"Number of slots to load into return value\",\"startSlot\":\"Key of slot to start sloading from\"},\"returns\":{\"_0\":\"List of loaded values.\"}},\"extsload(bytes32[])\":{\"params\":{\"slots\":\"List of slots to SLOAD from.\"},\"returns\":{\"_0\":\"List of loaded values.\"}},\"exttload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to tload\"},\"returns\":{\"_0\":\"The value of the slot as bytes32\"}},\"exttload(bytes32[])\":{\"params\":{\"slots\":\"List of slots to tload\"},\"returns\":{\"_0\":\"List of loaded values\"}},\"initialize((address,address,uint24,int24,address),uint160,bytes)\":{\"params\":{\"hookData\":\"The data to pass through to the initialize hooks\",\"key\":\"The pool key for the pool to initialize\",\"sqrtPriceX96\":\"The initial square root price\"},\"returns\":{\"tick\":\"The initial tick of the pool\"}},\"mint(address,uint256,uint256)\":{\"details\":\"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out\",\"params\":{\"amount\":\"The amount of currency to mint\",\"id\":\"The currency address to mint to ERC6909s, as a uint256\",\"to\":\"The address to mint the tokens to\"}},\"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"details\":\"Poke by calling with a zero liquidityDelta\",\"params\":{\"hookData\":\"The data to pass through to the add/removeLiquidity hooks\",\"key\":\"The pool to modify liquidity in\",\"params\":\"The parameters for modifying the liquidity\"},\"returns\":{\"callerDelta\":\"The balance delta of the caller of modifyLiquidity. This is the total of both principal and fee deltas.\",\"feesAccrued\":\"The balance delta of the fees generated in the liquidity range. Returned for informational purposes.\"}},\"setOperator(address,bool)\":{\"params\":{\"approved\":\"The approval status.\",\"operator\":\"The address of the operator.\"},\"returns\":{\"_0\":\"bool True, always\"}},\"setProtocolFee((address,address,uint24,int24,address),uint24)\":{\"params\":{\"key\":\"The key of the pool to set a protocol fee for\",\"newProtocolFee\":\"The fee to set\"}},\"setProtocolFeeController(address)\":{\"params\":{\"controller\":\"The new protocol fee controller\"}},\"settle()\":{\"returns\":{\"paid\":\"The amount of currency settled\"}},\"settleFor(address)\":{\"params\":{\"recipient\":\"The address to credit for the payment\"},\"returns\":{\"paid\":\"The amount of currency settled\"}},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"details\":\"Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified. Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.\",\"params\":{\"hookData\":\"The data to pass through to the swap hooks\",\"key\":\"The pool to swap in\",\"params\":\"The parameters for swapping\"},\"returns\":{\"swapDelta\":\"The balance delta of the address swapping\"}},\"sync(address)\":{\"details\":\"This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped for native tokens because the amount to settle is determined by the sent value.\",\"params\":{\"currency\":\"The currency whose balance to sync\"}},\"take(address,address,uint256)\":{\"details\":\"Can also be used as a mechanism for _free_ flash loans\",\"params\":{\"amount\":\"The amount of currency to withdraw\",\"currency\":\"The currency to withdraw from the pool manager\",\"to\":\"The address to withdraw to\"}},\"transfer(address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"receiver\":\"The address of the receiver.\"},\"returns\":{\"_0\":\"bool True, always, unless the function reverts\"}},\"transferFrom(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"receiver\":\"The address of the receiver.\",\"sender\":\"The address of the sender.\"},\"returns\":{\"_0\":\"bool True, always, unless the function reverts\"}},\"unlock(bytes)\":{\"details\":\"The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`\",\"params\":{\"data\":\"Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`\"},\"returns\":{\"result\":\"The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`\"}},\"updateDynamicLPFee((address,address,uint24,int24,address),uint24)\":{\"params\":{\"key\":\"The key of the pool to update dynamic LP fees for\",\"newDynamicLPFee\":\"The new dynamic pool LP fee\"}}},\"title\":\"PoolManager\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyUnlocked()\":[{\"notice\":\"Thrown when unlock is called, but the contract is already unlocked\"}],\"CurrenciesOutOfOrderOrEqual(address,address)\":[{\"notice\":\"PoolKey must have currencies where address(currency0) < address(currency1)\"}],\"CurrencyNotSettled()\":[{\"notice\":\"Thrown when a currency is not netted out after the contract is unlocked\"}],\"InvalidCaller()\":[{\"notice\":\"Thrown when collectProtocolFees or setProtocolFee is not called by the controller.\"}],\"ManagerLocked()\":[{\"notice\":\"Thrown when a function is called that requires the contract to be unlocked, but it is not\"}],\"MustClearExactPositiveDelta()\":[{\"notice\":\"Thrown when `clear` is called with an amount that is not exactly equal to the open currency delta.\"}],\"NonZeroNativeValue()\":[{\"notice\":\"Thrown when native currency is passed to a non native settlement\"}],\"PoolNotInitialized()\":[{\"notice\":\"Thrown when trying to interact with a non-initialized pool\"}],\"ProtocolFeeCannotBeFetched()\":[{\"notice\":\"Thrown when not enough gas is provided to look up the protocol fee\"}],\"ProtocolFeeTooLarge(uint24)\":[{\"notice\":\"Thrown when protocol fee is set too high\"}],\"SwapAmountCannotBeZero()\":[{\"notice\":\"Thrown when trying to swap amount of 0\"}],\"TickSpacingTooLarge(int24)\":[{\"notice\":\"Pools are limited to type(int16).max tickSpacing in #initialize, to prevent overflow\"}],\"TickSpacingTooSmall(int24)\":[{\"notice\":\"Pools must have a positive non-zero tickSpacing passed to #initialize\"}],\"UnauthorizedDynamicLPFeeUpdate()\":[{\"notice\":\"Thrown when a call to updateDynamicLPFee is made by an address that is not the hook, or on a pool that does not have a dynamic swap fee.\"}]},\"events\":{\"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)\":{\"notice\":\"Emitted when a new pool is initialized\"},\"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)\":{\"notice\":\"Emitted when a liquidity position is modified\"},\"ProtocolFeeControllerUpdated(address)\":{\"notice\":\"Emitted when the protocol fee controller address is updated in setProtocolFeeController.\"},\"ProtocolFeeUpdated(bytes32,uint24)\":{\"notice\":\"Emitted when the protocol fee is updated for a pool.\"},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"notice\":\"Emitted for swaps between currency0 and currency1\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,uint256)\":{\"notice\":\"Spender allowance of an id.\"},\"approve(address,uint256,uint256)\":{\"notice\":\"Approves an amount of an id to a spender.\"},\"balanceOf(address,uint256)\":{\"notice\":\"Owner balance of an id.\"},\"burn(address,uint256,uint256)\":{\"notice\":\"Called by the user to move value from ERC6909 balance\"},\"clear(address,uint256)\":{\"notice\":\"WARNING - Any currency that is cleared, will be non-retreivable, and locked in the contract permanently. A call to clear will zero out a positive balance WITHOUT a corresponding transfer.\"},\"collectProtocolFees(address,address,uint256)\":{\"notice\":\"Collects the protocol fees for a given recipient and currency, returning the amount collected\"},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"notice\":\"Donate the given currency amounts to the pool with the given pool key\"},\"extsload(bytes32)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"extsload(bytes32,uint256)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"extsload(bytes32[])\":{\"notice\":\"Called by external contracts to access sparse pool state\"},\"exttload(bytes32)\":{\"notice\":\"Called by external contracts to access transient storage of the contract\"},\"exttload(bytes32[])\":{\"notice\":\"Called by external contracts to access sparse transient pool state\"},\"initialize((address,address,uint24,int24,address),uint160,bytes)\":{\"notice\":\"Initialize the state for a given pool ID\"},\"isOperator(address,address)\":{\"notice\":\"Checks if a spender is approved by an owner as an operator\"},\"mint(address,uint256,uint256)\":{\"notice\":\"Called by the user to move value into ERC6909 balance\"},\"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"notice\":\"Modify the liquidity for the given pool\"},\"protocolFeeController()\":{\"notice\":\"Returns the current protocol fee controller address\"},\"protocolFeesAccrued(address)\":{\"notice\":\"Given a currency address, returns the protocol fees accrued in that currency\"},\"setOperator(address,bool)\":{\"notice\":\"Sets or removes an operator for the caller.\"},\"setProtocolFee((address,address,uint24,int24,address),uint24)\":{\"notice\":\"Sets the protocol fee for the given pool\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets the protocol fee controller\"},\"settle()\":{\"notice\":\"Called by the user to pay what is owed\"},\"settleFor(address)\":{\"notice\":\"Called by the user to pay on behalf of another address\"},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"notice\":\"Swap against the given pool\"},\"sync(address)\":{\"notice\":\"Writes the current ERC20 balance of the specified currency to transient storage This is used to checkpoint balances for the manager and derive deltas for the caller.\"},\"take(address,address,uint256)\":{\"notice\":\"Called by the user to net out some value owed to the user\"},\"transfer(address,uint256,uint256)\":{\"notice\":\"Transfers an amount of an id from the caller to a receiver.\"},\"transferFrom(address,address,uint256,uint256)\":{\"notice\":\"Transfers an amount of an id from a sender to a receiver.\"},\"unlock(bytes)\":{\"notice\":\"All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract.\"},\"updateDynamicLPFee((address,address,uint24,int24,address),uint24)\":{\"notice\":\"Updates the pools lp fees for the a pool that has enabled dynamic lp fees.\"}},\"notice\":\"Holds the state for all pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PoolManager.sol\":\"PoolManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"src/NoDelegateCall.sol\":{\"keccak256\":\"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50\",\"dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB\"]},\"src/PoolManager.sol\":{\"keccak256\":\"0xf2c357d79981846e45452e44f6b9161b8edfe86ae8104b37d3c1d52a839615e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7fc0d49c506b30767b3b30396e5bfecacf296fa7dcc34744f1f8faf374ed4384\",\"dweb:/ipfs/QmcBKAQpRgBpxSpYhzmrn3oLxAyDVqeck8UwLBX1psk7JM\"]},\"src/ProtocolFees.sol\":{\"keccak256\":\"0x03e05338633abb24c705824f411621a612d85388661062661db1cd9991f7ad11\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2d97558d2943c315439fcbc767888355243a551a0e0712cc057dd3a07321b971\",\"dweb:/ipfs/QmcKh65thoezEvVoyAignGPTRsory3AsVALTaS3Z1kELF9\"]},\"src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"src/interfaces/IHooks.sol\":{\"keccak256\":\"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa\",\"dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0x7dd9b494e616cbf623c21e2b8c4e8375acf27d307b02700d4965170bff3bb838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://381e66840cc15dc602b56a55554aa4ae581e4cfc7ddbfb51f838e6b40981664b\",\"dweb:/ipfs/QmeLdh22eqpj53C8562oN7pE4oWR1sjD82TKdV3sMq3tYu\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6\",\"dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f\",\"dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw\"]},\"src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410\",\"dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/BitMath.sol\":{\"keccak256\":\"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09\",\"dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46\"]},\"src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c\",\"dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR\"]},\"src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7\",\"dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x2b70cc5e6ca761f4b3110bd7ea6c6064167df260a669b08b2c96c115d5c944ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f2ae8f2d7da6103f3d884935fb5da10c5463b4d229b31de9e592c4d2275e0bc\",\"dweb:/ipfs/QmWeVnC18TEqGy7fp2GApReNUuZFfDAEsWkycDV8N1LAmy\"]},\"src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d\",\"dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT\"]},\"src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196\",\"dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7\"]},\"src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0x028173d4dfa579c49e1d6aa0b0f4d9e0b5b5812bb573586fff53f33926720699\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98cf56f5917c23331a641363c31d353d58c9a3053bb7d64e62bed5161a23174a\",\"dweb:/ipfs/QmfVufa7owRy4VxYYGHN87F3YGNWvuSq1cpCpJjATvf6CM\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896\",\"dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo\"]},\"src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc\",\"dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa\"]},\"src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"src/libraries/NonZeroDeltaCount.sol\":{\"keccak256\":\"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2\",\"dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8\",\"dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf\"]},\"src/libraries/Pool.sol\":{\"keccak256\":\"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8\",\"dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H\"]},\"src/libraries/Position.sol\":{\"keccak256\":\"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce\",\"dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu\"]},\"src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a\",\"dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4\",\"dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM\"]},\"src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31\",\"dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt\"]},\"src/libraries/SwapMath.sol\":{\"keccak256\":\"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75\",\"dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3\"]},\"src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79\",\"dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc\"]},\"src/libraries/TickMath.sol\":{\"keccak256\":\"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408\",\"dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME\"]},\"src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3\",\"dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY\"]},\"src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"src/types/Currency.sol\":{\"keccak256\":\"0x03fa1f70ccb3895c63d484ed08892dad57ccb01a194d19b85425348c4fb6a711\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69bb811fe4ce219a033e950d2bfbd34a511ac5d4db7836c86e8c471c7a61b75a\",\"dweb:/ipfs/QmX2LoUGmRn28P1UfwQcfexJ2kdR8kG6UZrsM8d1Nit69G\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f\",\"dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf\",\"dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY\"]},\"src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"controllerGasLimit","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyUnlocked"},{"inputs":[{"internalType":"address","name":"currency0","type":"address"},{"internalType":"address","name":"currency1","type":"address"}],"type":"error","name":"CurrenciesOutOfOrderOrEqual"},{"inputs":[],"type":"error","name":"CurrencyNotSettled"},{"inputs":[],"type":"error","name":"DelegateCallNotAllowed"},{"inputs":[],"type":"error","name":"InvalidCaller"},{"inputs":[],"type":"error","name":"ManagerLocked"},{"inputs":[],"type":"error","name":"MustClearExactPositiveDelta"},{"inputs":[],"type":"error","name":"NonZeroNativeValue"},{"inputs":[],"type":"error","name":"PoolNotInitialized"},{"inputs":[],"type":"error","name":"ProtocolFeeCannotBeFetched"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"type":"error","name":"ProtocolFeeTooLarge"},{"inputs":[],"type":"error","name":"SwapAmountCannotBeZero"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickSpacingTooLarge"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickSpacingTooSmall"},{"inputs":[],"type":"error","name":"UnauthorizedDynamicLPFeeUpdate"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"Currency","name":"currency0","type":"address","indexed":true},{"internalType":"Currency","name":"currency1","type":"address","indexed":true},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false},{"internalType":"int24","name":"tickSpacing","type":"int24","indexed":false},{"internalType":"contract IHooks","name":"hooks","type":"address","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false}],"type":"event","name":"Initialize","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int24","name":"tickLower","type":"int24","indexed":false},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":false},{"internalType":"int256","name":"liquidityDelta","type":"int256","indexed":false},{"internalType":"bytes32","name":"salt","type":"bytes32","indexed":false}],"type":"event","name":"ModifyLiquidity","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorSet","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"protocolFeeController","type":"address","indexed":true}],"type":"event","name":"ProtocolFeeControllerUpdated","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"uint24","name":"protocolFee","type":"uint24","indexed":false}],"type":"event","name":"ProtocolFeeUpdated","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int128","name":"amount0","type":"int128","indexed":false},{"internalType":"int128","name":"amount1","type":"int128","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"clear"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees","outputs":[{"internalType":"uint256","name":"amountCollected","type":"uint256"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"donate","outputs":[{"internalType":"BalanceDelta","name":"delta","type":"int256"}]},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"startSlot","type":"bytes32"},{"internalType":"uint256","name":"nSlots","type":"uint256"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"exttload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"exttload","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize","outputs":[{"internalType":"int24","name":"tick","type":"int24"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"isOperator","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct IPoolManager.ModifyLiquidityParams","name":"params","type":"tuple","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"modifyLiquidity","outputs":[{"internalType":"BalanceDelta","name":"callerDelta","type":"int256"},{"internalType":"BalanceDelta","name":"feesAccrued","type":"int256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}]},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"stateMutability":"view","type":"function","name":"protocolFeesAccrued","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint24","name":"newProtocolFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFee"},{"inputs":[{"internalType":"contract IProtocolFeeController","name":"controller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[],"stateMutability":"payable","type":"function","name":"settle","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"payable","type":"function","name":"settleFor","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct IPoolManager.SwapParams","name":"params","type":"tuple","components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"BalanceDelta","name":"swapDelta","type":"int256"}]},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"sync"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"take"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint24","name":"newDynamicLPFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"updateDynamicLPFee"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","spender":"The address of the spender."},"returns":{"_0":"bool True, always"}},"burn(address,uint256,uint256)":{"details":"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out","params":{"amount":"The amount of currency to burn","from":"The address to burn the tokens from","id":"The currency address to burn from ERC6909s, as a uint256"}},"clear(address,uint256)":{"details":"This could be used to clear a balance that is considered dust. Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared."},"collectProtocolFees(address,address,uint256)":{"params":{"amount":"The amount of currency to withdraw","currency":"The currency to withdraw","recipient":"The address to receive the protocol fees"},"returns":{"amountCollected":"The amount of currency successfully withdrawn"}},"donate((address,address,uint24,int24,address),uint256,uint256,bytes)":{"params":{"amount0":"The amount of currency0 to donate","amount1":"The amount of currency1 to donate","hookData":"The data to pass through to the donate hooks","key":"The key of the pool to donate to"},"returns":{"delta":"BalanceDelta The delta of the caller after the donate"}},"extsload(bytes32)":{"params":{"slot":"Key of slot to sload"},"returns":{"_0":"The value of the slot as bytes32"}},"extsload(bytes32,uint256)":{"params":{"nSlots":"Number of slots to load into return value","startSlot":"Key of slot to start sloading from"},"returns":{"_0":"List of loaded values."}},"extsload(bytes32[])":{"params":{"slots":"List of slots to SLOAD from."},"returns":{"_0":"List of loaded values."}},"exttload(bytes32)":{"params":{"slot":"Key of slot to tload"},"returns":{"_0":"The value of the slot as bytes32"}},"exttload(bytes32[])":{"params":{"slots":"List of slots to tload"},"returns":{"_0":"List of loaded values"}},"initialize((address,address,uint24,int24,address),uint160,bytes)":{"params":{"hookData":"The data to pass through to the initialize hooks","key":"The pool key for the pool to initialize","sqrtPriceX96":"The initial square root price"},"returns":{"tick":"The initial tick of the pool"}},"mint(address,uint256,uint256)":{"details":"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out","params":{"amount":"The amount of currency to mint","id":"The currency address to mint to ERC6909s, as a uint256","to":"The address to mint the tokens to"}},"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"details":"Poke by calling with a zero liquidityDelta","params":{"hookData":"The data to pass through to the add/removeLiquidity hooks","key":"The pool to modify liquidity in","params":"The parameters for modifying the liquidity"},"returns":{"callerDelta":"The balance delta of the caller of modifyLiquidity. This is the total of both principal and fee deltas.","feesAccrued":"The balance delta of the fees generated in the liquidity range. Returned for informational purposes."}},"setOperator(address,bool)":{"params":{"approved":"The approval status.","operator":"The address of the operator."},"returns":{"_0":"bool True, always"}},"setProtocolFee((address,address,uint24,int24,address),uint24)":{"params":{"key":"The key of the pool to set a protocol fee for","newProtocolFee":"The fee to set"}},"setProtocolFeeController(address)":{"params":{"controller":"The new protocol fee controller"}},"settle()":{"returns":{"paid":"The amount of currency settled"}},"settleFor(address)":{"params":{"recipient":"The address to credit for the payment"},"returns":{"paid":"The amount of currency settled"}},"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"details":"Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified. Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.","params":{"hookData":"The data to pass through to the swap hooks","key":"The pool to swap in","params":"The parameters for swapping"},"returns":{"swapDelta":"The balance delta of the address swapping"}},"sync(address)":{"details":"This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped for native tokens because the amount to settle is determined by the sent value.","params":{"currency":"The currency whose balance to sync"}},"take(address,address,uint256)":{"details":"Can also be used as a mechanism for _free_ flash loans","params":{"amount":"The amount of currency to withdraw","currency":"The currency to withdraw from the pool manager","to":"The address to withdraw to"}},"transfer(address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","receiver":"The address of the receiver."},"returns":{"_0":"bool True, always, unless the function reverts"}},"transferFrom(address,address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","receiver":"The address of the receiver.","sender":"The address of the sender."},"returns":{"_0":"bool True, always, unless the function reverts"}},"unlock(bytes)":{"details":"The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`","params":{"data":"Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`"},"returns":{"result":"The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`"}},"updateDynamicLPFee((address,address,uint24,int24,address),uint24)":{"params":{"key":"The key of the pool to update dynamic LP fees for","newDynamicLPFee":"The new dynamic pool LP fee"}}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address,uint256)":{"notice":"Spender allowance of an id."},"approve(address,uint256,uint256)":{"notice":"Approves an amount of an id to a spender."},"balanceOf(address,uint256)":{"notice":"Owner balance of an id."},"burn(address,uint256,uint256)":{"notice":"Called by the user to move value from ERC6909 balance"},"clear(address,uint256)":{"notice":"WARNING - Any currency that is cleared, will be non-retreivable, and locked in the contract permanently. A call to clear will zero out a positive balance WITHOUT a corresponding transfer."},"collectProtocolFees(address,address,uint256)":{"notice":"Collects the protocol fees for a given recipient and currency, returning the amount collected"},"donate((address,address,uint24,int24,address),uint256,uint256,bytes)":{"notice":"Donate the given currency amounts to the pool with the given pool key"},"extsload(bytes32)":{"notice":"Called by external contracts to access granular pool state"},"extsload(bytes32,uint256)":{"notice":"Called by external contracts to access granular pool state"},"extsload(bytes32[])":{"notice":"Called by external contracts to access sparse pool state"},"exttload(bytes32)":{"notice":"Called by external contracts to access transient storage of the contract"},"exttload(bytes32[])":{"notice":"Called by external contracts to access sparse transient pool state"},"initialize((address,address,uint24,int24,address),uint160,bytes)":{"notice":"Initialize the state for a given pool ID"},"isOperator(address,address)":{"notice":"Checks if a spender is approved by an owner as an operator"},"mint(address,uint256,uint256)":{"notice":"Called by the user to move value into ERC6909 balance"},"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"notice":"Modify the liquidity for the given pool"},"protocolFeeController()":{"notice":"Returns the current protocol fee controller address"},"protocolFeesAccrued(address)":{"notice":"Given a currency address, returns the protocol fees accrued in that currency"},"setOperator(address,bool)":{"notice":"Sets or removes an operator for the caller."},"setProtocolFee((address,address,uint24,int24,address),uint24)":{"notice":"Sets the protocol fee for the given pool"},"setProtocolFeeController(address)":{"notice":"Sets the protocol fee controller"},"settle()":{"notice":"Called by the user to pay what is owed"},"settleFor(address)":{"notice":"Called by the user to pay on behalf of another address"},"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"notice":"Swap against the given pool"},"sync(address)":{"notice":"Writes the current ERC20 balance of the specified currency to transient storage This is used to checkpoint balances for the manager and derive deltas for the caller."},"take(address,address,uint256)":{"notice":"Called by the user to net out some value owed to the user"},"transfer(address,uint256,uint256)":{"notice":"Transfers an amount of an id from the caller to a receiver."},"transferFrom(address,address,uint256,uint256)":{"notice":"Transfers an amount of an id from a sender to a receiver."},"unlock(bytes)":{"notice":"All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract."},"updateDynamicLPFee((address,address,uint24,int24,address),uint24)":{"notice":"Updates the pools lp fees for the a pool that has enabled dynamic lp fees."}},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PoolManager.sol":"PoolManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"src/NoDelegateCall.sol":{"keccak256":"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202","urls":["bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50","dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB"],"license":"BUSL-1.1"},"src/PoolManager.sol":{"keccak256":"0xf2c357d79981846e45452e44f6b9161b8edfe86ae8104b37d3c1d52a839615e5","urls":["bzz-raw://7fc0d49c506b30767b3b30396e5bfecacf296fa7dcc34744f1f8faf374ed4384","dweb:/ipfs/QmcBKAQpRgBpxSpYhzmrn3oLxAyDVqeck8UwLBX1psk7JM"],"license":"BUSL-1.1"},"src/ProtocolFees.sol":{"keccak256":"0x03e05338633abb24c705824f411621a612d85388661062661db1cd9991f7ad11","urls":["bzz-raw://2d97558d2943c315439fcbc767888355243a551a0e0712cc057dd3a07321b971","dweb:/ipfs/QmcKh65thoezEvVoyAignGPTRsory3AsVALTaS3Z1kELF9"],"license":"GPL-2.0-or-later"},"src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"src/interfaces/IHooks.sol":{"keccak256":"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0","urls":["bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa","dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8"],"license":"MIT"},"src/interfaces/IPoolManager.sol":{"keccak256":"0x7dd9b494e616cbf623c21e2b8c4e8375acf27d307b02700d4965170bff3bb838","urls":["bzz-raw://381e66840cc15dc602b56a55554aa4ae581e4cfc7ddbfb51f838e6b40981664b","dweb:/ipfs/QmeLdh22eqpj53C8562oN7pE4oWR1sjD82TKdV3sMq3tYu"],"license":"MIT"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c","urls":["bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6","dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G"],"license":"MIT"},"src/interfaces/IProtocolFees.sol":{"keccak256":"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297","urls":["bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f","dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw"],"license":"MIT"},"src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7","urls":["bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410","dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8"],"license":"GPL-2.0-or-later"},"src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"src/libraries/BitMath.sol":{"keccak256":"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b","urls":["bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09","dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46"],"license":"GPL-2.0-or-later"},"src/libraries/CurrencyDelta.sol":{"keccak256":"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e","urls":["bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c","dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR"],"license":"BUSL-1.1"},"src/libraries/CurrencyReserves.sol":{"keccak256":"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6","urls":["bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7","dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3"],"license":"BUSL-1.1"},"src/libraries/CustomRevert.sol":{"keccak256":"0x2b70cc5e6ca761f4b3110bd7ea6c6064167df260a669b08b2c96c115d5c944ff","urls":["bzz-raw://0f2ae8f2d7da6103f3d884935fb5da10c5463b4d229b31de9e592c4d2275e0bc","dweb:/ipfs/QmWeVnC18TEqGy7fp2GApReNUuZFfDAEsWkycDV8N1LAmy"],"license":"MIT"},"src/libraries/FixedPoint128.sol":{"keccak256":"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835","urls":["bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d","dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT"],"license":"GPL-2.0-or-later"},"src/libraries/FixedPoint96.sol":{"keccak256":"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417","urls":["bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196","dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7"],"license":"GPL-2.0-or-later"},"src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0x028173d4dfa579c49e1d6aa0b0f4d9e0b5b5812bb573586fff53f33926720699","urls":["bzz-raw://98cf56f5917c23331a641363c31d353d58c9a3053bb7d64e62bed5161a23174a","dweb:/ipfs/QmfVufa7owRy4VxYYGHN87F3YGNWvuSq1cpCpJjATvf6CM"],"license":"MIT"},"src/libraries/LPFeeLibrary.sol":{"keccak256":"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece","urls":["bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896","dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo"],"license":"GPL-2.0-or-later"},"src/libraries/LiquidityMath.sol":{"keccak256":"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf","urls":["bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc","dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa"],"license":"GPL-2.0-or-later"},"src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"src/libraries/NonZeroDeltaCount.sol":{"keccak256":"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586","urls":["bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2","dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC"],"license":"BUSL-1.1"},"src/libraries/ParseBytes.sol":{"keccak256":"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579","urls":["bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8","dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf"],"license":"GPL-2.0-or-later"},"src/libraries/Pool.sol":{"keccak256":"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c","urls":["bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8","dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H"],"license":"BUSL-1.1"},"src/libraries/Position.sol":{"keccak256":"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80","urls":["bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce","dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu"],"license":"BUSL-1.1"},"src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902","urls":["bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a","dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP"],"license":"GPL-2.0-or-later"},"src/libraries/SafeCast.sol":{"keccak256":"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60","urls":["bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4","dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM"],"license":"GPL-2.0-or-later"},"src/libraries/SqrtPriceMath.sol":{"keccak256":"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db","urls":["bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31","dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt"],"license":"GPL-2.0-or-later"},"src/libraries/SwapMath.sol":{"keccak256":"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e","urls":["bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75","dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3"],"license":"GPL-2.0-or-later"},"src/libraries/TickBitmap.sol":{"keccak256":"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6","urls":["bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79","dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc"],"license":"MIT"},"src/libraries/TickMath.sol":{"keccak256":"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd","urls":["bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408","dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME"],"license":"GPL-2.0-or-later"},"src/libraries/UnsafeMath.sol":{"keccak256":"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84","urls":["bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3","dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY"],"license":"GPL-2.0-or-later"},"src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"src/types/Currency.sol":{"keccak256":"0x03fa1f70ccb3895c63d484ed08892dad57ccb01a194d19b85425348c4fb6a711","urls":["bzz-raw://69bb811fe4ce219a033e950d2bfbd34a511ac5d4db7836c86e8c471c7a61b75a","dweb:/ipfs/QmX2LoUGmRn28P1UfwQcfexJ2kdR8kG6UZrsM8d1Nit69G"],"license":"MIT"},"src/types/PoolId.sol":{"keccak256":"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8","urls":["bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f","dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB"],"license":"MIT"},"src/types/PoolKey.sol":{"keccak256":"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162","urls":["bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf","dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY"],"license":"MIT"},"src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file