aspens 0.7.0

Aspens crosschain trading SDK
Documentation
1
{"abi":[{"type":"fallback","stateMutability":"nonpayable"},{"type":"function","name":"MIN_ORDER_SIZE","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"NATIVE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"WITHDRAW_EPOCH","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositFor","inputs":[{"name":"_account","type":"address","internalType":"address"},{"name":"_token","type":"address","internalType":"address"},{"name":"_amount","type":"uint160","internalType":"uint160"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositNative","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositNativeFor","inputs":[{"name":"_account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"factory","inputs":[],"outputs":[{"name":"_factory","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"maintenanceAccrued","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maintenanceAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"maintenanceBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"operatorAccrued","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorAdmin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"operatorBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"_owner","type":"address","internalType":"address"}],"stateMutability":"pure"},{"type":"function","name":"setOperatorAdmin","inputs":[{"name":"_newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperatorFee","inputs":[{"name":"_recipient","type":"address","internalType":"address"},{"name":"_bps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWithdrawEpochCap","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_cap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settleBatch","inputs":[{"name":"_deltas","type":"tuple[]","internalType":"struct MidribV3.SettleDelta[]","components":[{"name":"user","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"delta","type":"int256","internalType":"int256"}]},{"name":"_volumes","type":"tuple[]","internalType":"struct MidribV3.TokenVolume[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"grossVolume","type":"uint256","internalType":"uint256"}]},{"name":"_nonce","type":"uint256","internalType":"uint256"},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settleFees","inputs":[{"name":"_token","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"tradeBalance","inputs":[{"name":"holder","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"usedSettleNonces","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"used","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"usedWithdrawNonces","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"used","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"_version","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"withdraw","inputs":[{"name":"_v","type":"tuple","internalType":"struct MidribV3.WithdrawalVoucher","components":[{"name":"account","type":"address","internalType":"address"},{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"expiry","type":"uint256","internalType":"uint256"}]},{"name":"_signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawEpochCap","inputs":[{"name":"token","type":"address","internalType":"address"}],"outputs":[{"name":"cap","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawnInEpoch","inputs":[{"name":"token","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"FeesSettled","inputs":[{"name":"token","type":"address","indexed":true,"internalType":"address"},{"name":"maintenanceRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"maintenanceAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"operatorRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"operatorAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NetSettled","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"delta","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"OperatorAdminSet","inputs":[{"name":"oldAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OperatorFeeSet","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"bps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"TokenDeposited","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint160","indexed":false,"internalType":"uint160"}],"anonymous":false},{"type":"event","name":"Withdrawn","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"tokenContract","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"nonce","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"FEE_TOO_HIGH","inputs":[{"name":"totalBps","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"INSUFFICIENT_BALANCE","inputs":[{"name":"available","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint160","internalType":"uint160"}]},{"type":"error","name":"INVALID_SIGNER","inputs":[]},{"type":"error","name":"MINIMUM_ORDER_AMOUNT","inputs":[{"name":"amount","type":"uint160","internalType":"uint160"}]},{"type":"error","name":"Reentrancy","inputs":[]},{"type":"error","name":"SETTLE_NONCE_ALREADY_USED","inputs":[]},{"type":"error","name":"SETTLE_NOT_CONSERVED","inputs":[]},{"type":"error","name":"UNAUTHORIZED_CALLER","inputs":[]},{"type":"error","name":"WITHDRAW_NONCE_ALREADY_USED","inputs":[]},{"type":"error","name":"WITHDRAW_RATE_LIMITED","inputs":[{"name":"cap","type":"uint256","internalType":"uint256"},{"name":"attempted","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"WITHDRAW_VOUCHER_EXPIRED","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_OPERATOR","inputs":[]},{"type":"error","name":"ZERO_ADDRESS_OPERATOR_ADMIN","inputs":[]},{"type":"error","name":"ZERO_AMOUNT","inputs":[]}],"bytecode":{"object":"0x61012060405234801561001157600080fd5b50306080524660a05260608061002561008e565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100dc9050565b60408051808201909152600681526526b4b23934b160d11b602082015260606100b760036100bd565b90509091565b6060604051604081016040526001815282603001602082015392915050565b60805160a05160c05160e05161010051612b6e610120600039600061223d015260006122f7015260006122d1015260006122810152600061225e0152612b6e6000f3fe6080604052600436106101cd5760003560e01c8063742960c1116100f7578063a4e0c18111610095578063c45a015511610064578063c45a0155146105f1578063d3f82d8e14610616578063db6b52461461062b578063e0a273bc1461063357600080fd5b8063a4e0c18114610569578063a78842ee1461057e578063ac9650d81461059e578063c4109253146105be57600080fd5b8063892d16be116100d1578063892d16be146104d15780638da5cb5b1461050c57806391a775b71461052e578063a0cf0aea1461054157600080fd5b8063742960c1146104445780637e122f531461047c57806384b0196e146104a957600080fd5b80634565fe4a1161016f57806362b629f91161013e57806362b629f9146103bc57806362fe8ee1146103e95780636de07157146103ff578063719d5f831461041f57600080fd5b80634565fe4a146103205780634e3250cf146103605780634e5c6e4e1461038057806354fd4d50146103a057600080fd5b806326ac1b1c116101ab57806326ac1b1c146102745780632d2cfb66146102945780632e673446146102b4578063426aabc2146102f357600080fd5b806303fde255146101d2578063127effb2146101f457806319d5f0c314610231575b600080fd5b3480156101de57600080fd5b506101f26101ed366004612431565b610653565b005b34801561020057600080fd5b50600554610214906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023d57600080fd5b5061026661024c366004612431565b600060208181529281526040808220909352908152205481565b604051908152602001610228565b34801561028057600080fd5b506101f261028f36600461246a565b610699565b3480156102a057600080fd5b506101f26102af36600461249f565b610849565b3480156102c057600080fd5b506102e060003660011981013560f090811c909103603c0135901c905090565b60405161ffff9091168152602001610228565b3480156102ff57600080fd5b5061026661030e3660046124cb565b60036020526000908152604090205481565b34801561032c57600080fd5b5061035061033b3660046124e8565b60016020526000908152604090205460ff1681565b6040519015158152602001610228565b34801561036c57600080fd5b506101f261037b366004612501565b6108ad565b34801561038c57600080fd5b506101f261039b366004612595565b610b22565b3480156103ac57600080fd5b5060405160038152602001610228565b3480156103c857600080fd5b506102666103d73660046124cb565b60076020526000908152604090205481565b3480156103f557600080fd5b50610266610e1081565b34801561040b57600080fd5b506101f261041a3660046124cb565b610ef8565b34801561042b57600080fd5b503660011981013560f01c90036028013560601c610214565b34801561045057600080fd5b5061026661045f36600461249f565b600460209081526000928352604080842090915290825290205481565b34801561048857600080fd5b506102666104973660046124cb565b60086020526000908152604090205481565b3480156104b557600080fd5b506104be610fef565b6040516102289796959493929190612654565b3480156104dd57600080fd5b506103506104ec36600461249f565b600260209081526000928352604080842090915290825290205460ff1681565b34801561051857600080fd5b503660011981013560f01c90033560601c610214565b6101f261053c3660046124cb565b611032565b34801561054d57600080fd5b5061021473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561057557600080fd5b50610214611075565b34801561058a57600080fd5b506101f26105993660046124cb565b6110a9565b6105b16105ac366004612708565b61123c565b604051610228919061277f565b3480156105ca57600080fd5b506005546102e09074010000000000000000000000000000000000000000900461ffff1681565b3480156105fd57600080fd5b503660011981013560f01c90036014013560601c610214565b34801561062257600080fd5b506102e0600a81565b6101f2611261565b34801561063f57600080fd5b506101f261064e366004612847565b6112a3565b3068929eee149b4bd2126854036106725763ab143c066000526004601cfd5b3068929eee149b4bd21268556106893383836117d4565b3868929eee149b4bd21268555050565b6106a1611075565b6001600160a01b0316336001600160a01b0316146106eb576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008161ffff1611801561070657506001600160a01b038216155b1561073d576040517fe51bf64600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008161ffff1661076360003660011981013560f090811c909103603c0135901c905090565b61ffff166107719190612958565b90506127108111156107b7576040517f5c9bdcc6000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b600580546001600160a01b0385167fffffffffffffffffffff0000000000000000000000000000000000000000000090911681177401000000000000000000000000000000000000000061ffff861690810291909117909255604051918252907fd5650eed710468f7e377b318748df27ca6d4546f13b80aa9d6eec8c9abf23faa9060200160405180910390a2505050565b3660011981013560f01c90033560601c3314610891576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03909116600090815260036020526040902055565b3068929eee149b4bd2126854036108cc5763ab143c066000526004601cfd5b3068929eee149b4bd2126855806001600160a01b031660000361091b576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a6001600160a01b038216101561096a576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016107ae565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee919061296b565b9050610a0a6001600160a01b0384811690339030908616611af2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038616906370a0823190602401602060405180830381865afa158015610a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a90919061296b565b610a9a9190612984565b6001600160a01b03808716600081815260208181526040808320948a16808452949091529020805484019055919250907ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d5610af484611b59565b6040516001600160a01b03909116815260200160405180910390a350503868929eee149b4bd2126855505050565b3068929eee149b4bd212685403610b415763ab143c066000526004601cfd5b3068929eee149b4bd2126855610b58838383611b83565b8260800135421115610b96576040517fcfb1238700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026000610ba760208601866124cb565b6001600160a01b03168152602080820192909252604090810160009081206060870135825290925290205460ff1615610c0c576040517f2152b76d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160026000610c1f60208701876124cb565b6001600160a01b031681526020808201929092526040908101600090812060608801358252835290812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169315159390931790925581908190610c87908701876124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856020016020810190610cbc91906124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000205490508084604001351115610d3d5780610cf98560400135611b59565b6040517ff075336700000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b031660248201526044016107ae565b610d5a610d5060408601602087016124cb565b8560400135611ccb565b610d68604085013582612984565b600080610d7860208801886124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000206000866020016020810190610dad91906124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316846020016020810190610e0291906124cb565b6001600160a01b031603610e3957610e346040850135610e2560208701876124cb565b6001600160a01b031690611da3565b610e6d565b610e6d610e4960208601866124cb565b60408601803590610e5d90602089016124cb565b6001600160a01b03169190611dc3565b610e7d60408501602086016124cb565b6001600160a01b0316610e9360208601866124cb565b6001600160a01b03167f91fb9d98b786c57d74c099ccd2beca1739e9f6a81fb49001ca465c4b7591bbe286604001358760600135604051610ede929190918252602082015260400190565b60405180910390a3503868929eee149b4bd2126855505050565b6000610f02611075565b9050336001600160a01b03821614610f46576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610f86576040517fccd2609c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384811691821790925560405190918316907f6238bd8cf686042e0573e875b5120babc506c96bf63da70f5b8fdec308feb4c290600090a35050565b7f0f000000000000000000000000000000000000000000000000000000000000006060806000808083611020611e1c565b97989097965046955030945091925090565b3068929eee149b4bd2126854036110515763ab143c066000526004601cfd5b3068929eee149b4bd212685561106681611e62565b3868929eee149b4bd212685550565b6006546000906001600160a01b0316806110a1573660011981013560f01c9003603e013560601c6110a3565b805b91505090565b3068929eee149b4bd2126854036110c85763ab143c066000526004601cfd5b3068929eee149b4bd21268556001600160a01b038116600090815260076020526040902054801561113a576001600160a01b03821660008181526007602090815260408083208390553660011981013560f01c90036028013560601c8352828252808320938352929052208054820190555b6001600160a01b03808316600090815260086020526040902054600554909116811580159061117157506001600160a01b03811615155b156111b3576001600160a01b038085166000818152600860209081526040808320839055938516825281815283822092825291909152208054830190556111b8565b600091505b6001600160a01b0381163660011981013560f01c90036028013560601c6001600160a01b0316856001600160a01b03167f5c10360cd7c1ee27bdd881695aca458471acf57fec9bdd94efc9e11a3b5a8e268686604051611222929190918252602082015260400190565b60405180910390a45050503868929eee149b4bd212685550565b6060341561124957600080fd5b61125b6112568484611f6d565b612004565b92915050565b3068929eee149b4bd2126854036112805763ab143c066000526004601cfd5b3068929eee149b4bd212685561129533611e62565b3868929eee149b4bd2126855565b3068929eee149b4bd2126854036112c25763ab143c066000526004601cfd5b3068929eee149b4bd21268556112dd87878787878787612015565b60008381526001602052604090205460ff1615611326576040517f539110c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055869061138060003660011981013560f090811c909103603c0135901c905090565b60055490915074010000000000000000000000000000000000000000900461ffff1660005b838110156115e05760008b8b838181106113c1576113c1612997565b90506060020160200160208101906113d991906124cb565b9050600160005b8381101561143b57826001600160a01b03168e8e8381811061140457611404612997565b905060600201602001602081019061141c91906124cb565b6001600160a01b031603611433576000915061143b565b6001016113e0565b50806114485750506115d8565b6000805b878110156114c857836001600160a01b03168f8f8381811061147057611470612997565b905060600201602001602081019061148891906124cb565b6001600160a01b0316036114c0578e8e828181106114a8576114a8612997565b90506060020160400135826114bd91906129c6565b91505b60010161144c565b5060006114d68d8d8661218e565b905060006127106114eb61ffff8a16846129ee565b6114f59190612a05565b9050600061271061150a61ffff8a16856129ee565b6115149190612a05565b90506115286115238284612958565b612213565b61153190612a40565b8414611569576040517f053b624b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561159d576001600160a01b03861660009081526007602052604081208054849290611597908490612958565b90915550505b80156115d1576001600160a01b038616600090815260086020526040812080548392906115cb908490612958565b90915550505b5050505050505b6001016113a5565b5060005b838110156117bb57368b8b838181106115ff576115ff612997565b60600291909101915060009050808061161b60208501856124cb565b6001600160a01b03166001600160a01b03168152602001908152602001600020600083602001602081019061165091906124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506000826040013561168383612213565b61168d91906129c6565b905060008112156116d4576040517ff075336700000000000000000000000000000000000000000000000000000000815260048101839052600060248201526044016107ae565b806000806116e560208701876124cb565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061171a91906124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555082602001602081019061175191906124cb565b6001600160a01b031661176760208501856124cb565b6001600160a01b03167fcb92bc64cc5c68703b92c9fcf4b3a37a69be04873e614837f8aeacfa8589e8f585604001356040516117a591815260200190565b60405180910390a35050508060010190506115e4565b505050503868929eee149b4bd212685550505050505050565b806001600160a01b0316600003611817576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a6001600160a01b0382161015611866576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016107ae565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600091908416906370a0823190602401602060405180830381865afa1580156118c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ed919061296b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611974919061296b565b9050826001600160a01b03168210156119cb576040517ff0753367000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03841660248201526044016107ae565b6119e56001600160a01b0385811690879030908716611af2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038716906370a0823190602401602060405180830381865afa158015611a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6b919061296b565b611a759190612984565b6001600160a01b03808816600081815260208181526040808320948b16808452949091529020805484019055919250907ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d5611acf84611b59565b6040516001600160a01b03909116815260200160405180910390a3505050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af18060016000511416611b4a57803d873b151710611b4a57637939f4246000526004601cfd5b50600060605260405250505050565b6000740100000000000000000000000000000000000000008210611b7f57611b7f61222d565b5090565b60007f232a4ef2241135df893cd0d3f880df0ff65115b1f538078c78353f91a8307702611bb360208601866124cb565b611bc360408701602088016124cb565b6040805160208101949094526001600160a01b03928316848201529116606083810191909152908601356080838101919091529086013560a083015285013560c082015260e0016040516020818303038152906040528051906020012090506000611c2d8261223b565b90506000611c60826020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b90506000611c6f828787612353565b90503660011981013560f01c90033560601c6001600160a01b03821614611cc2576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6001600160a01b03821660009081526003602052604081205490819003611cf157505050565b6000611cff610e1042612a05565b6001600160a01b038516600090815260046020908152604080832084845290915281205491925090611d32908590612958565b905082811115611d78576040517f5e7fe40c00000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016107ae565b6001600160a01b03909416600090815260046020908152604080832093835292905220929092555050565b60003860003884865af1611dbf5763b12d13eb6000526004601cfd5b5050565b81601452806034526fa9059cbb00000000000000000000000060005260206000604460106000875af18060016000511416611e1157803d853b151710611e11576390b8ec186000526004601cfd5b506000603452505050565b60408051808201909152600681527f4d6964726962000000000000000000000000000000000000000000000000000060208201526060611e5c60036123fa565b90509091565b34600003611e9c576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a341015611ee2576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03341660048201526024016107ae565b6001600160a01b03811660008181526020818152604080832073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee80855292529091208054349081019091559091907ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d590611f4f90611b59565b6040516001600160a01b03909116815260200160405180910390a350565b600060405190506020815281816020015280604001808360051b808684378201808515611fec575b835187018035602082018337600038823584305af4611fb7573d6000873e3d86fd5b5082810384523d815260209384019381013d6000823e60003d8201523d01601f0167ffffffffffffffe0169050818410611f95575b806040528485820360401b1794505050505092915050565b8060401c8167ffffffffffffffff16f35b60007ff6472b53c7bf87555bdd86e4ea01a600b45c6783d98b337d089a5cb0e2af8e8d888860405160200161204b929190612a78565b604051602081830303815290604052805190602001208787604051602001612074929190612aeb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091526080810185905260a00160405160208183030381529060405280519060200120905060006120ec8261223b565b9050600061211f826020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9050600061212e828787612353565b90503660011981013560f01c90033560601c6001600160a01b03821614612181576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b6000805b8381101561220657826001600160a01b03168585838181106121b6576121b6612997565b6121cc92602060409092020190810191506124cb565b6001600160a01b0316036121fe578484828181106121ec576121ec612997565b9050604002016020013591505061220c565b600101612192565b50600090505b9392505050565b6000808212612220575090565b61222861222d565b919050565b6335278d126000526004601cfd5b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f000000000000000000000000000000000000000000000000000000000000000046141661232e5750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b6000604051826040811461236f57604181146123af57506123e4565b60208581013560ff81901c601b0190915285356040527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526123c1565b604085013560001a6020526040856040375b5084600052602060016080600060015afa5191506000606052806040523d6123f2575b638baa579f6000526004601cfd5b509392505050565b6060604051604081016040526001815282603001602082015392915050565b6001600160a01b038116811461242e57600080fd5b50565b6000806040838503121561244457600080fd5b823561244f81612419565b9150602083013561245f81612419565b809150509250929050565b6000806040838503121561247d57600080fd5b823561248881612419565b9150602083013561ffff8116811461245f57600080fd5b600080604083850312156124b257600080fd5b82356124bd81612419565b946020939093013593505050565b6000602082840312156124dd57600080fd5b813561220c81612419565b6000602082840312156124fa57600080fd5b5035919050565b60008060006060848603121561251657600080fd5b833561252181612419565b9250602084013561253181612419565b9150604084013561254181612419565b809150509250925092565b60008083601f84011261255e57600080fd5b50813567ffffffffffffffff81111561257657600080fd5b60208301915083602082850101111561258e57600080fd5b9250929050565b600080600083850360c08112156125ab57600080fd5b60a08112156125b957600080fd5b5083925060a084013567ffffffffffffffff8111156125d757600080fd5b6125e38682870161254c565b9497909650939450505050565b6000815180845260005b81811015612616576020818501810151868301820152016125fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061268f60e08301896125f0565b82810360408401526126a181896125f0565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156126f75783518352602093840193909201916001016126d9565b50909b9a5050505050505050505050565b6000806020838503121561271b57600080fd5b823567ffffffffffffffff81111561273257600080fd5b8301601f8101851361274357600080fd5b803567ffffffffffffffff81111561275a57600080fd5b8560208260051b840101111561276f57600080fd5b6020919091019590945092505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156127f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526127e18583516125f0565b945060209384019391909101906001016127a7565b50929695505050505050565b60008083601f84011261281457600080fd5b50813567ffffffffffffffff81111561282c57600080fd5b6020830191508360208260061b850101111561258e57600080fd5b60008060008060008060006080888a03121561286257600080fd5b873567ffffffffffffffff81111561287957600080fd5b8801601f81018a1361288a57600080fd5b803567ffffffffffffffff8111156128a157600080fd5b8a60206060830284010111156128b657600080fd5b60209182019850965088013567ffffffffffffffff8111156128d757600080fd5b6128e38a828b01612802565b90965094505060408801359250606088013567ffffffffffffffff81111561290a57600080fd5b6129168a828b0161254c565b989b979a50959850939692959293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561125b5761125b612929565b60006020828403121561297d57600080fd5b5051919050565b8181038181111561125b5761125b612929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820182811260008312801582168215821617156129e6576129e6612929565b505092915050565b808202811582820484141761125b5761125b612929565b600082612a3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f80000000000000000000000000000000000000000000000000000000000000008203612a7157612a71612929565b5060000390565b6020808252810182905260008360408301825b85811015612ae1578235612a9e81612419565b6001600160a01b031682526020830135612ab781612419565b6001600160a01b031660208301526040838101359083015260609283019290910190600101612a8b565b5095945050505050565b6020808252810182905260008360408301825b85811015612ae1578235612b1181612419565b6001600160a01b031682526020838101359083015260409283019290910190600101612afe56fea2646970667358221220b968ab5ac020320d1550b93537bf7759e2d689dfc78e76daa92505480a48b07c64736f6c63430008220033","sourceMap":"3503:27898:31:-:0;;;;;;;;;;;;-1:-1:-1;3066:4:23;3028:45;;3100:13;3083:30;;3124:18;;3240:23;:21;:23::i;:::-;3340:22;;;;;;;3454:25;;;;;;;;;3489:26;;;;3525:32;;;;3737:4;3731:11;;3802:16;3792:27;;3843:12;;;3836:30;;;;3890:12;;;3883:33;3954:9;3947:4;3940:12;;3933:31;4002:9;3995:4;3988:12;;3981:31;4055:4;4042:18;;4093:34;;-1:-1:-1;3503:27898:31;;-1:-1:-1;3503:27898:31;30863:318;31078:16;;;;;;;;;;;;-1:-1:-1;;;31078:16:31;;;;30976:19;31156:18;4204:1;31156:16;:18::i;:::-;31145:29;;30863:318;;:::o;214:334:34:-;264:21;378:4;372:11;416:4;413:1;409:12;403:4;396:26;445:1;442;435:12;504:1;500:2;496:10;489:4;486:1;482:12;474:33;531:1;214:334;-1:-1:-1;;214:334:34:o;3503:27898:31:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101cd5760003560e01c8063742960c1116100f7578063a4e0c18111610095578063c45a015511610064578063c45a0155146105f1578063d3f82d8e14610616578063db6b52461461062b578063e0a273bc1461063357600080fd5b8063a4e0c18114610569578063a78842ee1461057e578063ac9650d81461059e578063c4109253146105be57600080fd5b8063892d16be116100d1578063892d16be146104d15780638da5cb5b1461050c57806391a775b71461052e578063a0cf0aea1461054157600080fd5b8063742960c1146104445780637e122f531461047c57806384b0196e146104a957600080fd5b80634565fe4a1161016f57806362b629f91161013e57806362b629f9146103bc57806362fe8ee1146103e95780636de07157146103ff578063719d5f831461041f57600080fd5b80634565fe4a146103205780634e3250cf146103605780634e5c6e4e1461038057806354fd4d50146103a057600080fd5b806326ac1b1c116101ab57806326ac1b1c146102745780632d2cfb66146102945780632e673446146102b4578063426aabc2146102f357600080fd5b806303fde255146101d2578063127effb2146101f457806319d5f0c314610231575b600080fd5b3480156101de57600080fd5b506101f26101ed366004612431565b610653565b005b34801561020057600080fd5b50600554610214906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561023d57600080fd5b5061026661024c366004612431565b600060208181529281526040808220909352908152205481565b604051908152602001610228565b34801561028057600080fd5b506101f261028f36600461246a565b610699565b3480156102a057600080fd5b506101f26102af36600461249f565b610849565b3480156102c057600080fd5b506102e060003660011981013560f090811c909103603c0135901c905090565b60405161ffff9091168152602001610228565b3480156102ff57600080fd5b5061026661030e3660046124cb565b60036020526000908152604090205481565b34801561032c57600080fd5b5061035061033b3660046124e8565b60016020526000908152604090205460ff1681565b6040519015158152602001610228565b34801561036c57600080fd5b506101f261037b366004612501565b6108ad565b34801561038c57600080fd5b506101f261039b366004612595565b610b22565b3480156103ac57600080fd5b5060405160038152602001610228565b3480156103c857600080fd5b506102666103d73660046124cb565b60076020526000908152604090205481565b3480156103f557600080fd5b50610266610e1081565b34801561040b57600080fd5b506101f261041a3660046124cb565b610ef8565b34801561042b57600080fd5b503660011981013560f01c90036028013560601c610214565b34801561045057600080fd5b5061026661045f36600461249f565b600460209081526000928352604080842090915290825290205481565b34801561048857600080fd5b506102666104973660046124cb565b60086020526000908152604090205481565b3480156104b557600080fd5b506104be610fef565b6040516102289796959493929190612654565b3480156104dd57600080fd5b506103506104ec36600461249f565b600260209081526000928352604080842090915290825290205460ff1681565b34801561051857600080fd5b503660011981013560f01c90033560601c610214565b6101f261053c3660046124cb565b611032565b34801561054d57600080fd5b5061021473eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561057557600080fd5b50610214611075565b34801561058a57600080fd5b506101f26105993660046124cb565b6110a9565b6105b16105ac366004612708565b61123c565b604051610228919061277f565b3480156105ca57600080fd5b506005546102e09074010000000000000000000000000000000000000000900461ffff1681565b3480156105fd57600080fd5b503660011981013560f01c90036014013560601c610214565b34801561062257600080fd5b506102e0600a81565b6101f2611261565b34801561063f57600080fd5b506101f261064e366004612847565b6112a3565b3068929eee149b4bd2126854036106725763ab143c066000526004601cfd5b3068929eee149b4bd21268556106893383836117d4565b3868929eee149b4bd21268555050565b6106a1611075565b6001600160a01b0316336001600160a01b0316146106eb576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008161ffff1611801561070657506001600160a01b038216155b1561073d576040517fe51bf64600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008161ffff1661076360003660011981013560f090811c909103603c0135901c905090565b61ffff166107719190612958565b90506127108111156107b7576040517f5c9bdcc6000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b600580546001600160a01b0385167fffffffffffffffffffff0000000000000000000000000000000000000000000090911681177401000000000000000000000000000000000000000061ffff861690810291909117909255604051918252907fd5650eed710468f7e377b318748df27ca6d4546f13b80aa9d6eec8c9abf23faa9060200160405180910390a2505050565b3660011981013560f01c90033560601c3314610891576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03909116600090815260036020526040902055565b3068929eee149b4bd2126854036108cc5763ab143c066000526004601cfd5b3068929eee149b4bd2126855806001600160a01b031660000361091b576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a6001600160a01b038216101561096a576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016107ae565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156109ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ee919061296b565b9050610a0a6001600160a01b0384811690339030908616611af2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038616906370a0823190602401602060405180830381865afa158015610a6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a90919061296b565b610a9a9190612984565b6001600160a01b03808716600081815260208181526040808320948a16808452949091529020805484019055919250907ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d5610af484611b59565b6040516001600160a01b03909116815260200160405180910390a350503868929eee149b4bd2126855505050565b3068929eee149b4bd212685403610b415763ab143c066000526004601cfd5b3068929eee149b4bd2126855610b58838383611b83565b8260800135421115610b96576040517fcfb1238700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026000610ba760208601866124cb565b6001600160a01b03168152602080820192909252604090810160009081206060870135825290925290205460ff1615610c0c576040517f2152b76d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160026000610c1f60208701876124cb565b6001600160a01b031681526020808201929092526040908101600090812060608801358252835290812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169315159390931790925581908190610c87908701876124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856020016020810190610cbc91906124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000205490508084604001351115610d3d5780610cf98560400135611b59565b6040517ff075336700000000000000000000000000000000000000000000000000000000815260048101929092526001600160a01b031660248201526044016107ae565b610d5a610d5060408601602087016124cb565b8560400135611ccb565b610d68604085013582612984565b600080610d7860208801886124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000206000866020016020810190610dad91906124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0316846020016020810190610e0291906124cb565b6001600160a01b031603610e3957610e346040850135610e2560208701876124cb565b6001600160a01b031690611da3565b610e6d565b610e6d610e4960208601866124cb565b60408601803590610e5d90602089016124cb565b6001600160a01b03169190611dc3565b610e7d60408501602086016124cb565b6001600160a01b0316610e9360208601866124cb565b6001600160a01b03167f91fb9d98b786c57d74c099ccd2beca1739e9f6a81fb49001ca465c4b7591bbe286604001358760600135604051610ede929190918252602082015260400190565b60405180910390a3503868929eee149b4bd2126855505050565b6000610f02611075565b9050336001600160a01b03821614610f46576040517fe15e56c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038216610f86576040517fccd2609c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384811691821790925560405190918316907f6238bd8cf686042e0573e875b5120babc506c96bf63da70f5b8fdec308feb4c290600090a35050565b7f0f000000000000000000000000000000000000000000000000000000000000006060806000808083611020611e1c565b97989097965046955030945091925090565b3068929eee149b4bd2126854036110515763ab143c066000526004601cfd5b3068929eee149b4bd212685561106681611e62565b3868929eee149b4bd212685550565b6006546000906001600160a01b0316806110a1573660011981013560f01c9003603e013560601c6110a3565b805b91505090565b3068929eee149b4bd2126854036110c85763ab143c066000526004601cfd5b3068929eee149b4bd21268556001600160a01b038116600090815260076020526040902054801561113a576001600160a01b03821660008181526007602090815260408083208390553660011981013560f01c90036028013560601c8352828252808320938352929052208054820190555b6001600160a01b03808316600090815260086020526040902054600554909116811580159061117157506001600160a01b03811615155b156111b3576001600160a01b038085166000818152600860209081526040808320839055938516825281815283822092825291909152208054830190556111b8565b600091505b6001600160a01b0381163660011981013560f01c90036028013560601c6001600160a01b0316856001600160a01b03167f5c10360cd7c1ee27bdd881695aca458471acf57fec9bdd94efc9e11a3b5a8e268686604051611222929190918252602082015260400190565b60405180910390a45050503868929eee149b4bd212685550565b6060341561124957600080fd5b61125b6112568484611f6d565b612004565b92915050565b3068929eee149b4bd2126854036112805763ab143c066000526004601cfd5b3068929eee149b4bd212685561129533611e62565b3868929eee149b4bd2126855565b3068929eee149b4bd2126854036112c25763ab143c066000526004601cfd5b3068929eee149b4bd21268556112dd87878787878787612015565b60008381526001602052604090205460ff1615611326576040517f539110c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055869061138060003660011981013560f090811c909103603c0135901c905090565b60055490915074010000000000000000000000000000000000000000900461ffff1660005b838110156115e05760008b8b838181106113c1576113c1612997565b90506060020160200160208101906113d991906124cb565b9050600160005b8381101561143b57826001600160a01b03168e8e8381811061140457611404612997565b905060600201602001602081019061141c91906124cb565b6001600160a01b031603611433576000915061143b565b6001016113e0565b50806114485750506115d8565b6000805b878110156114c857836001600160a01b03168f8f8381811061147057611470612997565b905060600201602001602081019061148891906124cb565b6001600160a01b0316036114c0578e8e828181106114a8576114a8612997565b90506060020160400135826114bd91906129c6565b91505b60010161144c565b5060006114d68d8d8661218e565b905060006127106114eb61ffff8a16846129ee565b6114f59190612a05565b9050600061271061150a61ffff8a16856129ee565b6115149190612a05565b90506115286115238284612958565b612213565b61153190612a40565b8414611569576040517f053b624b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561159d576001600160a01b03861660009081526007602052604081208054849290611597908490612958565b90915550505b80156115d1576001600160a01b038616600090815260086020526040812080548392906115cb908490612958565b90915550505b5050505050505b6001016113a5565b5060005b838110156117bb57368b8b838181106115ff576115ff612997565b60600291909101915060009050808061161b60208501856124cb565b6001600160a01b03166001600160a01b03168152602001908152602001600020600083602001602081019061165091906124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000205490506000826040013561168383612213565b61168d91906129c6565b905060008112156116d4576040517ff075336700000000000000000000000000000000000000000000000000000000815260048101839052600060248201526044016107ae565b806000806116e560208701876124cb565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061171a91906124cb565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555082602001602081019061175191906124cb565b6001600160a01b031661176760208501856124cb565b6001600160a01b03167fcb92bc64cc5c68703b92c9fcf4b3a37a69be04873e614837f8aeacfa8589e8f585604001356040516117a591815260200190565b60405180910390a35050508060010190506115e4565b505050503868929eee149b4bd212685550505050505050565b806001600160a01b0316600003611817576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a6001600160a01b0382161015611866576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016107ae565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152600091908416906370a0823190602401602060405180830381865afa1580156118c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ed919061296b565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038516906370a0823190602401602060405180830381865afa158015611950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611974919061296b565b9050826001600160a01b03168210156119cb576040517ff0753367000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b03841660248201526044016107ae565b6119e56001600160a01b0385811690879030908716611af2565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009082906001600160a01b038716906370a0823190602401602060405180830381865afa158015611a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6b919061296b565b611a759190612984565b6001600160a01b03808816600081815260208181526040808320948b16808452949091529020805484019055919250907ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d5611acf84611b59565b6040516001600160a01b03909116815260200160405180910390a3505050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c52602060006064601c6000895af18060016000511416611b4a57803d873b151710611b4a57637939f4246000526004601cfd5b50600060605260405250505050565b6000740100000000000000000000000000000000000000008210611b7f57611b7f61222d565b5090565b60007f232a4ef2241135df893cd0d3f880df0ff65115b1f538078c78353f91a8307702611bb360208601866124cb565b611bc360408701602088016124cb565b6040805160208101949094526001600160a01b03928316848201529116606083810191909152908601356080838101919091529086013560a083015285013560c082015260e0016040516020818303038152906040528051906020012090506000611c2d8261223b565b90506000611c60826020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b90506000611c6f828787612353565b90503660011981013560f01c90033560601c6001600160a01b03821614611cc2576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b6001600160a01b03821660009081526003602052604081205490819003611cf157505050565b6000611cff610e1042612a05565b6001600160a01b038516600090815260046020908152604080832084845290915281205491925090611d32908590612958565b905082811115611d78576040517f5e7fe40c00000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044016107ae565b6001600160a01b03909416600090815260046020908152604080832093835292905220929092555050565b60003860003884865af1611dbf5763b12d13eb6000526004601cfd5b5050565b81601452806034526fa9059cbb00000000000000000000000060005260206000604460106000875af18060016000511416611e1157803d853b151710611e11576390b8ec186000526004601cfd5b506000603452505050565b60408051808201909152600681527f4d6964726962000000000000000000000000000000000000000000000000000060208201526060611e5c60036123fa565b90509091565b34600003611e9c576040517ff6fa545000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a341015611ee2576040517f7ccfd2ff0000000000000000000000000000000000000000000000000000000081526001600160a01b03341660048201526024016107ae565b6001600160a01b03811660008181526020818152604080832073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee80855292529091208054349081019091559091907ff252e7564622d27c64805f4295d4aed7999599ad484da4eaa1377fc14df9f1d590611f4f90611b59565b6040516001600160a01b03909116815260200160405180910390a350565b600060405190506020815281816020015280604001808360051b808684378201808515611fec575b835187018035602082018337600038823584305af4611fb7573d6000873e3d86fd5b5082810384523d815260209384019381013d6000823e60003d8201523d01601f0167ffffffffffffffe0169050818410611f95575b806040528485820360401b1794505050505092915050565b8060401c8167ffffffffffffffff16f35b60007ff6472b53c7bf87555bdd86e4ea01a600b45c6783d98b337d089a5cb0e2af8e8d888860405160200161204b929190612a78565b604051602081830303815290604052805190602001208787604051602001612074929190612aeb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091526080810185905260a00160405160208183030381529060405280519060200120905060006120ec8261223b565b9050600061211f826020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9050600061212e828787612353565b90503660011981013560f01c90033560601c6001600160a01b03821614612181576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b6000805b8381101561220657826001600160a01b03168585838181106121b6576121b6612997565b6121cc92602060409092020190810191506124cb565b6001600160a01b0316036121fe578484828181106121ec576121ec612997565b9050604002016020013591505061220c565b600101612192565b50600090505b9392505050565b6000808212612220575090565b61222861222d565b919050565b6335278d126000526004601cfd5b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f000000000000000000000000000000000000000000000000000000000000000046141661232e5750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b67190100000000000060005280601a5281603a52604260182090506000603a52919050565b6000604051826040811461236f57604181146123af57506123e4565b60208581013560ff81901c601b0190915285356040527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526123c1565b604085013560001a6020526040856040375b5084600052602060016080600060015afa5191506000606052806040523d6123f2575b638baa579f6000526004601cfd5b509392505050565b6060604051604081016040526001815282603001602082015392915050565b6001600160a01b038116811461242e57600080fd5b50565b6000806040838503121561244457600080fd5b823561244f81612419565b9150602083013561245f81612419565b809150509250929050565b6000806040838503121561247d57600080fd5b823561248881612419565b9150602083013561ffff8116811461245f57600080fd5b600080604083850312156124b257600080fd5b82356124bd81612419565b946020939093013593505050565b6000602082840312156124dd57600080fd5b813561220c81612419565b6000602082840312156124fa57600080fd5b5035919050565b60008060006060848603121561251657600080fd5b833561252181612419565b9250602084013561253181612419565b9150604084013561254181612419565b809150509250925092565b60008083601f84011261255e57600080fd5b50813567ffffffffffffffff81111561257657600080fd5b60208301915083602082850101111561258e57600080fd5b9250929050565b600080600083850360c08112156125ab57600080fd5b60a08112156125b957600080fd5b5083925060a084013567ffffffffffffffff8111156125d757600080fd5b6125e38682870161254c565b9497909650939450505050565b6000815180845260005b81811015612616576020818501810151868301820152016125fa565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e06020820152600061268f60e08301896125f0565b82810360408401526126a181896125f0565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156126f75783518352602093840193909201916001016126d9565b50909b9a5050505050505050505050565b6000806020838503121561271b57600080fd5b823567ffffffffffffffff81111561273257600080fd5b8301601f8101851361274357600080fd5b803567ffffffffffffffff81111561275a57600080fd5b8560208260051b840101111561276f57600080fd5b6020919091019590945092505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b828110156127f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526127e18583516125f0565b945060209384019391909101906001016127a7565b50929695505050505050565b60008083601f84011261281457600080fd5b50813567ffffffffffffffff81111561282c57600080fd5b6020830191508360208260061b850101111561258e57600080fd5b60008060008060008060006080888a03121561286257600080fd5b873567ffffffffffffffff81111561287957600080fd5b8801601f81018a1361288a57600080fd5b803567ffffffffffffffff8111156128a157600080fd5b8a60206060830284010111156128b657600080fd5b60209182019850965088013567ffffffffffffffff8111156128d757600080fd5b6128e38a828b01612802565b90965094505060408801359250606088013567ffffffffffffffff81111561290a57600080fd5b6129168a828b0161254c565b989b979a50959850939692959293505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561125b5761125b612929565b60006020828403121561297d57600080fd5b5051919050565b8181038181111561125b5761125b612929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820182811260008312801582168215821617156129e6576129e6612929565b505092915050565b808202811582820484141761125b5761125b612929565b600082612a3b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007f80000000000000000000000000000000000000000000000000000000000000008203612a7157612a71612929565b5060000390565b6020808252810182905260008360408301825b85811015612ae1578235612a9e81612419565b6001600160a01b031682526020830135612ab781612419565b6001600160a01b031660208301526040838101359083015260609283019290910190600101612a8b565b5095945050505050565b6020808252810182905260008360408301825b85811015612ae1578235612b1181612419565b6001600160a01b031682526020838101359083015260409283019290910190600101612afe56fea2646970667358221220b968ab5ac020320d1550b93537bf7759e2d689dfc78e76daa92505480a48b07c64736f6c63430008220033","sourceMap":"3503:27898:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31384:8;;;3503:27898;;;;;;;;;;;;;;;;;;;;;31384:8;;;3503:27898;;;;;;;;;;;;;;;;;;;;;;;;;;31384:8;;;3503:27898;;;;;;;;;;;;;;;;31384:8;;;3503:27898;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31384:8;;;3503:27898;;;;;;;;;;;;;;;;;;;;;31384:8;;;3503:27898;;;;;;;;;;;;;;;;;;;;;;;;;;31384:8;;;3503:27898;;;;;;;;;;;;;;;;;31384:8;;;12388:126;;;;;;;;;;-1:-1:-1;12388:126:31;;;;;:::i;:::-;;:::i;:::-;;6612:30;;;;;;;;;;-1:-1:-1;6612:30:31;;;;-1:-1:-1;;;;;6612:30:31;;;;;;-1:-1:-1;;;;;730:55:38;;;712:74;;700:2;685:18;6612:30:31;;;;;;;;5304:87;;;;;;;;;;-1:-1:-1;5304:87:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;1336:25:38;;;1324:2;1309:18;5304:87:31;1190:177:38;19837:521:31;;;;;;;;;;-1:-1:-1;19837:521:31;;;;;:::i;:::-;;:::i;18491:204::-;;;;;;;;;;-1:-1:-1;18491:204:31;;;;;:::i;:::-;;:::i;19003:96::-;;;;;;;;;;;;19050:6;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;;;3071:114;;;19089:2:31;30655:23;30642:37;30632:48;;19068:24;;19003:96;;;;;2338:6:38;2326:19;;;2308:38;;2296:2;2281:18;19003:96:31;2164:188:38;6076:61:31;;;;;;;;;;-1:-1:-1;6076:61:31;;;;;:::i;:::-;;;;;;;;;;;;;;5481:59;;;;;;;;;;-1:-1:-1;5481:59:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3005:14:38;;2998:22;2980:41;;2968:2;2953:18;5481:59:31;2840:187:38;13508:718:31;;;;;;;;;;-1:-1:-1;13508:718:31;;;;;:::i;:::-;;:::i;16843:1247::-;;;;;;;;;;-1:-1:-1;16843:1247:31;;;;;:::i;:::-;;:::i;12069:89::-;;;;;;;;;;-1:-1:-1;12069:89:31;;4204:1;4630:36:38;;4618:2;4603:18;12069:89:31;4488:184:38;7226:66:31;;;;;;;;;;-1:-1:-1;7226:66:31;;;;;:::i;:::-;;;;;;;;;;;;;;4569:48;;;;;;;;;;;;4610:7;4569:48;;20513:377;;;;;;;;;;-1:-1:-1;20513:377:31;;;;;:::i;:::-;;:::i;18795:102::-;;;;;;;;;;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;18887:2:31;699:22:0;686:36;680:4;676:47;18795:102:31;19003:96;6270:90;;;;;;;;;;-1:-1:-1;6270:90:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7298:63;;;;;;;;;;-1:-1:-1;7298:63:31;;;;;:::i;:::-;;;;;;;;;;;;;;11383:596:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;5708:89:31:-;;;;;;;;;;-1:-1:-1;5708:89:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;11847:99;;;;;;;;;;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;686:36;680:4;676:47;11847:99:31;19003:96;14785:115;;;;;;:::i;:::-;;:::i;5157:75::-;;;;;;;;;;;;5190:42;5157:75;;19284:168;;;;;;;;;;;;;:::i;26821:943::-;;;;;;;;;;-1:-1:-1;26821:943:31;;;;;:::i;:::-;;:::i;1622:626:26:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6648:25:31:-;;;;;;;;;;-1:-1:-1;6648:25:31;;;;;;;;;;;11457:106;;;;;;;;;;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;11553:2:31;699:22:0;686:36;680:4;676:47;11457:106:31;19003:96;4284:42;;;;;;;;;;;;4324:2;4284:42;;14396:98;;;:::i;23124:2845::-;;;;;;;;;;-1:-1:-1;23124:2845:31;;;;;:::i;:::-;;:::i;12388:126::-;1635:9:27;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;12470:37:31::1;12479:10;12491:6;12499:7;12470:8;:37::i;:::-;1937:10:27::0;1913:22;1906:42;12388:126:31;;:::o;19837:521::-;19931:15;:13;:15::i;:::-;-1:-1:-1;;;;;19917:29:31;:10;-1:-1:-1;;;;;19917:29:31;;19913:76;;19955:34;;;;;;;;;;;;;;19913:76;20010:1;20003:4;:8;;;:36;;;;-1:-1:-1;;;;;;20015:24:31;;;20003:36;19999:85;;;20048:36;;;;;;;;;;;;;;19999:85;20094:13;20146:4;20138:13;;20118:16;19050:6;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;;;3071:114;;;19089:2:31;30655:23;30642:37;30632:48;;19068:24;;19003:96;;20118:16;20110:25;;:41;;;;:::i;:::-;20094:57;-1:-1:-1;4470:6:31;20165:19;;20161:64;;;20193:32;;;;;;;;1336:25:38;;;1309:18;;20193:32:31;;;;;;;;20161:64;20235:15;:28;;-1:-1:-1;;;;;20235:28:31;;20273:18;;;;;;;;;;;;;;;;;;;;20306:45;;2308:38:38;;;20235:28:31;20306:45;;2296:2:38;2281:18;20306:45:31;;;;;;;19903:455;19837:521;;:::o;18491:204::-;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;686:36;680:4;676:47;18573:10:31;:31;18569:78;;18613:34;;;;;;;;;;;;;;18569:78;-1:-1:-1;;;;;18657:24:31;;;;;;;:16;:24;;;;;:31;18491:204::o;13508:718::-;1635:9:27;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;13615:7:31::1;-1:-1:-1::0;;;;;13615:12:31::1;13626:1;13615:12:::0;13611:76:::1;;13650:26;;;;;;;;;;;;;;13611:76;4324:2;-1:-1:-1::0;;;;;13700:24:31;::::1;;13696:114;;;13747:52;::::0;::::1;::::0;;-1:-1:-1;;;;;730:55:38;;13747:52:31::1;::::0;::::1;712:74:38::0;685:18;;13747:52:31::1;566:226:38::0;13696:114:31::1;13844:46;::::0;;;;13884:4:::1;13844:46;::::0;::::1;712:74:38::0;13820:21:31::1;::::0;-1:-1:-1;;;;;13844:31:31;::::1;::::0;::::1;::::0;685:18:38;;13844:46:31::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13820:70:::0;-1:-1:-1;13900:59:31::1;-1:-1:-1::0;;;;;13900:23:31;;::::1;::::0;13924:10:::1;::::0;13944:4:::1;::::0;13900:59;::::1;:23;:59::i;:::-;13988:46;::::0;;;;14028:4:::1;13988:46;::::0;::::1;712:74:38::0;13969:16:31::1;::::0;14037:13;;-1:-1:-1;;;;;13988:31:31;::::1;::::0;::::1;::::0;685:18:38;;13988:46:31::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;:::i;:::-;-1:-1:-1::0;;;;;14085:22:31;;::::1;:12;:22:::0;;;::::1;::::0;;;;;;;:30;;::::1;::::0;;;;;;;;;:42;;;::::1;::::0;;13969:81;;-1:-1:-1;14085:30:31;14152:67:::1;14198:20;13969:81:::0;14198:18:::1;:20::i;:::-;14152:67;::::0;-1:-1:-1;;;;;730:55:38;;;712:74;;700:2;685:18;14152:67:31::1;;;;;;;13601:625;;1937:10:27::0;1913:22;1906:42;13508:718:31;;;:::o;16843:1247::-;1635:9:27;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;16951:40:31::1;16976:2;16980:10;;16951:24;:40::i;:::-;17023:2;:9;;;17005:15;:27;17001:79;;;17041:39;;;;;;;;;;;;;;17001:79;17094:18;:30;17113:10;;::::0;::::1;:2:::0;:10:::1;:::i;:::-;-1:-1:-1::0;;;;;17094:30:31::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;17094:30:31;;;17125:8:::1;::::0;::::1;;17094:40:::0;;;;;;;;::::1;;17090:120;;;17157:42;;;;;;;;;;;;;;17090:120;17262:4;17219:18;:30;17238:10;;::::0;::::1;:2:::0;:10:::1;:::i;:::-;-1:-1:-1::0;;;;;17219:30:31::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;17219:30:31;;;17250:8:::1;::::0;::::1;;17219:40:::0;;;;;;;:47;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;;-1:-1:-1;;;;17308:10:31::1;::::0;;::::1;17250:8:::0;17308:10:::1;:::i;:::-;-1:-1:-1::0;;;;;17295:24:31::1;-1:-1:-1::0;;;;;17295:24:31::1;;;;;;;;;;;;:34;17320:2;:8;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17295:34:31::1;-1:-1:-1::0;;;;;17295:34:31::1;;;;;;;;;;;;;17277:52;;17512:7;17500:2;:9;;;:19;17496:145;;;17588:7;17607:21;:2;:9;;;:19;:21::i;:::-;17542:88;::::0;::::1;::::0;;::::1;::::0;::::1;10827:25:38::0;;;;-1:-1:-1;;;;;10888:55:38;10868:18;;;10861:83;10800:18;;17542:88:31::1;10653:297:38::0;17496:145:31::1;17650:43;17673:8;::::0;;;::::1;::::0;::::1;;:::i;:::-;17683:2;:9;;;17650:22;:43::i;:::-;17814:19;17824:9;::::0;::::1;;17814:7:::0;:19:::1;:::i;:::-;17777:12;::::0;17790:10:::1;;::::0;::::1;:2:::0;:10:::1;:::i;:::-;-1:-1:-1::0;;;;;17777:24:31::1;-1:-1:-1::0;;;;;17777:24:31::1;;;;;;;;;;;;:34;17802:2;:8;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17777:34:31::1;-1:-1:-1::0;;;;;17777:34:31::1;;;;;;;;;;;;:56;;;;5190:42;-1:-1:-1::0;;;;;17847:18:31::1;:2;:8;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17847:18:31::1;::::0;17843:161:::1;;17881:37;17908:9;::::0;::::1;;17881:10;;::::0;::::1;17908:2:::0;17881:10:::1;:::i;:::-;-1:-1:-1::0;;;;;17881:26:31::1;::::0;::::1;:37::i;:::-;17843:161;;;17949:44;17971:10;;::::0;::::1;:2:::0;:10:::1;:::i;:::-;17983:9;::::0;::::1;::::0;::::1;::::0;17949:8:::1;::::0;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;17949:21:31::1;::::0;:44;:21:::1;:44::i;:::-;18053:8;::::0;;;::::1;::::0;::::1;;:::i;:::-;-1:-1:-1::0;;;;;18018:65:31::1;18041:10;;::::0;::::1;:2:::0;:10:::1;:::i;:::-;-1:-1:-1::0;;;;;18018:65:31::1;;18063:2;:9;;;18074:2;:8;;;18018:65;;;;;;11129:25:38::0;;;11185:2;11170:18;;11163:34;11117:2;11102:18;;10955:248;18018:65:31::1;;;;;;;;16941:1149;1937:10:27::0;1913:22;1906:42;16843:1247:31;;;:::o;20513:377::-;20577:15;20595;:13;:15::i;:::-;20577:33;-1:-1:-1;20624:10:31;-1:-1:-1;;;;;20624:21:31;;;20620:68;;20654:34;;;;;;;;;;;;;;20620:68;-1:-1:-1;;;;;20702:23:31;;20698:78;;20734:42;;;;;;;;;;;;;;20698:78;20786:21;:33;;;;-1:-1:-1;;;;;20786:33:31;;;;;;;;;20834:49;;20786:33;;20834:49;;;;;-1:-1:-1;;20834:49:31;20567:323;20513:377;:::o;11383:596:23:-;11721:16;11508:18;;11481:13;;;11508:18;11779:23;:21;:23::i;:::-;11383:596;;11761:41;;;-1:-1:-1;11822:13:23;;-1:-1:-1;11873:4:23;;-1:-1:-1;11383:596:23;;-1:-1:-1;11383:596:23;:::o;14785:115:31:-;1635:9:27;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;14869:24:31::1;14884:8;14869:14;:24::i;:::-;1937:10:27::0;1913:22;1906:42;14785:115:31;:::o;19284:168::-;19363:21;;19330:7;;-1:-1:-1;;;;;19363:21:31;;19401:44;;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;19442:2:31;699:22:0;686:36;680:4;676:47;19401:44:31;;;19421:3;19401:44;19394:51;;;19284:168;:::o;26821:943::-;1635:9:27;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;-1:-1:-1;;;;;26908:26:31;::::1;26889:16;26908:26:::0;;;:18:::1;:26;::::0;;;;;26948:13;;26944:184:::1;;-1:-1:-1::0;;;;;26977:26:31;::::1;27006:1;26977:26:::0;;;:18:::1;:26;::::0;;;;;;;:30;;;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;18887:2:31;699:22:0;686:36;680:4;676:47;27049:34:31;;;;;;;;:42;;;;;;;:54;;;::::1;::::0;;26944:184:::1;-1:-1:-1::0;;;;;27156:23:31;;::::1;27138:15;27156:23:::0;;;:15:::1;:23;::::0;;;;;27213:15:::1;::::0;27156:23;;27213:15:::1;27413:12:::0;;;::::1;::::0;:43:::1;;-1:-1:-1::0;;;;;;27429:27:31;::::1;::::0;::::1;27413:43;27409:245;;;-1:-1:-1::0;;;;;27472:23:31;;::::1;27498:1;27472:23:::0;;;:15:::1;:23;::::0;;;;;;;:27;;;27541;;::::1;::::0;;;;;;;;:35;;;;;;;;:46;;;::::1;::::0;;27409:245:::1;;;27642:1;27632:11;;27409:245;-1:-1:-1::0;;;;;27669:88:31;::::1;3151:14:0::0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;18887:2:31;699:22:0;686:36;680:4;676:47;-1:-1:-1;;;;;27669:88:31::1;27694:6;-1:-1:-1::0;;;;;27669:88:31::1;;27724:8;27749:7;27669:88;;;;;;11129:25:38::0;;;11185:2;11170:18;;11163:34;11117:2;11102:18;;10955:248;27669:88:31::1;;;;;;;;26879:885;;;1937:10:27::0;1913:22;1906:42;26821:943:31;:::o;1622:626:26:-;1696:14;2069:9;:14;2065:28;;2085:8;;;2065:28;2201:40;2224:16;2235:4;;2224:10;:16::i;:::-;2201:22;:40::i;:::-;1622:626;;;;:::o;14396:98:31:-;1635:9:27;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;14461:26:31::1;14476:10;14461:14;:26::i;:::-;1937:10:27::0;1913:22;1906:42;14396:98:31:o;23124:2845::-;1635:9:27;1610:22;1604:29;1601:44;1598:158;;1677:10;1671:4;1664:24;1737:4;1731;1724:18;1598:158;1800:9;1776:22;1769:41;23323:57:31::1;23342:7;;23351:8;;23361:6;23369:10;;23323:18;:57::i;:::-;23394:24;::::0;;;:16:::1;:24;::::0;;;;;::::1;;23390:102;;;23441:40;;;;;;;;;;;;;;23390:102;23501:24;::::0;;;23528:4:::1;23501:24;::::0;;;;;;:31;;;::::1;::::0;;::::1;::::0;;23557:7;;23595:16:::1;19050:6:::0;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;;;3071:114;;;19089:2:31;30655:23;30642:37;30632:48;;19068:24;;19003:96;;23595:16:::1;23635:11;::::0;23581:30;;-1:-1:-1;23635:11:31;;::::1;;;23621;23990:1218;24010:3;24006:1;:7;23990:1218;;;24034:13;24050:7;;24058:1;24050:10;;;;;;;:::i;:::-;;;;;;:16;;;;;;;;;;:::i;:::-;24034:32:::0;-1:-1:-1;24097:4:31::1;24080:14;24115:176;24135:1;24131;:5;24115:176;;;24185:5;-1:-1:-1::0;;;;;24165:25:31::1;:7;;24173:1;24165:10;;;;;;;:::i;:::-;;;;;;:16;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24165:25:31::1;::::0;24161:116:::1;;24226:5;24214:17;;24253:5;;24161:116;24138:3;;24115:176;;;;24309:9;24304:24;;24320:8;;;;24304:24;24343:10;24372:9:::0;24367:157:::1;24387:3;24383:1;:7;24367:157;;;24439:5;-1:-1:-1::0;;;;;24419:25:31::1;:7;;24427:1;24419:10;;;;;;;:::i;:::-;;;;;;:16;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24419:25:31::1;::::0;24415:95:::1;;24475:7;;24483:1;24475:10;;;;;;;:::i;:::-;;;;;;:16;;;24468:23;;;;;:::i;:::-;;;24415:95;24392:3;;24367:157;;;;24538:19;24560:27;24571:8;;24581:5;24560:10;:27::i;:::-;24538:49:::0;-1:-1:-1;24601:16:31::1;4470:6;24621:18;24620:34;24621:18:::0;::::1;24538:49:::0;24621:18:::1;:::i;:::-;24620:34;;;;:::i;:::-;24601:53:::0;-1:-1:-1;24668:15:31::1;4470:6;24687:18;24686:34;24687:18:::0;::::1;:11:::0;:18:::1;:::i;:::-;24686:34;;;;:::i;:::-;24668:52:::0;-1:-1:-1;24986:31:31::1;24987:18;24668:52:::0;24987:8;:18:::1;:::i;:::-;24986:29;:31::i;:::-;24985:32;;;:::i;:::-;24978:3;:39;24974:87;;25026:35;;;;;;;;;;;;;;24974:87;25080:13:::0;;25076:56:::1;;-1:-1:-1::0;;;;;25095:25:31;::::1;;::::0;;;:18:::1;:25;::::0;;;;:37;;25124:8;;25095:25;:37:::1;::::0;25124:8;;25095:37:::1;:::i;:::-;::::0;;;-1:-1:-1;;25076:56:31::1;25150:12:::0;;25146:51:::1;;-1:-1:-1::0;;;;;25164:22:31;::::1;;::::0;;;:15:::1;:22;::::0;;;;:33;;25190:7;;25164:22;:33:::1;::::0;25190:7;;25164:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;25146:51:31::1;24020:1188;;;;;;23990:1218;24015:3;;23990:1218;;;;25306:9;25301:662;25321:3;25317:1;:7;25301:662;;;25345:22;25370:7;;25378:1;25370:10;;;;;;;:::i;:::-;;;::::0;;;::::1;::::0;-1:-1:-1;25394:11:31::1;::::0;-1:-1:-1;25394:11:31;;25421:6:::1;;::::0;::::1;25370:10:::0;25421:6:::1;:::i;:::-;-1:-1:-1::0;;;;;25408:20:31::1;-1:-1:-1::0;;;;;25408:20:31::1;;;;;;;;;;;;:29;25429:1;:7;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25408:29:31::1;-1:-1:-1::0;;;;;25408:29:31::1;;;;;;;;;;;;;25394:43;;25679:11;25710:1;:7;;;25693:14;:3;:12;:14::i;:::-;:24;;;;:::i;:::-;25679:38;;25742:1;25735:4;:8;25731:95;;;25770:41;::::0;::::1;::::0;;::::1;::::0;::::1;10827:25:38::0;;;25809:1:31::1;10868:18:38::0;;;10861:83;10800:18;;25770:41:31::1;10653:297:38::0;25731:95:31::1;25879:4:::0;25839:12:::1;::::0;25852:6:::1;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;-1:-1:-1::0;;;;;25839:20:31::1;-1:-1:-1::0;;;;;25839:20:31::1;;;;;;;;;;;;:29;25860:1;:7;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25839:29:31::1;-1:-1:-1::0;;;;;25839:29:31::1;;;;;;;;;;;;:45;;;;25935:1;:7;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25903:49:31::1;25927:6;;::::0;::::1;:1:::0;:6:::1;:::i;:::-;-1:-1:-1::0;;;;;25903:49:31::1;;25944:1;:7;;;25903:49;;;;1336:25:38::0;;1324:2;1309:18;;1190:177;25903:49:31::1;;;;;;;;25331:632;;;25326:3;;;;;25301:662;;;;23313:2656;;;1937:10:27::0;1913:22;1906:42;23124:2845:31;;;;;;;:::o;8129:1362::-;8258:7;-1:-1:-1;;;;;8258:12:31;8269:1;8258:12;8254:76;;8293:26;;;;;;;;;;;;;;8254:76;4324:2;-1:-1:-1;;;;;8401:24:31;;;8397:114;;;8448:52;;;;;-1:-1:-1;;;;;730:55:38;;8448:52:31;;;712:74:38;685:18;;8448:52:31;566:226:38;8397:114:31;8578:40;;;;;-1:-1:-1;;;;;730:55:38;;;8578:40:31;;;712:74:38;8560:15:31;;8578:31;;;;;;685:18:38;;8578:40:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8694:46;;;;;8734:4;8694:46;;;712:74:38;8560:58:31;;-1:-1:-1;8670:21:31;;-1:-1:-1;;;;;8694:31:31;;;;;685:18:38;;8694:46:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8670:70;;8831:7;-1:-1:-1;;;;;8821:17:31;:7;:17;8817:169;;;8901:74;;;;;;;;10827:25:38;;;-1:-1:-1;;;;;10888:55:38;;10868:18;;;10861:83;10800:18;;8901:74:31;10653:297:38;8817:169:31;9041:56;-1:-1:-1;;;;;9041:23:31;;;;9065:7;;9082:4;;9041:56;;:23;:56::i;:::-;9176:46;;;;;9216:4;9176:46;;;712:74:38;9157:16:31;;9225:13;;-1:-1:-1;;;;;9176:31:31;;;;;685:18:38;;9176:46:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;:::i;:::-;-1:-1:-1;;;;;9309:21:31;;;:12;:21;;;;;;;;;;;:29;;;;;;;;;;;;:41;;;;;;9157:81;;-1:-1:-1;9309:29:31;9418:66;9463:20;9157:81;9463:18;:20::i;:::-;9418:66;;-1:-1:-1;;;;;730:55:38;;;712:74;;700:2;685:18;9418:66:31;;;;;;;8206:1285;;;8129:1362;;;:::o;9254:1026:29:-;9437:4;9431:11;9502:6;9496:4;9489:20;9567:2;9561:4;9554:16;9632:4;9628:2;9624:13;9618:4;9611:27;9694:34;9688:4;9681:48;9841:4;9835;9829;9823;9820:1;9813:5;9806;9801:45;9893:7;9889:1;9882:4;9876:11;9873:18;9869:32;9859:279;;9984:7;9965:16;9956:5;9944:18;9937:26;9934:48;9931:61;9921:203;;10029:10;10023:4;10016:24;10101:4;10095;10088:18;9921:203;-1:-1:-1;10164:1:29;10158:4;10151:15;10220:4;10213:15;-1:-1:-1;;;;9254:1026:29:o;5039:142:28:-;5092:7;5120:8;5115:1;:13;5111:36;;5130:17;:15;:17::i;:::-;-1:-1:-1;5172:1:28;5039:142::o;29444:843:31:-;29616:18;29688:143;29849:10;;;;:2;:10;:::i;:::-;29877:8;;;;;;;;:::i;:::-;29903:9;29660:319;;;;;13043:25:38;;;;-1:-1:-1;;;;;13104:55:38;;;13084:18;;;13077:83;13196:55;;29930:8:31;13176:18:38;;;13169:83;;;;29903:9:31;;;;29956;13268:18:38;;;13261:34;;;;29930:8:31;;;;13311:19:38;;;13304:35;29956:9:31;;;13355:19:38;;;13348:35;13015:19;;29660:319:31;;;;;;;;;;;;29637:352;;;;;;29616:373;;29999:14;30016:26;30031:10;30016:14;:26::i;:::-;29999:43;;30052:28;30083:36;30112:6;13444:4:22;13437:18;13524:50;13345:14;13511:64;13627:4;13621;13611:21;;13276:409;30083:36:31;30052:67;;30129:14;30146:55;30168:20;30190:10;;30146:21;:55::i;:::-;30129:72;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;686:36;680:4;676:47;-1:-1:-1;;;;;30215:27:31;;;30211:69;;30251:29;;;;;;;;;;;;;;30211:69;29550:737;;;;29444:843;;;:::o;10406:409::-;-1:-1:-1;;;;;10504:24:31;;10490:11;10504:24;;;:16;:24;;;;;;;10542:8;;;10538:21;;10552:7;10406:409;;:::o;10538:21::-;10568:13;10584:32;4610:7;10584:15;:32;:::i;:::-;-1:-1:-1;;;;;10641:24:31;;10626:12;10641:24;;;:16;:24;;;;;;;;:31;;;;;;;;;10568:48;;-1:-1:-1;10626:12:31;10641:41;;10675:7;;10641:41;:::i;:::-;10626:56;;10703:3;10696:4;:10;10692:68;;;10715:45;;;;;;;;11129:25:38;;;11170:18;;;11163:34;;;11102:18;;10715:45:31;10955:248:38;10692:68:31;-1:-1:-1;;;;;10770:24:31;;;;;;;:16;:24;;;;;;;;:31;;;;;;;:38;;;;-1:-1:-1;;10406:409:31:o;4176:342:29:-;4378:4;4366:10;4360:4;4348:10;4340:6;4336:2;4329:5;4324:59;4314:188;;4416:10;4410:4;4403:24;4483:4;4477;4470:18;4314:188;4176:342;;:::o;13392:887::-;13555:2;13549:4;13542:16;13612:6;13606:4;13599:20;13677:34;13671:4;13664:48;13873:4;13867;13861;13855;13852:1;13845:5;13838;13833:45;13925:7;13921:1;13914:4;13908:11;13905:18;13901:32;13891:275;;14016:7;13997:16;13988:5;13976:18;13969:26;13966:48;13963:61;13953:199;;14061:10;14055:4;14048:24;14129:4;14123;14116:18;13953:199;13891:275;14192:1;14186:4;14179:15;13392:887;;;:::o;30863:318:31:-;31078:16;;;;;;;;;;;;;;;;;30976:19;31156:18;4204:1;31156:16;:18::i;:::-;31145:29;;30863:318;;:::o;9797:453::-;9862:9;9875:1;9862:14;9858:78;;9899:26;;;;;;;;;;;;;;9858:78;4324:2;9949:9;:26;9945:127;;;9998:63;;;;;-1:-1:-1;;;;;10049:9:31;730:55:38;9998:63:31;;;712:74:38;685:18;;9998:63:31;566:226:38;9945:127:31;-1:-1:-1;;;;;10106:22:31;;:12;:22;;;;;;;;;;;5190:42;10106:30;;;;;;;;:43;;10140:9;10106:43;;;;;;5190:42;;10106:22;10175:68;;10221:21;;:19;:21::i;:::-;10175:68;;-1:-1:-1;;;;;730:55:38;;;712:74;;700:2;685:18;10175:68:31;;;;;;;9797:453;:::o;2458:1909:26:-;2527:15;2637:4;2631:11;2620:22;;2671:4;2662:7;2655:21;2716:11;2706:7;2700:4;2696:18;2689:39;2760:7;2754:4;2750:18;2790:1;2822:11;2819:1;2815:19;2876:3;2863:11;2860:1;2847:33;2900:11;;;2949:1252;;;;2982:1205;3048:1;3042:8;3029:11;3025:26;3115:1;3102:15;3095:4;3092:1;3088:12;3085:1;3072:46;3263:4;3251:10;3247:1;3234:15;3231:1;3220:9;3213:5;3200:68;3190:310;;3403:16;3397:4;3388:7;3373:47;3461:16;3452:7;3445:33;3190:310;-1:-1:-1;3531:9:26;;;3521:20;;3685:16;3675:27;;3571:4;3567:12;;;;3732;;3789:16;3783:4;3732:12;3765:41;4073:1;4054:16;4047:24;;4040:35;3974:16;3967:24;3993:4;3963:35;4000:18;3959:60;;-1:-1:-1;4148:10:26;;;2982:1205;4138:31;2982:1205;4227:1;4221:4;4214:15;4302:7;4291;4288:1;4284:15;4280:2;4276:24;4273:37;4262:48;;;;;;2458:1909;;;;:::o;5510:221::-;5706:7;5702:2;5698:16;5688:7;5668:18;5664:32;5657:58;28382:847:31;28636:18;28708:78;28825:7;;28814:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28804:30;;;;;;28873:8;;28862:20;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;28852:31;;28862:20;28852:31;;;;28680:241;;;15559:25:38;;;;15600:18;;15593:34;;;;15643:18;;;15636:34;;;;15686:18;;;15679:34;;;15531:19;;28680:241:31;;;;;;;;;;;;28657:274;;;;;;28636:295;;28941:14;28958:26;28973:10;28958:14;:26::i;:::-;28941:43;;28994:28;29025:36;29054:6;13444:4:22;13437:18;13524:50;13345:14;13511:64;13627:4;13621;13611:21;;13276:409;29025:36:31;28994:67;;29071:14;29088:55;29110:20;29132:10;;29088:21;:55::i;:::-;29071:72;-1:-1:-1;3151:14:0;-1:-1:-1;;3147:22:0;;3134:36;3128:4;3124:47;3071:114;;686:36;680:4;676:47;-1:-1:-1;;;;;29157:27:31;;;29153:69;;29193:29;;;;;;;;;;;;;;29153:69;28570:659;;;;28382:847;;;;;;;:::o;26104:265::-;26196:7;26220:9;26215:130;26231:19;;;26215:130;;;26296:6;-1:-1:-1;;;;;26275:27:31;:8;;26284:1;26275:11;;;;;;;:::i;:::-;:17;;;:11;;;;;:17;;;;-1:-1:-1;26275:17:31;:::i;:::-;-1:-1:-1;;;;;26275:27:31;;26271:63;;26311:8;;26320:1;26311:11;;;;;;;:::i;:::-;;;;;;:23;;;26304:30;;;;;26271:63;26252:3;;26215:130;;;;26361:1;26354:8;;26104:265;;;;;;:::o;22875:140:28:-;22927:6;22962:1;22956;22949:14;22945:36;;-1:-1:-1;22979:1:28;22875:140::o;22945:36::-;22991:17;:15;:17::i;:::-;22875:140;;;:::o;23502:290::-;23691:10;23685:4;23678:24;23771:4;23765;23758:18;6666:885:23;6975:22;13508:11;13649:9;13646:25;13463:14;13619:9;13616:28;13612:60;7011:73;;-1:-1:-1;12939:4:23;12933:11;;13000:16;12990:27;;12777:15;13044:4;13037:12;;13030:31;12820:18;13095:12;;;13088:33;;;;13155:9;13148:4;13141:12;;13134:31;13199:9;13192:4;13185:12;;13178:31;13248:4;13235:18;;7011:73;7218:18;7212:4;7205:32;7284:6;7278:4;7271:20;7348:10;7342:4;7335:24;7424:4;7418;7408:21;7398:31;;7533:1;7527:4;7520:15;6666:885;;;:::o;4336:1373:22:-;4448:14;4565:4;4559:11;4717:16;4755:2;4750:297;;;;5069:2;5064:204;;;;5295:8;;;4750:297;4825:4;4803:27;;;4790:41;4873:3;4869:12;;;4883:2;4865:21;4852:35;;;4929:30;;4923:4;4916:44;5002:18;;4996:4;4989:32;4750:297;;5064:204;5150:4;5132:16;5128:27;5115:41;5112:1;5107:50;5101:4;5094:64;5224:4;5206:16;5200:4;5187:42;4710:595;;5335:4;5329;5322:18;5412:4;5406;5400;5394;5391:1;5384:5;5373:44;5367:51;5357:61;;5448:1;5442:4;5435:15;5506:1;5500:4;5493:15;5653:16;5672:5;5650:29;;4606:10;4600:4;4593:24;4672:4;4666;4659:18;4544:1149;4548:24;4336:1373;;;;;:::o;214:334:34:-;264:21;378:4;372:11;416:4;413:1;409:12;403:4;396:26;445:1;442;435:12;504:1;500:2;496:10;489:4;486:1;482:12;474:33;531:1;214:334;-1:-1:-1;;214:334:34:o;14:154:38:-;-1:-1:-1;;;;;93:5:38;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:388::-;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;-1:-1:-1;483:2:38;468:18;;455:32;496:33;455:32;496:33;:::i;:::-;548:7;538:17;;;173:388;;;;;:::o;1372:415::-;1439:6;1447;1500:2;1488:9;1479:7;1475:23;1471:32;1468:52;;;1516:1;1513;1506:12;1468:52;1555:9;1542:23;1574:31;1599:5;1574:31;:::i;:::-;1624:5;-1:-1:-1;1681:2:38;1666:18;;1653:32;1729:6;1716:20;;1704:33;;1694:61;;1751:1;1748;1741:12;1792:367;1860:6;1868;1921:2;1909:9;1900:7;1896:23;1892:32;1889:52;;;1937:1;1934;1927:12;1889:52;1976:9;1963:23;1995:31;2020:5;1995:31;:::i;:::-;2045:5;2123:2;2108:18;;;;2095:32;;-1:-1:-1;;;1792:367:38:o;2357:247::-;2416:6;2469:2;2457:9;2448:7;2444:23;2440:32;2437:52;;;2485:1;2482;2475:12;2437:52;2524:9;2511:23;2543:31;2568:5;2543:31;:::i;2609:226::-;2668:6;2721:2;2709:9;2700:7;2696:23;2692:32;2689:52;;;2737:1;2734;2727:12;2689:52;-1:-1:-1;2782:23:38;;2609:226;-1:-1:-1;2609:226:38:o;3032:529::-;3109:6;3117;3125;3178:2;3166:9;3157:7;3153:23;3149:32;3146:52;;;3194:1;3191;3184:12;3146:52;3233:9;3220:23;3252:31;3277:5;3252:31;:::i;:::-;3302:5;-1:-1:-1;3359:2:38;3344:18;;3331:32;3372:33;3331:32;3372:33;:::i;:::-;3424:7;-1:-1:-1;3483:2:38;3468:18;;3455:32;3496:33;3455:32;3496:33;:::i;:::-;3548:7;3538:17;;;3032:529;;;;;:::o;3566:347::-;3617:8;3627:6;3681:3;3674:4;3666:6;3662:17;3658:27;3648:55;;3699:1;3696;3689:12;3648:55;-1:-1:-1;3722:20:38;;3765:18;3754:30;;3751:50;;;3797:1;3794;3787:12;3751:50;3834:4;3826:6;3822:17;3810:29;;3886:3;3879:4;3870:6;3862;3858:19;3854:30;3851:39;3848:59;;;3903:1;3900;3893:12;3848:59;3566:347;;;;;:::o;3918:565::-;4035:6;4043;4051;4095:9;4086:7;4082:23;4125:3;4121:2;4117:12;4114:32;;;4142:1;4139;4132:12;4114:32;4166:3;4162:2;4158:12;4155:32;;;4183:1;4180;4173:12;4155:32;;4206:9;4196:19;;4266:3;4255:9;4251:19;4238:33;4294:18;4286:6;4283:30;4280:50;;;4326:1;4323;4316:12;4280:50;4365:58;4415:7;4406:6;4395:9;4391:22;4365:58;:::i;:::-;3918:565;;4442:8;;-1:-1:-1;4339:84:38;;-1:-1:-1;;;;3918:565:38:o;4677:459::-;4719:3;4757:5;4751:12;4784:6;4779:3;4772:19;4809:1;4819:139;4833:6;4830:1;4827:13;4819:139;;;4941:4;4926:13;;;4922:24;;4916:31;4896:11;;;4892:22;;4885:63;4848:12;4819:139;;;4823:3;5003:1;4996:4;4987:6;4982:3;4978:16;4974:27;4967:38;5125:4;5055:66;5050:2;5042:6;5038:15;5034:88;5029:3;5025:98;5021:109;5014:116;;;4677:459;;;;:::o;5141:1314::-;5538:66;5530:6;5526:79;5515:9;5508:98;5642:3;5637:2;5626:9;5622:18;5615:31;5489:4;5669:46;5710:3;5699:9;5695:19;5687:6;5669:46;:::i;:::-;5763:9;5755:6;5751:22;5746:2;5735:9;5731:18;5724:50;5797:33;5823:6;5815;5797:33;:::i;:::-;5861:2;5846:18;;5839:34;;;-1:-1:-1;;;;;5910:55:38;;5904:3;5889:19;;5882:84;5997:3;5982:19;;5975:35;;;6047:22;;;6041:3;6026:19;;6019:51;6119:13;;6141:22;;;6191:2;6217:15;;;;-1:-1:-1;6179:15:38;;;;-1:-1:-1;6260:169:38;6274:6;6271:1;6268:13;6260:169;;;6335:13;;6323:26;;6378:2;6404:15;;;;6369:12;;;;6296:1;6289:9;6260:169;;;-1:-1:-1;6446:3:38;;5141:1314;-1:-1:-1;;;;;;;;;;;5141:1314:38:o;6460:621::-;6557:6;6565;6618:2;6606:9;6597:7;6593:23;6589:32;6586:52;;;6634:1;6631;6624:12;6586:52;6674:9;6661:23;6707:18;6699:6;6696:30;6693:50;;;6739:1;6736;6729:12;6693:50;6762:22;;6815:4;6807:13;;6803:27;-1:-1:-1;6793:55:38;;6844:1;6841;6834:12;6793:55;6884:2;6871:16;6910:18;6902:6;6899:30;6896:50;;;6942:1;6939;6932:12;6896:50;6995:7;6990:2;6980:6;6977:1;6973:14;6969:2;6965:23;6961:32;6958:45;6955:65;;;7016:1;7013;7006:12;6955:65;7047:2;7039:11;;;;;7069:6;;-1:-1:-1;6460:621:38;-1:-1:-1;;;6460:621:38:o;7086:839::-;7246:4;7294:2;7283:9;7279:18;7324:2;7313:9;7306:21;7347:6;7382;7376:13;7413:6;7405;7398:22;7451:2;7440:9;7436:18;7429:25;;7513:2;7503:6;7500:1;7496:14;7485:9;7481:30;7477:39;7463:53;;7551:2;7543:6;7539:15;7572:1;7582:314;7596:6;7593:1;7590:13;7582:314;;;7685:66;7673:9;7665:6;7661:22;7657:95;7652:3;7645:108;7776:40;7809:6;7800;7794:13;7776:40;:::i;:::-;7766:50;-1:-1:-1;7851:2:38;7874:12;;;;7839:15;;;;;7618:1;7611:9;7582:314;;;-1:-1:-1;7913:6:38;;7086:839;-1:-1:-1;;;;;;7086:839:38:o;7930:387::-;8013:8;8023:6;8077:3;8070:4;8062:6;8058:17;8054:27;8044:55;;8095:1;8092;8085:12;8044:55;-1:-1:-1;8118:20:38;;8161:18;8150:30;;8147:50;;;8193:1;8190;8183:12;8147:50;8230:4;8222:6;8218:17;8206:29;;8290:3;8283:4;8273:6;8270:1;8266:14;8258:6;8254:27;8250:38;8247:47;8244:67;;;8307:1;8304;8297:12;8322:1454;8537:6;8545;8553;8561;8569;8577;8585;8638:3;8626:9;8617:7;8613:23;8609:33;8606:53;;;8655:1;8652;8645:12;8606:53;8695:9;8682:23;8728:18;8720:6;8717:30;8714:50;;;8760:1;8757;8750:12;8714:50;8783:22;;8836:4;8828:13;;8824:27;-1:-1:-1;8814:55:38;;8865:1;8862;8855:12;8814:55;8905:2;8892:16;8931:18;8923:6;8920:30;8917:50;;;8963:1;8960;8953:12;8917:50;9021:7;9014:4;9006;8998:6;8994:17;8990:2;8986:26;8982:37;8979:50;8976:70;;;9042:1;9039;9032:12;8976:70;9073:4;9065:13;;;;-1:-1:-1;9097:6:38;-1:-1:-1;9141:20:38;;9128:34;9187:18;9174:32;;9171:52;;;9219:1;9216;9209:12;9171:52;9258:92;9342:7;9331:8;9320:9;9316:24;9258:92;:::i;:::-;9369:8;;-1:-1:-1;9232:118:38;-1:-1:-1;;9473:2:38;9458:18;;9445:32;;-1:-1:-1;9554:4:38;9539:20;;9526:34;9585:18;9572:32;;9569:52;;;9617:1;9614;9607:12;9569:52;9656:60;9708:7;9697:8;9686:9;9682:24;9656:60;:::i;:::-;8322:1454;;;;-1:-1:-1;8322:1454:38;;-1:-1:-1;8322:1454:38;;;;9630:86;;-1:-1:-1;;;8322:1454:38:o;9781:184::-;9833:77;9830:1;9823:88;9930:4;9927:1;9920:15;9954:4;9951:1;9944:15;9970:125;10035:9;;;10056:10;;;10053:36;;;10069:18;;:::i;10331:184::-;10401:6;10454:2;10442:9;10433:7;10429:23;10425:32;10422:52;;;10470:1;10467;10460:12;10422:52;-1:-1:-1;10493:16:38;;10331:184;-1:-1:-1;10331:184:38:o;10520:128::-;10587:9;;;10608:11;;;10605:37;;;10622:18;;:::i;11208:184::-;11260:77;11257:1;11250:88;11357:4;11354:1;11347:15;11381:4;11378:1;11371:15;11397:216;11461:9;;;11489:11;;;11436:3;11519:9;;11547:10;;11543:19;;11572:10;;11564:19;;11540:44;11537:70;;;11587:18;;:::i;:::-;11537:70;;11397:216;;;;:::o;11618:168::-;11691:9;;;11722;;11739:15;;;11733:22;;11719:37;11709:71;;11760:18;;:::i;11791:274::-;11831:1;11857;11847:189;;11892:77;11889:1;11882:88;11993:4;11990:1;11983:15;12021:4;12018:1;12011:15;11847:189;-1:-1:-1;12050:9:38;;11791:274::o;12070:191::-;12105:3;12136:66;12129:5;12126:77;12123:103;;12206:18;;:::i;:::-;-1:-1:-1;12246:1:38;12242:13;;12070:191::o;13394:1031::-;13656:2;13668:21;;;13641:18;;13724:22;;;13608:4;13803:6;13777:2;13762:18;;13608:4;13837:562;13851:6;13848:1;13845:13;13837:562;;;13926:6;13913:20;13946:31;13971:5;13946:31;:::i;:::-;-1:-1:-1;;;;;14002:54:38;13990:67;;14110:2;14098:15;;14085:29;14127:33;14085:29;14127:33;:::i;:::-;-1:-1:-1;;;;;14194:56:38;14189:2;14180:12;;14173:78;14310:2;14298:15;;;14285:29;14271:12;;;14264:51;14344:4;14372:17;;;;14335:14;;;;13873:1;13866:9;13837:562;;;-1:-1:-1;14416:3:38;13394:1031;-1:-1:-1;;;;;13394:1031:38:o;14430:893::-;14692:2;14704:21;;;14677:18;;14760:22;;;14644:4;14839:6;14813:2;14798:18;;14644:4;14873:424;14887:6;14884:1;14881:13;14873:424;;;14962:6;14949:20;14982:31;15007:5;14982:31;:::i;:::-;-1:-1:-1;;;;;15038:54:38;15026:67;;15171:2;15159:15;;;15146:29;15195:12;;;15188:29;15246:2;15272:15;;;;15237:12;;;;14909:1;14902:9;14873:424;","linkReferences":{},"immutableReferences":{"39620":[{"start":8798,"length":32}],"39622":[{"start":8833,"length":32}],"39624":[{"start":8913,"length":32}],"39626":[{"start":8951,"length":32}],"39628":[{"start":8765,"length":32}]}},"methodIdentifiers":{"MIN_ORDER_SIZE()":"d3f82d8e","NATIVE()":"a0cf0aea","WITHDRAW_EPOCH()":"62fe8ee1","deposit(address,uint160)":"03fde255","depositFor(address,address,uint160)":"4e3250cf","depositNative()":"db6b5246","depositNativeFor(address)":"91a775b7","eip712Domain()":"84b0196e","factory()":"c45a0155","maintenanceAccrued(address)":"62b629f9","maintenanceAddress()":"719d5f83","maintenanceBps()":"2e673446","multicall(bytes[])":"ac9650d8","operatorAccrued(address)":"7e122f53","operatorAddress()":"127effb2","operatorAdmin()":"a4e0c181","operatorBps()":"c4109253","owner()":"8da5cb5b","setOperatorAdmin(address)":"6de07157","setOperatorFee(address,uint16)":"26ac1b1c","setWithdrawEpochCap(address,uint256)":"2d2cfb66","settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)":"e0a273bc","settleFees(address)":"a78842ee","tradeBalance(address,address)":"19d5f0c3","usedSettleNonces(uint256)":"4565fe4a","usedWithdrawNonces(address,uint256)":"892d16be","version()":"54fd4d50","withdraw((address,address,uint256,uint256,uint256),bytes)":"4e5c6e4e","withdrawEpochCap(address)":"426aabc2","withdrawnInEpoch(address,uint256)":"742960c1"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.34+commit.80d5c536\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBps\",\"type\":\"uint256\"}],\"name\":\"FEE_TOO_HIGH\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"available\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"required\",\"type\":\"uint160\"}],\"name\":\"INSUFFICIENT_BALANCE\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"INVALID_SIGNER\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"}],\"name\":\"MINIMUM_ORDER_AMOUNT\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrancy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SETTLE_NONCE_ALREADY_USED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SETTLE_NOT_CONSERVED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UNAUTHORIZED_CALLER\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WITHDRAW_NONCE_ALREADY_USED\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"attempted\",\"type\":\"uint256\"}],\"name\":\"WITHDRAW_RATE_LIMITED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WITHDRAW_VOUCHER_EXPIRED\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_OPERATOR\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_ADDRESS_OPERATOR_ADMIN\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZERO_AMOUNT\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"maintenanceRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maintenanceAmount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operatorRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorAmount\",\"type\":\"uint256\"}],\"name\":\"FeesSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"NetSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"OperatorAdminSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"bps\",\"type\":\"uint16\"}],\"name\":\"OperatorFeeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"}],\"name\":\"TokenDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"stateMutability\":\"nonpayable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"MIN_ORDER_SIZE\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WITHDRAW_EPOCH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"_amount\",\"type\":\"uint160\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"_amount\",\"type\":\"uint160\"}],\"name\":\"depositFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"depositNativeFor\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"maintenanceAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maintenanceAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maintenanceBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"operatorAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"setOperatorAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"_bps\",\"type\":\"uint16\"}],\"name\":\"setOperatorFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_cap\",\"type\":\"uint256\"}],\"name\":\"setWithdrawEpochCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"internalType\":\"struct MidribV3.SettleDelta[]\",\"name\":\"_deltas\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"grossVolume\",\"type\":\"uint256\"}],\"internalType\":\"struct MidribV3.TokenVolume[]\",\"name\":\"_volumes\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"settleBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"settleFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"tradeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"usedSettleNonces\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"used\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"usedWithdrawNonces\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"used\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"_version\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"internalType\":\"struct MidribV3.WithdrawalVoucher\",\"name\":\"_v\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"withdrawEpochCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"withdrawnInEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Aspens Technical Team\",\"details\":\"MidribV3 is the post-refactor successor to the legacy on-chain-order      contract (MidribV2, now retired from the build \\u2014 see git history). Under      the Track A optimistic ledger, trading happens off-chain inside the TEE:      orders never touch the chain. The contract only ever sees these fund      movements \\u2014 deposits, TEE-signed net settlement (`settleBatch`), TEE-signed      voucher withdrawals (`withdraw`), and fee settlement. All of the legacy      on-chain order machinery (open / openFor / fill / lock / cancel / resolve,      the ERC-7683 origin- and destination-settler conformance, and Permit2) is      gone.Immutable-args layout (packed, set by {MidribFactory.createInstance}),      by byte offset: owner/signer at 0 (20), factory at 20 (20),      maintenanceAddress at 40 (20), maintenanceBps at 60 (uint16, 2),      operatorAdmin at 62 (20). The maintenance fee (Aspens-controlled) is baked      in immutably for this instance; the operator fee (stack-controlled) lives      in mutable storage, set by `operatorAdmin`.Token compatibility assumptions:      This contract is only safe to use against ERC-20 tokens that satisfy ALL      of the following. Markets must be configured against compliant tokens;      the contract does NOT detect or refuse non-compliant ones.        - Standard `transfer` / `transferFrom` semantics: the sender's balance          drops by exactly the transfer amount, with no re-entrant or          opportunistically-reverting transfer hooks.        - No fee-on-transfer behavior. The `balanceBefore` / `balanceAfter`          reconciliation in `_deposit` assumes the received amount equals the          transferred amount.        - No rebasing / share-based balance model. Balances must be stable          between reads.        - No transfer blocklists that can lock a user's funds after deposit.      Token gating happens off-chain at the arborter / matching-engine      market-config layer. See the SDK README \\\"Token Assumptions\\\" section and      the admin-console Add-Token tooltip.The chain's NATIVE asset (ETH/FLR) is additionally supported as a      first-class balance under the `NATIVE` sentinel key: deposited via      `depositNative`/`depositNativeFor` (payable), withdrawn by the same      TEE voucher flow (paid out as raw value), and settled/fee-skimmed by      `settleBatch`/`settleFees` exactly like any token address.\",\"errors\":{\"FEE_TOO_HIGH(uint256)\":[{\"details\":\"A fee (maintenance alone, or maintenance + operator combined)      exceeded DENOMINATOR (100%). `totalBps` is the rejected total.\"}],\"INSUFFICIENT_BALANCE(uint256,uint160)\":[{\"details\":\"A balance is insufficient for the requested movement. `available` is      the balance on hand; `required` the amount the caller asked for.\"}],\"INVALID_SIGNER()\":[{\"details\":\"A TEE-signed payload (settleBatch / withdrawal voucher) did not      recover to the instance owner (the TEE).\"}],\"MINIMUM_ORDER_AMOUNT(uint160)\":[{\"details\":\"A deposit was below `MIN_ORDER_SIZE` (the dust guard). `amount` is the      rejected value.\"}],\"Reentrancy()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SETTLE_NONCE_ALREADY_USED()\":[{\"details\":\"A `settleBatch` nonce was already consumed (replay).\"}],\"SETTLE_NOT_CONSERVED()\":[{\"details\":\"A `settleBatch`'s per-token net deltas did not sum to exactly the      negated contract-computed fee (would create or destroy value).\"}],\"UNAUTHORIZED_CALLER()\":[{\"details\":\"An owner/admin-gated instance function was called by a non-owner.\"}],\"WITHDRAW_NONCE_ALREADY_USED()\":[{\"details\":\"A withdrawal voucher's `(account, nonce)` pair was already consumed (replay).\"}],\"WITHDRAW_RATE_LIMITED(uint256,uint256)\":[{\"details\":\"A withdrawal would exceed the per-token per-epoch cap (a TEE-bug      blast-radius backstop). `attempted` is the resulting cumulative epoch total.\"}],\"WITHDRAW_VOUCHER_EXPIRED()\":[{\"details\":\"A withdrawal voucher was submitted after its `expiry`.\"}],\"ZERO_ADDRESS_OPERATOR()\":[{\"details\":\"A non-zero operator fee was set with a zero recipient.\"}],\"ZERO_ADDRESS_OPERATOR_ADMIN()\":[{\"details\":\"A zero address was supplied for the operator admin.\"}],\"ZERO_AMOUNT()\":[{\"details\":\"A deposit or withdrawal amount was zero.\"}]},\"events\":{\"FeesSettled(address,address,uint256,address,uint256)\":{\"details\":\"Emitted by `settleFees`: accrued maintenance + operator fees for a token      paid out to their respective recipients' `tradeBalance`.\"},\"NetSettled(address,address,int256)\":{\"details\":\"Emitted per account in a `settleBatch`: net change applied to      `tradeBalance[user][tokenContract]` (off-chain shadow-ledger net      settlement, Track A \\u00a71c).\"},\"OperatorAdminSet(address,address)\":{\"details\":\"Emitted when an instance's operator admin (the stack-admin key gating the operator fee) is rotated.\"},\"OperatorFeeSet(address,uint16)\":{\"details\":\"Emitted when an instance's operator fee (stack-admin-controlled) is set or rotated.\"},\"TokenDeposited(address,address,uint160)\":{\"details\":\"Emitted when a token is deposited into the Midrib contract\"},\"Withdrawn(address,address,uint256,uint256)\":{\"details\":\"Emitted on a TEE-voucher-authorized withdrawal (Track A \\u00a78). Carries      the voucher `nonce` so the off-chain listener fold is idempotent on      `(account, nonce)`.\"}},\"kind\":\"dev\",\"methods\":{\"deposit(address,uint160)\":{\"params\":{\"_amount\":\"amount of tokens we want to deposit\",\"_token\":\"contract address of the token we are depositing\"}},\"depositFor(address,address,uint160)\":{\"details\":\"Enables the Flare FCE on-chain deposit path (see      infra/stacks/fcc/extension/contracts/AspensInstructionSender.sol): the relayer      holds the user's tokens transiently, approves this contract, and calls      `depositFor` so custody AND the credited tradeBalance both land here \\u2014 keeping      `settleBatch`/`withdraw` unchanged \\u2014 while the cosigned instruction names the      real depositor. Unlike `deposit`, tokens are pulled from `msg.sender` (the      relayer), not from `_account`; the credit + event are against `_account`. Same      fee-on-transfer-safe accounting as `_deposit`; `_deposit` itself is untouched.\",\"params\":{\"_account\":\"beneficiary whose tradeBalance is credited\",\"_amount\":\"amount to pull from msg.sender (>= MIN_ORDER_SIZE)\",\"_token\":\"token being deposited\"}},\"depositNativeFor(address)\":{\"params\":{\"_account\":\"beneficiary whose NATIVE tradeBalance is credited\"}},\"eip712Domain()\":{\"details\":\"See: https://eips.ethereum.org/EIPS/eip-5267\"},\"factory()\":{\"returns\":{\"_factory\":\"the deploying factory address\"}},\"multicall(bytes[])\":{\"details\":\"Apply `delegatecall` with the current contract to each calldata in `data`, and store the `abi.encode` formatted results of each `delegatecall` into `results`. If any of the `delegatecall`s reverts, the entire context is reverted, and the error is bubbled up. By default, this function directly returns the results and terminates the call context. If you need to add before and after actions to the multicall, please override this function.\"},\"owner()\":{\"returns\":{\"_owner\":\"the instance owner / TEE signer address\"}},\"setOperatorAdmin(address)\":{\"params\":{\"_newAdmin\":\"new operator admin (non-zero)\"}},\"setOperatorFee(address,uint16)\":{\"params\":{\"_bps\":\"operator fee in basis points\",\"_recipient\":\"operator fee recipient (required when `_bps > 0`)\"}},\"setWithdrawEpochCap(address,uint256)\":{\"params\":{\"_cap\":\"cumulative amount withdrawable per `WITHDRAW_EPOCH` (`0` = unlimited)\",\"_token\":\"token whose cap to set\"}},\"settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)\":{\"details\":\"Off-chain shadow-ledger net settlement (Track A \\u00a71c). In the optimistic      model funds are NOT locked per order; matched trades accumulate as net      deltas off-chain and are reflected on-chain here in a single batch.      Safety:      - signed by the instance owner (the TEE);      - per token, the contract computes        `fee = grossVolume*maintenanceBps/DENOMINATOR (floor) + grossVolume*operatorBps/DENOMINATOR (floor)`        and requires the trader deltas to sum to exactly `-fee` \\u2014 the fee is the        conservation sink. Non-bypassable: under- OR over-paying the computed        fee reverts SETTLE_NOT_CONSERVED, so the on-chain bps is enforced        against the reported volume;      - the skim accrues to `maintenanceAccrued`/`operatorAccrued`, paid out        later (slower cadence) by `settleFees`;      - no account's `tradeBalance` may go negative (no overdraw / mint);      - one-shot per `_nonce` (replay-protected).\",\"params\":{\"_deltas\":\"per-(user,token) signed NET-OF-FEE balance changes\",\"_nonce\":\"unique batch nonce\",\"_signature\":\"owner EIP-712 signature over (deltasHash, volumesHash, nonce)\",\"_volumes\":\"per-token gross matched volume (drives the fee computation)\"}},\"settleFees(address)\":{\"params\":{\"_token\":\"token whose accrued fees to pay out\"}},\"version()\":{\"returns\":{\"_version\":\"The version number\"}},\"withdraw((address,address,uint256,uint256,uint256),bytes)\":{\"details\":\"In the optimistic shadow-ledger model a self-service withdrawal is      unsafe: on-chain `tradeBalance` still includes funds reserved behind      resting orders (reservations are off-chain), so a user could drain      collateral a later `settleBatch` is obligated to pay out. The TEE \\u2014      the authority on the withdrawable balance \\u2014 signs a voucher instead;      the contract enforces only bounded backstops:      - signed by the instance owner (the TEE), like `settleBatch`;      - not past `expiry`; one-shot per `(account, nonce)` (replay-proof);      - hard cap: never pays more of a token than `tradeBalance` holds (no mint);      - per-token per-epoch rate limit (TEE-bug blast-radius backstop).      Anyone may submit it (gas payer need not be the recipient): funds      always go to `_v.account`, so a relayer can pay gas for a gasless      withdrawal.\",\"params\":{\"_signature\":\"owner EIP-712 signature over the voucher fields\",\"_v\":\"the signed voucher\"}}},\"stateVariables\":{\"DENOMINATOR\":{\"details\":\"Basis-point denominator (100% = 10_000). Matches MidribFactory + the Solana program.\"},\"MIN_ORDER_SIZE\":{\"details\":\"Minimum deposit amount \\u2014 a dust guard inherited from V2.\"},\"NATIVE\":{\"details\":\"Sentinel \\\"token address\\\" keying the chain's NATIVE asset (ETH/FLR)      in `tradeBalance`, vouchers, `settleBatch` deltas/volumes, and fee      accrual. Purely a mapping key \\u2014 no code lives at it and no ERC-20      call is ever made against it. Native value can ONLY enter via      `depositNative`/`depositNativeFor` (there is no `receive()`), so      `address(this).balance` always equals the sum of sentinel-keyed      trade balances plus sentinel-keyed accrued fees.\"},\"VERSION\":{\"details\":\"Current version number\"},\"WITHDRAW_EPOCH\":{\"details\":\"Window for the per-token withdrawal rate-limit accounting (Track A \\u00a78).\"},\"maintenanceAccrued\":{\"details\":\"Per-token fees skimmed in `settleBatch` but not yet paid out. Kept in two      pools so a later operator bps/recipient change can't mis-attribute fees      already accrued at the old rate. Drained by `settleFees`.\"},\"operatorAddress\":{\"details\":\"Operator fee (stack-controlled) recipient + rate, in basis points. Mutable;      set/rotated by `operatorAdmin` via `setOperatorFee`. Skimmed in ADDITION to      the immutable maintenance fee. Zero until configured.\"},\"operatorAdminOverride\":{\"details\":\"Optional override of the baked-in operator admin (immutable arg at byte 62), letting      the stack admin rotate the key that gates the operator fee. `0` = use the baked      value. Read the effective admin via `operatorAdmin()`.\"},\"tradeBalance\":{\"details\":\"settled on-chain balance: holder => token => amount\"},\"usedSettleNonces\":{\"details\":\"Nonces already consumed by `settleBatch` (TEE-signed net settlement).\"},\"usedWithdrawNonces\":{\"details\":\"`(account, nonce)` pairs already consumed by a withdrawal voucher      (Track A \\u00a78). Per-account so users' voucher nonces are independent.\"},\"withdrawEpochCap\":{\"details\":\"Per-token cumulative withdrawal cap per epoch \\u2014 a TEE-bug      blast-radius backstop. `0` (the default) means unlimited; the      instance owner raises caps from a conservative start as confidence      grows (`setWithdrawEpochCap`).\"},\"withdrawnInEpoch\":{\"details\":\"Cumulative amount withdrawn per `(token, epoch)`, where      `epoch = block.timestamp / WITHDRAW_EPOCH`.\"}},\"title\":\"Midrib V3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(address,uint160)\":{\"notice\":\"Allows a user to deposit tokens into this contract.\"},\"depositFor(address,address,uint160)\":{\"notice\":\"Deposit on behalf of `_account`, pulling the tokens from the CALLER.\"},\"depositNative()\":{\"notice\":\"Deposit the chain's native asset (ETH/FLR), credited under the         NATIVE sentinel key. The native analogue of `deposit`.\"},\"depositNativeFor(address)\":{\"notice\":\"Native-asset analogue of `depositFor` (the Flare FCE relayer         path): the VALUE comes from the caller, while the credit + event         go to `_account`.\"},\"factory()\":{\"notice\":\"The factory that deployed this instance (immutable arg at byte 20).\"},\"maintenanceAddress()\":{\"notice\":\"Maintenance fee recipient \\u2014 Aspens-controlled, immutable for this instance.\"},\"maintenanceBps()\":{\"notice\":\"Maintenance fee in basis points \\u2014 Aspens-controlled, immutable for this instance.\"},\"operatorAdmin()\":{\"notice\":\"Effective operator admin: the storage override if rotated, else the baked-in         immutable arg (byte 62). Gates `setOperatorFee` / `setOperatorAdmin`.\"},\"owner()\":{\"notice\":\"The instance owner \\u2014 the TEE signer (immutable arg at byte 0).         Authorizes `settleBatch` and withdrawal vouchers, and gates         `setWithdrawEpochCap`.\"},\"setOperatorAdmin(address)\":{\"notice\":\"Rotate the operator admin (current operator admin only).\"},\"setOperatorFee(address,uint16)\":{\"notice\":\"Set or rotate the operator fee (stack admin only). Skimmed IN ADDITION to         the maintenance fee; the combined fee may not exceed DENOMINATOR (100%).         A zero `_bps` disables the operator fee.\"},\"setWithdrawEpochCap(address,uint256)\":{\"notice\":\"Set the per-epoch withdrawal cap for a token (instance owner only).         `0` disables the cap (unlimited). Caps bound the blast radius of a         TEE bug; start conservative and raise as confidence grows.\"},\"settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)\":{\"notice\":\"Apply a TEE-signed batch of net balance changes to `tradeBalance`,         skimming the maintenance + operator fees the contract computes from         the reported per-token gross matched volume.\"},\"settleFees(address)\":{\"notice\":\"Pay out the accrued maintenance + operator fees for a token to their         configured recipients' `tradeBalance` (from which they withdraw by         voucher). Intended to run on a slower cadence than `settleBatch`.         Permissionless \\u2014 it only ever moves accrued fees to the on-chain         configured addresses.\"},\"version()\":{\"notice\":\"Get current version of the contract\"},\"withdraw((address,address,uint256,uint256,uint256),bytes)\":{\"notice\":\"Withdraw tokens against a TEE-signed voucher (Track A \\u00a78).\"}},\"notice\":\"Optimistic shadow-ledger settlement contract for the Aspens stack.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"chains/evm/src/MidribV3.sol\":\"MidribV3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":5000},\"remappings\":[\":@across-protocol/=chains/evm/lib/contracts/node_modules/@across-protocol/\",\":@ensdomains/=chains/evm/lib/contracts/node_modules/@ensdomains/\",\":@eth-optimism/=chains/evm/lib/contracts/node_modules/@eth-optimism/\",\":@gnosis.pm/=chains/evm/lib/contracts/node_modules/@gnosis.pm/\",\":@maticnetwork/=chains/evm/lib/contracts/node_modules/@maticnetwork/\",\":@matterlabs/=chains/evm/lib/contracts/node_modules/@matterlabs/\",\":@openzeppelin/=chains/evm/lib/contracts/node_modules/@openzeppelin/\",\":@scroll-tech/=chains/evm/lib/contracts/node_modules/@scroll-tech/\",\":@uma/=chains/evm/lib/contracts/node_modules/@uma/\",\":@uniswap/=chains/evm/lib/contracts/node_modules/@uniswap/\",\":arb-bridge-eth/=chains/evm/lib/contracts/node_modules/arb-bridge-eth/\",\":arb-bridge-peripherals/=chains/evm/lib/contracts/node_modules/arb-bridge-peripherals/\",\":arbos-precompiles/=chains/evm/lib/contracts/node_modules/arbos-precompiles/\",\":base64-sol/=chains/evm/lib/contracts/node_modules/base64-sol/\",\":bitcoinprism-evm/=chains/evm/lib/oif-contracts/lib/bitcoinprism-evm/\",\":clones-with-immutable-args/=chains/evm/lib/clones-with-immutable-args/src/\",\":contracts/=chains/evm/lib/contracts/contracts/\",\":ds-test/=chains/evm/lib/clones-with-immutable-args/lib/ds-test/src/\",\":erc4626-tests/=chains/evm/lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":eth-gas-reporter/=chains/evm/lib/contracts/node_modules/eth-gas-reporter/\",\":forge-gas-snapshot/=chains/evm/lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=chains/evm/lib/forge-std/src/\",\":halmos-cheatcodes/=chains/evm/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":hardhat-deploy/=chains/evm/lib/contracts/node_modules/hardhat-deploy/\",\":hardhat/=chains/evm/lib/contracts/node_modules/hardhat/\",\":oif-contracts/=chains/evm/lib/oif-contracts/\",\":openzeppelin-contracts-upgradeable/=chains/evm/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=chains/evm/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=chains/evm/lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=chains/evm/lib/oif-contracts/lib/openzeppelin-contracts/contracts/\",\":permit2/=chains/evm/lib/permit2/\",\":solady/=chains/evm/lib/solady/src/\",\":soledge/=chains/evm/lib/oif-contracts/lib/the-compact/lib/soledge/src/\",\":solmate/=chains/evm/lib/permit2/lib/solmate/\",\":the-compact/=chains/evm/lib/oif-contracts/lib/the-compact/\"]},\"sources\":{\"chains/evm/lib/clones-with-immutable-args/src/Clone.sol\":{\"keccak256\":\"0xf75bde15306c97dfc1f265130e5d3dbdcbacc7a42ee4b0adbc09e76b04efd59e\",\"license\":\"BSD\",\"urls\":[\"bzz-raw://517e7dc10088420ebbdcf879c3ab7f7e0c7c6063596e186309bb158895ece712\",\"dweb:/ipfs/QmYcwmBbPXg833XofAVx7X2qFjWZpAQH1DBXTKcVQSKTGM\"]},\"chains/evm/lib/solady/src/utils/ECDSA.sol\":{\"keccak256\":\"0xb0754260daabfe6f20dd16f2213823f27c8df1089b43c8eda9b3c2a6eca07478\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ffef4ca363ec0e2437b5e195fbb3d58bdc6750921fce32f351ca1c092ad36a75\",\"dweb:/ipfs/QmTcnAyxwvQg3h357PdB8S8oz5bBt85J4SvEgmMqwAfPKF\"]},\"chains/evm/lib/solady/src/utils/EIP712.sol\":{\"keccak256\":\"0x53ccaa757944900e7423347c3c35ea5a905580f3f075452b8468a501a9c39839\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aa5688d98319fbeb5b3c46330a394e15a0f2c862d651415e183da4179b918351\",\"dweb:/ipfs/QmZZFrFWmUCFL1qkZDVm3oqrDkQfumYnnksF6cpPkAHdtJ\"]},\"chains/evm/lib/solady/src/utils/Multicallable.sol\":{\"keccak256\":\"0xccd9f4b1c6dbc1592a2c68f10ef9b9798ab03279c39142f7266f6fd8cfcc0fd4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a54a9ede45f3537604184f48031279f493eb0075fb51b42b2c37c86540023ef\",\"dweb:/ipfs/QmfCovmCBLJZtPYJyfZEpbgTuQgT1r2DsDJVbRkxamsbZT\"]},\"chains/evm/lib/solady/src/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xdb28f318ec45197a6c7cc2abebed67d7cb8b965838ef962e3844423256a9ddb8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://873cd46b77a2aeb781e7a0d131e7299151323ed884c330101a51d0727e218d98\",\"dweb:/ipfs/QmddadCjyedztvdSgLZEyKWoRes2SqtpviSjhEbSNrkUoi\"]},\"chains/evm/lib/solady/src/utils/SafeCastLib.sol\":{\"keccak256\":\"0x184c2be02a160a07f7e27fea5753d878c5015c0632faa115ed2f4e90614df284\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c721441b505ec68ecfcc08cf8019342f6f304e94165af3e02db726377de2055a\",\"dweb:/ipfs/Qmcwe7wcjeGs7px92YR4XCFB6YS1x8T1Aq9FoDC7LKC4BA\"]},\"chains/evm/lib/solady/src/utils/SafeTransferLib.sol\":{\"keccak256\":\"0x960d5b7ca568a090c4a7785ddfd88f6ce135ced94f5c79c34e5519a71772a817\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2dd81d9b7c0e8cd1ba3b84b8d3b3c937e3b942b626e4d5ab4ad454a07666396\",\"dweb:/ipfs/QmcLh9t8qgojjnziKzDfZXNtbsmvsQMRgd9nHds9ZmP668\"]},\"chains/evm/src/MidribV3.sol\":{\"keccak256\":\"0xe3ee3326d687dba8cd8207d8ac3f132d00330fa06e7379932fd337aad8ccbe2c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://928b286c192e8154020cdbf8a3b4640f40f3f0404a97429cd37012d88e43b88c\",\"dweb:/ipfs/QmahxUiY7okS4rfbqqAdn86rbUt2kxwdfsERTbE1rUAtPC\"]},\"chains/evm/src/interfaces/IMinimalErc20.sol\":{\"keccak256\":\"0x5a34550af787ce671c59414f813621ae56327e90b1d6073edd30fc7d3107bb3f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1b62cf4b600df271955dfdbd45fef785becf6d910bcf7bb8b586cdfc30a5c2b2\",\"dweb:/ipfs/QmZbJ5zW71QzN73NeLVfixFznBnEvHEtqqRj8Jm1mLAMUh\"]},\"chains/evm/src/libraries/LibString.sol\":{\"keccak256\":\"0x34bce717d04e252a623fd1a27cd6a61e77565a448292224b10ec06beb646d3f3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3d138d27208395ef9122c6c043ea41381e53d3b3c1989d8c7873fbf0ebc79096\",\"dweb:/ipfs/QmedpQ96QxJPdhnbkvbsCDNfBDmeZo5TpM45DA4CH4ffww\"]},\"chains/evm/src/libraries/MidribErrors.sol\":{\"keccak256\":\"0x8d8029a3cad2094f33e6bf554fd87818c5df02bfbf4bb83bd2e0a8d1c1dbf3cd\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://99ea98352d486d113c238f75319dc560c719d59cf221e55f4ab306b4cd80092b\",\"dweb:/ipfs/Qmedowgiqoum6YQ1fFzCuFiTa2D88LNHNqApwF7sjcZEZU\"]},\"chains/evm/src/libraries/MidribEvents.sol\":{\"keccak256\":\"0x38ed09e6cf0af5b8f0061725c2c82050a7b9f62540bfe1c32f2174480e0bdac7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b099c0d4dcc8b836de7ab1965d62e8454eebb2b2f631542c61b1a2983ee32d7c\",\"dweb:/ipfs/QmNojXo92kVn8RA484mKjVui79xchSTNFyTSWH2eBzs2JW\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.34+commit.80d5c536"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"totalBps","type":"uint256"}],"type":"error","name":"FEE_TOO_HIGH"},{"inputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint160","name":"required","type":"uint160"}],"type":"error","name":"INSUFFICIENT_BALANCE"},{"inputs":[],"type":"error","name":"INVALID_SIGNER"},{"inputs":[{"internalType":"uint160","name":"amount","type":"uint160"}],"type":"error","name":"MINIMUM_ORDER_AMOUNT"},{"inputs":[],"type":"error","name":"Reentrancy"},{"inputs":[],"type":"error","name":"SETTLE_NONCE_ALREADY_USED"},{"inputs":[],"type":"error","name":"SETTLE_NOT_CONSERVED"},{"inputs":[],"type":"error","name":"UNAUTHORIZED_CALLER"},{"inputs":[],"type":"error","name":"WITHDRAW_NONCE_ALREADY_USED"},{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"},{"internalType":"uint256","name":"attempted","type":"uint256"}],"type":"error","name":"WITHDRAW_RATE_LIMITED"},{"inputs":[],"type":"error","name":"WITHDRAW_VOUCHER_EXPIRED"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_OPERATOR"},{"inputs":[],"type":"error","name":"ZERO_ADDRESS_OPERATOR_ADMIN"},{"inputs":[],"type":"error","name":"ZERO_AMOUNT"},{"inputs":[{"internalType":"address","name":"token","type":"address","indexed":true},{"internalType":"address","name":"maintenanceRecipient","type":"address","indexed":true},{"internalType":"uint256","name":"maintenanceAmount","type":"uint256","indexed":false},{"internalType":"address","name":"operatorRecipient","type":"address","indexed":true},{"internalType":"uint256","name":"operatorAmount","type":"uint256","indexed":false}],"type":"event","name":"FeesSettled","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"int256","name":"delta","type":"int256","indexed":false}],"type":"event","name":"NetSettled","anonymous":false},{"inputs":[{"internalType":"address","name":"oldAdmin","type":"address","indexed":true},{"internalType":"address","name":"newAdmin","type":"address","indexed":true}],"type":"event","name":"OperatorAdminSet","anonymous":false},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint16","name":"bps","type":"uint16","indexed":false}],"type":"event","name":"OperatorFeeSet","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"uint160","name":"amount","type":"uint160","indexed":false}],"type":"event","name":"TokenDeposited","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"tokenContract","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"nonce","type":"uint256","indexed":false}],"type":"event","name":"Withdrawn","anonymous":false},{"inputs":[],"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_ORDER_SIZE","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"NATIVE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WITHDRAW_EPOCH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint160","name":"_amount","type":"uint160"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint160","name":"_amount","type":"uint160"}],"stateMutability":"nonpayable","type":"function","name":"depositFor"},{"inputs":[],"stateMutability":"payable","type":"function","name":"depositNative"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"stateMutability":"payable","type":"function","name":"depositNativeFor"},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"factory","outputs":[{"internalType":"address","name":"_factory","type":"address"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"maintenanceAccrued","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maintenanceAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"maintenanceBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"multicall","outputs":[{"internalType":"bytes[]","name":"","type":"bytes[]"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"operatorAccrued","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorAdmin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"owner","outputs":[{"internalType":"address","name":"_owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"_newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorAdmin"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint16","name":"_bps","type":"uint16"}],"stateMutability":"nonpayable","type":"function","name":"setOperatorFee"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_cap","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setWithdrawEpochCap"},{"inputs":[{"internalType":"struct MidribV3.SettleDelta[]","name":"_deltas","type":"tuple[]","components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"int256","name":"delta","type":"int256"}]},{"internalType":"struct MidribV3.TokenVolume[]","name":"_volumes","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"grossVolume","type":"uint256"}]},{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"settleBatch"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"settleFees"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"tradeBalance","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"usedSettleNonces","outputs":[{"internalType":"bool","name":"used","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"view","type":"function","name":"usedWithdrawNonces","outputs":[{"internalType":"bool","name":"used","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"uint8","name":"_version","type":"uint8"}]},{"inputs":[{"internalType":"struct MidribV3.WithdrawalVoucher","name":"_v","type":"tuple","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"}]},{"internalType":"bytes","name":"_signature","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"withdrawEpochCap","outputs":[{"internalType":"uint256","name":"cap","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawnInEpoch","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"deposit(address,uint160)":{"params":{"_amount":"amount of tokens we want to deposit","_token":"contract address of the token we are depositing"}},"depositFor(address,address,uint160)":{"details":"Enables the Flare FCE on-chain deposit path (see      infra/stacks/fcc/extension/contracts/AspensInstructionSender.sol): the relayer      holds the user's tokens transiently, approves this contract, and calls      `depositFor` so custody AND the credited tradeBalance both land here — keeping      `settleBatch`/`withdraw` unchanged — while the cosigned instruction names the      real depositor. Unlike `deposit`, tokens are pulled from `msg.sender` (the      relayer), not from `_account`; the credit + event are against `_account`. Same      fee-on-transfer-safe accounting as `_deposit`; `_deposit` itself is untouched.","params":{"_account":"beneficiary whose tradeBalance is credited","_amount":"amount to pull from msg.sender (>= MIN_ORDER_SIZE)","_token":"token being deposited"}},"depositNativeFor(address)":{"params":{"_account":"beneficiary whose NATIVE tradeBalance is credited"}},"eip712Domain()":{"details":"See: https://eips.ethereum.org/EIPS/eip-5267"},"factory()":{"returns":{"_factory":"the deploying factory address"}},"multicall(bytes[])":{"details":"Apply `delegatecall` with the current contract to each calldata in `data`, and store the `abi.encode` formatted results of each `delegatecall` into `results`. If any of the `delegatecall`s reverts, the entire context is reverted, and the error is bubbled up. By default, this function directly returns the results and terminates the call context. If you need to add before and after actions to the multicall, please override this function."},"owner()":{"returns":{"_owner":"the instance owner / TEE signer address"}},"setOperatorAdmin(address)":{"params":{"_newAdmin":"new operator admin (non-zero)"}},"setOperatorFee(address,uint16)":{"params":{"_bps":"operator fee in basis points","_recipient":"operator fee recipient (required when `_bps > 0`)"}},"setWithdrawEpochCap(address,uint256)":{"params":{"_cap":"cumulative amount withdrawable per `WITHDRAW_EPOCH` (`0` = unlimited)","_token":"token whose cap to set"}},"settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)":{"details":"Off-chain shadow-ledger net settlement (Track A §1c). In the optimistic      model funds are NOT locked per order; matched trades accumulate as net      deltas off-chain and are reflected on-chain here in a single batch.      Safety:      - signed by the instance owner (the TEE);      - per token, the contract computes        `fee = grossVolume*maintenanceBps/DENOMINATOR (floor) + grossVolume*operatorBps/DENOMINATOR (floor)`        and requires the trader deltas to sum to exactly `-fee` — the fee is the        conservation sink. Non-bypassable: under- OR over-paying the computed        fee reverts SETTLE_NOT_CONSERVED, so the on-chain bps is enforced        against the reported volume;      - the skim accrues to `maintenanceAccrued`/`operatorAccrued`, paid out        later (slower cadence) by `settleFees`;      - no account's `tradeBalance` may go negative (no overdraw / mint);      - one-shot per `_nonce` (replay-protected).","params":{"_deltas":"per-(user,token) signed NET-OF-FEE balance changes","_nonce":"unique batch nonce","_signature":"owner EIP-712 signature over (deltasHash, volumesHash, nonce)","_volumes":"per-token gross matched volume (drives the fee computation)"}},"settleFees(address)":{"params":{"_token":"token whose accrued fees to pay out"}},"version()":{"returns":{"_version":"The version number"}},"withdraw((address,address,uint256,uint256,uint256),bytes)":{"details":"In the optimistic shadow-ledger model a self-service withdrawal is      unsafe: on-chain `tradeBalance` still includes funds reserved behind      resting orders (reservations are off-chain), so a user could drain      collateral a later `settleBatch` is obligated to pay out. The TEE —      the authority on the withdrawable balance — signs a voucher instead;      the contract enforces only bounded backstops:      - signed by the instance owner (the TEE), like `settleBatch`;      - not past `expiry`; one-shot per `(account, nonce)` (replay-proof);      - hard cap: never pays more of a token than `tradeBalance` holds (no mint);      - per-token per-epoch rate limit (TEE-bug blast-radius backstop).      Anyone may submit it (gas payer need not be the recipient): funds      always go to `_v.account`, so a relayer can pay gas for a gasless      withdrawal.","params":{"_signature":"owner EIP-712 signature over the voucher fields","_v":"the signed voucher"}}},"version":1},"userdoc":{"kind":"user","methods":{"deposit(address,uint160)":{"notice":"Allows a user to deposit tokens into this contract."},"depositFor(address,address,uint160)":{"notice":"Deposit on behalf of `_account`, pulling the tokens from the CALLER."},"depositNative()":{"notice":"Deposit the chain's native asset (ETH/FLR), credited under the         NATIVE sentinel key. The native analogue of `deposit`."},"depositNativeFor(address)":{"notice":"Native-asset analogue of `depositFor` (the Flare FCE relayer         path): the VALUE comes from the caller, while the credit + event         go to `_account`."},"factory()":{"notice":"The factory that deployed this instance (immutable arg at byte 20)."},"maintenanceAddress()":{"notice":"Maintenance fee recipient — Aspens-controlled, immutable for this instance."},"maintenanceBps()":{"notice":"Maintenance fee in basis points — Aspens-controlled, immutable for this instance."},"operatorAdmin()":{"notice":"Effective operator admin: the storage override if rotated, else the baked-in         immutable arg (byte 62). Gates `setOperatorFee` / `setOperatorAdmin`."},"owner()":{"notice":"The instance owner — the TEE signer (immutable arg at byte 0).         Authorizes `settleBatch` and withdrawal vouchers, and gates         `setWithdrawEpochCap`."},"setOperatorAdmin(address)":{"notice":"Rotate the operator admin (current operator admin only)."},"setOperatorFee(address,uint16)":{"notice":"Set or rotate the operator fee (stack admin only). Skimmed IN ADDITION to         the maintenance fee; the combined fee may not exceed DENOMINATOR (100%).         A zero `_bps` disables the operator fee."},"setWithdrawEpochCap(address,uint256)":{"notice":"Set the per-epoch withdrawal cap for a token (instance owner only).         `0` disables the cap (unlimited). Caps bound the blast radius of a         TEE bug; start conservative and raise as confidence grows."},"settleBatch((address,address,int256)[],(address,uint256)[],uint256,bytes)":{"notice":"Apply a TEE-signed batch of net balance changes to `tradeBalance`,         skimming the maintenance + operator fees the contract computes from         the reported per-token gross matched volume."},"settleFees(address)":{"notice":"Pay out the accrued maintenance + operator fees for a token to their         configured recipients' `tradeBalance` (from which they withdraw by         voucher). Intended to run on a slower cadence than `settleBatch`.         Permissionless — it only ever moves accrued fees to the on-chain         configured addresses."},"version()":{"notice":"Get current version of the contract"},"withdraw((address,address,uint256,uint256,uint256),bytes)":{"notice":"Withdraw tokens against a TEE-signed voucher (Track A §8)."}},"version":1}},"settings":{"remappings":["@across-protocol/=chains/evm/lib/contracts/node_modules/@across-protocol/","@ensdomains/=chains/evm/lib/contracts/node_modules/@ensdomains/","@eth-optimism/=chains/evm/lib/contracts/node_modules/@eth-optimism/","@gnosis.pm/=chains/evm/lib/contracts/node_modules/@gnosis.pm/","@maticnetwork/=chains/evm/lib/contracts/node_modules/@maticnetwork/","@matterlabs/=chains/evm/lib/contracts/node_modules/@matterlabs/","@openzeppelin/=chains/evm/lib/contracts/node_modules/@openzeppelin/","@scroll-tech/=chains/evm/lib/contracts/node_modules/@scroll-tech/","@uma/=chains/evm/lib/contracts/node_modules/@uma/","@uniswap/=chains/evm/lib/contracts/node_modules/@uniswap/","arb-bridge-eth/=chains/evm/lib/contracts/node_modules/arb-bridge-eth/","arb-bridge-peripherals/=chains/evm/lib/contracts/node_modules/arb-bridge-peripherals/","arbos-precompiles/=chains/evm/lib/contracts/node_modules/arbos-precompiles/","base64-sol/=chains/evm/lib/contracts/node_modules/base64-sol/","bitcoinprism-evm/=chains/evm/lib/oif-contracts/lib/bitcoinprism-evm/","clones-with-immutable-args/=chains/evm/lib/clones-with-immutable-args/src/","contracts/=chains/evm/lib/contracts/contracts/","ds-test/=chains/evm/lib/clones-with-immutable-args/lib/ds-test/src/","erc4626-tests/=chains/evm/lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","eth-gas-reporter/=chains/evm/lib/contracts/node_modules/eth-gas-reporter/","forge-gas-snapshot/=chains/evm/lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=chains/evm/lib/forge-std/src/","halmos-cheatcodes/=chains/evm/lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","hardhat-deploy/=chains/evm/lib/contracts/node_modules/hardhat-deploy/","hardhat/=chains/evm/lib/contracts/node_modules/hardhat/","oif-contracts/=chains/evm/lib/oif-contracts/","openzeppelin-contracts-upgradeable/=chains/evm/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=chains/evm/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=chains/evm/lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=chains/evm/lib/oif-contracts/lib/openzeppelin-contracts/contracts/","permit2/=chains/evm/lib/permit2/","solady/=chains/evm/lib/solady/src/","soledge/=chains/evm/lib/oif-contracts/lib/the-compact/lib/soledge/src/","solmate/=chains/evm/lib/permit2/lib/solmate/","the-compact/=chains/evm/lib/oif-contracts/lib/the-compact/"],"optimizer":{"enabled":true,"runs":5000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"chains/evm/src/MidribV3.sol":"MidribV3"},"evmVersion":"london","libraries":{}},"sources":{"chains/evm/lib/clones-with-immutable-args/src/Clone.sol":{"keccak256":"0xf75bde15306c97dfc1f265130e5d3dbdcbacc7a42ee4b0adbc09e76b04efd59e","urls":["bzz-raw://517e7dc10088420ebbdcf879c3ab7f7e0c7c6063596e186309bb158895ece712","dweb:/ipfs/QmYcwmBbPXg833XofAVx7X2qFjWZpAQH1DBXTKcVQSKTGM"],"license":"BSD"},"chains/evm/lib/solady/src/utils/ECDSA.sol":{"keccak256":"0xb0754260daabfe6f20dd16f2213823f27c8df1089b43c8eda9b3c2a6eca07478","urls":["bzz-raw://ffef4ca363ec0e2437b5e195fbb3d58bdc6750921fce32f351ca1c092ad36a75","dweb:/ipfs/QmTcnAyxwvQg3h357PdB8S8oz5bBt85J4SvEgmMqwAfPKF"],"license":"MIT"},"chains/evm/lib/solady/src/utils/EIP712.sol":{"keccak256":"0x53ccaa757944900e7423347c3c35ea5a905580f3f075452b8468a501a9c39839","urls":["bzz-raw://aa5688d98319fbeb5b3c46330a394e15a0f2c862d651415e183da4179b918351","dweb:/ipfs/QmZZFrFWmUCFL1qkZDVm3oqrDkQfumYnnksF6cpPkAHdtJ"],"license":"MIT"},"chains/evm/lib/solady/src/utils/Multicallable.sol":{"keccak256":"0xccd9f4b1c6dbc1592a2c68f10ef9b9798ab03279c39142f7266f6fd8cfcc0fd4","urls":["bzz-raw://8a54a9ede45f3537604184f48031279f493eb0075fb51b42b2c37c86540023ef","dweb:/ipfs/QmfCovmCBLJZtPYJyfZEpbgTuQgT1r2DsDJVbRkxamsbZT"],"license":"MIT"},"chains/evm/lib/solady/src/utils/ReentrancyGuard.sol":{"keccak256":"0xdb28f318ec45197a6c7cc2abebed67d7cb8b965838ef962e3844423256a9ddb8","urls":["bzz-raw://873cd46b77a2aeb781e7a0d131e7299151323ed884c330101a51d0727e218d98","dweb:/ipfs/QmddadCjyedztvdSgLZEyKWoRes2SqtpviSjhEbSNrkUoi"],"license":"MIT"},"chains/evm/lib/solady/src/utils/SafeCastLib.sol":{"keccak256":"0x184c2be02a160a07f7e27fea5753d878c5015c0632faa115ed2f4e90614df284","urls":["bzz-raw://c721441b505ec68ecfcc08cf8019342f6f304e94165af3e02db726377de2055a","dweb:/ipfs/Qmcwe7wcjeGs7px92YR4XCFB6YS1x8T1Aq9FoDC7LKC4BA"],"license":"MIT"},"chains/evm/lib/solady/src/utils/SafeTransferLib.sol":{"keccak256":"0x960d5b7ca568a090c4a7785ddfd88f6ce135ced94f5c79c34e5519a71772a817","urls":["bzz-raw://b2dd81d9b7c0e8cd1ba3b84b8d3b3c937e3b942b626e4d5ab4ad454a07666396","dweb:/ipfs/QmcLh9t8qgojjnziKzDfZXNtbsmvsQMRgd9nHds9ZmP668"],"license":"MIT"},"chains/evm/src/MidribV3.sol":{"keccak256":"0xe3ee3326d687dba8cd8207d8ac3f132d00330fa06e7379932fd337aad8ccbe2c","urls":["bzz-raw://928b286c192e8154020cdbf8a3b4640f40f3f0404a97429cd37012d88e43b88c","dweb:/ipfs/QmahxUiY7okS4rfbqqAdn86rbUt2kxwdfsERTbE1rUAtPC"],"license":"BUSL-1.1"},"chains/evm/src/interfaces/IMinimalErc20.sol":{"keccak256":"0x5a34550af787ce671c59414f813621ae56327e90b1d6073edd30fc7d3107bb3f","urls":["bzz-raw://1b62cf4b600df271955dfdbd45fef785becf6d910bcf7bb8b586cdfc30a5c2b2","dweb:/ipfs/QmZbJ5zW71QzN73NeLVfixFznBnEvHEtqqRj8Jm1mLAMUh"],"license":"BUSL-1.1"},"chains/evm/src/libraries/LibString.sol":{"keccak256":"0x34bce717d04e252a623fd1a27cd6a61e77565a448292224b10ec06beb646d3f3","urls":["bzz-raw://3d138d27208395ef9122c6c043ea41381e53d3b3c1989d8c7873fbf0ebc79096","dweb:/ipfs/QmedpQ96QxJPdhnbkvbsCDNfBDmeZo5TpM45DA4CH4ffww"],"license":"BUSL-1.1"},"chains/evm/src/libraries/MidribErrors.sol":{"keccak256":"0x8d8029a3cad2094f33e6bf554fd87818c5df02bfbf4bb83bd2e0a8d1c1dbf3cd","urls":["bzz-raw://99ea98352d486d113c238f75319dc560c719d59cf221e55f4ab306b4cd80092b","dweb:/ipfs/Qmedowgiqoum6YQ1fFzCuFiTa2D88LNHNqApwF7sjcZEZU"],"license":"BUSL-1.1"},"chains/evm/src/libraries/MidribEvents.sol":{"keccak256":"0x38ed09e6cf0af5b8f0061725c2c82050a7b9f62540bfe1c32f2174480e0bdac7","urls":["bzz-raw://b099c0d4dcc8b836de7ab1965d62e8454eebb2b2f631542c61b1a2983ee32d7c","dweb:/ipfs/QmNojXo92kVn8RA484mKjVui79xchSTNFyTSWH2eBzs2JW"],"license":"BUSL-1.1"}},"version":1},"id":31}