1 line
103 KiB
JSON
1 line
103 KiB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"_flashSwapper","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"EMERGENCY_TIMELOCK","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addSwapSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowedSwapSelectors","inputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"authorizedCallers","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"authorizedDEXes","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"calculateArbitrageProfit","inputs":[{"name":"params","type":"tuple","internalType":"struct IArbitrage.ArbitrageParams","components":[{"name":"tokens","type":"address[]","internalType":"address[]"},{"name":"pools","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"swapData","type":"bytes[]","internalType":"bytes[]"},{"name":"minProfit","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"expectedProfit","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"calculateTriangularArbitrageProfit","inputs":[{"name":"params","type":"tuple","internalType":"struct IArbitrage.TriangularArbitrageParams","components":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"tokenC","type":"address","internalType":"address"},{"name":"poolAB","type":"address","internalType":"address"},{"name":"poolBC","type":"address","internalType":"address"},{"name":"poolCA","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minProfit","type":"uint256","internalType":"uint256"},{"name":"swapDataAB","type":"bytes","internalType":"bytes"},{"name":"swapDataBC","type":"bytes","internalType":"bytes"},{"name":"swapDataCA","type":"bytes","internalType":"bytes"}]}],"outputs":[{"name":"expectedProfit","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"cancelEmergencyWithdraw","inputs":[{"name":"requestId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"emergencyRequests","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"executeAfter","type":"uint256","internalType":"uint256"},{"name":"executed","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"executeArbitrage","inputs":[{"name":"params","type":"tuple","internalType":"struct IArbitrage.ArbitrageParams","components":[{"name":"tokens","type":"address[]","internalType":"address[]"},{"name":"pools","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"swapData","type":"bytes[]","internalType":"bytes[]"},{"name":"minProfit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeEmergencyWithdraw","inputs":[{"name":"requestId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeTriangularArbitrage","inputs":[{"name":"params","type":"tuple","internalType":"struct IArbitrage.TriangularArbitrageParams","components":[{"name":"tokenA","type":"address","internalType":"address"},{"name":"tokenB","type":"address","internalType":"address"},{"name":"tokenC","type":"address","internalType":"address"},{"name":"poolAB","type":"address","internalType":"address"},{"name":"poolBC","type":"address","internalType":"address"},{"name":"poolCA","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"minProfit","type":"uint256","internalType":"uint256"},{"name":"swapDataAB","type":"bytes","internalType":"bytes"},{"name":"swapDataBC","type":"bytes","internalType":"bytes"},{"name":"swapDataCA","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"flashSwapper","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IFlashSwapper"}],"stateMutability":"view"},{"type":"function","name":"isSwapSelectorAllowed","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"removeSwapSelector","inputs":[{"name":"selector","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestEmergencyWithdraw","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAuthorizedCaller","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"authorized","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAuthorizedDEX","inputs":[{"name":"dex","type":"address","internalType":"address"},{"name":"authorized","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ArbitrageExecuted","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"tokens","type":"address[]","indexed":false,"internalType":"address[]"},{"name":"amounts","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"profit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EmergencyWithdrawCancelled","inputs":[{"name":"requestId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"EmergencyWithdrawExecuted","inputs":[{"name":"requestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EmergencyWithdrawRequested","inputs":[{"name":"requestId","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"executeAfter","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SwapSelectorAdded","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"SwapSelectorRemoved","inputs":[{"name":"selector","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"TriangularArbitrageExecuted","inputs":[{"name":"initiator","type":"address","indexed":true,"internalType":"address"},{"name":"tokenA","type":"address","indexed":true,"internalType":"address"},{"name":"tokenB","type":"address","indexed":true,"internalType":"address"},{"name":"tokenC","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"profit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AddressInsufficientBalance","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InsufficientLiquidity","inputs":[]},{"type":"error","name":"InvalidFee","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"ZeroAmount","inputs":[]}],"bytecode":{"object":"0x60a0346101bc57601f620023a338819003918201601f191683019291906001600160401b038411838510176101c05781602092849260409687528339810103126101bc57516001600160a01b0390818116908190036101bc57600191825f5533156101a5578254336001600160a01b03198216811785558551929091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a38115610163575060805263022c0d9f60e01b5f9081526004602052828120805460ff19908116841790915563414bf38960e01b8252838220805482168417905563c04b8d5960e01b82528382208054821684179055630f7c084960e21b82528382208054821684179055635320bf6b60e11b825283822080548216841790556352bbbe2960e01b82528382208054821684179055636d069a6760e01b82529083902080549091169091179055516121ce9081620001d58239608051816102f10152f35b62461bcd60e51b815260206004820152601d60248201527f496e76616c696420666c617368207377617070657220616464726573730000006044820152606490fd5b8351631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604081815260049182361015610021575b505050361561001f575f80fd5b005b5f3560e01c9081630557ac4114611726575080630c6111f7146111495780631e9ece24146109245780632c68b0e414610882578063454bbd2914610843578063536fff6c1461080757806360d7442b146107ea5780636f1047ab14610527578063715018a61461078f5780637c7f4ce5146105e55780638da5cb5b146105bd5780638dce7ff31461057e5780638f5268a81461056457806399f0e34e146105275780639ad3ec481461037d5780639f1bfb6a1461035c578063cf3818f914610320578063da77dd75146102dd578063e129238214610279578063f2fde38b146101ef5763fbe1a43f146101145780610012565b346101eb5760203660031901126101eb57813591610130611dfb565b825f526005602052815f2061015c60ff6003600284015493610153851515611b16565b01541615611b5b565b4210156101a9575060035f918383526005602052822082815582600182015582600282015501557fc8fdc0bbef3c457a504d7142a467f41bd5c16eaa1b1d316b1efef96a92457f3c5f80a2005b6020606492519162461bcd60e51b8352820152601a60248201527f5265717565737420616c72656164792065786563757461626c650000000000006044820152fd5b5f80fd5b5090346101eb5760203660031901126101eb5761020a6117de565b90610213611dfb565b6001600160a01b03918216928315610263575050600154826001600160601b0360a01b821617600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b50346101eb5760203660031901126101eb5781359163ffffffff60e01b83168093036101eb576102a7611dfb565b825f526020525f2060ff1981541690557fdc721aeed7ee7c2a27fe5bb687ad97b26dd82efcb5695839ed4e70e4915788695f80a2005b50346101eb575f3660031901126101eb57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346101eb5760203660031901126101eb576020906001600160a01b036103456117de565b165f526002825260ff815f20541690519015158152f35b50346101eb57602090610376610371366117ab565b611be6565b9051908152f35b50346101eb576020806003193601126101eb5782359161039b611dfb565b825f5260058252805f20936002850154906103b7821515611b16565b600386018054926103cb60ff851615611b5b565b42106104ed57600160ff19939093168317905585546001600160a01b03919082168061047d57505f80808085875416878c0154905af1610409611ba7565b50156104445750907fac1588e122eedb6af5a0e5e3a5f41eea47cd8359422fc2450adef2b3492d1a599392915b8654169501549051908152a3005b835162461bcd60e51b81529081018590526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b835488850154865163a9059cbb60e01b898201529185166001600160a01b0316602483015260448083019190915281527fac1588e122eedb6af5a0e5e3a5f41eea47cd8359422fc2450adef2b3492d1a599695949392506104e8916104e3606483611939565b6120fa565b610436565b835162461bcd60e51b81528083018690526014602482015273151a5b595b1bd8dac81b9bdd08195e1c1a5c995960621b6044820152606490fd5b50346101eb5760203660031901126101eb5781359163ffffffff60e01b83168093036101eb576020925f52825260ff815f20541690519015158152f35b50346101eb5760209061037661057936611779565b6119aa565b50346101eb5761001f90610591366117f4565b919061059b611dfb565b60018060a01b03165f5260026020525f209060ff801983541691151516179055565b50346101eb575f3660031901126101eb5760015490516001600160a01b039091168152602090f35b5090346101eb57816003193601126101eb576105ff6117de565b906024359261060c611dfb565b831561075b57805193602085019260018060a01b03808616956001600160601b03199060601b1685528260348801524260548801524460748801526074875260a087019667ffffffffffffffff95818910878a11176107485788865281519020956202a3004201938442116107355761012083019182118a8310176107225750610715927ff3e5fdcc801d2636fa5ac7da5f82875c80218c24690f9c51d37007d662c4804e9798999260039288528a845260c0810187815261010060e083019288845201925f84528b5f526005602052895f209551166001600160601b0360a01b86541617855551600185015551600284015551151591019060ff801983541691151516179055565b82519182526020820152a3005b604190634e487b7160e01b5f525260245ffd5b601190634e487b7160e01b5f525260245ffd5b604184634e487b7160e01b5f525260245ffd5b906020606492519162461bcd60e51b8352820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152fd5b346101eb575f3660031901126101eb576107a7611dfb565b600180546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346101eb575f3660031901126101eb57602090516202a3008152f35b50346101eb5760203660031901126101eb576020906001600160a01b0361082c6117de565b165f526003825260ff815f20541690519015158152f35b50346101eb5761001f90610856366117f4565b9190610860611dfb565b60018060a01b03165f5260036020525f209060ff801983541691151516179055565b50346101eb5760203660031901126101eb5781359163ffffffff60e01b83168093036101eb576108b0611dfb565b82156108ef57825f526020525f20600160ff198254161790557f6ae4d4aad8be0a434339f3502033a628c149634ab685305251bbe31c45d442b05f80a2005b6020606492519162461bcd60e51b8352820152601060248201526f24b73b30b634b21039b2b632b1ba37b960811b6044820152fd5b50346101eb57610933366117ab565b335f5260206003815260ff80845f2054168015611135575b61095490611823565b61095c611d60565b6001600160a01b03928361096f826118d9565b16948051809785826370a0823160e01b998a8252308483015260249b8c915afa918215610d6c575f92611106575b506060840198876109ad8b6118d9565b165f526002875285845f205416156110ce5760808501886109cd826118d9565b165f526002885286855f205416156110965760a0860190896109ee836118d9565b165f526002895287865f2054161561105e57610100870184610a10828a611d81565b9050106110255761012088019085610a28838b611d81565b905010610fec5761014089019986610a408c8c611d81565b905010610fb3578a8c8b89610a78610a5e610a64610a5e8986611d81565b90611dcf565b95610a72610a5e8b87611d81565b94611d81565b9263ffffffff60e01b8095165f5252838c5f20541615610f70578e838b92165f5252828b5f20541615610f2e57165f52868c52885f20541615610eec57908d9695949392918c610ac78b6118d9565b1697610ad2816118d9565b9860c08c0135809a610ae392611ffa565b610aec906118d9565b90610af7908b611d81565b9190828b51938492833781015f8152035a925f8094938194f1610b18611ba7565b5015610eb9578b9c9d8c610b2e8b9e9d9e6118d9565b1690610b39906118d9565b610b4291611f1d565b8d8c808b019e8f610b52906118d9565b1691868b51809481938252308b8301525afa908115610eaf575f91610e82575b508015610e4a575f91610b9b8f928e610b8b86956118d9565b16610b95876118d9565b90611ffa565b81610baf610ba8866118d9565b928d611d81565b9190828d519384928337810182815203925af1610bca611ba7565b5015610e1757610bee90610be88b610be18f6118d9565b16916118d9565b90611f1d565b858701978c8b8b610bfe8c6118d9565b1691858a51809481938252308a8301525afa908115610e0d575f91610de0575b508015610da9575f91610c3683928d610b8b8e6118d9565b81610c4a610c43866118d9565b928c611d81565b9190828c519384928337810182815203925af1610c65611ba7565b5015610d765790610c7f8a9392610be88b610be18c6118d9565b88610c89886118d9565b169b86519c8d938492835230908301525afa8015610d6c57869798995f91610d3b575b5081811115610d2957610cdf610cc8610ceb93610ce593611894565b955b610cda60e082013588101561195b565b6118d9565b996118d9565b946118d9565b9685835198168852870152850152169216907f566f2a7de0030e240b63401c2bd70e65a04ef37802556c7a02ff8aee8c89ea8260603392a460015f55005b5050610ceb610ce5610cdf5f95610cca565b809750898092503d8311610d65575b610d548183611939565b810103126101eb578695515f610cac565b503d610d4a565b83513d5f823e3d90fd5b855162461bcd60e51b81528084018b9052600e818401526d14ddd85c0810d04819985a5b195960921b6044820152606490fd5b875162461bcd60e51b81528086018d905260128186015271139bc81d1bdad95b90c81c9958d95a5d995960721b6044820152606490fd5b90508b81813d8311610e06575b610df78183611939565b810103126101eb57515f610c1e565b503d610ded565b88513d5f823e3d90fd5b865162461bcd60e51b81528085018c9052600e818501526d14ddd85c081090c819985a5b195960921b6044820152606490fd5b50875162461bcd60e51b81528086018d905260128186015271139bc81d1bdad95b90881c9958d95a5d995960721b6044820152606490fd5b90508c81813d8311610ea8575b610e998183611939565b810103126101eb57515f610b72565b503d610e8f565b89513d5f823e3d90fd5b875162461bcd60e51b81528086018c9052600e818601526d14ddd85c0810508819985a5b195960921b6044820152606490fd5b875162461bcd60e51b81528087018c90526018818701527f556e617574686f72697a65642073656c6563746f7220434100000000000000006044820152606490fd5b8a5162461bcd60e51b8152808a018f90526018818a01527f556e617574686f72697a65642073656c6563746f7220424300000000000000006044820152606490fd5b508a5162461bcd60e51b8152808a018f90526018818a01527f556e617574686f72697a65642073656c6563746f7220414200000000000000006044820152606490fd5b885162461bcd60e51b81528088018d905260148188015273496e76616c69642073776170206461746120434160601b6044820152606490fd5b875162461bcd60e51b81528087018c905260148187015273496e76616c69642073776170206461746120424360601b6044820152606490fd5b865162461bcd60e51b81528086018b90526014818601527324b73b30b634b21039bbb0b8103230ba309020a160611b6044820152606490fd5b855162461bcd60e51b81528085018a905260138185015272556e617574686f72697a65642044455820434160681b6044820152606490fd5b845162461bcd60e51b815280840189905260138184015272556e617574686f72697a65642044455820424360681b6044820152606490fd5b835162461bcd60e51b8152918201879052601390820152722ab730baba3437b934bd32b2102222ac1020a160691b6044820152606490fd5b9091508581813d831161112e575b61111e8183611939565b810103126101eb5751905f61099d565b503d611114565b506001546001600160a01b0316331461094b565b50346101eb5761115836611779565b335f526020906003825260ff9360ff845f2054168015611712575b61117c90611823565b611184611d60565b61118e828061185e565b95905060028096106116d957838301936111a8858561185e565b90506111b4858061185e565b5f19810192915082116116c6570361168e57858401956111d4878661185e565b90506111e0878761185e565b91905003611655576111f2858061185e565b989098156116425796976001600160a01b0397908890611211906118d9565b1697825194859285846370a0823160e01b9c8d8252308b8301526024998a915afa938415611638575f94611609575b5092996060890193905f5b6112558c8c61185e565b90508110156114955784611278610cda838f8f906112729161185e565b906118b5565b165f5282885283875f20541615611460578961129e82611298898f61185e565b90611db4565b90501061142a576112c66112b682611298898f61185e565b6001600160e01b03199291611dcf565b165f5289885283875f205416156113e8578d86828d8f82908a82806112eb868061185e565b6112f592916118b5565b6112fe906118d9565b97611309908661185e565b61131392916118b5565b3596169582611322838661185e565b61132c92916118b5565b611335906118d9565b906113409188611ffa565b61134a908361185e565b61135492916118b5565b61135d906118d9565b926113679161185e565b6113719291611db4565b9190828b51938492833781015f8152035a925f8094938194f1611392611ba7565b50156113b857906113b2600192610be88f8f611272610cda92879261185e565b0161124b565b875162461bcd60e51b8152808c018a9052600b818c01526a14ddd85c0819985a5b195960aa1b6044820152606490fd5b865162461bcd60e51b8152808b01899052601e818b01527f556e617574686f72697a65642066756e6374696f6e2073656c6563746f7200006044820152606490fd5b865162461bcd60e51b8152808b018990526011818b015270496e76616c69642073776170206461746160781b6044820152606490fd5b865162461bcd60e51b8152808b018990526010818b01526f0aadcc2eae8d0dee4d2f4cac840888ab60831b6044820152606490fd5b50935050509389929589916114aa898061185e565b156115f65790876114bc8894936118d9565b169489519586938492835230908301525afa9182156115ec575f926115bd575b50808211156115b3576114ee91611894565b90925b611501608087013583101561195b565b61151661150e878061185e565b95909761185e565b929091865195806060880160608952526080870198915f905b82821061158f5750505050848703848601528287526001600160fb1b0383116101eb577fb62e177becf771830567708f66852c0f4ec00da57b10012a413f9a55884691b495859360051b8093868a0137830152339501030190a260015f55005b909192998a35908282168092036101eb57908152870199870192916001019061152f565b50505f90926114f1565b9091508381813d83116115e5575b6115d58183611939565b810103126101eb575190876114dc565b503d6115cb565b86513d5f823e3d90fd5b50634e487b7160e01b5f90815260328352fd5b9093508581813d8311611631575b6116218183611939565b810103126101eb5751925f611240565b503d611617565b85513d5f823e3d90fd5b603285634e487b7160e01b5f525260245ffd5b5162461bcd60e51b815292830152506015602482015274082dadeeadce840c6deeadce840dad2e6dac2e8c6d605b1b6044820152606490fd5b8260649187519162461bcd60e51b835282015260136024820152720a0deded840c6deeadce840dad2e6dac2e8c6d606b1b6044820152fd5b601185634e487b7160e01b5f525260245ffd5b845162461bcd60e51b81528083018590526013602482015272125b9d985b1a59081d1bdad95b8818dbdd5b9d606a1b6044820152606490fd5b506001546001600160a01b03163314611173565b919050346101eb5760203660031901126101eb57608092355f526005602052805f2060018060a01b0381541691600182015460ff6003600285015494015416938552602085015283015215156060820152f35b600319906020818301126101eb576004359167ffffffffffffffff83116101eb578260a0920301126101eb5760040190565b600319906020818301126101eb576004359167ffffffffffffffff83116101eb5782610160920301126101eb5760040190565b600435906001600160a01b03821682036101eb57565b60409060031901126101eb576004356001600160a01b03811681036101eb579060243580151581036101eb5790565b1561182a57565b60405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b903590601e19813603018212156101eb570180359067ffffffffffffffff82116101eb57602001918160051b360383136101eb57565b919082039182116118a157565b634e487b7160e01b5f52601160045260245ffd5b91908110156118c55760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b03811681036101eb5790565b6040810190811067ffffffffffffffff82111761190957604052565b634e487b7160e01b5f52604160045260245ffd5b6080810190811067ffffffffffffffff82111761190957604052565b90601f8019910116810190811067ffffffffffffffff82111761190957604052565b1561196257565b60405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d081c1c9bd99a5d606a1b6044820152606490fd5b919082018092116118a157565b906119b5828061185e565b9050158015611b00575b611afb5760408083016119d2818561185e565b156118c55735925f935b60206119ea8188018861185e565b9050861080611add575b15611a9a578115611a89576126f28202916126f119818404016118a1576402524220800290828204620f424014831517156118a1576402540be4009283018093116118a1578215611a53575004935f1981146118a157600101936119dc565b60649086519062461bcd60e51b82526004820152601060248201526f4469766973696f6e206279207a65726f60801b6044820152fd5b8451631f2a200560e01b8152600490fd5b509350939150611aaa818361185e565b156118c55735831115611ad657611ac09161185e565b919091156118c557611ad3913590611894565b90565b5050505f90565b50611ae8878061185e565b5f198101915081116118a15786106119f4565b5f9150565b50611b0e604083018361185e565b9050156119bf565b15611b1d57565b60405162461bcd60e51b815260206004820152601660248201527514995c5d595cdd08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b15611b6257565b60405162461bcd60e51b815260206004820152601860248201527f5265717565737420616c726561647920657865637574656400000000000000006044820152606490fd5b3d15611be1573d9067ffffffffffffffff82116119095760405191611bd6601f8201601f191660200184611939565b82523d5f602084013e565b606090565b60c00135908115611afb57604091825192611c00846118ed565b620f42409384815260208101948086528251611c1b816118ed565b81815260208101828152845194611c31866118ed565b838652602086019384528051926060840184811067ffffffffffffffff821117611909578252601e8452816020850194601e86520195601e8752519951996103e8808210908115611d56575b50611d45576126f289029a6126f1198a8d04016118a157611c9e908c611e27565b9a612710918281029281840414901517156118a157611cbc9161199d565b918215611d0f575091611cdd9391611ce998999a9351915192519304611e3a565b92519051915192611e3a565b5f82820392128183128116918313901516176118a1575f811315611d0a5790565b505f90565b5162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b6044820152606490fd5b825163bb55fd2760e01b8152600490fd5b90508b105f611c7d565b60025f5414611d6f5760025f55565b604051633ee5aeb560e01b8152600490fd5b903590601e19813603018212156101eb570180359067ffffffffffffffff82116101eb576020019181360383136101eb57565b908210156118c557611dcb9160051b810190611d81565b9091565b6001600160e01b03199035818116939260048110611dec57505050565b60040360031b82901b16169150565b6001546001600160a01b03163303611e0f57565b60405163118cdaa760e01b8152336004820152602490fd5b818102929181159184041417156118a157565b929190928015611f0b576103e8808510908115611f01575b50611eef5761271092838111611edd578303908382116118a157611e8091611e7991611e27565b9182611e27565b928281029281840414901517156118a157611e9a9161199d565b908115611ea5570490565b60405162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b6044820152606490fd5b6040516358d620b360e01b8152600490fd5b60405163bb55fd2760e01b8152600490fd5b905082105f611e52565b604051631f2a200560e01b8152600490fd5b60405190602082019263095ea7b360e01b938481525f8060018060a01b038094169384602488015281604488015260448752611f588761191d565b85169286519082855af190611f6b611ba7565b82611fc8575b5081611fbd575b5015611f85575b50505050565b611fb4936104e39160405191602083015260248201525f604482015260448152611fae8161191d565b826120fa565b5f808080611f7f565b90503b15155f611f78565b80519192508115918215611fe0575b5050905f611f71565b611ff392506020809183010191016120e2565b5f80611fd7565b60405163095ea7b360e01b602082018181526001600160a01b0385166024840152604480840196909652948252909290612035606485611939565b83516001600160a01b0395848716915f9182919082855af190612056611ba7565b826120b0575b50816120a5575b5015612071575b5050505050565b61209b946104e3926040519260208401521660248201525f604482015260448152611fae8161191d565b5f8080808061206a565b90503b15155f612063565b805191925081159182156120c8575b5050905f61205c565b6120db92506020809183010191016120e2565b5f806120bf565b908160209103126101eb575180151581036101eb5790565b5f806121229260018060a01b03169360208151910182865af161211b611ba7565b908361216b565b8051908115159182612150575b50506121385750565b60249060405190635274afe760e01b82526004820152fd5b61216392506020809183010191016120e2565b155f8061212f565b90612192575080511561218057805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806121c5575b6121a3575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561219b56","sourceMap":"480:13900:7:-:0;;;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;-1:-1:-1;;;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;480:13900:7;;;;;;;;;;1713:1:6;;;-1:-1:-1;1713:1:6;1153:10:7;1273:26:0;1269:95;;480:13900:7;;1153:10;-1:-1:-1;;;;;;480:13900:7;;;;;;;;;1153:10;;480:13900;3052:40:0;-1:-1:-1;;3052:40:0;1183:27:7;;480:13900;;-1:-1:-1;1254:43:7;;-1:-1:-1;;;;480:13900:7;;;1706:20;480:13900;;;;;;;-1:-1:-1;;480:13900:7;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;1254:43;480:13900;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;1269:95:0;480:13900:7;;-1:-1:-1;;;1322:31:0;;-1:-1:-1;1322:31:0;;;480:13900:7;;;1322:31:0;480:13900:7;-1:-1:-1;480:13900:7;;;;;;-1:-1:-1;480:13900:7;;;;;-1:-1:-1;480:13900:7","linkReferences":{}},"deployedBytecode":{"object":"0x6080604081815260049182361015610021575b505050361561001f575f80fd5b005b5f3560e01c9081630557ac4114611726575080630c6111f7146111495780631e9ece24146109245780632c68b0e414610882578063454bbd2914610843578063536fff6c1461080757806360d7442b146107ea5780636f1047ab14610527578063715018a61461078f5780637c7f4ce5146105e55780638da5cb5b146105bd5780638dce7ff31461057e5780638f5268a81461056457806399f0e34e146105275780639ad3ec481461037d5780639f1bfb6a1461035c578063cf3818f914610320578063da77dd75146102dd578063e129238214610279578063f2fde38b146101ef5763fbe1a43f146101145780610012565b346101eb5760203660031901126101eb57813591610130611dfb565b825f526005602052815f2061015c60ff6003600284015493610153851515611b16565b01541615611b5b565b4210156101a9575060035f918383526005602052822082815582600182015582600282015501557fc8fdc0bbef3c457a504d7142a467f41bd5c16eaa1b1d316b1efef96a92457f3c5f80a2005b6020606492519162461bcd60e51b8352820152601a60248201527f5265717565737420616c72656164792065786563757461626c650000000000006044820152fd5b5f80fd5b5090346101eb5760203660031901126101eb5761020a6117de565b90610213611dfb565b6001600160a01b03918216928315610263575050600154826001600160601b0360a01b821617600155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b50346101eb5760203660031901126101eb5781359163ffffffff60e01b83168093036101eb576102a7611dfb565b825f526020525f2060ff1981541690557fdc721aeed7ee7c2a27fe5bb687ad97b26dd82efcb5695839ed4e70e4915788695f80a2005b50346101eb575f3660031901126101eb57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346101eb5760203660031901126101eb576020906001600160a01b036103456117de565b165f526002825260ff815f20541690519015158152f35b50346101eb57602090610376610371366117ab565b611be6565b9051908152f35b50346101eb576020806003193601126101eb5782359161039b611dfb565b825f5260058252805f20936002850154906103b7821515611b16565b600386018054926103cb60ff851615611b5b565b42106104ed57600160ff19939093168317905585546001600160a01b03919082168061047d57505f80808085875416878c0154905af1610409611ba7565b50156104445750907fac1588e122eedb6af5a0e5e3a5f41eea47cd8359422fc2450adef2b3492d1a599392915b8654169501549051908152a3005b835162461bcd60e51b81529081018590526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b6044820152606490fd5b835488850154865163a9059cbb60e01b898201529185166001600160a01b0316602483015260448083019190915281527fac1588e122eedb6af5a0e5e3a5f41eea47cd8359422fc2450adef2b3492d1a599695949392506104e8916104e3606483611939565b6120fa565b610436565b835162461bcd60e51b81528083018690526014602482015273151a5b595b1bd8dac81b9bdd08195e1c1a5c995960621b6044820152606490fd5b50346101eb5760203660031901126101eb5781359163ffffffff60e01b83168093036101eb576020925f52825260ff815f20541690519015158152f35b50346101eb5760209061037661057936611779565b6119aa565b50346101eb5761001f90610591366117f4565b919061059b611dfb565b60018060a01b03165f5260026020525f209060ff801983541691151516179055565b50346101eb575f3660031901126101eb5760015490516001600160a01b039091168152602090f35b5090346101eb57816003193601126101eb576105ff6117de565b906024359261060c611dfb565b831561075b57805193602085019260018060a01b03808616956001600160601b03199060601b1685528260348801524260548801524460748801526074875260a087019667ffffffffffffffff95818910878a11176107485788865281519020956202a3004201938442116107355761012083019182118a8310176107225750610715927ff3e5fdcc801d2636fa5ac7da5f82875c80218c24690f9c51d37007d662c4804e9798999260039288528a845260c0810187815261010060e083019288845201925f84528b5f526005602052895f209551166001600160601b0360a01b86541617855551600185015551600284015551151591019060ff801983541691151516179055565b82519182526020820152a3005b604190634e487b7160e01b5f525260245ffd5b601190634e487b7160e01b5f525260245ffd5b604184634e487b7160e01b5f525260245ffd5b906020606492519162461bcd60e51b8352820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152fd5b346101eb575f3660031901126101eb576107a7611dfb565b600180546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346101eb575f3660031901126101eb57602090516202a3008152f35b50346101eb5760203660031901126101eb576020906001600160a01b0361082c6117de565b165f526003825260ff815f20541690519015158152f35b50346101eb5761001f90610856366117f4565b9190610860611dfb565b60018060a01b03165f5260036020525f209060ff801983541691151516179055565b50346101eb5760203660031901126101eb5781359163ffffffff60e01b83168093036101eb576108b0611dfb565b82156108ef57825f526020525f20600160ff198254161790557f6ae4d4aad8be0a434339f3502033a628c149634ab685305251bbe31c45d442b05f80a2005b6020606492519162461bcd60e51b8352820152601060248201526f24b73b30b634b21039b2b632b1ba37b960811b6044820152fd5b50346101eb57610933366117ab565b335f5260206003815260ff80845f2054168015611135575b61095490611823565b61095c611d60565b6001600160a01b03928361096f826118d9565b16948051809785826370a0823160e01b998a8252308483015260249b8c915afa918215610d6c575f92611106575b506060840198876109ad8b6118d9565b165f526002875285845f205416156110ce5760808501886109cd826118d9565b165f526002885286855f205416156110965760a0860190896109ee836118d9565b165f526002895287865f2054161561105e57610100870184610a10828a611d81565b9050106110255761012088019085610a28838b611d81565b905010610fec5761014089019986610a408c8c611d81565b905010610fb3578a8c8b89610a78610a5e610a64610a5e8986611d81565b90611dcf565b95610a72610a5e8b87611d81565b94611d81565b9263ffffffff60e01b8095165f5252838c5f20541615610f70578e838b92165f5252828b5f20541615610f2e57165f52868c52885f20541615610eec57908d9695949392918c610ac78b6118d9565b1697610ad2816118d9565b9860c08c0135809a610ae392611ffa565b610aec906118d9565b90610af7908b611d81565b9190828b51938492833781015f8152035a925f8094938194f1610b18611ba7565b5015610eb9578b9c9d8c610b2e8b9e9d9e6118d9565b1690610b39906118d9565b610b4291611f1d565b8d8c808b019e8f610b52906118d9565b1691868b51809481938252308b8301525afa908115610eaf575f91610e82575b508015610e4a575f91610b9b8f928e610b8b86956118d9565b16610b95876118d9565b90611ffa565b81610baf610ba8866118d9565b928d611d81565b9190828d519384928337810182815203925af1610bca611ba7565b5015610e1757610bee90610be88b610be18f6118d9565b16916118d9565b90611f1d565b858701978c8b8b610bfe8c6118d9565b1691858a51809481938252308a8301525afa908115610e0d575f91610de0575b508015610da9575f91610c3683928d610b8b8e6118d9565b81610c4a610c43866118d9565b928c611d81565b9190828c519384928337810182815203925af1610c65611ba7565b5015610d765790610c7f8a9392610be88b610be18c6118d9565b88610c89886118d9565b169b86519c8d938492835230908301525afa8015610d6c57869798995f91610d3b575b5081811115610d2957610cdf610cc8610ceb93610ce593611894565b955b610cda60e082013588101561195b565b6118d9565b996118d9565b946118d9565b9685835198168852870152850152169216907f566f2a7de0030e240b63401c2bd70e65a04ef37802556c7a02ff8aee8c89ea8260603392a460015f55005b5050610ceb610ce5610cdf5f95610cca565b809750898092503d8311610d65575b610d548183611939565b810103126101eb578695515f610cac565b503d610d4a565b83513d5f823e3d90fd5b855162461bcd60e51b81528084018b9052600e818401526d14ddd85c0810d04819985a5b195960921b6044820152606490fd5b875162461bcd60e51b81528086018d905260128186015271139bc81d1bdad95b90c81c9958d95a5d995960721b6044820152606490fd5b90508b81813d8311610e06575b610df78183611939565b810103126101eb57515f610c1e565b503d610ded565b88513d5f823e3d90fd5b865162461bcd60e51b81528085018c9052600e818501526d14ddd85c081090c819985a5b195960921b6044820152606490fd5b50875162461bcd60e51b81528086018d905260128186015271139bc81d1bdad95b90881c9958d95a5d995960721b6044820152606490fd5b90508c81813d8311610ea8575b610e998183611939565b810103126101eb57515f610b72565b503d610e8f565b89513d5f823e3d90fd5b875162461bcd60e51b81528086018c9052600e818601526d14ddd85c0810508819985a5b195960921b6044820152606490fd5b875162461bcd60e51b81528087018c90526018818701527f556e617574686f72697a65642073656c6563746f7220434100000000000000006044820152606490fd5b8a5162461bcd60e51b8152808a018f90526018818a01527f556e617574686f72697a65642073656c6563746f7220424300000000000000006044820152606490fd5b508a5162461bcd60e51b8152808a018f90526018818a01527f556e617574686f72697a65642073656c6563746f7220414200000000000000006044820152606490fd5b885162461bcd60e51b81528088018d905260148188015273496e76616c69642073776170206461746120434160601b6044820152606490fd5b875162461bcd60e51b81528087018c905260148187015273496e76616c69642073776170206461746120424360601b6044820152606490fd5b865162461bcd60e51b81528086018b90526014818601527324b73b30b634b21039bbb0b8103230ba309020a160611b6044820152606490fd5b855162461bcd60e51b81528085018a905260138185015272556e617574686f72697a65642044455820434160681b6044820152606490fd5b845162461bcd60e51b815280840189905260138184015272556e617574686f72697a65642044455820424360681b6044820152606490fd5b835162461bcd60e51b8152918201879052601390820152722ab730baba3437b934bd32b2102222ac1020a160691b6044820152606490fd5b9091508581813d831161112e575b61111e8183611939565b810103126101eb5751905f61099d565b503d611114565b506001546001600160a01b0316331461094b565b50346101eb5761115836611779565b335f526020906003825260ff9360ff845f2054168015611712575b61117c90611823565b611184611d60565b61118e828061185e565b95905060028096106116d957838301936111a8858561185e565b90506111b4858061185e565b5f19810192915082116116c6570361168e57858401956111d4878661185e565b90506111e0878761185e565b91905003611655576111f2858061185e565b989098156116425796976001600160a01b0397908890611211906118d9565b1697825194859285846370a0823160e01b9c8d8252308b8301526024998a915afa938415611638575f94611609575b5092996060890193905f5b6112558c8c61185e565b90508110156114955784611278610cda838f8f906112729161185e565b906118b5565b165f5282885283875f20541615611460578961129e82611298898f61185e565b90611db4565b90501061142a576112c66112b682611298898f61185e565b6001600160e01b03199291611dcf565b165f5289885283875f205416156113e8578d86828d8f82908a82806112eb868061185e565b6112f592916118b5565b6112fe906118d9565b97611309908661185e565b61131392916118b5565b3596169582611322838661185e565b61132c92916118b5565b611335906118d9565b906113409188611ffa565b61134a908361185e565b61135492916118b5565b61135d906118d9565b926113679161185e565b6113719291611db4565b9190828b51938492833781015f8152035a925f8094938194f1611392611ba7565b50156113b857906113b2600192610be88f8f611272610cda92879261185e565b0161124b565b875162461bcd60e51b8152808c018a9052600b818c01526a14ddd85c0819985a5b195960aa1b6044820152606490fd5b865162461bcd60e51b8152808b01899052601e818b01527f556e617574686f72697a65642066756e6374696f6e2073656c6563746f7200006044820152606490fd5b865162461bcd60e51b8152808b018990526011818b015270496e76616c69642073776170206461746160781b6044820152606490fd5b865162461bcd60e51b8152808b018990526010818b01526f0aadcc2eae8d0dee4d2f4cac840888ab60831b6044820152606490fd5b50935050509389929589916114aa898061185e565b156115f65790876114bc8894936118d9565b169489519586938492835230908301525afa9182156115ec575f926115bd575b50808211156115b3576114ee91611894565b90925b611501608087013583101561195b565b61151661150e878061185e565b95909761185e565b929091865195806060880160608952526080870198915f905b82821061158f5750505050848703848601528287526001600160fb1b0383116101eb577fb62e177becf771830567708f66852c0f4ec00da57b10012a413f9a55884691b495859360051b8093868a0137830152339501030190a260015f55005b909192998a35908282168092036101eb57908152870199870192916001019061152f565b50505f90926114f1565b9091508381813d83116115e5575b6115d58183611939565b810103126101eb575190876114dc565b503d6115cb565b86513d5f823e3d90fd5b50634e487b7160e01b5f90815260328352fd5b9093508581813d8311611631575b6116218183611939565b810103126101eb5751925f611240565b503d611617565b85513d5f823e3d90fd5b603285634e487b7160e01b5f525260245ffd5b5162461bcd60e51b815292830152506015602482015274082dadeeadce840c6deeadce840dad2e6dac2e8c6d605b1b6044820152606490fd5b8260649187519162461bcd60e51b835282015260136024820152720a0deded840c6deeadce840dad2e6dac2e8c6d606b1b6044820152fd5b601185634e487b7160e01b5f525260245ffd5b845162461bcd60e51b81528083018590526013602482015272125b9d985b1a59081d1bdad95b8818dbdd5b9d606a1b6044820152606490fd5b506001546001600160a01b03163314611173565b919050346101eb5760203660031901126101eb57608092355f526005602052805f2060018060a01b0381541691600182015460ff6003600285015494015416938552602085015283015215156060820152f35b600319906020818301126101eb576004359167ffffffffffffffff83116101eb578260a0920301126101eb5760040190565b600319906020818301126101eb576004359167ffffffffffffffff83116101eb5782610160920301126101eb5760040190565b600435906001600160a01b03821682036101eb57565b60409060031901126101eb576004356001600160a01b03811681036101eb579060243580151581036101eb5790565b1561182a57565b60405162461bcd60e51b815260206004820152600c60248201526b155b985d5d1a1bdc9a5e995960a21b6044820152606490fd5b903590601e19813603018212156101eb570180359067ffffffffffffffff82116101eb57602001918160051b360383136101eb57565b919082039182116118a157565b634e487b7160e01b5f52601160045260245ffd5b91908110156118c55760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b03811681036101eb5790565b6040810190811067ffffffffffffffff82111761190957604052565b634e487b7160e01b5f52604160045260245ffd5b6080810190811067ffffffffffffffff82111761190957604052565b90601f8019910116810190811067ffffffffffffffff82111761190957604052565b1561196257565b60405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d081c1c9bd99a5d606a1b6044820152606490fd5b919082018092116118a157565b906119b5828061185e565b9050158015611b00575b611afb5760408083016119d2818561185e565b156118c55735925f935b60206119ea8188018861185e565b9050861080611add575b15611a9a578115611a89576126f28202916126f119818404016118a1576402524220800290828204620f424014831517156118a1576402540be4009283018093116118a1578215611a53575004935f1981146118a157600101936119dc565b60649086519062461bcd60e51b82526004820152601060248201526f4469766973696f6e206279207a65726f60801b6044820152fd5b8451631f2a200560e01b8152600490fd5b509350939150611aaa818361185e565b156118c55735831115611ad657611ac09161185e565b919091156118c557611ad3913590611894565b90565b5050505f90565b50611ae8878061185e565b5f198101915081116118a15786106119f4565b5f9150565b50611b0e604083018361185e565b9050156119bf565b15611b1d57565b60405162461bcd60e51b815260206004820152601660248201527514995c5d595cdd08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606490fd5b15611b6257565b60405162461bcd60e51b815260206004820152601860248201527f5265717565737420616c726561647920657865637574656400000000000000006044820152606490fd5b3d15611be1573d9067ffffffffffffffff82116119095760405191611bd6601f8201601f191660200184611939565b82523d5f602084013e565b606090565b60c00135908115611afb57604091825192611c00846118ed565b620f42409384815260208101948086528251611c1b816118ed565b81815260208101828152845194611c31866118ed565b838652602086019384528051926060840184811067ffffffffffffffff821117611909578252601e8452816020850194601e86520195601e8752519951996103e8808210908115611d56575b50611d45576126f289029a6126f1198a8d04016118a157611c9e908c611e27565b9a612710918281029281840414901517156118a157611cbc9161199d565b918215611d0f575091611cdd9391611ce998999a9351915192519304611e3a565b92519051915192611e3a565b5f82820392128183128116918313901516176118a1575f811315611d0a5790565b505f90565b5162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b6044820152606490fd5b825163bb55fd2760e01b8152600490fd5b90508b105f611c7d565b60025f5414611d6f5760025f55565b604051633ee5aeb560e01b8152600490fd5b903590601e19813603018212156101eb570180359067ffffffffffffffff82116101eb576020019181360383136101eb57565b908210156118c557611dcb9160051b810190611d81565b9091565b6001600160e01b03199035818116939260048110611dec57505050565b60040360031b82901b16169150565b6001546001600160a01b03163303611e0f57565b60405163118cdaa760e01b8152336004820152602490fd5b818102929181159184041417156118a157565b929190928015611f0b576103e8808510908115611f01575b50611eef5761271092838111611edd578303908382116118a157611e8091611e7991611e27565b9182611e27565b928281029281840414901517156118a157611e9a9161199d565b908115611ea5570490565b60405162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b6044820152606490fd5b6040516358d620b360e01b8152600490fd5b60405163bb55fd2760e01b8152600490fd5b905082105f611e52565b604051631f2a200560e01b8152600490fd5b60405190602082019263095ea7b360e01b938481525f8060018060a01b038094169384602488015281604488015260448752611f588761191d565b85169286519082855af190611f6b611ba7565b82611fc8575b5081611fbd575b5015611f85575b50505050565b611fb4936104e39160405191602083015260248201525f604482015260448152611fae8161191d565b826120fa565b5f808080611f7f565b90503b15155f611f78565b80519192508115918215611fe0575b5050905f611f71565b611ff392506020809183010191016120e2565b5f80611fd7565b60405163095ea7b360e01b602082018181526001600160a01b0385166024840152604480840196909652948252909290612035606485611939565b83516001600160a01b0395848716915f9182919082855af190612056611ba7565b826120b0575b50816120a5575b5015612071575b5050505050565b61209b946104e3926040519260208401521660248201525f604482015260448152611fae8161191d565b5f8080808061206a565b90503b15155f612063565b805191925081159182156120c8575b5050905f61205c565b6120db92506020809183010191016120e2565b5f806120bf565b908160209103126101eb575180151581036101eb5790565b5f806121229260018060a01b03169360208151910182865af161211b611ba7565b908361216b565b8051908115159182612150575b50506121385750565b60249060405190635274afe760e01b82526004820152fd5b61216392506020809183010191016120e2565b155f8061212f565b90612192575080511561218057805190602001fd5b604051630a12f52160e11b8152600490fd5b815115806121c5575b6121a3575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561219b56","sourceMap":"480:13900:7:-:0;;;;;;;;;;;;;-1:-1:-1;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;1500:62:0;;;:::i;:::-;480:13900:7;;;13977:17;480:13900;;;;;14085:54;480:13900;14094:16;14023:20;;;480:13900;14023:25;14015:60;14023:25;;;14015:60;:::i;:::-;14094:16;480:13900;;14093:17;14085:54;:::i;:::-;14157:15;:38;480:13900;;;;14094:16;480:13900;;;;;13977:17;480:13900;;;;;;;;;;;;;14023:20;480:13900;;;;;14295:37;480:13900;14295:37;;480:13900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;:::i;:::-;1500:62:0;;;:::i;:::-;-1:-1:-1;;;;;480:13900:7;;;;2627:22:0;;2623:91;;480:13900:7;;3004:6:0;480:13900:7;;-1:-1:-1;;;;;480:13900:7;;;;;3004:6:0;480:13900:7;;3052:40:0;480:13900:7;3052:40:0;;480:13900:7;2623:91:0;480:13900:7;;;;;2672:31:0;;;;;;;;480:13900:7;2672:31:0;480:13900:7;;;;;;;-1:-1:-1;;480:13900:7;;;;;;;;;;;;;;;;;1500:62:0;;:::i;:::-;480:13900:7;;;;;;;;;;;;;;3604:29;480:13900;3604:29;;480:13900;;;;;;;;-1:-1:-1;;480:13900:7;;;;;760:43;-1:-1:-1;;;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;-1:-1:-1;;;;;480:13900:7;;:::i;:::-;;;;590:47;480:13900;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1500:62:0;;;:::i;:::-;480:13900:7;;;13027:17;480:13900;;;;;13073:20;;;;480:13900;13073:25;13065:60;13073:25;;;13065:60;:::i;:::-;13144:16;;;480:13900;;;13135:54;480:13900;;;13143:17;13135:54;:::i;:::-;13207:15;:39;480:13900;;;-1:-1:-1;;480:13900:7;;;;;;;;;;-1:-1:-1;;;;;480:13900:7;;;;;;;;;;;;;;;;13427:14;;;480:13900;13398:48;;;;;:::i;:::-;;480:13900;;;13332:268;;13623:67;13332:268;;;;480:13900;;;13675:14;;480:13900;;;;;;13623:67;480:13900;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;13332:268;480:13900;;13574:14;;;480:13900;;;-1:-1:-1;;;1412:43:3;;;;480:13900:7;;;-1:-1:-1;;;;;480:13900:7;1412:43:3;;;480:13900:7;;;;;;;;;1412:43:3;;13623:67:7;;1412:43:3;480:13900:7;;;-1:-1:-1;1412:43:3;;;480:13900:7;;1412:43:3;:::i;:::-;;:::i;:::-;13332:268:7;;480:13900;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;2802:33;480:13900;;;;:::i;:::-;1500:62:0;;;;:::i;:::-;480:13900:7;;;;;;;;2802:15;480:13900;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;;;-1:-1:-1;;;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;1500:62:0;;;:::i;:::-;12171:10:7;;480:13900;;;;12249:124;480:13900;12249:124;;480:13900;;;;;;;;;;-1:-1:-1;;;;;480:13900:7;;;;;;;;;;;;12318:15;480:13900;;;;12347:16;480:13900;;;;;12249:124;;480:13900;;;;;;;;;;;;;;;;;;;;12239:135;;12318:15;11484:8;12318:15;480:13900;12318:15;;;480:13900;;;;;;;;;;;;;;;;;;12677:66;480:13900;;;;;;;;;;;12502:151;;;480:13900;;;12502:151;480:13900;12502:151;;480:13900;;;;12502:151;480:13900;;;;;;;12471:17;480:13900;;;;;;;;-1:-1:-1;;;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12677:66;480:13900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;1500:62:0;;:::i;:::-;3004:6;480:13900:7;;-1:-1:-1;;;;;;480:13900:7;;;;;;;-1:-1:-1;;;;;480:13900:7;3052:40:0;480:13900:7;;3052:40:0;480:13900:7;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;;11484:8;480:13900;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;-1:-1:-1;;;;;480:13900:7;;:::i;:::-;;;;643:49;480:13900;;;;;;;;;;;;;;;;;;;;;2943:38;480:13900;;;;:::i;:::-;1500:62:0;;;;:::i;:::-;480:13900:7;;;;;;;;2943:17;480:13900;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;;;;;;;;;;;;1500:62:0;;:::i;:::-;3200:21:7;;480:13900;;;;;;;;;3285:4;480:13900;;;;;;;;3304:27;480:13900;3304:27;;480:13900;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;:::i;:::-;1029:10;480:13900;;;1011:17;480:13900;;;;;;;;;1011:54;;;;480:13900;1003:79;;;:::i;:::-;2322:103:6;;:::i;:::-;-1:-1:-1;;;;;480:13900:7;;4981:13;;;:::i;:::-;480:13900;;;;;;;;;;;4974:46;;;;5014:4;4974:46;;;480:13900;;4974:46;;;;;;;;;;480:13900;4974:46;;;480:13900;8870:13;;;;;;;;;:::i;:::-;480:13900;;;8854:15;480:13900;;;;;;;;;;;8942:13;;;;;;;:::i;:::-;480:13900;;;8854:15;480:13900;;;;;;;;;;;9014:13;;;;;;;;:::i;:::-;480:13900;;;8854:15;480:13900;;;;;;;;;;;9146:17;;;;;;;;:::i;:::-;:29;;;480:13900;;9218:17;;;;;;;;;:::i;:::-;:29;;;480:13900;;9290:17;;;;;;;;;:::i;:::-;:29;;;480:13900;;9390:17;;;;9493:25;9500:17;9383:25;9390:17;;;;:::i;:::-;9383:25;;:::i;:::-;9445:17;9438:25;9445:17;;;;:::i;9438:25::-;9500:17;;:::i;9493:25::-;480:13900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9918:13;;;;;;;;;;;;:::i;:::-;480:13900;9946:13;;;;:::i;:::-;9961:15;;;;480:13900;9961:15;;;;;:::i;:::-;10007:13;;;:::i;:::-;10026:17;;;;;:::i;:::-;480:13900;;;;;;;;;;;;;;;10007:37;;;480:13900;10007:37;;;;;;;;:::i;:::-;;480:13900;;;10145:13;;;;;;;;;;:::i;:::-;480:13900;10173:13;;;;:::i;:::-;10138:52;;;:::i;:::-;10306:13;;;;;;;;;;:::i;:::-;480:13900;;;;;10299:46;;;;;;5014:4;10299:46;;;480:13900;10299:46;;;;;;;480:13900;10299:46;;;480:13900;10363:11;;;480:13900;;;10414:13;10457:7;10414:13;;;;;;;:::i;:::-;480:13900;10442:13;;;:::i;:::-;10457:7;;:::i;:::-;10495:13;10514:17;10495:13;;;:::i;:::-;10514:17;;;:::i;:::-;480:13900;;;;;;;;;;;;;;;10495:37;;;;;;:::i;:::-;;480:13900;;;10626:52;10633:13;10661;10633;;;;:::i;:::-;480:13900;10661:13;;:::i;:::-;10626:52;;:::i;:::-;10793:13;;;;;;;;;;:::i;:::-;480:13900;;;;;10786:46;;;;;;5014:4;10786:46;;;480:13900;10786:46;;;;;;;480:13900;10786:46;;;480:13900;10850:11;;;480:13900;;;10901:13;10944:7;10901:13;;;;;;:::i;10944:7::-;10982:13;11001:17;10982:13;;;:::i;:::-;11001:17;;;:::i;:::-;480:13900;;;;;;;;;;;;;;;10982:37;;;;;;:::i;:::-;;480:13900;;;11120:13;11113:52;11120:13;;;11148;11120;;;;:::i;11113:52::-;5128:13;;;;:::i;:::-;480:13900;;;;5121:46;;;;;;;5014:4;5121:46;;;480:13900;5121:46;;;;;;;;;;480:13900;5121:46;;;480:13900;-1:-1:-1;5194:29:7;;;;;;5425:13;5226:29;5479:13;5226:29;5452:13;5226:29;;:::i;:::-;5194:65;;5278:58;480:13900;5296:16;;480:13900;5286:26;;;5278:58;:::i;:::-;5425:13;:::i;:::-;5452;;:::i;:::-;5479;;:::i;:::-;480:13900;;;;;;;;;;;;;;;;;1029:10;5360:191;8870:13;1029:10;5360:191;;480:13900;;;;5194:65;;;5479:13;5452;5425;480:13900;5194:65;;;5121:46;;;;;;;;;;;;;;;;;;:::i;:::-;;;480:13900;;;;;;;5121:46;;;;;;;;;480:13900;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;10786:46;;;;;;;;;;;;;;;;:::i;:::-;;;480:13900;;;;;10786:46;;;;;;;;;480:13900;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;-1:-1:-1;480:13900:7;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;10299:46;;;;;;;;;;;;;;;;:::i;:::-;;;480:13900;;;;;10299:46;;;;;;;;;480:13900;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;480:13900:7;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;4974:46;;;;;;;;;;;;;;;;;:::i;:::-;;;480:13900;;;;;4974:46;;;;;;;;;1011:54;-1:-1:-1;480:13900:7;;-1:-1:-1;;;;;480:13900:7;1029:10;1044:21;1011:54;;480:13900;;;;;;;;:::i;:::-;1029:10;480:13900;;;;1011:17;480:13900;;;;;;;;;;1011:54;;;;480:13900;1003:79;;;:::i;:::-;2322:103:6;;:::i;:::-;4063:13:7;;;;:::i;:::-;4087:1;;;;;4063:25;;480:13900;;4130:12;;;;;;;;:::i;:::-;4153:13;;;;;;:::i;:::-;-1:-1:-1;;480:13900:7;;;;-1:-1:-1;480:13900:7;;;;4130:47;480:13900;;4219:14;;;;;;;;:::i;:::-;4244:12;;;;;;:::i;:::-;4219:44;;;;480:13900;;4340:13;;;;:::i;:::-;480:13900;;;;;;;;-1:-1:-1;;;;;480:13900:7;-1:-1:-1;480:13900:7;;4340:16;;;:::i;:::-;480:13900;;;;;;;;;;;;4333:49;;;;4376:4;4333:49;;;480:13900;;4333:49;;;;;;;;;;480:13900;4333:49;;;480:13900;-1:-1:-1;7770:13:7;;7912:15;;;;-1:-1:-1;480:13900:7;7810:3;7789:12;;;;:::i;:::-;7785:23;;;;;;;7853:12;:15;;:12;;;;;;;:::i;:::-;:15;;:::i;:::-;480:13900;;;;;;;;;;;;;;;7912:15;:18;:15;;;;;:::i;:::-;:18;;:::i;:::-;:30;;;480:13900;;8106:26;8113:18;:15;;;;;:::i;:18::-;-1:-1:-1;;;;;;480:13900:7;;8106:26;:::i;:::-;480:13900;;;;;;;;;;;;;;;8264:13;;;;;;;;;;;;;;:::i;:::-;:16;;;;:::i;:::-;;;;:::i;:::-;8313:14;;;;;:::i;:::-;:17;;;;:::i;:::-;480:13900;;;8466:12;;;;;;:::i;:::-;:15;;;;:::i;:::-;;;;:::i;:::-;8483:8;;;;;:::i;:::-;8525:12;;;;:::i;:::-;:15;;;;:::i;:::-;;;;:::i;:::-;8546;;;;:::i;:::-;:18;;;;:::i;:::-;480:13900;;;;;;;;;;;;;;;8525:40;;;480:13900;8525:40;;;;;;;;:::i;:::-;;480:13900;;;8696:12;8667:48;4176:1;8696:12;:15;:12;;;:15;:12;;;;:::i;8667:48::-;480:13900;7770:13;;480:13900;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;7785:23;;;;;;;;;;;;4480:13;;;;:::i;:::-;480:13900;;;4480:16;;;;;;;:::i;:::-;480:13900;;;;4473:49;;;;;;;4376:4;4473:49;;;480:13900;4473:49;;;;;;;480:13900;4473:49;;;7765:961;-1:-1:-1;4549:29:7;;;;;;4581;;;:::i;:::-;4549:65;;;4633:58;4651:16;;;480:13900;4641:26;;;4633:58;:::i;:::-;4760:14;4745:13;;;;:::i;:::-;4760:14;;;;:::i;:::-;480:13900;;;;;;;7912:15;480:13900;;7912:15;480:13900;;;4651:16;480:13900;;;;;;;;;;;;-1:-1:-1;;;;480:13900:7;;;;;;;;;;-1:-1:-1;;;;;480:13900:7;;;;4715:68;480:13900;;;;;;;;;;;;;;1029:10;480:13900;;4715:68;;;;4176:1;480:13900;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4176:1;480:13900;;;;4549:65;;;480:13900;4549:65;;;;4473:49;;;;;;;;;;;;;;;;;:::i;:::-;;;480:13900;;;;;4473:49;;;;;;;;;;480:13900;;;;;;;;;;-1:-1:-1;;;;480:13900:7;;;;;;;;4333:49;;;;;;;;;;;;;;;;;:::i;:::-;;;480:13900;;;;;4333:49;;;;;;;;;;480:13900;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;-1:-1:-1;480:13900:7;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;1011:54;-1:-1:-1;480:13900:7;;-1:-1:-1;;;;;480:13900:7;1029:10;1044:21;1011:54;;480:13900;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;;;;11372:61;480:13900;;;;;;;;;;;;;11372:61;480:13900;11372:61;;480:13900;;11372:61;;;;480:13900;11372:61;;480:13900;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;480:13900:7;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;480:13900:7;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;480:13900:7;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;1412:43:3;;480:13900:7;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;:::o;5568:1078::-;;5719:13;;;;:::i;:::-;:25;;;:55;;;;5568:1078;5715:94;;5911:14;;;;;;;;:::i;:::-;480:13900;;;;5952:13;5719;5947:522;6024:3;5971:12;;;;;;;:::i;:::-;5967:23;;;;:55;;;6024:3;5967:55;;;1405:13:13;;1401:38;;480:13900:7;507:5:13;;;-1:-1:-1;;507:5:13;;;;;;;;;;;;6262:7:7;507:5:13;;;;;;;;480:13900:7;;;;;;;;1816:15:13;;507:5;;-1:-1:-1;507:5:13;;-1:-1:-1;;480:13900:7;;;;;;5952:13;;;507:5:13;;480:13900:7;;;;;;;507:5:13;;;;;;;;;;480:13900:7;-1:-1:-1;;;480:13900:7;;;507:5:13;;1401:38;480:13900:7;;-1:-1:-1;;;1427:12:13;;;;;5967:55:7;;;;;;;6569:14;;;;:::i;:::-;480:13900;;;;6553:33;;480:13900;;;6618:14;;;:::i;:::-;480:13900;;;;;;6602:33;480:13900;;6602:33;;:::i;:::-;5568:1078;:::o;6553:86::-;;;;5719:13;5568:1078;:::o;5967:55::-;5998:13;;;;;:::i;:::-;-1:-1:-1;;480:13900:7;;;-1:-1:-1;480:13900:7;;;;5994:28;;5967:55;;5715:94;5719:13;;-1:-1:-1;5790:8:7:o;5719:55::-;5748:14;;;;;;;:::i;:::-;:26;;;5719:55;;480:13900;;;;:::o;:::-;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1412:43:3;480:13900:7;;-1:-1:-1;;480:13900:7;;;;;:::i;:::-;;;;-1:-1:-1;480:13900:7;;;;:::o;:::-;;;:::o;6656:1015::-;6827:15;;480:13900;6827:20;;;6823:59;;480:13900;;;;;;;;:::i;:::-;7092:7;480:13900;;;;7083:36;;;480:13900;;;;;;;;;:::i;:::-;;;;7083:36;7160;;480:13900;;;;;;;;;:::i;:::-;;;;7083:36;7237;;480:13900;;;;;;;;;;;;;;;;;;;;7317:2;480:13900;;7308:39;7083:36;7308:39;;480:13900;7317:2;480:13900;;7308:39;480:13900;7317:2;480:13900;;;;;567:4:13;;1453:25;;;:55;;;;;6656:1015:7;1449:91:13;;;480:13900:7;507:5:13;;;-1:-1:-1;;507:5:13;;;;;;1695:28;;;;:::i;:::-;507:5;;;;;;;;;;;;;;;;;1755:43;;;:::i;:::-;1816:15;;;507:5;;480:13900:7;;6971:60:13;480:13900:7;;7089:60:13;480:13900:7;;;;;;;;;507:5:13;;6971:60;:::i;:::-;480:13900:7;;;;;;7089:60:13;;:::i;:::-;-1:-1:-1;480:13900:7;;;;;;;;;;;;;;;;;;;-1:-1:-1;7632:10:7;;-1:-1:-1;;;6656:1015:7;:::o;7632:32::-;;-1:-1:-1;6656:1015:7;:::o;507:5:13:-;480:13900:7;-1:-1:-1;;;507:5:13;;7083:36:7;507:5:13;;;;;;;;480:13900:7;-1:-1:-1;;;480:13900:7;;;507:5:13;;;;1449:91;480:13900:7;;-1:-1:-1;;;1517:23:13;;;;;1453:55;1482:26;;;;1453:55;;;2431:307:6;1755:1;2558:7;480:13900:7;2558:18:6;2554:86;;1755:1;2558:7;480:13900:7;2431:307:6:o;2554:86::-;480:13900:7;;-1:-1:-1;;;2599:30:6;;;;;480:13900:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;-1:-1:-1;;;;;;480:13900:7;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;480:13900:7:o;1796:162:0:-;480:13900:7;;-1:-1:-1;;;;;480:13900:7;735:10:5;1855:23:0;1851:101;;1796:162::o;1851:101::-;480:13900:7;;-1:-1:-1;;;1901:40:0;;735:10:5;1901:40:0;;;480:13900:7;;;1901:40:0;507:5:13;;;;;;;;;;;;;;;;:::o;1216:697::-;;;;;1405:13;;1401:38;;567:4;1453:25;;;:55;;;;;1216:697;1449:91;;;507:5;1554:20;;;;1550:45;;480:13900:7;;;;;;;;1695:28:13;1632:33;;;;:::i;:::-;1695:28;;;:::i;:::-;507:5;;;;;;;;;;;;;;;1755:43;;;:::i;:::-;1816:15;;;507:5;;;1216:697;:::o;507:5::-;480:13900:7;;-1:-1:-1;;;507:5:13;;;;;;;;;;;480:13900:7;-1:-1:-1;;;480:13900:7;;;507:5:13;;;;1550:45;480:13900:7;;-1:-1:-1;;;1583:12:13;;;;;1449:91;480:13900:7;;-1:-1:-1;;;1517:23:13;;;;;1453:55;1482:26;;;;1453:55;;;1401:38;480:13900:7;;-1:-1:-1;;;1427:12:13;;;;;3296:380:3;480:13900:7;;3411:47:3;;;;480:13900:7;;;;3411:47:3;;;;480:13900:7;;;;;;;;;;3411:47:3;;;;;480:13900:7;;;;;;;3411:47:3;;;;;:::i;:::-;480:13900:7;;5615:25:3;;;;;;;;;;;:::i;:::-;5657:69;;;3296:380;5657:103;;;;3296:380;3473:45;;3469:201;;3296:380;;;;;:::o;3469:201::-;3646:12;480:13900:7;3561:43:3;480:13900:7;;;3561:43:3;3411:47;3561:43;;;3411:47;3561:43;;480:13900:7;;;;;;;3561:43:3;;;;;:::i;:::-;;;:::i;3646:12::-;3469:201;;;;;;5657:103;5730:26;;;:30;;5657:103;;;:69;480:13900:7;;;;-1:-1:-1;5669:22:3;;;:56;;;;5657:69;;;;;;;5669:56;5695:30;;;3411:47;5695:30;;;;;;;;:::i;:::-;5669:56;;;;3296:380;480:13900:7;;-1:-1:-1;;;3411:47:3;;;;;;-1:-1:-1;;;;;480:13900:7;;3411:47:3;;;480:13900:7;;;;;;;;;3411:47:3;;;480:13900:7;;;3411:47:3;480:13900:7;;3411:47:3;:::i;:::-;5615:25;;-1:-1:-1;;;;;480:13900:7;;;;;-1:-1:-1;;;;5615:25:3;-1:-1:-1;480:13900:7;5615:25:3;;;;;:::i;:::-;5657:69;;;3296:380;5657:103;;;;3296:380;3473:45;;3469:201;;3296:380;;;;;;:::o;3469:201::-;3646:12;480:13900:7;3561:43:3;480:13900:7;;;3561:43:3;3411:47;3561:43;;;480:13900:7;3411:47:3;3561:43;;480:13900:7;-1:-1:-1;480:13900:7;;;;;3561:43:3;;;;;:::i;3646:12::-;3469:201;;;;;;;5657:103;5730:26;;;:30;;5657:103;;;:69;480:13900:7;;;;-1:-1:-1;5669:22:3;;;:56;;;;5657:69;;;;;;;5669:56;5695:30;;;3411:47;5695:30;;;;;;;;:::i;:::-;5669:56;;;;480:13900:7;;;;;;;;;;;;;;;;;;:::o;4059:629:3:-;2847:1:4;4059:629:3;3510:55:4;4059:629:3;480:13900:7;;;;;;3462:31:4;;;;;;;;;;;;:::i;:::-;3510:55;;;:::i;:::-;480:13900:7;;4551:22:3;;;;:57;;;;4059:629;4547:135;;;;4059:629;:::o;4547:135::-;480:13900:7;;;;4631:40:3;;;;;;;;;480:13900:7;4631:40:3;4551:57;4578:30;;;3462:31:4;4578:30:3;;;;;;;;:::i;:::-;4577:31;4551:57;;;;4625:582:4;;4797:8;;-1:-1:-1;480:13900:7;;5874:21:4;:17;;6046:142;;;;;;5870:383;480:13900:7;;-1:-1:-1;;;6225:17:4;;;;;4793:408;480:13900:7;;5045:22:4;:49;;;4793:408;5041:119;;5173:17;;:::o;5041:119::-;480:13900:7;;-1:-1:-1;;;5121:24:4;;-1:-1:-1;;;;;480:13900:7;;;5121:24:4;;;480:13900:7;;;5121:24:4;5045:49;5071:18;;;:23;5045:49;","linkReferences":{},"immutableReferences":{"933":[{"start":753,"length":32}]}},"methodIdentifiers":{"EMERGENCY_TIMELOCK()":"60d7442b","addSwapSelector(bytes4)":"2c68b0e4","allowedSwapSelectors(bytes4)":"6f1047ab","authorizedCallers(address)":"536fff6c","authorizedDEXes(address)":"cf3818f9","calculateArbitrageProfit((address[],address[],uint256[],bytes[],uint256))":"8f5268a8","calculateTriangularArbitrageProfit((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))":"9f1bfb6a","cancelEmergencyWithdraw(bytes32)":"fbe1a43f","emergencyRequests(bytes32)":"0557ac41","executeArbitrage((address[],address[],uint256[],bytes[],uint256))":"0c6111f7","executeEmergencyWithdraw(bytes32)":"9ad3ec48","executeTriangularArbitrage((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))":"1e9ece24","flashSwapper()":"da77dd75","isSwapSelectorAllowed(bytes4)":"99f0e34e","owner()":"8da5cb5b","removeSwapSelector(bytes4)":"e1292382","renounceOwnership()":"715018a6","requestEmergencyWithdraw(address,uint256)":"7c7f4ce5","setAuthorizedCaller(address,bool)":"454bbd29","setAuthorizedDEX(address,bool)":"8dce7ff3","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_flashSwapper\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAmount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"profit\",\"type\":\"uint256\"}],\"name\":\"ArbitrageExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"name\":\"EmergencyWithdrawCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdrawExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"executeAfter\",\"type\":\"uint256\"}],\"name\":\"EmergencyWithdrawRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"SwapSelectorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"SwapSelectorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenC\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"profit\",\"type\":\"uint256\"}],\"name\":\"TriangularArbitrageExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"EMERGENCY_TIMELOCK\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"addSwapSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"name\":\"allowedSwapSelectors\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorizedCallers\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"authorizedDEXes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"swapData\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"minProfit\",\"type\":\"uint256\"}],\"internalType\":\"struct IArbitrage.ArbitrageParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"calculateArbitrageProfit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"expectedProfit\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenC\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolAB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolBC\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCA\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minProfit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"swapDataAB\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"swapDataBC\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"swapDataCA\",\"type\":\"bytes\"}],\"internalType\":\"struct IArbitrage.TriangularArbitrageParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"calculateTriangularArbitrageProfit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"expectedProfit\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"name\":\"cancelEmergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"emergencyRequests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executeAfter\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"executed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"pools\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"swapData\",\"type\":\"bytes[]\"},{\"internalType\":\"uint256\",\"name\":\"minProfit\",\"type\":\"uint256\"}],\"internalType\":\"struct IArbitrage.ArbitrageParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"executeArbitrage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"requestId\",\"type\":\"bytes32\"}],\"name\":\"executeEmergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenC\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolAB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolBC\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"poolCA\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minProfit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"swapDataAB\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"swapDataBC\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"swapDataCA\",\"type\":\"bytes\"}],\"internalType\":\"struct IArbitrage.TriangularArbitrageParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"executeTriangularArbitrage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"flashSwapper\",\"outputs\":[{\"internalType\":\"contract IFlashSwapper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"isSwapSelectorAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"removeSwapSelector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"requestEmergencyWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"authorized\",\"type\":\"bool\"}],\"name\":\"setAuthorizedCaller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dex\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"authorized\",\"type\":\"bool\"}],\"name\":\"setAuthorizedDEX\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"AddressInsufficientBalance(address)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"ArbitrageExecuted(address,address[],uint256[],uint256)\":{\"params\":{\"amounts\":\"Array of amounts traded at each step\",\"initiator\":\"The address that initiated the arbitrage\",\"profit\":\"The net profit from the arbitrage operation\",\"tokens\":\"Array of tokens involved in the arbitrage path\"}},\"TriangularArbitrageExecuted(address,address,address,address,uint256,uint256)\":{\"params\":{\"amountIn\":\"The initial amount of tokenA used\",\"initiator\":\"The address that initiated the arbitrage\",\"profit\":\"The net profit in tokenA from the arbitrage\",\"tokenA\":\"The starting/ending token of the triangular arbitrage\",\"tokenB\":\"The first intermediate token\",\"tokenC\":\"The second intermediate token\"}}},\"kind\":\"dev\",\"methods\":{\"addSwapSelector(bytes4)\":{\"params\":{\"selector\":\"The function selector to allow\"}},\"calculateArbitrageProfit((address[],address[],uint256[],bytes[],uint256))\":{\"details\":\"Simulates the arbitrage execution without state changes to estimate profitability. Useful for MEV bots to determine if an arbitrage opportunity is worth pursuing\",\"params\":{\"params\":\"The arbitrage parameters to simulate\"},\"returns\":{\"expectedProfit\":\"The estimated profit from executing the arbitrage\"}},\"calculateTriangularArbitrageProfit((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))\":{\"details\":\"Simulates the triangular arbitrage without state changes to estimate profitability\",\"params\":{\"params\":\"The triangular arbitrage parameters to simulate\"},\"returns\":{\"expectedProfit\":\"The estimated profit in tokenA from the triangular arbitrage\"}},\"cancelEmergencyWithdraw(bytes32)\":{\"params\":{\"requestId\":\"The ID of the emergency withdrawal request to cancel\"}},\"executeArbitrage((address[],address[],uint256[],bytes[],uint256))\":{\"details\":\"Performs a series of swaps across different pools to exploit price differences. The function validates that the final profit meets the minimum requirement\",\"params\":{\"params\":\"The arbitrage parameters including tokens, pools, amounts, and swap data\"}},\"executeEmergencyWithdraw(bytes32)\":{\"params\":{\"requestId\":\"The ID of the emergency withdrawal request\"}},\"executeTriangularArbitrage((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))\":{\"details\":\"Specialized function for 3-token circular arbitrage. More gas efficient than general arbitrage for this specific case\",\"params\":{\"params\":\"The triangular arbitrage parameters\"}},\"isSwapSelectorAllowed(bytes4)\":{\"params\":{\"selector\":\"The function selector to check\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"removeSwapSelector(bytes4)\":{\"params\":{\"selector\":\"The function selector to disallow\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"requestEmergencyWithdraw(address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to withdraw\",\"token\":\"The address of the token to withdraw (address(0) for ETH)\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"events\":{\"ArbitrageExecuted(address,address[],uint256[],uint256)\":{\"notice\":\"Emitted when a multi-hop arbitrage is successfully executed\"},\"TriangularArbitrageExecuted(address,address,address,address,uint256,uint256)\":{\"notice\":\"Emitted when a triangular arbitrage is successfully executed\"}},\"kind\":\"user\",\"methods\":{\"addSwapSelector(bytes4)\":{\"notice\":\"Add an allowed swap function selector\"},\"calculateArbitrageProfit((address[],address[],uint256[],bytes[],uint256))\":{\"notice\":\"Calculates the expected profit from a multi-hop arbitrage\"},\"calculateTriangularArbitrageProfit((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Calculates the expected profit from a triangular arbitrage\"},\"cancelEmergencyWithdraw(bytes32)\":{\"notice\":\"Cancel a pending emergency withdrawal request\"},\"executeArbitrage((address[],address[],uint256[],bytes[],uint256))\":{\"notice\":\"Executes a multi-hop arbitrage across multiple pools\"},\"executeEmergencyWithdraw(bytes32)\":{\"notice\":\"Execute a previously requested emergency withdrawal\"},\"executeTriangularArbitrage((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Executes a triangular arbitrage (A->B->C->A)\"},\"isSwapSelectorAllowed(bytes4)\":{\"notice\":\"Check if a function selector is allowed for swaps\"},\"removeSwapSelector(bytes4)\":{\"notice\":\"Remove an allowed swap function selector\"},\"requestEmergencyWithdraw(address,uint256)\":{\"notice\":\"Request an emergency withdrawal with timelock protection\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/core/ArbitrageExecutor.sol\":\"ArbitrageExecutor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v2-core/=lib/v2-core/contracts/\",\":@uniswap/v3-core/=lib/v3-core/contracts/\",\":Algebra/=lib/Algebra/src/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":curve-contract/=lib/curve-contract/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":smart-contracts/=lib/smart-contracts/\",\":v2-core/=lib/v2-core/contracts/\",\":v3-core/=lib/v3-core/\",\":v3-periphery/=lib/v3-periphery/contracts/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867\",\"dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02\",\"dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd\"]},\"src/core/ArbitrageExecutor.sol\":{\"keccak256\":\"0x531c01f61411e4f8a15018be512af4d45ee3b78bafdfd18ad962314820060e28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://74ca63c03c2d3d22a4324b1bebb327605e8f3557a1629a2e4c43ee359c00685c\",\"dweb:/ipfs/QmQkHRyfEZBJSmNzpWZVKopJLMxgUbZAhCFsZ4JTFuEGYQ\"]},\"src/interfaces/IArbitrage.sol\":{\"keccak256\":\"0x98aad39d434dd6b13d0f1e313c9afaa732ac6fc89e33d1be15999a221549de6d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e853e0e5269683ca36ec4a7ec27403e2a07d48dee88846ce5ad48910edc012e1\",\"dweb:/ipfs/QmWuFD5qfmzMc2PscMDqTfd4RUvPs3fnPeRu3VxGNTe4j5\"]},\"src/interfaces/IFlashSwapper.sol\":{\"keccak256\":\"0x61c05e0f7e8be39b7e5615cafc57ff719f16b9bd356921d9bd9bb96162090ca5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31354ca48b047f91eb06417c6d96f2ae4e9ee9e853ca088a54aded8d74045758\",\"dweb:/ipfs/Qmc8LF6fwYqPLmqQUnJttqJA2adWyXJSwUiwpqvcqbvnG6\"]},\"src/libraries/AlgebraMath.sol\":{\"keccak256\":\"0xa362bd89b481ce9f975a32e3d2a3910723fd8e0e583c4b209ba1fbe9e3dcfec9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d12ba885347b8928a3a775fa329f25c92e9fc628d52b07da0931db0f9ba590a\",\"dweb:/ipfs/QmTZ2td5vs2yfPzhKkwJoo6s6sKaECN9rZBMxsk6UHH8vG\"]},\"src/libraries/BalancerMath.sol\":{\"keccak256\":\"0x158fbaaadf9afbb7e89703562aa8b6f69c92c1f8ab9456951c334ed11e246577\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7b6bfab17ef61f9c9751a6c2138fb184d68e94a8ed3b45ee2abbe11596c4f75\",\"dweb:/ipfs/QmW37Ti2bK4WENKecyJbFyG2VsMsGuUkda1yb46buefZcs\"]},\"src/libraries/CurveMath.sol\":{\"keccak256\":\"0xa23186d31039409d31690b3f4ee1c56065ab8cf063ebe51ac1118f03f4322a24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://488d1dc2ed04075baaf39bb9c6337eb4f747ee0a69123e0cdcc15fa51c31f7cb\",\"dweb:/ipfs/QmZZAXKNMjstTjLuChmgVE1m8zbHbsE1qrp9itJpwYfMKx\"]},\"src/libraries/DEXMath.sol\":{\"keccak256\":\"0xe0702bcd32a9a29e800f50734fb4c6ba80c1ed1c38dc7e1d01822c5fa51664a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7515b1cf1fd022bb2cdb924b911fa2313d989800cde85fbb73adbed1e83821ac\",\"dweb:/ipfs/QmNrVDotWJ44VFJqqcQSSPHdvcJb72khvj9vwqRif4jSJn\"]},\"src/libraries/UniswapV3Math.sol\":{\"keccak256\":\"0xf55a578f220c42853d4b343e0bf5890ad219e7a2c7889abc7097e70e0ad94f62\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f92257e0f0d1483b5556281cd12af3844d5ba472a3be47f2395f9052abd29c6f\",\"dweb:/ipfs/QmUJXXffyc1gfFeeAxio5X5r3ErJnREaYsMCWc2cExxSLb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.24+commit.e11b9ed9"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_flashSwapper","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"AddressInsufficientBalance"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InsufficientLiquidity"},{"inputs":[],"type":"error","name":"InvalidFee"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"ZeroAmount"},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"address[]","name":"tokens","type":"address[]","indexed":false},{"internalType":"uint256[]","name":"amounts","type":"uint256[]","indexed":false},{"internalType":"uint256","name":"profit","type":"uint256","indexed":false}],"type":"event","name":"ArbitrageExecuted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32","indexed":true}],"type":"event","name":"EmergencyWithdrawCancelled","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"EmergencyWithdrawExecuted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"executeAfter","type":"uint256","indexed":false}],"type":"event","name":"EmergencyWithdrawRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"SwapSelectorAdded","anonymous":false},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4","indexed":true}],"type":"event","name":"SwapSelectorRemoved","anonymous":false},{"inputs":[{"internalType":"address","name":"initiator","type":"address","indexed":true},{"internalType":"address","name":"tokenA","type":"address","indexed":true},{"internalType":"address","name":"tokenB","type":"address","indexed":true},{"internalType":"address","name":"tokenC","type":"address","indexed":false},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"profit","type":"uint256","indexed":false}],"type":"event","name":"TriangularArbitrageExecuted","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"EMERGENCY_TIMELOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"addSwapSelector"},{"inputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"view","type":"function","name":"allowedSwapSelectors","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"authorizedCallers","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"authorizedDEXes","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct IArbitrage.ArbitrageParams","name":"params","type":"tuple","components":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes[]","name":"swapData","type":"bytes[]"},{"internalType":"uint256","name":"minProfit","type":"uint256"}]}],"stateMutability":"pure","type":"function","name":"calculateArbitrageProfit","outputs":[{"internalType":"uint256","name":"expectedProfit","type":"uint256"}]},{"inputs":[{"internalType":"struct IArbitrage.TriangularArbitrageParams","name":"params","type":"tuple","components":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"tokenC","type":"address"},{"internalType":"address","name":"poolAB","type":"address"},{"internalType":"address","name":"poolBC","type":"address"},{"internalType":"address","name":"poolCA","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"minProfit","type":"uint256"},{"internalType":"bytes","name":"swapDataAB","type":"bytes"},{"internalType":"bytes","name":"swapDataBC","type":"bytes"},{"internalType":"bytes","name":"swapDataCA","type":"bytes"}]}],"stateMutability":"pure","type":"function","name":"calculateTriangularArbitrageProfit","outputs":[{"internalType":"uint256","name":"expectedProfit","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"cancelEmergencyWithdraw"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"emergencyRequests","outputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"executeAfter","type":"uint256"},{"internalType":"bool","name":"executed","type":"bool"}]},{"inputs":[{"internalType":"struct IArbitrage.ArbitrageParams","name":"params","type":"tuple","components":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes[]","name":"swapData","type":"bytes[]"},{"internalType":"uint256","name":"minProfit","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"executeArbitrage"},{"inputs":[{"internalType":"bytes32","name":"requestId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"executeEmergencyWithdraw"},{"inputs":[{"internalType":"struct IArbitrage.TriangularArbitrageParams","name":"params","type":"tuple","components":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"address","name":"tokenC","type":"address"},{"internalType":"address","name":"poolAB","type":"address"},{"internalType":"address","name":"poolBC","type":"address"},{"internalType":"address","name":"poolCA","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"minProfit","type":"uint256"},{"internalType":"bytes","name":"swapDataAB","type":"bytes"},{"internalType":"bytes","name":"swapDataBC","type":"bytes"},{"internalType":"bytes","name":"swapDataCA","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"executeTriangularArbitrage"},{"inputs":[],"stateMutability":"view","type":"function","name":"flashSwapper","outputs":[{"internalType":"contract IFlashSwapper","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"view","type":"function","name":"isSwapSelectorAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"removeSwapSelector"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"requestEmergencyWithdraw"},{"inputs":[{"internalType":"address","name":"caller","type":"address"},{"internalType":"bool","name":"authorized","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setAuthorizedCaller"},{"inputs":[{"internalType":"address","name":"dex","type":"address"},{"internalType":"bool","name":"authorized","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setAuthorizedDEX"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"addSwapSelector(bytes4)":{"params":{"selector":"The function selector to allow"}},"calculateArbitrageProfit((address[],address[],uint256[],bytes[],uint256))":{"details":"Simulates the arbitrage execution without state changes to estimate profitability. Useful for MEV bots to determine if an arbitrage opportunity is worth pursuing","params":{"params":"The arbitrage parameters to simulate"},"returns":{"expectedProfit":"The estimated profit from executing the arbitrage"}},"calculateTriangularArbitrageProfit((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))":{"details":"Simulates the triangular arbitrage without state changes to estimate profitability","params":{"params":"The triangular arbitrage parameters to simulate"},"returns":{"expectedProfit":"The estimated profit in tokenA from the triangular arbitrage"}},"cancelEmergencyWithdraw(bytes32)":{"params":{"requestId":"The ID of the emergency withdrawal request to cancel"}},"executeArbitrage((address[],address[],uint256[],bytes[],uint256))":{"details":"Performs a series of swaps across different pools to exploit price differences. The function validates that the final profit meets the minimum requirement","params":{"params":"The arbitrage parameters including tokens, pools, amounts, and swap data"}},"executeEmergencyWithdraw(bytes32)":{"params":{"requestId":"The ID of the emergency withdrawal request"}},"executeTriangularArbitrage((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))":{"details":"Specialized function for 3-token circular arbitrage. More gas efficient than general arbitrage for this specific case","params":{"params":"The triangular arbitrage parameters"}},"isSwapSelectorAllowed(bytes4)":{"params":{"selector":"The function selector to check"}},"owner()":{"details":"Returns the address of the current owner."},"removeSwapSelector(bytes4)":{"params":{"selector":"The function selector to disallow"}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"requestEmergencyWithdraw(address,uint256)":{"params":{"amount":"The amount of tokens to withdraw","token":"The address of the token to withdraw (address(0) for ETH)"}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{"addSwapSelector(bytes4)":{"notice":"Add an allowed swap function selector"},"calculateArbitrageProfit((address[],address[],uint256[],bytes[],uint256))":{"notice":"Calculates the expected profit from a multi-hop arbitrage"},"calculateTriangularArbitrageProfit((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))":{"notice":"Calculates the expected profit from a triangular arbitrage"},"cancelEmergencyWithdraw(bytes32)":{"notice":"Cancel a pending emergency withdrawal request"},"executeArbitrage((address[],address[],uint256[],bytes[],uint256))":{"notice":"Executes a multi-hop arbitrage across multiple pools"},"executeEmergencyWithdraw(bytes32)":{"notice":"Execute a previously requested emergency withdrawal"},"executeTriangularArbitrage((address,address,address,address,address,address,uint256,uint256,bytes,bytes,bytes))":{"notice":"Executes a triangular arbitrage (A->B->C->A)"},"isSwapSelectorAllowed(bytes4)":{"notice":"Check if a function selector is allowed for swaps"},"removeSwapSelector(bytes4)":{"notice":"Remove an allowed swap function selector"},"requestEmergencyWithdraw(address,uint256)":{"notice":"Request an emergency withdrawal with timelock protection"}},"version":1}},"settings":{"remappings":["@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@uniswap/v2-core/=lib/v2-core/contracts/","@uniswap/v3-core/=lib/v3-core/contracts/","Algebra/=lib/Algebra/src/","balancer-v2-monorepo/=lib/balancer-v2-monorepo/","curve-contract/=lib/curve-contract/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/","smart-contracts/=lib/smart-contracts/","v2-core/=lib/v2-core/contracts/","v3-core/=lib/v3-core/","v3-periphery/=lib/v3-periphery/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/core/ArbitrageExecutor.sol":"ArbitrageExecutor"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x75a4ee64c68dbd5f38bddd06e664a64c8271b4caa554fb6f0607dfd672bb4bf3","urls":["bzz-raw://0c4e6cb30d3601e2f7af5af09e265508147cb275a8dcd99d6f7363645cc56867","dweb:/ipfs/QmNgFkoXNWoUbAyw71rr1sKQ95Rj2GfvYiWg79xEYDn2NY"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236","urls":["bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02","dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd"],"license":"MIT"},"src/core/ArbitrageExecutor.sol":{"keccak256":"0x531c01f61411e4f8a15018be512af4d45ee3b78bafdfd18ad962314820060e28","urls":["bzz-raw://74ca63c03c2d3d22a4324b1bebb327605e8f3557a1629a2e4c43ee359c00685c","dweb:/ipfs/QmQkHRyfEZBJSmNzpWZVKopJLMxgUbZAhCFsZ4JTFuEGYQ"],"license":"MIT"},"src/interfaces/IArbitrage.sol":{"keccak256":"0x98aad39d434dd6b13d0f1e313c9afaa732ac6fc89e33d1be15999a221549de6d","urls":["bzz-raw://e853e0e5269683ca36ec4a7ec27403e2a07d48dee88846ce5ad48910edc012e1","dweb:/ipfs/QmWuFD5qfmzMc2PscMDqTfd4RUvPs3fnPeRu3VxGNTe4j5"],"license":"MIT"},"src/interfaces/IFlashSwapper.sol":{"keccak256":"0x61c05e0f7e8be39b7e5615cafc57ff719f16b9bd356921d9bd9bb96162090ca5","urls":["bzz-raw://31354ca48b047f91eb06417c6d96f2ae4e9ee9e853ca088a54aded8d74045758","dweb:/ipfs/Qmc8LF6fwYqPLmqQUnJttqJA2adWyXJSwUiwpqvcqbvnG6"],"license":"MIT"},"src/libraries/AlgebraMath.sol":{"keccak256":"0xa362bd89b481ce9f975a32e3d2a3910723fd8e0e583c4b209ba1fbe9e3dcfec9","urls":["bzz-raw://9d12ba885347b8928a3a775fa329f25c92e9fc628d52b07da0931db0f9ba590a","dweb:/ipfs/QmTZ2td5vs2yfPzhKkwJoo6s6sKaECN9rZBMxsk6UHH8vG"],"license":"MIT"},"src/libraries/BalancerMath.sol":{"keccak256":"0x158fbaaadf9afbb7e89703562aa8b6f69c92c1f8ab9456951c334ed11e246577","urls":["bzz-raw://e7b6bfab17ef61f9c9751a6c2138fb184d68e94a8ed3b45ee2abbe11596c4f75","dweb:/ipfs/QmW37Ti2bK4WENKecyJbFyG2VsMsGuUkda1yb46buefZcs"],"license":"MIT"},"src/libraries/CurveMath.sol":{"keccak256":"0xa23186d31039409d31690b3f4ee1c56065ab8cf063ebe51ac1118f03f4322a24","urls":["bzz-raw://488d1dc2ed04075baaf39bb9c6337eb4f747ee0a69123e0cdcc15fa51c31f7cb","dweb:/ipfs/QmZZAXKNMjstTjLuChmgVE1m8zbHbsE1qrp9itJpwYfMKx"],"license":"MIT"},"src/libraries/DEXMath.sol":{"keccak256":"0xe0702bcd32a9a29e800f50734fb4c6ba80c1ed1c38dc7e1d01822c5fa51664a3","urls":["bzz-raw://7515b1cf1fd022bb2cdb924b911fa2313d989800cde85fbb73adbed1e83821ac","dweb:/ipfs/QmNrVDotWJ44VFJqqcQSSPHdvcJb72khvj9vwqRif4jSJn"],"license":"MIT"},"src/libraries/UniswapV3Math.sol":{"keccak256":"0xf55a578f220c42853d4b343e0bf5890ad219e7a2c7889abc7097e70e0ad94f62","urls":["bzz-raw://f92257e0f0d1483b5556281cd12af3844d5ba472a3be47f2395f9052abd29c6f","dweb:/ipfs/QmUJXXffyc1gfFeeAxio5X5r3ErJnREaYsMCWc2cExxSLb"],"license":"MIT"}},"version":1},"id":7} |