@zoralabs/limit-orders 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/.turbo/turbo-build$colon$js.log +85 -0
  2. package/AUDIT_NOTES.md +33 -0
  3. package/AUDIT_RFP.md +408 -0
  4. package/CHANGELOG.md +25 -0
  5. package/GAS_COMPARISON_RESULTS.md +194 -0
  6. package/LICENSE +21 -0
  7. package/README.md +650 -0
  8. package/SPEC.md +291 -0
  9. package/abis/BalanceDeltaLibrary.json +15 -0
  10. package/abis/BeforeSwapDeltaLibrary.json +15 -0
  11. package/abis/CurrencyLibrary.json +25 -0
  12. package/abis/CustomRevert.json +28 -0
  13. package/abis/IAllowanceTransfer.json +486 -0
  14. package/abis/IAuthority.json +31 -0
  15. package/abis/ICoin.json +1074 -0
  16. package/abis/IDeployedCoinVersionLookup.json +21 -0
  17. package/abis/IDopplerErrors.json +44 -0
  18. package/abis/IEIP712.json +15 -0
  19. package/abis/IERC1363.json +373 -0
  20. package/abis/IERC165.json +21 -0
  21. package/abis/IERC20.json +185 -0
  22. package/abis/IERC20Minimal.json +172 -0
  23. package/abis/IERC6909Claims.json +288 -0
  24. package/abis/IERC7572.json +21 -0
  25. package/abis/IExtsload.json +64 -0
  26. package/abis/IExttload.json +40 -0
  27. package/abis/IHasCoinType.json +15 -0
  28. package/abis/IHasPoolKey.json +42 -0
  29. package/abis/IHasRewardsRecipients.json +54 -0
  30. package/abis/IHasSwapPath.json +60 -0
  31. package/abis/IHasTotalSupplyForPositions.json +15 -0
  32. package/abis/IHooks.json +789 -0
  33. package/abis/IMsgSender.json +15 -0
  34. package/abis/IPoolManager.json +1286 -0
  35. package/abis/IProtocolFees.json +174 -0
  36. package/abis/ISupportsLimitOrderFill.json +15 -0
  37. package/abis/ISwapPathRouter.json +92 -0
  38. package/abis/ISwapRouter.json +219 -0
  39. package/abis/IUniswapV3SwapCallback.json +25 -0
  40. package/abis/IUpgradeableDestinationV4Hook.json +84 -0
  41. package/abis/IUpgradeableDestinationV4HookWithUpdateableFee.json +95 -0
  42. package/abis/IUpgradeableV4Hook.json +112 -0
  43. package/abis/IZoraHookRegistry.json +188 -0
  44. package/abis/IZoraLimitOrderBook.json +623 -0
  45. package/abis/IZoraLimitOrderBookCoinsInterface.json +67 -0
  46. package/abis/IZoraV4CoinHook.json +610 -0
  47. package/abis/Permit2Payments.json +7 -0
  48. package/abis/Position.json +7 -0
  49. package/abis/SafeCast.json +7 -0
  50. package/abis/SafeCast160.json +7 -0
  51. package/abis/SafeERC20.json +34 -0
  52. package/abis/SimpleAccessManaged.json +57 -0
  53. package/abis/SimpleAccessManager.json +351 -0
  54. package/abis/SqrtPriceMath.json +22 -0
  55. package/abis/StateLibrary.json +80 -0
  56. package/abis/SwapLimitOrders.json +22 -0
  57. package/abis/SwapWithLimitOrders.json +457 -0
  58. package/abis/TickBitmap.json +18 -0
  59. package/abis/TickMath.json +24 -0
  60. package/abis/V3ToV4SwapLib.json +28 -0
  61. package/abis/ZoraLimitOrderBook.json +771 -0
  62. package/cache/solidity-files-cache.json +1 -0
  63. package/dist/index.cjs +760 -0
  64. package/dist/index.cjs.map +1 -0
  65. package/dist/index.d.ts +2 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +731 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/wagmiGenerated.d.ts +1012 -0
  70. package/dist/wagmiGenerated.d.ts.map +1 -0
  71. package/foundry.toml +29 -0
  72. package/gas_comparison.py +49 -0
  73. package/out/BalanceDelta.sol/BalanceDeltaLibrary.json +1 -0
  74. package/out/BeforeSwapDelta.sol/BeforeSwapDeltaLibrary.json +1 -0
  75. package/out/BitMath.sol/BitMath.json +1 -0
  76. package/out/BytesLib.sol/BytesLib.json +1 -0
  77. package/out/CoinCommon.sol/CoinCommon.json +1 -0
  78. package/out/CoinConfigurationVersions.sol/CoinConfigurationVersions.json +1 -0
  79. package/out/CoinConstants.sol/CoinConstants.json +1 -0
  80. package/out/Context.sol/Context.json +1 -0
  81. package/out/Currency.sol/CurrencyLibrary.json +1 -0
  82. package/out/CurrencyReserves.sol/CurrencyReserves.json +1 -0
  83. package/out/CustomRevert.sol/CustomRevert.json +1 -0
  84. package/out/DopplerMath.sol/DopplerMath.json +1 -0
  85. package/out/FixedPoint128.sol/FixedPoint128.json +1 -0
  86. package/out/FixedPoint96.sol/FixedPoint96.json +1 -0
  87. package/out/FullMath.sol/FullMath.json +1 -0
  88. package/out/IAllowanceTransfer.sol/IAllowanceTransfer.json +1 -0
  89. package/out/IAuthority.sol/IAuthority.json +1 -0
  90. package/out/ICoin.sol/ICoin.json +1 -0
  91. package/out/ICoin.sol/IHasCoinType.json +1 -0
  92. package/out/ICoin.sol/IHasPoolKey.json +1 -0
  93. package/out/ICoin.sol/IHasSwapPath.json +1 -0
  94. package/out/ICoin.sol/IHasTotalSupplyForPositions.json +1 -0
  95. package/out/IDeployedCoinVersionLookup.sol/IDeployedCoinVersionLookup.json +1 -0
  96. package/out/IDopplerErrors.sol/IDopplerErrors.json +1 -0
  97. package/out/IEIP712.sol/IEIP712.json +1 -0
  98. package/out/IERC1363.sol/IERC1363.json +1 -0
  99. package/out/IERC165.sol/IERC165.json +1 -0
  100. package/out/IERC20.sol/IERC20.json +1 -0
  101. package/out/IERC20Minimal.sol/IERC20Minimal.json +1 -0
  102. package/out/IERC6909Claims.sol/IERC6909Claims.json +1 -0
  103. package/out/IERC7572.sol/IERC7572.json +1 -0
  104. package/out/IExtsload.sol/IExtsload.json +1 -0
  105. package/out/IExttload.sol/IExttload.json +1 -0
  106. package/out/IHasRewardsRecipients.sol/IHasRewardsRecipients.json +1 -0
  107. package/out/IHooks.sol/IHooks.json +1 -0
  108. package/out/IMsgSender.sol/IMsgSender.json +1 -0
  109. package/out/IPoolManager.sol/IPoolManager.json +1 -0
  110. package/out/IProtocolFees.sol/IProtocolFees.json +1 -0
  111. package/out/ISupportsLimitOrderFill.sol/ISupportsLimitOrderFill.json +1 -0
  112. package/out/ISwapPathRouter.sol/ISwapPathRouter.json +1 -0
  113. package/out/ISwapRouter.sol/ISwapRouter.json +1 -0
  114. package/out/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +1 -0
  115. package/out/IUpgradeableV4Hook.sol/IUpgradeableDestinationV4Hook.json +1 -0
  116. package/out/IUpgradeableV4Hook.sol/IUpgradeableDestinationV4HookWithUpdateableFee.json +1 -0
  117. package/out/IUpgradeableV4Hook.sol/IUpgradeableV4Hook.json +1 -0
  118. package/out/IZoraHookRegistry.sol/IZoraHookRegistry.json +1 -0
  119. package/out/IZoraLimitOrderBook.sol/IZoraLimitOrderBook.json +1 -0
  120. package/out/IZoraLimitOrderBookCoinsInterface.sol/IZoraLimitOrderBookCoinsInterface.json +1 -0
  121. package/out/IZoraV4CoinHook.sol/IZoraV4CoinHook.json +1 -0
  122. package/out/LimitOrderBitmap.sol/LimitOrderBitmap.json +1 -0
  123. package/out/LimitOrderCommon.sol/LimitOrderCommon.json +1 -0
  124. package/out/LimitOrderCreate.sol/LimitOrderCreate.json +1 -0
  125. package/out/LimitOrderFill.sol/LimitOrderFill.json +1 -0
  126. package/out/LimitOrderLiquidity.sol/LimitOrderLiquidity.json +1 -0
  127. package/out/LimitOrderQueues.sol/LimitOrderQueues.json +1 -0
  128. package/out/LimitOrderStorage.sol/LimitOrderStorage.json +1 -0
  129. package/out/LimitOrderTypes.sol/LimitOrderTypes.json +1 -0
  130. package/out/LimitOrderWithdraw.sol/LimitOrderWithdraw.json +1 -0
  131. package/out/LiquidityAmounts.sol/LiquidityAmounts.json +1 -0
  132. package/out/LiquidityMath.sol/LiquidityMath.json +1 -0
  133. package/out/Lock.sol/Lock.json +1 -0
  134. package/out/NonzeroDeltaCount.sol/NonzeroDeltaCount.json +1 -0
  135. package/out/Path.sol/Path.json +1 -0
  136. package/out/PathKey.sol/PathKeyLibrary.json +1 -0
  137. package/out/Permit2Payments.sol/Permit2Payments.json +1 -0
  138. package/out/PoolId.sol/PoolIdLibrary.json +1 -0
  139. package/out/Position.sol/Position.json +1 -0
  140. package/out/SafeCast.sol/SafeCast.json +1 -0
  141. package/out/SafeCast160.sol/SafeCast160.json +1 -0
  142. package/out/SafeERC20.sol/SafeERC20.json +1 -0
  143. package/out/SimpleAccessManaged.sol/SimpleAccessManaged.json +1 -0
  144. package/out/SimpleAccessManager.sol/SimpleAccessManager.json +1 -0
  145. package/out/SqrtPriceMath.sol/SqrtPriceMath.json +1 -0
  146. package/out/StateLibrary.sol/StateLibrary.json +1 -0
  147. package/out/SwapLimitOrders.sol/SwapLimitOrders.json +1 -0
  148. package/out/SwapWithLimitOrders.sol/SwapWithLimitOrders.json +1 -0
  149. package/out/TickBitmap.sol/TickBitmap.json +1 -0
  150. package/out/TickMath.sol/TickMath.json +1 -0
  151. package/out/TransientSlot.sol/TransientSlot.json +1 -0
  152. package/out/TransientStateLibrary.sol/TransientStateLibrary.json +1 -0
  153. package/out/UniV4SwapToCurrency.sol/UniV4SwapToCurrency.json +1 -0
  154. package/out/UnsafeMath.sol/UnsafeMath.json +1 -0
  155. package/out/V3ToV4SwapLib.sol/V3ToV4SwapLib.json +1 -0
  156. package/out/ZoraLimitOrderBook.sol/ZoraLimitOrderBook.json +1 -0
  157. package/out/build-info/69718f10d1dc37f0.json +1 -0
  158. package/out/uniswap/BitMath.sol/BitMath.json +1 -0
  159. package/out/uniswap/CustomRevert.sol/CustomRevert.json +1 -0
  160. package/out/uniswap/FullMath.sol/FullMath.json +1 -0
  161. package/out/uniswap/SafeCast.sol/SafeCast.json +1 -0
  162. package/out/uniswap/TickMath.sol/TickMath.json +1 -0
  163. package/package/index.ts +1 -0
  164. package/package/wagmiGenerated.ts +738 -0
  165. package/package.json +57 -0
  166. package/remappings.txt +11 -0
  167. package/src/IZoraLimitOrderBook.sol +195 -0
  168. package/src/ZoraLimitOrderBook.sol +220 -0
  169. package/src/access/SimpleAccessManaged.sol +76 -0
  170. package/src/access/SimpleAccessManager.sol +268 -0
  171. package/src/libs/LimitOrderBitmap.sol +84 -0
  172. package/src/libs/LimitOrderCommon.sol +91 -0
  173. package/src/libs/LimitOrderCreate.sol +277 -0
  174. package/src/libs/LimitOrderFill.sol +362 -0
  175. package/src/libs/LimitOrderLiquidity.sol +222 -0
  176. package/src/libs/LimitOrderQueues.sol +101 -0
  177. package/src/libs/LimitOrderStorage.sol +34 -0
  178. package/src/libs/LimitOrderTypes.sol +41 -0
  179. package/src/libs/LimitOrderWithdraw.sol +100 -0
  180. package/src/libs/Permit2Payments.sol +41 -0
  181. package/src/libs/SwapLimitOrders.sol +209 -0
  182. package/src/router/SwapWithLimitOrders.sol +454 -0
  183. package/test/LimitOrderAccessControl.t.sol +461 -0
  184. package/test/LimitOrderBitmap.t.sol +194 -0
  185. package/test/LimitOrderCreate.t.sol +348 -0
  186. package/test/LimitOrderFill.t.sol +1005 -0
  187. package/test/LimitOrderLibraries.t.sol +354 -0
  188. package/test/LimitOrderLiquidityPayouts.t.sol +333 -0
  189. package/test/LimitOrderV4Pools.t.sol +157 -0
  190. package/test/LimitOrderWithdraw.t.sol +653 -0
  191. package/test/SimpleAccessManager.t.sol +420 -0
  192. package/test/SwapWithLimitOrders.t.sol +107 -0
  193. package/test/SwapWithLimitOrdersRouter.t.sol +1073 -0
  194. package/test/gas/LimitOrderFillGas.t.sol +1008 -0
  195. package/test/gas/LimitOrderSwapGas.t.sol +403 -0
  196. package/test/gas/logs/gas_benchmarks_fill_20251201.log +30 -0
  197. package/test/gas/logs/gas_benchmarks_swap_20251201.log +27 -0
  198. package/test/unit/LimitOrderBitmapUnit.t.sol +276 -0
  199. package/test/unit/LimitOrderCreateUnit.t.sol +358 -0
  200. package/test/unit/SwapLimitOrdersUnit.t.sol +672 -0
  201. package/test/unit/SwapLimitOrdersValidation.t.sol +423 -0
  202. package/test/unit/SwapWithLimitOrdersUnit.t.sol +321 -0
  203. package/test/utils/BaseTest.sol +793 -0
  204. package/test/utils/TestableZoraLimitOrderBook.sol +54 -0
  205. package/tsconfig.build.json +10 -0
  206. package/tsconfig.json +9 -0
  207. package/tsup.config.ts +11 -0
  208. package/wagmi.config.ts +18 -0
@@ -0,0 +1 @@
1
+ {"abi":[{"type":"constructor","inputs":[{"name":"poolManager_","type":"address","internalType":"contract IPoolManager"},{"name":"zoraLimitOrderBook_","type":"address","internalType":"contract IZoraLimitOrderBook"},{"name":"swapRouter_","type":"address","internalType":"contract ISwapRouter"},{"name":"permit2_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"getLimitOrderConfig","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct LimitOrderConfig","components":[{"name":"multiples","type":"uint256[]","internalType":"uint256[]"},{"name":"percentages","type":"uint256[]","internalType":"uint256[]"}]}],"stateMutability":"view"},{"type":"function","name":"msgSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"poolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"setLimitOrderConfig","inputs":[{"name":"config","type":"tuple","internalType":"struct LimitOrderConfig","components":[{"name":"multiples","type":"uint256[]","internalType":"uint256[]"},{"name":"percentages","type":"uint256[]","internalType":"uint256[]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapRouter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ISwapRouter"}],"stateMutability":"view"},{"type":"function","name":"swapWithLimitOrders","inputs":[{"name":"params","type":"tuple","internalType":"struct SwapWithLimitOrders.SwapWithLimitOrdersParams","components":[{"name":"recipient","type":"address","internalType":"address"},{"name":"limitOrderConfig","type":"tuple","internalType":"struct LimitOrderConfig","components":[{"name":"multiples","type":"uint256[]","internalType":"uint256[]"},{"name":"percentages","type":"uint256[]","internalType":"uint256[]"}]},{"name":"inputCurrency","type":"address","internalType":"address"},{"name":"inputAmount","type":"uint256","internalType":"uint256"},{"name":"v3Route","type":"bytes","internalType":"bytes"},{"name":"v4Route","type":"tuple[]","internalType":"struct PoolKey[]","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"minAmountOut","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"delta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"payable"},{"type":"function","name":"unlockCallback","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"zoraLimitOrderBook","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IZoraLimitOrderBook"}],"stateMutability":"view"},{"type":"event","name":"LimitOrderConfigUpdated","inputs":[{"name":"multiples","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"percentages","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"SwapWithLimitOrdersExecuted","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"poolKey","type":"tuple","indexed":false,"internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"delta","type":"int256","indexed":false,"internalType":"BalanceDelta"},{"name":"tickBeforeSwap","type":"int24","indexed":false,"internalType":"int24"},{"name":"tickAfterSwap","type":"int24","indexed":false,"internalType":"int24"},{"name":"orders","type":"tuple[]","indexed":false,"internalType":"struct SwapWithLimitOrders.CreatedOrder[]","components":[{"name":"orderId","type":"bytes32","internalType":"bytes32"},{"name":"multiple","type":"uint256","internalType":"uint256"},{"name":"percentage","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"error","name":"EmptyV4Route","inputs":[]},{"type":"error","name":"FromAddressIsNotOwner","inputs":[]},{"type":"error","name":"InsufficientInputCurrency","inputs":[{"name":"inputAmount","type":"uint256","internalType":"uint256"},{"name":"availableAmount","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InsufficientOutputAmount","inputs":[]},{"type":"error","name":"InsufficientTransferFunds","inputs":[]},{"type":"error","name":"InvalidLimitOrderConfig","inputs":[]},{"type":"error","name":"InvalidMultiple","inputs":[]},{"type":"error","name":"InvalidPercent","inputs":[]},{"type":"error","name":"LengthMismatch","inputs":[]},{"type":"error","name":"OnlyAuthority","inputs":[]},{"type":"error","name":"OnlyPoolManager","inputs":[]},{"type":"error","name":"PercentOverflow","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"UnsafeCast","inputs":[]},{"type":"error","name":"V3RouteDoesNotConnectToV4RouteStart","inputs":[]},{"type":"error","name":"ZeroSwapDelta","inputs":[]}],"bytecode":{"object":"0x6101003461026857601f61379a38819003918201601f19168301916001600160401b0383118484101761026c578084926080946040528339810103126102685780516001600160a01b038116908181036102685760208301516001600160a01b03811693909290848403610268576040810151946001600160a01b0386169182870361026857606001516001600160a01b038116939084900361026857836080521561022357156101d4571561018f571561014a5760a05260c05260e052604051613519908161028182396080518161057d015260a0518181816105da0152818161090b01528181610e19015281816114b3015281816116c00152818161192601528181611b8e01528181611c5d0152611d29015260c05181818160df01528181610361015281816119d001528181611abd015261223b015260e05181818161044a01526106560152f35b60405162461bcd60e51b815260206004820152601660248201527f5065726d6974322063616e6e6f74206265207a65726f000000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527f53776170526f757465722063616e6e6f74206265207a65726f000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152602160248201527f5a6f72614c696d69744f72646572426f6f6b2063616e6e6f74206265207a65726044820152606f60f81b6064820152608490fd5b60405162461bcd60e51b815260206004820152601a60248201527f506f6f6c4d616e616765722063616e6e6f74206265207a65726f0000000000006044820152606490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806318ed2974146100995780636baaa1671461009457806391dd73461461008f578063c31c9c071461008a578063c48677f414610085578063d737d0c714610080578063dc4c90d31461007b5763e3e8580c0361000e57610997565b6108f6565b6108c4565b610479565b610435565b6103c8565b61034c565b346101b15760203660031901126101b1576004356001600160401b0381116101b1576100c99036906004016102e3565b60405163bf7e214f60e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156101ac577fe171acf371d08508433dc4cca0f4d6dbac760999879c6a6a9e50e78a92e96b9c9261014e915f9161017d575b506001600160a01b03163314610a62565b61015781611370565b5061016181610b10565b602081519101519061017860405192839283610bd6565b0390a1005b61019f915060203d6020116101a5575b610197818361021f565b810190610a42565b8461013d565b503d61018d565b610a57565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176101e457604052565b6101b5565b60a081019081106001600160401b038211176101e457604052565b606081019081106001600160401b038211176101e457604052565b90601f801991011681019081106001600160401b038211176101e457604052565b6040519061024f60808361021f565b565b6040519061024f60c08361021f565b6040519061024f60608361021f565b6001600160401b0381116101e45760051b60200190565b9080601f830112156101b157813561029d8161026f565b926102ab604051948561021f565b81845260208085019260051b8201019283116101b157602001905b8282106102d35750505090565b81358152602091820191016102c6565b91906040838203126101b157604051906102fc826101c9565b819380356001600160401b0381116101b1578261031a918301610286565b83526020810135916001600160401b0383116101b15760209261033d9201610286565b910152565b5f9103126101b157565b346101b1575f3660031901126101b1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206103c5928181520190610390565b90565b346101b15760203660031901126101b1576004356001600160401b0381116101b157366023820112156101b1578060040135906001600160401b0382116101b15736602483830101116101b1576104319160246104259201610e17565b604051918291826103b4565b0390f35b346101b1575f3660031901126101b1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60203660031901126101b1576004356001600160401b0381116101b157806004019060e060031982360301126101b1576104b282610f22565b5f5160206134f95f395f51905f525d60248101916104d08382610f2c565b6104d990610f41565b6104e290611370565b506104ed8382610f2c565b6104f690610f41565b6104ff90611dc7565b60a4820161050d8183610f4c565b61051991501515610f81565b60848301936105288584610f97565b9490604482019561053887610f22565b906105438688610f4c565b939091369061055192610fe4565b92369061055d92610c89565b9061056792611e7c565b61057085610f22565b91606482013592343033867f0000000000000000000000000000000000000000000000000000000000000000946105a695611f06565b6105b08486610f4c565b6105ba8688610f4c565b6105c4915061101a565b906105ce92611041565b6105d790611056565b957f00000000000000000000000000000000000000000000000000000000000000009360a088206106089086611fbb565b505099610616915088610f97565b9261062090610f22565b90610629610240565b93369061063592610fe4565b83526001600160a01b03166020830152604082015230606082015261067a907f00000000000000000000000000000000000000000000000000000000000000006120ae565b9061068487610f22565b9561068f9088610f4c565b9460c401359361069f9089610f2c565b946106a8610251565b6001600160a01b03909816885236906106c092610c89565b602087015260408601526001600160a01b031660608501526080840152366106e7916102e3565b60a0830152604051809260208201906106ff916110a4565b03601f1981018352610711908361021f565b6040516348c8949160e01b8152918290819061073090600483016103b4565b6001600160a01b039093169203815a5f948591f180156101ac57610765915f916108a2575b50602080825183010191016111c8565b91949092610791610785610785610785608089015160018060a01b031690565b6001600160a01b031690565b6040516301ffc9a760e01b815263a0fa294b60e01b60048201529190602090839060249082905afa9485156101ac5784847f309c90d7accccb1f970e0a8166ff01a08d97e31ca043803f81b2943e1c84957b97610828955f91610873575b501580610869575b80610859575b610846575b506001600160a01b039261081892509050610f22565b169560405193849333978561129a565b0390a35f5f5160206134f95f395f51905f525d6040515f8152602090f35b610851921589612212565b5f8484610802565b508160020b8160020b14156107fd565b50895115156107f7565b610895915060203d60201161089b575b61088d818361021f565b810190611286565b5f6107ef565b503d610883565b6108be91503d805f833e6108b6818361021f565b81019061114e565b5f610755565b346101b1575f3660031901126101b1576040516001600160a01b035f5160206134f95f395f51905f525c168152602090f35b346101b1575f3660031901126101b1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90602080835192838152019201905f5b8181106109575750505090565b825184526020938401939092019160010161094a565b6103c5916020610986835160408452604084019061093a565b92015190602081840391015261093a565b346101b1575f3660031901126101b157606060206040516109b7816101c9565b82815201526040516109c8816101c9565b604051905f5480835260208301905f805260205f20905f5b818110610a1b5761043185876109f88188038261021f565b8152610a026112d2565b602082015260405191829160208352602083019061096d565b82548452602090930192600192830192016109e0565b6001600160a01b038116036101b157565b908160209103126101b157516103c581610a31565b6040513d5f823e3d90fd5b15610a6957565b63d9a88cdb60e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b8151916001600160401b0383116101e457600160401b83116101e4578154838355808410610aea575b506020610ac79101915f5260205f2090565b5f5b838110610ad65750505050565b600190602084519401938184015501610ac9565b825f528360205f2091820191015b818110610b055750610ab5565b5f8155600101610af8565b80518051906001600160401b0382116101e457600160401b82116101e4575f54825f55808310610b93575b505f80526020017f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635f5b838110610b7f5750505050602061024f9101516001610a8c565b600190602084519401938184015501610b65565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639081019083015b818110610bcb5750610b3b565b5f8155600101610bbe565b9091610bed6103c59360408452604084019061093a565b91602081840391015261093a565b359061024f82610a31565b8060020b036101b157565b91908260a09103126101b157604051610c29816101e9565b80928035610c3681610a31565b82526020810135610c4681610a31565b6020830152604081013562ffffff811681036101b157608091829160408501526060810135610c7481610c06565b6060850152013591610c8583610a31565b0152565b90929192610c968161026f565b93610ca4604051958661021f565b60a06020868481520192028301928184116101b157915b838310610cc85750505050565b602060a091610cd78486610c11565b815201920191610cbb565b9080601f830112156101b1578160206103c593359101610c89565b6020818303126101b1578035906001600160401b0382116101b1570160c0818303126101b157610d2b610251565b91610d3582610bfb565b835260208201356001600160401b0381116101b15781610d56918401610ce2565b602084015260408201356040840152610d7160608301610bfb565b60608401526080820135608084015260a08201356001600160401b0381116101b157610d9d92016102e3565b60a082015290565b90602080835192838152019201905f5b818110610dc25750505090565b9091926020606060019260408751805183528481015185840152015160408201520194019101919091610db5565b919392610e07604092606085526060850190610da5565b941515602084015260020b910152565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610f1357610e5391810190610cfd565b6103c5610ecb610f05610eac610ef6610e6b8661143e565b95610e8d6020820151610e8760208a015160018060a01b031690565b90611661565b96919098610e9a826116b7565b9151919690916001600160801b031690565b60a0850151855190929188918b908e906001600160a01b0316966118ec565b6060830151919690916001600160a01b0316604084015193519093906001600160a01b031693611b79565b60405194859360208501610df0565b03601f19810183528261021f565b63f655705d60e01b5f5260045ffd5b356103c581610a31565b903590603e19813603018212156101b1570190565b6103c59036906102e3565b903590601e19813603018212156101b157018035906001600160401b0382116101b1576020019160a08202360383136101b157565b15610f8857565b63cbd130a960e01b5f5260045ffd5b903590601e19813603018212156101b157018035906001600160401b0382116101b1576020019181360383136101b157565b6001600160401b0381116101e457601f01601f191660200190565b929192610ff082610fc9565b91610ffe604051938461021f565b8294818452818301116101b1578281602093845f960137010152565b5f1981019190821161102857565b610a78565b634e487b7160e01b5f52603260045260245ffd5b91908110156110515760a0020190565b61102d565b6103c5903690610c11565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b602080825282516001600160a01b0316818301528083015160c06040840152805160e084018190529394936101008401939291909101905f5b81811061112e5750505060a08460406103c59596015160608401526111116060820151608085019060018060a01b03169052565b60808101518284015201519060c0601f198285030191015261096d565b909193602060a0826111436001948951611061565b0195019291016110dd565b6020818303126101b1578051906001600160401b0382116101b1570181601f820112156101b15780519061118182610fc9565b9261118f604051948561021f565b828452602083830101116101b157815f9260208093018386015e8301015290565b519081151582036101b157565b519061024f82610c06565b906060828203126101b15781516001600160401b0381116101b157820181601f820112156101b1578051906111fc8261026f565b9261120a604051948561021f565b828452602060608186019402830101918183116101b157602001925b82841061124a5750505050916103c56040611243602085016111b0565b93016111bd565b6060848303126101b157602060609160405161126581610204565b86518152828701518382015260408701516040820152815201930192611226565b908160209103126101b1576103c5906111b0565b9092610120926112ae836103c59796611061565b5f60a084015260020b60c083015260020b60e0820152816101008201520190610da5565b60405190600154808352826020810160015f5260205f20925f5b81811061130157505061024f9250038361021f565b84548352600194850194879450602090930192016112ec565b80518210156110515760209160051b010190565b1561133557565b635c974e3d60e11b5f5260045ffd5b1561134b57565b63b29d78b760e01b5f5260045ffd5b1561136157565b63d88409d360e01b5f5260045ffd5b8051515f929181151580611402575b156113f357905f915b8183106113a05750505061024f61271083111561135a565b9091936001906113e886602085016113c46113bc83835161131a565b51151561132e565b6113e2670de0b6b3a76400006113db84895161131a565b5111611344565b5161131a565b510194019190611388565b631fec674760e31b5f5260045ffd5b50602081015151821461137f565b6040519061141d826101c9565b5f6020838281520152565b1561142f57565b6342301c2360e01b5f5260045ffd5b611446611410565b50602081015190604081015160018060a01b03606083015116916040519361146d85610204565b845260208401918252604084019283526114a761149961148b611410565b94516001600160a01b031690565b92516001600160801b031690565b925f9560018060a01b037f000000000000000000000000000000000000000000000000000000000000000016935b865180518910156116185790602061151e61150c6114f68c61156e9661131a565b51805190946001600160a01b0390811691161490565b986001600160801b0316600f0b6122c9565b88156115fb576115536401000276a45b611536610260565b8b1515815292600f0b838501526001600160a01b03166040830152565b60405180948192633cf3645360e21b835285600484016122e0565b03815f8a5af180156101ac576001925f916115cd575b5087156115be57828060801b03165b96156115af57602001516001600160a01b03165b9701966114d5565b516001600160a01b03166115a7565b60801d828060801b0316611593565b6115ee915060203d81116115f4575b6115e6818361021f565b810190611fac565b5f611584565b503d6115dc565b61155373fffd8963efd1fc6a506488495d951d5263988d2561152e565b506001600160801b039095168252909550935061024f92909150611646906001600160a01b03166020860152565b8351608091909101516001600160801b039091161015611428565b9190915f6080604051611673816101e9565b828152826020820152826040820152826060820152015280515f198101908111611028576116a09161131a565b51805190926001600160a01b039081169116811491565b60a06116e491207f0000000000000000000000000000000000000000000000000000000000000000611fbb565b50509091565b60405190608082018281106001600160401b038211176101e457604052606080838181528160208201528160408201520152565b6040519061172d60208361021f565b5f80835282815b82811061174057505050565b60209060405161174f81610204565b5f81525f838201525f604082015282828501015201611734565b906117738261026f565b611780604051918261021f565b8281528092611791601f199161026f565b01905f5b8281106117a157505050565b6020906040516117b081610204565b5f81525f838201525f604082015282828501015201611795565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b6020818303126101b1578051906001600160401b0382116101b157019080601f830112156101b15781516118278161026f565b92611835604051948561021f565b81845260208085019260051b8201019283116101b157602001905b82821061185d5750505090565b8151815260209182019101611850565b9594939290916118808761189a94611061565b151560a087015261012060c087015261012086019061093a565b84810360e0860152602080835192838152019201905f5b8181106118d3575050506001600160a01b039091166101009390930192909252565b825160020b8452602093840193909201916001016118b1565b9591936119089398979591986119006116ea565b50898861238c565b94919496855151151580611b67575b15611b55576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169416843b156101b1575f6040518096630b0d9c0960e01b8252818381611972893089600485016117ca565b03925af19485156101ac575f95611b3b575b5080151592838614611b345785935b611aa6575b50508551926119c360208801519660405197889687958695633ac1fb4960e21b87526004870161186d565b03916001600160801b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156101ac575f91611a84575b50611a138151611769565b935f5b8251811015611a7d5780611a2c6001928561131a565b51611a3b82604088015161131a565b51611a4a83606089015161131a565b5190611a54610260565b92835260208301526040820152611a6b828961131a565b52611a76818861131a565b5001611a16565b5092915050565b611aa091503d805f833e611a98818361021f565b8101906117f4565b5f611a08565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526001600160801b039190911660248201529460209186916044918391905af19384156101ac575f94611b15575b80611998565b611b2d9060203d60201161089b5761088d818361021f565b505f611b0f565b8093611993565b80611b4987611b4f9361021f565b80610342565b5f611984565b50505050505090611b6461171e565b91565b506001600160801b0382161515611917565b9192916001600160a01b0316908115611d0e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101b157604051632961046560e21b81526001600160a01b03841660048201525f8160248183865af19384156101ac57611c20602094611c26935f97611cfa575b50611c1a85611c098186612a37565b94611c15848383612a9f565b612a37565b92612544565b14612551565b600460405180948193630476982d60e21b83525af180156101ac57611cdb575b505b6001600160801b038116611c5b57505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101b157604051630b0d9c0960e01b8152935f938593849286928492611cbc9290916001600160a01b0316600485016117ca565b03925af180156101ac57611ccd5750565b80611b495f61024f9361021f565b611cf39060203d6020116115f4576115e6818361021f565b505f611c46565b80611b4989611d089361021f565b5f611bfa565b604051630476982d60e21b81529150602090829060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156101ac57611d64575b50611c48565b611d7c9060203d6020116115f4576115e6818361021f565b505f611d5e565b15611d8a57565b636741e8e960e11b5f5260045ffd5b5f54811015611051575f805260205f2001905f90565b6001548110156110515760015f5260205f2001905f90565b5f54908115611e6257818151511480611e54575b611de490611d83565b5f5b828110611df257505050565b80611e00600192845161131a565b51611e17611e0d83611d99565b90549060031b1c90565b1480611e2d575b611e2790611d83565b01611de6565b50611e27611e3f82602086015161131a565b51611e4c611e0d84611daf565b149050611e1e565b506020810151518214611ddb565b5050565b15611e6d57565b63bdcc3d9760e01b5f5260045ffd5b825115611ee3578051611ed457505b8151156110515760209190910151805161024f926001600160a01b0390811691168114918215611ebd575b5050611e66565b602001516001600160a01b03161490505f80611eb6565b611ede9150612567565b611e8b565b505050565b15611ef1575050565b635d0165db60e01b5f5260045260245260445ffd5b909493919291906001600160a01b038616611f2b5750505061024f9250808214611ee8565b9092919380611f9657506001600160a01b031690611f4890612651565b91813b156101b157604051631b63c28b60e11b81526001600160a01b039485166004820152908416602482015291831660448301529190921660648301525f90829081838160848101611cbc565b635d0165db60e01b5f525f60045260245260445ffd5b908160209103126101b1575190565b60209061200693926040518381019182526006604082015260408152611fe260608261021f565b519020906040518080968194631e2eaeaf60e01b8352600483019190602083019252565b03916001600160a01b03165afa9182156101ac575f92612049575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b61206391925060203d6020116115f4576115e6818361021f565b905f612021565b6020815260806060612087845183602086015260a0850190610390565b60208501516001600160a01b03166040858101919091528501518285015293015191015290565b919091825151156121c057602083810180519092612152916001600160a01b03168061219f575b508551606087015190949061212f90610785906001600160a01b03169260408a0193612117855191612105610240565b9a8b526001600160a01b0316898b0152565b60408901525f6060890152516001600160a01b031690565b6121975751935b60405194858094819363b858183f60e01b83526004830161206a565b03926001600160a01b03165af180156101ac576103c5915f91612178575b509251612567565b612191915060203d6020116115f4576115e6818361021f565b5f612170565b505f93612136565b60408701516121ba916001600160a01b03848116911661267a565b5f6120d5565b5060408201516020909201516001600160a01b031690565b9094935f93610120936121f084610140810199611061565b151560a084015260020b60c083015260020b60e0820152826101008201520152565b919092835f1461229b578060020b8260020b1291825f1461229557805b921561228e57505b925b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156101b1575f8094611cbc60405197889687958694632fc7dd6b60e11b8652600486016121d8565b9050612237565b8161222f565b8060020b8260020b1391825f146122c357805b92156122bc57505b92612239565b90506122b6565b816122ae565b600f0b60016001607f1b03198114611028575f0390565b90916122ef8261014094611061565b8051151560a0830152602081015160c0830152604001516001600160a01b031660e082015261012061010082018190525f908201520190565b906123328261026f565b61233f604051918261021f565b8281528092612350601f199161026f565b0190602036910137565b6001600160801b03918216908216019190821161102857565b6001600160801b03918216908216039190821161102857565b959395949190929461239c6116ea565b965f96670de0b6b3a76400006001600160801b0385161061252a579493929190835151926123c984612328565b8a526123d484612328565b60208b01526123e284612328565b60408b01526123f084612328565b60608b0152955f955f955b858710612424575050505050505080855152806020860151528060408601515260608501515290565b9091929394959661244f61243f896020859e9c9e015161131a565b516001600160801b038d166127b0565b98891561251e5761246a906001600160801b038b169061235a565b9a61247f906001600160801b038b1690612373565b98818d8a85519061248f9161131a565b5161249d908989898d6128f7565b92828251906124ab9161131a565b5260200151906124ba9161131a565b906124c7919060020b9052565b8b81898451906124d69161131a565b519160400151906124e69161131a565b528b81896020850151906124f99161131a565b519160600151906125099161131a565b52600101966001905b019594939291906123fb565b9a985096600190612512565b505050935050505f9190565b90601f820180921161102857565b9190820180921161102857565b1561255857565b637627529f60e01b5f5260045ffd5b80511561264c575f9160179160429084905b805182611028578661102857831161263757805190858203918083116110285786906125af846125a881612536565b101561300c565b6125bd826125a88682612544565b6125d383516125cc8685612544565b1115613049565b036125ec5750506040515f815260208101604052612579565b60405191601f81169187831560051b80858701019484860193010101905b8084106126245750508252601f01601f1916604052612579565b909260208091855181520193019061260a565b92945050506126469150612b30565b50905090565b505f90565b6001600160a01b03811161266b576001600160a01b031690565b63c4bd89a960e01b5f5260045ffd5b604051636eb1769f60e11b81523060048201526001600160a01b038084166024830152929390926020908490604490829086165afa9283156101ac575f9361278f575b5082018092116110285760205f604051938285019063095ea7b360e01b825260018060a01b03871660248701526044860152604485526126fe60648661021f565b84519082855af15f51903d81612763575b501590505b61271d57505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f604484015261024f9261275e906127588160648101610f05565b826130cd565b6130cd565b1515905061278357506127146001600160a01b0382163b15155b5f61270f565b6001612714911461277d565b6127a991935060203d6020116115f4576115e6818361021f565b915f6126bd565b808202905f198382099082808310920391808303928361271011156101b1571461280e577fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e9193612710910990828211900360fc1b910360041c170290565b505061271091500490565b808202905f1983820990828083109203918083039283633b9aca0011156101b1571461287b577f88f2cfb83100cb4e69e7c79c58b316e597157d372fb9787e8e47ce423a2e9c6d93633b9aca00910990828211900360f71b910360091c170290565b5050633b9aca0091500490565b634e487b7160e01b5f52601260045260245ffd5b81156128a6570490565b612888565b60020b627fffff198114611028575f0390565b60020b60010190627fffff8213627fffff1983121761102857565b9060020b9060020b0190627fffff198212627fffff83131761102857565b94939261291a6129309294612915670de0b6b3a76400008211611344565b612bb0565b908415612a1e575b6001600160a01b0316612819565b6001600160a01b038111612a10575b61296d90606090612958906001600160a01b0316612bf6565b950194612966865160020b90565b9084612e91565b61298061297b865160020b90565b612f20565b9061298a826128ab565b8160020b8360020b81135f146129ec57505050906129b591945b83156129df575160020b5b906128d9565b90156129cf578060020b8360020b126129cb5750565b9150565b8060020b8360020b136129cb5750565b516129af9060020b6128ab565b90809297935060020b13612a06575b50906129b5916129a4565b94506129b56129fb565b506001600160a01b0361293f565b90612a3190670de0b6b3a764000061289c565b90612922565b6001600160a01b038116612a4a57503190565b6040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa9081156101ac575f91612a86575090565b6103c5915060203d6020116115f4576115e6818361021f565b9091906001600160a01b038116612acc57505f808080612ac094865af11590565b612ac75750565b612fa3565b6040805163a9059cbb60e01b81526001600160a01b039094166004850152602484019290925291905f9060208260448582885af13d15601f3d11600185511416171692828152826020820152015215612b225750565b6001600160a01b0316612f36565b90612b3f601483511015613089565b602082015160601c916017815110612b7457601781015190602b81612b6b601792602094511015613089565b01015160601c91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b6044820152606490fd5b9081600181018082116110285760011c905b838210612bd657505061024f821515611344565b9092508280156128a6578082049081018091116110285760011c90612bc2565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b031611612e365760018060a01b0316612c348160201b90565b80612c47612c4183613145565b60ff1690565b9160808310612e295750607e1982011c905b607f190160401b90800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c66800000000000001698600160381b9060c71c1697600160391b9060c61c16966001603a1b9060c51c16956001603b1b9060c41c16946001603c1b9060c31c16936001603d1b9060c21c16926001603e1b9060c11c16916001603f1b9060c01c161717171717171717171717171717693627a301d71055774c85026f028f6481ab7f045a5af012a19d003aa9198101612dd79060801d90565b60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918260020b8260020b145f14612e095750905090565b6001600160a01b03612e1a846131c8565b1611612e24575090565b905090565b905081607f031b90612c59565b613125565b600291820b910b0390627fffff198212627fffff83131761102857565b60020b9060020b9081156128a657627fffff1981145f19831416611028570590565b9060020b9060020b02908160020b91820361102857565b90919015612ed5575f8260020b125f14612ec857612ec381612ebe612eb9826103c596612e3b565b6128be565b612e58565b612e7a565b612ec3816103c593612e58565b905f8160020b125f14612ef05790612ec3816103c593612e58565b81612efa916128d9565b60020b5f190190627fffff198212627fffff83131761102857612ec3816103c593612e58565b8060020b80156128a657620d89e8050260020b90565b6040516390bfb86560e01b81526001600160a01b03909116600482015263a9059cbb60e01b60248201526080604482015260a03d601f01601f191690810160648301523d60848301523d5f60a484013e808201600460a482015260c4633c9fd93960e21b91015260e40190fd5b6040516390bfb86560e01b81526001600160a01b0390911660048201525f602482018190526080604483015260a03d601f01601f191690810160648401523d6084840152903d9060a484013e808201600460a482015260c4633d2cec6f60e21b91015260e40190fd5b1561301357565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561305057565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b1561309057565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b905f602091828151910182855af115610a57575f513d61311c57506001600160a01b0381163b155b6130fc5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156130f5565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b80156101b1577f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6001600160801b03841160071b84811c6001600160401b031060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b60020b908160ff1d82810118620d89e881116134e25763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b1891600281166134c6575b600481166134aa575b6008811661348e575b60108116613472575b60208116613456575b6040811661343a575b6080811661341e575b6101008116613402575b61020081166133e6575b61040081166133ca575b61080081166133ae575b6110008116613392575b6120008116613376575b614000811661335a575b618000811661333e575b620100008116613322575b620200008116613307575b6204000081166132ec575b62080000166132d3575b5f126132cb575b0160201c90565b5f19046132c4565b6b048a170391f7dc42444e8fa290910260801c906132bd565b6d2216e584f5fa1ea926041bedfe9890920260801c916132b3565b916e5d6af8dedb81196699c329225ee6040260801c916132a8565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161329d565b916f31be135f97d08fd981231505542fcfa60260801c91613292565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613288565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161327e565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613274565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161326a565b916ff3392b0822b70005940c7a398e4b70f30260801c91613260565b916ff987a7253ac413176f2b074cf7815e540260801c91613256565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161324c565b916ffe5dee046a99a2a811c461f1969c30530260801c91613242565b916fff2ea16466c96a3843ec78b326b528610260801c91613239565b916fff973b41fa98c081472e6896dfb254c00260801c91613230565b916fffcb9843d60f6159c9db58835c9266440260801c91613227565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c9161321e565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91613215565b916ffff97272373d413259a46990580e213a0260801c9161320c565b826345c3193d60e11b5f5260020b60045260245ffdfe83af7c0041fe8b1e39cbe562b7b80186768e34955d84dc69120d42fd8d1d31b8","sourceMap":"2610:19103:89:-:0;;;;;;;;;;;;;-1:-1:-1;;2610:19103:89;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;659:38:87;2610:19103:89;659:38:87;6848:35:89;2610:19103;;6932:42;2610:19103;;7030:34;2610:19103;;7112:22;2610:19103;;7171:26;;7207:40;;7257:24;;2610:19103;;;;;;;;;;;;;;7171:26;2610:19103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7207:40;2610:19103;;;;;;;;;;;;;;;;;;;;;;;;;7257:24;2610:19103;;;;;;;;;;;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;;;;;-1:-1:-1;2610:19103:89;;;;;-1:-1:-1;2610:19103:89","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806318ed2974146100995780636baaa1671461009457806391dd73461461008f578063c31c9c071461008a578063c48677f414610085578063d737d0c714610080578063dc4c90d31461007b5763e3e8580c0361000e57610997565b6108f6565b6108c4565b610479565b610435565b6103c8565b61034c565b346101b15760203660031901126101b1576004356001600160401b0381116101b1576100c99036906004016102e3565b60405163bf7e214f60e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9182156101ac577fe171acf371d08508433dc4cca0f4d6dbac760999879c6a6a9e50e78a92e96b9c9261014e915f9161017d575b506001600160a01b03163314610a62565b61015781611370565b5061016181610b10565b602081519101519061017860405192839283610bd6565b0390a1005b61019f915060203d6020116101a5575b610197818361021f565b810190610a42565b8461013d565b503d61018d565b610a57565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b038211176101e457604052565b6101b5565b60a081019081106001600160401b038211176101e457604052565b606081019081106001600160401b038211176101e457604052565b90601f801991011681019081106001600160401b038211176101e457604052565b6040519061024f60808361021f565b565b6040519061024f60c08361021f565b6040519061024f60608361021f565b6001600160401b0381116101e45760051b60200190565b9080601f830112156101b157813561029d8161026f565b926102ab604051948561021f565b81845260208085019260051b8201019283116101b157602001905b8282106102d35750505090565b81358152602091820191016102c6565b91906040838203126101b157604051906102fc826101c9565b819380356001600160401b0381116101b1578261031a918301610286565b83526020810135916001600160401b0383116101b15760209261033d9201610286565b910152565b5f9103126101b157565b346101b1575f3660031901126101b1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b9060206103c5928181520190610390565b90565b346101b15760203660031901126101b1576004356001600160401b0381116101b157366023820112156101b1578060040135906001600160401b0382116101b15736602483830101116101b1576104319160246104259201610e17565b604051918291826103b4565b0390f35b346101b1575f3660031901126101b1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60203660031901126101b1576004356001600160401b0381116101b157806004019060e060031982360301126101b1576104b282610f22565b5f5160206134f95f395f51905f525d60248101916104d08382610f2c565b6104d990610f41565b6104e290611370565b506104ed8382610f2c565b6104f690610f41565b6104ff90611dc7565b60a4820161050d8183610f4c565b61051991501515610f81565b60848301936105288584610f97565b9490604482019561053887610f22565b906105438688610f4c565b939091369061055192610fe4565b92369061055d92610c89565b9061056792611e7c565b61057085610f22565b91606482013592343033867f0000000000000000000000000000000000000000000000000000000000000000946105a695611f06565b6105b08486610f4c565b6105ba8688610f4c565b6105c4915061101a565b906105ce92611041565b6105d790611056565b957f00000000000000000000000000000000000000000000000000000000000000009360a088206106089086611fbb565b505099610616915088610f97565b9261062090610f22565b90610629610240565b93369061063592610fe4565b83526001600160a01b03166020830152604082015230606082015261067a907f00000000000000000000000000000000000000000000000000000000000000006120ae565b9061068487610f22565b9561068f9088610f4c565b9460c401359361069f9089610f2c565b946106a8610251565b6001600160a01b03909816885236906106c092610c89565b602087015260408601526001600160a01b031660608501526080840152366106e7916102e3565b60a0830152604051809260208201906106ff916110a4565b03601f1981018352610711908361021f565b6040516348c8949160e01b8152918290819061073090600483016103b4565b6001600160a01b039093169203815a5f948591f180156101ac57610765915f916108a2575b50602080825183010191016111c8565b91949092610791610785610785610785608089015160018060a01b031690565b6001600160a01b031690565b6040516301ffc9a760e01b815263a0fa294b60e01b60048201529190602090839060249082905afa9485156101ac5784847f309c90d7accccb1f970e0a8166ff01a08d97e31ca043803f81b2943e1c84957b97610828955f91610873575b501580610869575b80610859575b610846575b506001600160a01b039261081892509050610f22565b169560405193849333978561129a565b0390a35f5f5160206134f95f395f51905f525d6040515f8152602090f35b610851921589612212565b5f8484610802565b508160020b8160020b14156107fd565b50895115156107f7565b610895915060203d60201161089b575b61088d818361021f565b810190611286565b5f6107ef565b503d610883565b6108be91503d805f833e6108b6818361021f565b81019061114e565b5f610755565b346101b1575f3660031901126101b1576040516001600160a01b035f5160206134f95f395f51905f525c168152602090f35b346101b1575f3660031901126101b1576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b90602080835192838152019201905f5b8181106109575750505090565b825184526020938401939092019160010161094a565b6103c5916020610986835160408452604084019061093a565b92015190602081840391015261093a565b346101b1575f3660031901126101b157606060206040516109b7816101c9565b82815201526040516109c8816101c9565b604051905f5480835260208301905f805260205f20905f5b818110610a1b5761043185876109f88188038261021f565b8152610a026112d2565b602082015260405191829160208352602083019061096d565b82548452602090930192600192830192016109e0565b6001600160a01b038116036101b157565b908160209103126101b157516103c581610a31565b6040513d5f823e3d90fd5b15610a6957565b63d9a88cdb60e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b8151916001600160401b0383116101e457600160401b83116101e4578154838355808410610aea575b506020610ac79101915f5260205f2090565b5f5b838110610ad65750505050565b600190602084519401938184015501610ac9565b825f528360205f2091820191015b818110610b055750610ab5565b5f8155600101610af8565b80518051906001600160401b0382116101e457600160401b82116101e4575f54825f55808310610b93575b505f80526020017f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635f5b838110610b7f5750505050602061024f9101516001610a8c565b600190602084519401938184015501610b65565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5639081019083015b818110610bcb5750610b3b565b5f8155600101610bbe565b9091610bed6103c59360408452604084019061093a565b91602081840391015261093a565b359061024f82610a31565b8060020b036101b157565b91908260a09103126101b157604051610c29816101e9565b80928035610c3681610a31565b82526020810135610c4681610a31565b6020830152604081013562ffffff811681036101b157608091829160408501526060810135610c7481610c06565b6060850152013591610c8583610a31565b0152565b90929192610c968161026f565b93610ca4604051958661021f565b60a06020868481520192028301928184116101b157915b838310610cc85750505050565b602060a091610cd78486610c11565b815201920191610cbb565b9080601f830112156101b1578160206103c593359101610c89565b6020818303126101b1578035906001600160401b0382116101b1570160c0818303126101b157610d2b610251565b91610d3582610bfb565b835260208201356001600160401b0381116101b15781610d56918401610ce2565b602084015260408201356040840152610d7160608301610bfb565b60608401526080820135608084015260a08201356001600160401b0381116101b157610d9d92016102e3565b60a082015290565b90602080835192838152019201905f5b818110610dc25750505090565b9091926020606060019260408751805183528481015185840152015160408201520194019101919091610db5565b919392610e07604092606085526060850190610da5565b941515602084015260020b910152565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610f1357610e5391810190610cfd565b6103c5610ecb610f05610eac610ef6610e6b8661143e565b95610e8d6020820151610e8760208a015160018060a01b031690565b90611661565b96919098610e9a826116b7565b9151919690916001600160801b031690565b60a0850151855190929188918b908e906001600160a01b0316966118ec565b6060830151919690916001600160a01b0316604084015193519093906001600160a01b031693611b79565b60405194859360208501610df0565b03601f19810183528261021f565b63f655705d60e01b5f5260045ffd5b356103c581610a31565b903590603e19813603018212156101b1570190565b6103c59036906102e3565b903590601e19813603018212156101b157018035906001600160401b0382116101b1576020019160a08202360383136101b157565b15610f8857565b63cbd130a960e01b5f5260045ffd5b903590601e19813603018212156101b157018035906001600160401b0382116101b1576020019181360383136101b157565b6001600160401b0381116101e457601f01601f191660200190565b929192610ff082610fc9565b91610ffe604051938461021f565b8294818452818301116101b1578281602093845f960137010152565b5f1981019190821161102857565b610a78565b634e487b7160e01b5f52603260045260245ffd5b91908110156110515760a0020190565b61102d565b6103c5903690610c11565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b602080825282516001600160a01b0316818301528083015160c06040840152805160e084018190529394936101008401939291909101905f5b81811061112e5750505060a08460406103c59596015160608401526111116060820151608085019060018060a01b03169052565b60808101518284015201519060c0601f198285030191015261096d565b909193602060a0826111436001948951611061565b0195019291016110dd565b6020818303126101b1578051906001600160401b0382116101b1570181601f820112156101b15780519061118182610fc9565b9261118f604051948561021f565b828452602083830101116101b157815f9260208093018386015e8301015290565b519081151582036101b157565b519061024f82610c06565b906060828203126101b15781516001600160401b0381116101b157820181601f820112156101b1578051906111fc8261026f565b9261120a604051948561021f565b828452602060608186019402830101918183116101b157602001925b82841061124a5750505050916103c56040611243602085016111b0565b93016111bd565b6060848303126101b157602060609160405161126581610204565b86518152828701518382015260408701516040820152815201930192611226565b908160209103126101b1576103c5906111b0565b9092610120926112ae836103c59796611061565b5f60a084015260020b60c083015260020b60e0820152816101008201520190610da5565b60405190600154808352826020810160015f5260205f20925f5b81811061130157505061024f9250038361021f565b84548352600194850194879450602090930192016112ec565b80518210156110515760209160051b010190565b1561133557565b635c974e3d60e11b5f5260045ffd5b1561134b57565b63b29d78b760e01b5f5260045ffd5b1561136157565b63d88409d360e01b5f5260045ffd5b8051515f929181151580611402575b156113f357905f915b8183106113a05750505061024f61271083111561135a565b9091936001906113e886602085016113c46113bc83835161131a565b51151561132e565b6113e2670de0b6b3a76400006113db84895161131a565b5111611344565b5161131a565b510194019190611388565b631fec674760e31b5f5260045ffd5b50602081015151821461137f565b6040519061141d826101c9565b5f6020838281520152565b1561142f57565b6342301c2360e01b5f5260045ffd5b611446611410565b50602081015190604081015160018060a01b03606083015116916040519361146d85610204565b845260208401918252604084019283526114a761149961148b611410565b94516001600160a01b031690565b92516001600160801b031690565b925f9560018060a01b037f000000000000000000000000000000000000000000000000000000000000000016935b865180518910156116185790602061151e61150c6114f68c61156e9661131a565b51805190946001600160a01b0390811691161490565b986001600160801b0316600f0b6122c9565b88156115fb576115536401000276a45b611536610260565b8b1515815292600f0b838501526001600160a01b03166040830152565b60405180948192633cf3645360e21b835285600484016122e0565b03815f8a5af180156101ac576001925f916115cd575b5087156115be57828060801b03165b96156115af57602001516001600160a01b03165b9701966114d5565b516001600160a01b03166115a7565b60801d828060801b0316611593565b6115ee915060203d81116115f4575b6115e6818361021f565b810190611fac565b5f611584565b503d6115dc565b61155373fffd8963efd1fc6a506488495d951d5263988d2561152e565b506001600160801b039095168252909550935061024f92909150611646906001600160a01b03166020860152565b8351608091909101516001600160801b039091161015611428565b9190915f6080604051611673816101e9565b828152826020820152826040820152826060820152015280515f198101908111611028576116a09161131a565b51805190926001600160a01b039081169116811491565b60a06116e491207f0000000000000000000000000000000000000000000000000000000000000000611fbb565b50509091565b60405190608082018281106001600160401b038211176101e457604052606080838181528160208201528160408201520152565b6040519061172d60208361021f565b5f80835282815b82811061174057505050565b60209060405161174f81610204565b5f81525f838201525f604082015282828501015201611734565b906117738261026f565b611780604051918261021f565b8281528092611791601f199161026f565b01905f5b8281106117a157505050565b6020906040516117b081610204565b5f81525f838201525f604082015282828501015201611795565b6001600160a01b039182168152911660208201526001600160801b03909116604082015260600190565b6020818303126101b1578051906001600160401b0382116101b157019080601f830112156101b15781516118278161026f565b92611835604051948561021f565b81845260208085019260051b8201019283116101b157602001905b82821061185d5750505090565b8151815260209182019101611850565b9594939290916118808761189a94611061565b151560a087015261012060c087015261012086019061093a565b84810360e0860152602080835192838152019201905f5b8181106118d3575050506001600160a01b039091166101009390930192909252565b825160020b8452602093840193909201916001016118b1565b9591936119089398979591986119006116ea565b50898861238c565b94919496855151151580611b67575b15611b55576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169416843b156101b1575f6040518096630b0d9c0960e01b8252818381611972893089600485016117ca565b03925af19485156101ac575f95611b3b575b5080151592838614611b345785935b611aa6575b50508551926119c360208801519660405197889687958695633ac1fb4960e21b87526004870161186d565b03916001600160801b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156101ac575f91611a84575b50611a138151611769565b935f5b8251811015611a7d5780611a2c6001928561131a565b51611a3b82604088015161131a565b51611a4a83606089015161131a565b5190611a54610260565b92835260208301526040820152611a6b828961131a565b52611a76818861131a565b5001611a16565b5092915050565b611aa091503d805f833e611a98818361021f565b8101906117f4565b5f611a08565b60405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201526001600160801b039190911660248201529460209186916044918391905af19384156101ac575f94611b15575b80611998565b611b2d9060203d60201161089b5761088d818361021f565b505f611b0f565b8093611993565b80611b4987611b4f9361021f565b80610342565b5f611984565b50505050505090611b6461171e565b91565b506001600160801b0382161515611917565b9192916001600160a01b0316908115611d0e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101b157604051632961046560e21b81526001600160a01b03841660048201525f8160248183865af19384156101ac57611c20602094611c26935f97611cfa575b50611c1a85611c098186612a37565b94611c15848383612a9f565b612a37565b92612544565b14612551565b600460405180948193630476982d60e21b83525af180156101ac57611cdb575b505b6001600160801b038116611c5b57505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156101b157604051630b0d9c0960e01b8152935f938593849286928492611cbc9290916001600160a01b0316600485016117ca565b03925af180156101ac57611ccd5750565b80611b495f61024f9361021f565b611cf39060203d6020116115f4576115e6818361021f565b505f611c46565b80611b4989611d089361021f565b5f611bfa565b604051630476982d60e21b81529150602090829060049082907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af180156101ac57611d64575b50611c48565b611d7c9060203d6020116115f4576115e6818361021f565b505f611d5e565b15611d8a57565b636741e8e960e11b5f5260045ffd5b5f54811015611051575f805260205f2001905f90565b6001548110156110515760015f5260205f2001905f90565b5f54908115611e6257818151511480611e54575b611de490611d83565b5f5b828110611df257505050565b80611e00600192845161131a565b51611e17611e0d83611d99565b90549060031b1c90565b1480611e2d575b611e2790611d83565b01611de6565b50611e27611e3f82602086015161131a565b51611e4c611e0d84611daf565b149050611e1e565b506020810151518214611ddb565b5050565b15611e6d57565b63bdcc3d9760e01b5f5260045ffd5b825115611ee3578051611ed457505b8151156110515760209190910151805161024f926001600160a01b0390811691168114918215611ebd575b5050611e66565b602001516001600160a01b03161490505f80611eb6565b611ede9150612567565b611e8b565b505050565b15611ef1575050565b635d0165db60e01b5f5260045260245260445ffd5b909493919291906001600160a01b038616611f2b5750505061024f9250808214611ee8565b9092919380611f9657506001600160a01b031690611f4890612651565b91813b156101b157604051631b63c28b60e11b81526001600160a01b039485166004820152908416602482015291831660448301529190921660648301525f90829081838160848101611cbc565b635d0165db60e01b5f525f60045260245260445ffd5b908160209103126101b1575190565b60209061200693926040518381019182526006604082015260408152611fe260608261021f565b519020906040518080968194631e2eaeaf60e01b8352600483019190602083019252565b03916001600160a01b03165afa9182156101ac575f92612049575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b61206391925060203d6020116115f4576115e6818361021f565b905f612021565b6020815260806060612087845183602086015260a0850190610390565b60208501516001600160a01b03166040858101919091528501518285015293015191015290565b919091825151156121c057602083810180519092612152916001600160a01b03168061219f575b508551606087015190949061212f90610785906001600160a01b03169260408a0193612117855191612105610240565b9a8b526001600160a01b0316898b0152565b60408901525f6060890152516001600160a01b031690565b6121975751935b60405194858094819363b858183f60e01b83526004830161206a565b03926001600160a01b03165af180156101ac576103c5915f91612178575b509251612567565b612191915060203d6020116115f4576115e6818361021f565b5f612170565b505f93612136565b60408701516121ba916001600160a01b03848116911661267a565b5f6120d5565b5060408201516020909201516001600160a01b031690565b9094935f93610120936121f084610140810199611061565b151560a084015260020b60c083015260020b60e0820152826101008201520152565b919092835f1461229b578060020b8260020b1291825f1461229557805b921561228e57505b925b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156101b1575f8094611cbc60405197889687958694632fc7dd6b60e11b8652600486016121d8565b9050612237565b8161222f565b8060020b8260020b1391825f146122c357805b92156122bc57505b92612239565b90506122b6565b816122ae565b600f0b60016001607f1b03198114611028575f0390565b90916122ef8261014094611061565b8051151560a0830152602081015160c0830152604001516001600160a01b031660e082015261012061010082018190525f908201520190565b906123328261026f565b61233f604051918261021f565b8281528092612350601f199161026f565b0190602036910137565b6001600160801b03918216908216019190821161102857565b6001600160801b03918216908216039190821161102857565b959395949190929461239c6116ea565b965f96670de0b6b3a76400006001600160801b0385161061252a579493929190835151926123c984612328565b8a526123d484612328565b60208b01526123e284612328565b60408b01526123f084612328565b60608b0152955f955f955b858710612424575050505050505080855152806020860151528060408601515260608501515290565b9091929394959661244f61243f896020859e9c9e015161131a565b516001600160801b038d166127b0565b98891561251e5761246a906001600160801b038b169061235a565b9a61247f906001600160801b038b1690612373565b98818d8a85519061248f9161131a565b5161249d908989898d6128f7565b92828251906124ab9161131a565b5260200151906124ba9161131a565b906124c7919060020b9052565b8b81898451906124d69161131a565b519160400151906124e69161131a565b528b81896020850151906124f99161131a565b519160600151906125099161131a565b52600101966001905b019594939291906123fb565b9a985096600190612512565b505050935050505f9190565b90601f820180921161102857565b9190820180921161102857565b1561255857565b637627529f60e01b5f5260045ffd5b80511561264c575f9160179160429084905b805182611028578661102857831161263757805190858203918083116110285786906125af846125a881612536565b101561300c565b6125bd826125a88682612544565b6125d383516125cc8685612544565b1115613049565b036125ec5750506040515f815260208101604052612579565b60405191601f81169187831560051b80858701019484860193010101905b8084106126245750508252601f01601f1916604052612579565b909260208091855181520193019061260a565b92945050506126469150612b30565b50905090565b505f90565b6001600160a01b03811161266b576001600160a01b031690565b63c4bd89a960e01b5f5260045ffd5b604051636eb1769f60e11b81523060048201526001600160a01b038084166024830152929390926020908490604490829086165afa9283156101ac575f9361278f575b5082018092116110285760205f604051938285019063095ea7b360e01b825260018060a01b03871660248701526044860152604485526126fe60648661021f565b84519082855af15f51903d81612763575b501590505b61271d57505050565b60405163095ea7b360e01b60208201526001600160a01b0390931660248401525f604484015261024f9261275e906127588160648101610f05565b826130cd565b6130cd565b1515905061278357506127146001600160a01b0382163b15155b5f61270f565b6001612714911461277d565b6127a991935060203d6020116115f4576115e6818361021f565b915f6126bd565b808202905f198382099082808310920391808303928361271011156101b1571461280e577fbc01a36e2eb1c432ca57a786c226809d495182a9930be0ded288ce703afb7e9193612710910990828211900360fc1b910360041c170290565b505061271091500490565b808202905f1983820990828083109203918083039283633b9aca0011156101b1571461287b577f88f2cfb83100cb4e69e7c79c58b316e597157d372fb9787e8e47ce423a2e9c6d93633b9aca00910990828211900360f71b910360091c170290565b5050633b9aca0091500490565b634e487b7160e01b5f52601260045260245ffd5b81156128a6570490565b612888565b60020b627fffff198114611028575f0390565b60020b60010190627fffff8213627fffff1983121761102857565b9060020b9060020b0190627fffff198212627fffff83131761102857565b94939261291a6129309294612915670de0b6b3a76400008211611344565b612bb0565b908415612a1e575b6001600160a01b0316612819565b6001600160a01b038111612a10575b61296d90606090612958906001600160a01b0316612bf6565b950194612966865160020b90565b9084612e91565b61298061297b865160020b90565b612f20565b9061298a826128ab565b8160020b8360020b81135f146129ec57505050906129b591945b83156129df575160020b5b906128d9565b90156129cf578060020b8360020b126129cb5750565b9150565b8060020b8360020b136129cb5750565b516129af9060020b6128ab565b90809297935060020b13612a06575b50906129b5916129a4565b94506129b56129fb565b506001600160a01b0361293f565b90612a3190670de0b6b3a764000061289c565b90612922565b6001600160a01b038116612a4a57503190565b6040516370a0823160e01b81526001600160a01b0392831660048201529160209183916024918391165afa9081156101ac575f91612a86575090565b6103c5915060203d6020116115f4576115e6818361021f565b9091906001600160a01b038116612acc57505f808080612ac094865af11590565b612ac75750565b612fa3565b6040805163a9059cbb60e01b81526001600160a01b039094166004850152602484019290925291905f9060208260448582885af13d15601f3d11600185511416171692828152826020820152015215612b225750565b6001600160a01b0316612f36565b90612b3f601483511015613089565b602082015160601c916017815110612b7457601781015190602b81612b6b601792602094511015613089565b01015160601c91565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b6044820152606490fd5b9081600181018082116110285760011c905b838210612bd657505061024f821515611344565b9092508280156128a6578082049081018091116110285760011c90612bc2565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b031611612e365760018060a01b0316612c348160201b90565b80612c47612c4183613145565b60ff1690565b9160808310612e295750607e1982011c905b607f190160401b90800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c66800000000000001698600160381b9060c71c1697600160391b9060c61c16966001603a1b9060c51c16956001603b1b9060c41c16946001603c1b9060c31c16936001603d1b9060c21c16926001603e1b9060c11c16916001603f1b9060c01c161717171717171717171717171717693627a301d71055774c85026f028f6481ab7f045a5af012a19d003aa9198101612dd79060801d90565b60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918260020b8260020b145f14612e095750905090565b6001600160a01b03612e1a846131c8565b1611612e24575090565b905090565b905081607f031b90612c59565b613125565b600291820b910b0390627fffff198212627fffff83131761102857565b60020b9060020b9081156128a657627fffff1981145f19831416611028570590565b9060020b9060020b02908160020b91820361102857565b90919015612ed5575f8260020b125f14612ec857612ec381612ebe612eb9826103c596612e3b565b6128be565b612e58565b612e7a565b612ec3816103c593612e58565b905f8160020b125f14612ef05790612ec3816103c593612e58565b81612efa916128d9565b60020b5f190190627fffff198212627fffff83131761102857612ec3816103c593612e58565b8060020b80156128a657620d89e8050260020b90565b6040516390bfb86560e01b81526001600160a01b03909116600482015263a9059cbb60e01b60248201526080604482015260a03d601f01601f191690810160648301523d60848301523d5f60a484013e808201600460a482015260c4633c9fd93960e21b91015260e40190fd5b6040516390bfb86560e01b81526001600160a01b0390911660048201525f602482018190526080604483015260a03d601f01601f191690810160648401523d6084840152903d9060a484013e808201600460a482015260c4633d2cec6f60e21b91015260e40190fd5b1561301357565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b1561305057565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b1561309057565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b905f602091828151910182855af115610a57575f513d61311c57506001600160a01b0381163b155b6130fc5750565b635274afe760e01b5f9081526001600160a01b0391909116600452602490fd5b600114156130f5565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b80156101b1577f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6001600160801b03841160071b84811c6001600160401b031060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b60020b908160ff1d82810118620d89e881116134e25763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b1891600281166134c6575b600481166134aa575b6008811661348e575b60108116613472575b60208116613456575b6040811661343a575b6080811661341e575b6101008116613402575b61020081166133e6575b61040081166133ca575b61080081166133ae575b6110008116613392575b6120008116613376575b614000811661335a575b618000811661333e575b620100008116613322575b620200008116613307575b6204000081166132ec575b62080000166132d3575b5f126132cb575b0160201c90565b5f19046132c4565b6b048a170391f7dc42444e8fa290910260801c906132bd565b6d2216e584f5fa1ea926041bedfe9890920260801c916132b3565b916e5d6af8dedb81196699c329225ee6040260801c916132a8565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161329d565b916f31be135f97d08fd981231505542fcfa60260801c91613292565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613288565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161327e565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613274565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161326a565b916ff3392b0822b70005940c7a398e4b70f30260801c91613260565b916ff987a7253ac413176f2b074cf7815e540260801c91613256565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161324c565b916ffe5dee046a99a2a811c461f1969c30530260801c91613242565b916fff2ea16466c96a3843ec78b326b528610260801c91613239565b916fff973b41fa98c081472e6896dfb254c00260801c91613230565b916fffcb9843d60f6159c9db58835c9266440260801c91613227565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c9161321e565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91613215565b916ffff97272373d413259a46990580e213a0260801c9161320c565b826345c3193d60e11b5f5260020b60045260245ffdfe83af7c0041fe8b1e39cbe562b7b80186768e34955d84dc69120d42fd8d1d31b8","sourceMap":"2610:19103:89:-:0;;;;;;;;;-1:-1:-1;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;;;;;-1:-1:-1;;2610:19103:89;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;7792:60:89;;2610:19103;;;;;7820:18;-1:-1:-1;;;;;2610:19103:89;7792:60;;;;;;;7963:61;7792:60;7770:100;7792:60;2610:19103;7792:60;;;2610:19103;-1:-1:-1;;;;;;2610:19103:89;7778:10;:74;7770:100;:::i;:::-;7880:32;;;:::i;:::-;;2610:19103;;;:::i;:::-;;7987:16;;8005:18;;;2610:19103;7963:61;2610:19103;;7963:61;;;;;:::i;:::-;;;;2610:19103;7792:60;;;;2610:19103;7792:60;2610:19103;7792:60;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;2610:19103::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;:::o;:::-;3381:38;2610:19103;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;:::o;:::-;;;;;9256:14;2610:19103;;:::i;:::-;:::o;:::-;;;;;10535:19;2610:19103;;:::i;:::-;;;;;13856:29;2610:19103;;:::i;:::-;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;2610:19103:89;;;;;;2998:55;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;;;;;;;-1:-1:-1;;2610:19103:89;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;-1:-1:-1;;2610:19103:89;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;2610:19103:89;;;;;;3103:39;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;-1:-1:-1;;2610:19103:89;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;8787:16;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;3080:68:7;8925:23:89;;;;;;;;:::i;:::-;8900:49;;;:::i;:::-;;;;:::i;:::-;;9042:23;;;;:::i;:::-;9012:54;;;:::i;:::-;;;;:::i;:::-;9147:14;;;;;;;:::i;:::-;9139:50;;-1:-1:-1;9147:25:89;;9139:50;:::i;:::-;9256:14;;;;;;;;:::i;:::-;9272:20;;;;;;;;;:::i;:::-;9294:14;;;;;:::i;:::-;2610:19103;;;;3381:38;;;;:::i;:::-;2610:19103;;3381:38;;;;:::i;:::-;9227:82;;;;:::i;:::-;9441:20;;;:::i;:::-;9463:18;;;;2610:19103;9510:9;;9503:4;9483:10;9432:7;;9510:9;;;;:::i;:::-;9612:14;;;;:::i;:::-;9627;;;;:::i;:::-;:25;;;;:::i;:::-;9612:41;;;;:::i;:::-;9584:69;;;:::i;:::-;9749:11;;357:173:36;9147:14:89;357:173:36;;9727:53:89;;;;:::i;:::-;10026:14;;;;;;;;:::i;:::-;10073:20;;;;:::i;:::-;3381:38;;;:::i;:::-;2610:19103;;3381:38;;;;:::i;:::-;;;-1:-1:-1;;;;;2610:19103:89;;9972:227;;3381:38;9272:20;9972:227;;3381:38;9503:4;9463:18;9972:227;;3381:38;9907:302;;9948:10;9907:302;:::i;:::-;10362:16;;;;:::i;:::-;10401:14;;;;;:::i;:::-;10535:19;;;2610:19103;10586:23;;;;;:::i;:::-;3381:38;;;:::i;:::-;-1:-1:-1;;;;;2610:19103:89;;;3381:38;;2610:19103;3381:38;;;;:::i;:::-;2610:19103;10324:296;;3381:38;9272:20;10324:296;;3381:38;-1:-1:-1;;;;;2610:19103:89;9463:18;10324:296;;3381:38;9256:14;10324:296;;3381:38;2610:19103;3381:38;;;:::i;:::-;9147:14;10324:296;;3381:38;9272:20;2610:19103;10736:24;;2610:19103;10736:24;;;;;;:::i;:::-;;2610:19103;;10736:24;;;;;;;;:::i;:::-;9272:20;2610:19103;-1:-1:-1;;;10717:44:89;;2610:19103;;;;;10717:44;;2610:19103;10717:44;;;:::i;:::-;-1:-1:-1;;;;;2610:19103:89;;;;10717:44;;;-1:-1:-1;10717:44:89;;;;;;;;10848:49;10717:44;-1:-1:-1;10717:44:89;;;2610:19103;;;;;;10848:49;;;;;;:::i;:::-;11015:16;;;;10999:52;:34;11007:25;3381:38;9256:14;11015:16;;3381:38;2610:19103;;;;;;;;3381:38;-1:-1:-1;;;;;2610:19103:89;;;10999:52;9272:20;2610:19103;-1:-1:-1;;;10999:95:89;;-1:-1:-1;;;2610:19103:89;10999:95;;3381:38;2610:19103;;;;;;3381:38;;2610:19103;;10999:95;;;;;;;;;11345:130;10999:95;11345:130;10999:95;-1:-1:-1;10999:95:89;;;2610:19103;11158:17;;:38;;;2610:19103;11158:73;;;2610:19103;11154:176;;2610:19103;-1:-1:-1;;;;;;2610:19103:89;11385:16;;-1:-1:-1;11385:16:89;-1:-1:-1;11385:16:89;:::i;:::-;2610:19103;;9272:20;2610:19103;9483:10;;;;11345:130;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;;3080:68:7;9272:20:89;2610:19103;8787:16;2610:19103;;;;;11154:176;11305:13;11271:16;;11305:13;;:::i;:::-;11154:176;;;;;11158:73;2610:19103;;;;;;;11200:31;;11158:73;;:38;2610:19103;;;11179:17;;11158:38;;10999:95;;;;2610:19103;10999:95;2610:19103;10999:95;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;10717:44;;;;;;-1:-1:-1;10717:44:89;;;;;;:::i;:::-;;;;;:::i;:::-;;;;2610:19103;;;;;;-1:-1:-1;;2610:19103:89;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;2848:69:7;2610:19103:89;;;;;;;;;;;;-1:-1:-1;;2610:19103:89;;;;;;2904:41;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;2610:19103:89;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3381:38;;2610:19103;;:::i;:::-;;;;3381:38;2610:19103;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;;-1:-1:-1;2610:19103:89;;;;;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;:::i;:::-;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;11887:1335::-;12000:11;-1:-1:-1;;;;;2610:19103:89;11978:10;:34;11974:89;;12108:32;;;;;;:::i;:::-;13160:55;12684:273;13160:55;2610:19103;13119:22;12235:29;;;:::i;:::-;12408:20;12389:67;12408:20;;;;2610:19103;12408:20;12430:25;;2610:19103;;;;;;;;;;12389:67;;:::i;:::-;12556:25;;;;;;;:::i;:::-;2610:19103;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;12882:29;;;;2610:19103;;12882:29;;;;;2610:19103;;;;-1:-1:-1;;;;;2610:19103:89;12684:273;;:::i;:::-;13033:29;;;2610:19103;13033:29;;;;-1:-1:-1;;;;;2610:19103:89;13064:27;;;2610:19103;;;13064:27;;2610:19103;-1:-1:-1;;;;;2610:19103:89;13119:22;;:::i;:::-;13064:27;2610:19103;13160:55;;;12408:20;13160:55;;;:::i;:::-;;2610:19103;;13160:55;;;;;;:::i;11974:89::-;12035:17;;;;;;;;3381:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3381:38:89;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3381:38:89;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;3381:38:89;;;;2610:19103;;-1:-1:-1;;2610:19103:89;3381:38;;;:::o;:::-;;;;;;;:::i;:::-;2610:19103;;;;;;;:::i;:::-;3381:38;;;;;;;;;;;;;;;;-1:-1:-1;3381:38:89;;;;;;:::o;:::-;-1:-1:-1;;3381:38:89;;;;;;;;:::o;:::-;;:::i;:::-;2610:19103;;;3381:38;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2610:19103:89;;;;;3381:38;;;;;2610:19103;;3381:38;;;2610:19103;3381:38;;;;;2610:19103;;3381:38;;;;;;;;;2610:19103;;3381:38;;;2610:19103;3381:38;;;;;2610:19103;3381:38;;2610:19103;3381:38::o;:::-;;;;;;;-1:-1:-1;;;;;2610:19103:89;3381:38;;;2610:19103;3381:38;;;;;;;;;2610:19103;;3381:38;;;2610:19103;;;3381:38;;;2610:19103;;;;3381:38;2610:19103;;;;;-1:-1:-1;3381:38:89;;;;;;;;;;;;;;;;;;;;2610:19103;3381:38;;;;;;;;;2610:19103;;;;;;;;;3381:38;;;;;;;;2610:19103;3381:38;;2610:19103;3381:38;2610:19103;;3381:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;2610:19103;;3381:38;;;;;;;;;;;;;;;-1:-1:-1;;;;;3381:38:89;;;;;;;;;;;;;;;;;;;:::i;:::-;2610:19103;;;;;;;:::i;:::-;3381:38;;;;;;;;;;;;-1:-1:-1;3381:38:89;;;;;;;;2610:19103;;;;;3381:38;:::o;:::-;;2610:19103;;;;3381:38;;;;:::o;:::-;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;3381:38:89;;;;;;;;;;;;;;;;;;;;:::i;:::-;2610:19103;;;;;;;:::i;:::-;3381:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:19103;3381:38;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;2610:19103;;;;;;:::i;:::-;3381:38;;;;;;;;;;;;2610:19103;3381:38;;;2610:19103;3381:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;-1:-1:-1;3381:38:89;;;2610:19103;;;3381:38;;;2610:19103;;;3381:38;;;2610:19103;3381:38;;;;;;;;:::i;2610:19103::-;;;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;-1:-1:-1;2610:19103:89;;-1:-1:-1;2610:19103:89;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;1795:4:88;;;;:::o;:::-;;;;;;;;;1901:6;;;;:::o;:::-;;;;;;;;;2848:647;2970:16;;2610:19103:89;;;2848:647:88;3012:10;;;;:49;;2848:647;2610:19103:89;;;3120:9:88;2610:19103:89;3115:296:88;3131:10;;;;;;3439:29;;;3431:57;1901:6;3439:29;;;3431:57;:::i;3143:3::-;3174:18;;;2610:19103:89;3174:18:88;3335:21;3174:18;;;;3166:53;3174:21;:18;;;:21;:::i;:::-;2610:19103:89;3174:26:88;;3166:53;:::i;:::-;3237:64;1795:4;3245:19;:16;;;:19;:::i;:::-;2610:19103:89;3245:36:88;3237:64;:::i;:::-;3335:18;:21;:::i;:::-;2610:19103:89;1795:4:88;3143:3;2610:19103:89;3120:9:88;;;;2610:19103:89;;;;;;;;;3012:49:88;3036:18;;;;;2610:19103:89;3026:35:88;;3012:49;;2610:19103:89;;;;;;;:::i;:::-;-1:-1:-1;2610:19103:89;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;13457:603;2610:19103;;:::i;:::-;;13731:20;;;;13779:27;;;;2610:19103;;;;;;13856:29;;;2610:19103;;;13779:27;2610:19103;;;;;:::i;:::-;3381:38;;13731:20;13677:224;;3381:38;;;13779:27;13677:224;;3381:38;;;8099:24:58;2610:19103:89;;;:::i;:::-;;;-1:-1:-1;;;;;2610:19103:89;;;;;;-1:-1:-1;;;;;2610:19103:89;;;8099:24:58;8182:13;-1:-1:-1;2610:19103:89;;;;;;13652:11;2610:19103;8177:819:58;8224:3;8201:14;;2610:19103:89;;8197:25:58;;;;;8268:17;13731:20:89;8538:24:58;8384:36;8268:17;;8456:213;8268:17;;:::i;:::-;;2610:19103:89;;8268:17:58;;-1:-1:-1;;;;;2610:19103:89;;;;;448:51:35;;364:138;8384:36:58;2610:19103:89;-1:-1:-1;;;;;2610:19103:89;;;8538:24:58;:::i;:::-;8564:70;;;;8515:120;1862:10:31;8564:70:58;2610:19103:89;;:::i;:::-;;;;1862:10:31;;8515:120:58;2610:19103:89;;8515:120:58;;;3381:38:89;-1:-1:-1;;;;;2610:19103:89;13779:27;8515:120:58;;3381:38:89;;8515:120:58;13779:27:89;2610:19103;;;;;;;;8456:213:58;;;;;;;:::i;:::-;;;-1:-1:-1;8456:213:58;;;;;;;2610:19103:89;8456:213:58;-1:-1:-1;8456:213:58;;;8564:70;-1:-1:-1;8755:64:58;;;;2610:19103:89;;;;;;8755:64:58;8935:50;;;;13731:20:89;8948:17:58;2610:19103:89;-1:-1:-1;;;;;2610:19103:89;;8224:3:58;2610:19103:89;8182:13:58;;;8935:50;2610:19103:89;-1:-1:-1;;;;;2610:19103:89;8935:50:58;;8755:64;2052:83:33;;2610:19103:89;;;;;;8755:64:58;;8456:213;;;;13731:20:89;8456:213:58;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;8564:70;8515:120;2042:49:31;8564:70:58;;8197:25;-1:-1:-1;;;;;;2610:19103:89;;;1862:10:31;;8197:25:58;;-1:-1:-1;8197:25:58;-1:-1:-1;13964:89:89;;8197:25:58;;-1:-1:-1;9051:39:58;;-1:-1:-1;;;;;2610:19103:89;13731:20;9051:21:58;;3381:38:89;;9051:39:58;2610:19103:89;;13999:25;;;;;2610:19103;-1:-1:-1;;;;;2610:19103:89;;;13972:52;;13964:89;:::i;14413:437::-;;;;-1:-1:-1;2610:19103:89;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3381:38;;;;;;;;;14684:24;;;:::i;:::-;;2610:19103;;14684:24;;-1:-1:-1;;;;;2610:19103:89;;;;;14791:52;;;14413:437::o;15044:204::-;357:173:36;15188:53:89;15044:204;357:173:36;15210:11:89;15188:53;:::i;:::-;15161:80;;;15044:204;:::o;2610:19103::-;;;;3381:38;2610:19103;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;2610:19103:89;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;-1:-1:-1;2610:19103:89;;-1:-1:-1;2610:19103:89;;;;-1:-1:-1;2610:19103:89;;;;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;3381:38;;2610:19103;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;2610:19103:89;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;15962:1841;;;;16458:115;15962:1841;;;;;;2610:19103;;:::i;:::-;;16458:115;;;:::i;:::-;16423:150;;;16640:12;;;2610:19103;16640:23;;:40;;;15962:1841;16636:1161;;;-1:-1:-1;;;;;16767:11:89;2610:19103;;;;16767:70;;;;;2610:19103;;;;;;;;16767:70;;16820:4;;;16767:70;16820:4;;16767:70;;;;;:::i;:::-;;;;;;;;;;2610:19103;16767:70;;;16636:1161;16944:25;;;;:41;;;;;;;;;17068:131;;16944:41;17359:12;;;;17373;17290:103;17373:12;;;;2610:19103;;;;;;;;;;;;;17290:103;;16767:70;17290:103;;;:::i;:::-;;;-1:-1:-1;;;;;2610:19103:89;17290:18;-1:-1:-1;;;;;2610:19103:89;17290:103;;;;;;;2610:19103;17290:103;;;16944:41;2610:19103;17424:35;2610:19103;;17424:35;:::i;:::-;17506:9;2610:19103;17538:3;2610:19103;;17517:19;;;;;17607:11;;2610:19103;17607:11;;;:::i;:::-;2610:19103;17630:19;:16;2610:19103;17630:16;;;:19;:::i;:::-;2610:19103;17663:21;:18;2610:19103;17663:18;;;:21;:::i;:::-;2610:19103;;;;:::i;:::-;3381:38;;;17373:12;17584:102;;3381:38;2610:19103;17584:102;;3381:38;17565:121;;;;:::i;:::-;;;;;;:::i;:::-;;2610:19103;17506:9;;17517:19;;;;;;15962:1841::o;17290:103::-;;;;;;2610:19103;17290:103;;;;;;:::i;:::-;;;;;:::i;:::-;;;;17068:131;2610:19103;;-1:-1:-1;;;17117:67:89;;-1:-1:-1;;;;;17153:18:89;2610:19103;16767:70;17117:67;;2610:19103;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;17117:67;;2610:19103;;;;;;;17117:67;;;;;;;2610:19103;17117:67;;;17068:131;;;;17117:67;;;;;;;;;;;;;:::i;:::-;;;;;16944:41;;;;;16767:70;;;;;;;:::i;:::-;;;:::i;:::-;;;;16636:1161;17765:21;;;;;;;;;:::i;:::-;16636:1161;15962:1841::o;16640:40::-;-1:-1:-1;;;;;;2610:19103:89;;16667:13;;16640:40;;18149:431;;;;-1:-1:-1;;;;;2610:19103:89;;4998:58:35;;18809:24:89;;18849:11;-1:-1:-1;;;;;2610:19103:89;18849:26;;;;;2610:19103;;-1:-1:-1;;;18849:26:89;;-1:-1:-1;;;;;2610:19103:89;;18849:26;;;2610:19103;-1:-1:-1;2610:19103:89;;;-1:-1:-1;18849:26:89;;;;;;;;19124:22;19211:20;18849:26;19072:124;18849:26;;;;;18804:504;18957:40;19080;18957;;;;;:::i;:::-;19051:6;;;;;;:::i;:::-;19080:40;:::i;:::-;19124:22;;:::i;:::-;19080:66;19072:124;:::i;:::-;18849:26;2610:19103;;;;;;;;;19211:20;;;;;;;;;;18804:504;;;-1:-1:-1;;;;;2610:19103:89;;18464:110;;18149:431;;;:::o;18464:110::-;18499:11;-1:-1:-1;;;;;2610:19103:89;18499:64;;;;;2610:19103;;-1:-1:-1;;;18499:64:89;;2610:19103;18482:1;;2610:19103;;;;18482:1;;2610:19103;;18499:64;;2610:19103;;-1:-1:-1;;;;;2610:19103:89;18499:64;;;;:::i;:::-;;;;;;;;;;;18149:431;:::o;18499:64::-;;;18482:1;18499:64;;;:::i;19211:20::-;;;;;;;;;;;;;:::i;:::-;;;;;18849:26;;;;;;;:::i;:::-;;;;18804:504;2610:19103;;-1:-1:-1;;;19262:35:89;;2610:19103;-1:-1:-1;19262:35:89;;2610:19103;;19262:35;;2610:19103;;19262:11;-1:-1:-1;;;;;2610:19103:89;19262:35;;;;;;;;18804:504;;;;19262:35;;;;;;;;;;;;;:::i;:::-;;;;;2610:19103;;;;:::o;:::-;;;;;;;;;;20933:17;2610:19103;;;;;;20933:17;2610:19103;;;20933:17;2610:19103;;;20933:17;2610:19103;:::o;:::-;;;;;;;;;-1:-1:-1;2610:19103:89;;-1:-1:-1;2610:19103:89;;;-1:-1:-1;2610:19103:89;:::o;20812:817::-;20933:17;2610:19103;21047:20;;;21043:33;;21131:16;;;2610:19103;21131:42;:90;;;20812:817;21123:126;;;:::i;:::-;20933:17;21346:19;;;;;;20812:817;;;:::o;21367:3::-;21419:16;:19;2610:19103;21419:16;;;:19;:::i;:::-;2610:19103;;21442:30;;;:::i;:::-;2610:19103;;;;;;;;;21419:53;:114;;;21367:3;21390:208;;;:::i;:::-;2610:19103;21335:9;;21419:114;21476:18;21390:208;21476:21;:18;;;;;:21;:::i;:::-;2610:19103;;21501:32;;;:::i;2610:19103::-;21476:57;21419:114;;;;21131:90;-1:-1:-1;21177:18:89;;;;2610:19103;21177:44;;21131:90;;21043:33;21069:7;;:::o;2610:19103::-;;;;:::o;:::-;;;;;;;;;2892:890:58;2610:19103:89;;3015:19:58;3011:83;;2610:19103:89;;3212:14:58;;3327:31;3208:313;2610:19103:89;;;;;;;;;;3558:10:58;2610:19103:89;;3579:196:58;;-1:-1:-1;;;;;2610:19103:89;;;;;3600:55:58;;;:114;;;;3208:313;3579:196;;;:::i;3600:114::-;2610:19103:89;3694:19:58;2610:19103:89;-1:-1:-1;;;;;2610:19103:89;3659:55:58;;-1:-1:-1;3600:114:58;;;;3208:313;3477:33;;;;:::i;:::-;3208:313;;3011:83;3050:7;;;:::o;2610:19103:89:-;;;;;;:::o;:::-;;;;;;;;;;;;;5362:575:58;;;;;;;;-1:-1:-1;;;;;2610:19103:89;;;;5628:23:58;;;5620:82;5628:23;;;;;5620:82;:::i;5526:405::-;5782:13;;;;;2610:19103:89;;-1:-1:-1;;;;;;2610:19103:89;;5881:23:58;;;:::i;:::-;5850:70;;;;;;2610:19103:89;;-1:-1:-1;;;5850:70:58;;-1:-1:-1;;;;;2610:19103:89;;;5850:70:58;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;5555:1:58;;2610:19103:89;;;5555:1:58;2610:19103:89;;;;5850:70:58;2610:19103:89;;;;;5555:1:58;2610:19103:89;5555:1:58;2610:19103:89;;;;;5555:1:58;2610:19103:89;;;;;;;;;;3381:38;2610:19103;:::o;1580:996:29:-;14953:51;1580:996;1892:27;1580:996;;2610:19103:89;;14953:51:29;;;2610:19103:89;;;414:1:29;2610:19103:89;398:19:29;;2610:19103:89;;14953:51:29;;;;;;:::i;:::-;2610:19103:89;14943:62:29;;2610:19103:89;;;;;;;;;;;1892:27:29;;;;;2610:19103:89;;;;;;;;1892:27:29;;;-1:-1:-1;;;;;2610:19103:89;1892:27:29;;;;;;;-1:-1:-1;1892:27:29;;;1580:996;-1:-1:-1;;;;;;2147:423:29;;;2610:19103:89;2147:423:29;;;;;;;;;;;;;;;;;;1580:996::o;1892:27::-;;;;;14953:51;1892:27;14953:51;1892:27;;;;;;;:::i;:::-;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2610:19103:89;;;;;;;;;;;;;;;;;;;;;;;:::o;6348:1227:58:-;;;;6505:14;;2610:19103:89;6505:26:58;6501:163;;6745:20;;;;2610:19103:89;;6745:20:58;;7452:47;;-1:-1:-1;;;;;2610:19103:89;;6741:156:58;;6348:1227;-1:-1:-1;7054:14:58;;7093:16;;;2610:19103:89;7054:14:58;;7093:16;7366:34;;2610:19103:89;;-1:-1:-1;;;;;2610:19103:89;7133:18:58;;;;2610:19103:89;7005:247:58;2610:19103:89;;3381:38;;;:::i;:::-;;;;-1:-1:-1;;;;;2610:19103:89;7005:247:58;;;3381:38:89;;7005:247:58;7133:18;7005:247;;3381:38:89;-1:-1:-1;7093:16:58;7005:247;;3381:38:89;2610:19103;-1:-1:-1;;;;;2610:19103:89;;;7366:34:58;:59;;2610:19103:89;7366:59:58;;7133:18;2610:19103:89;;;;;;;;;;7452:47:58;;;;;;:::i;:::-;;;-1:-1:-1;;;;;2610:19103:89;7452:47:58;;;;;;7528:40;7452:47;-1:-1:-1;7452:47:58;;;7366:59;7435:64;7553:14;;7528:40;:::i;7452:47::-;;;;6745:20;7452:47;6745:20;7452:47;;;;;;;:::i;:::-;;;;7366:59;;-1:-1:-1;7366:59:58;;;6741:156;6867:18;;;2610:19103:89;6867:18:58;;-1:-1:-1;;;;;2610:19103:89;;;;;6867:18:58;:::i;:::-;6741:156;;;6501:163;-1:-1:-1;6612:18:58;;;2610:19103:89;6632:20:58;;;;2610:19103:89;-1:-1:-1;;;;;2610:19103:89;;:::o;:::-;;;;-1:-1:-1;2610:19103:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19601:1080::-;;;;19976:514;;;;;2610:19103;;;;;;20077:30;:63;;;;;;;;20164;;;;;;19976:514;;20594:18;-1:-1:-1;;;;;2610:19103:89;;20594:80;;;;;-1:-1:-1;2610:19103:89;;20594:80;2610:19103;;;;;;;;;;;;20594:80;;;;;;:::i;20164:63::-;;;;;20077;;;;19976:514;2610:19103;;;;;;20329:30;:63;;;;;;;;20416;;;;;;19976:514;;;20416:63;;;;;20329;;;;2610:19103;;;-1:-1:-1;;;;;;2610:19103:89;;;;;;;:::o;1862:10:31:-;;;;;2610:19103:89;1862:10:31;;:::i;:::-;;;2610:19103:89;;1862:10:31;;;2610:19103:89;1862:10:31;;;;;;;2610:19103:89;1862:10:31;;;-1:-1:-1;;;;;2610:19103:89;1862:10:31;;;2610:19103:89;1862:10:31;;;;;;;-1:-1:-1;1862:10:31;;;2610:19103:89;;;1862:10:31:o;2155:4:88:-;;2610:19103:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;2155:4:88;2610:19103:89;2155:4:88;2610:19103:89;;2155:4:88;;:::i;:::-;;;;;;;;:::o;:::-;-1:-1:-1;;;;;2610:19103:89;;;;;;2155:4:88;;;;;;;:::o;:::-;-1:-1:-1;;;;;2610:19103:89;;;;;;2155:4:88;;2610:19103:89;2155:4:88;;;;:::o;4465:1756::-;;;;;;;;;2610:19103:89;;:::i;:::-;4709:17:88;2610:19103:89;;1795:4:88;-1:-1:-1;;;;;2610:19103:89;;4763:32:88;4759:143;;4933:16;;;;;;;2610:19103:89;4977:25:88;;;;:::i;:::-;4967:35;;5022:23;;;:::i;:::-;5012:7;;;:33;5069:25;;;:::i;:::-;5055:11;;;:39;5120:25;;;:::i;:::-;5104:13;;;:41;5195:13;2610:19103:89;5224:9:88;2610:19103:89;5219:659:88;5235:14;;;;;;5888:293;;;;;;;;;;;5012:7;;;;5888:293;;5055:11;;;;5888:293;;5104:13;;;5888:293;;4465:1756;:::o;5251:3::-;5326:18;;;;;;;5290:73;5326:21;:18;5012:7;5326:18;;;;;;:21;:::i;:::-;2610:19103:89;-1:-1:-1;;;;;2610:19103:89;;5290:73:88;:::i;:::-;5381:14;;;5377:28;;5420:31;;-1:-1:-1;;;;;2610:19103:89;;;5420:31:88;:::i;:::-;2610:19103:89;5465:31:88;;-1:-1:-1;;;;;2610:19103:89;;;5465:31:88;:::i;:::-;5589:16;;;;;;:19;;;;:::i;:::-;2610:19103:89;5530:79:88;;;;;;;:::i;:::-;5624:7;;;;:26;;;;:::i;:::-;3381:38:89;5012:7:88;;5664;:27;;;;:::i;:::-;;;;2155:4;2610:19103:89;;2155:4:88;;;5664:27;5726:16;;;;;:19;;;;:::i;:::-;2610:19103:89;5055:11:88;;;5705;:40;;;;:::i;:::-;3381:38:89;5326:18:88;;;5012:7;5326:18;;5782;:21;;;;:::i;:::-;2610:19103:89;5104:13:88;;;5759;:44;;;;:::i;:::-;3381:38:89;2610:19103;;5251:3:88;2610:19103:89;5251:3:88;5224:9;2610:19103:89;5224:9:88;;;;;;;;5377:28;5397:8;;;;2610:19103:89;5397:8:88;;;4759:143;4857:34;;;;;;;2610:19103:89;4857:34:88;;:::o;2610:19103:89:-;;677:2:72;2610:19103:89;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;10510:597:58;2610:19103:89;;10618:16:58;10614:64;;2610:19103:89;;;;;;;;10859:101:58;2610:19103:89;;;;;;;;1229:40:73;-1:-1:-1;10866:30:58;;2610:19103:89;;3381:38;;;;;;;;;;667:12:72;;659:50;667:12;;;;:::i;:::-;:23;;659:50;:::i;:::-;719:53;727:16;;;;;:::i;719:53::-;782:63;2610:19103:89;;807:16:72;;;;:::i;:::-;-1:-1:-1;790:33:72;782:63;:::i;:::-;889:2430;2610:19103:89;;889:2430:72;;;;2610:19103:89;889:2430:72;;;;;;;10859:101:58;;889:2430:72;;;;677:2;889:2430;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;889:2430:72;;677:2;889:2430;-1:-1:-1;;889:2430:72;;;10859:101:58;;889:2430:72;;;;;;;;;;;;;;;;10866:30:58;;;;;;11071:29;10866:30;;11071:29;:::i;:::-;11054:46;;;10510:597;:::o;10614:64::-;10650:17;2610:19103:89;10650:17:58;:::o;288:164:11:-;-1:-1:-1;;;;;368:25:11;;364:50;;-1:-1:-1;;;;;2610:19103:89;;288:164:11:o;364:50::-;402:12;;;;;;;;3146:225:5;2610:19103:89;;-1:-1:-1;;;3265:39:5;;3289:4;3265:39;;;2610:19103:89;-1:-1:-1;;;;;2610:19103:89;;;;;;;3146:225:5;;2610:19103:89;;;;;;3265:39:5;;2610:19103:89;;;;3265:39:5;;;;;;;-1:-1:-1;3265:39:5;;;3146:225;2610:19103:89;;;;;;;;5199:47:5;-1:-1:-1;2610:19103:89;;5199:47:5;;;;2610:19103:89;;;;5199:47:5;;2610:19103:89;;;;;;;5199:47:5;;;2610:19103:89;;;;;;5199:47:5;;;;;;:::i;:::-;9770:199;;;;;;;-1:-1:-1;9770:199:5;;;;9985:80;;3146:225;-1:-1:-1;5261:45:5;;-1:-1:-1;5261:45:5;5257:201;;3146:225;;;:::o;5257:201::-;2610:19103:89;;-1:-1:-1;;;5199:47:5;5349:43;;;-1:-1:-1;;;;;2610:19103:89;;;5199:47:5;5349:43;;2610:19103:89;5389:1:5;2610:19103:89;;;;5434:12:5;;5349:43;;;2610:19103:89;;;;5349:43:5;2610:19103:89;5349:43:5;;;:::i;:::-;5434:12;:::i;9985:80::-;9997:15;;;-1:-1:-1;9997:15:5;;-1:-1:-1;5261:45:5;-1:-1:-1;;;;;2610:19103:89;;10015:26:5;:30;;9997:67;9985:80;;;9997:67;10063:1;5261:45;10048:16;;9997:67;;3265:39;;;;;2610:19103:89;3265:39:5;2610:19103:89;3265:39:5;;;;;;;:::i;:::-;;;;;858:4141:64;2610:19103:89;;;;-1:-1:-1;;2610:19103:89;;1464:147:64;;;;;;;;;;;;1736:19;;1901:6:88;1736:19:64;2610:19103:89;;;1837:10:64;1833:177;;2610:19103:89;2341:95:64;1901:6:88;2341:95:64;;2508:145;;;;;;2610:19103:89;;2508:145:64;;3094:82;;3480:21;2610:19103:89;858:4141:64;:::o;1833:177::-;1867:98;;1901:6:88;1867:98:64;;;1982:13;:::o;858:4141::-;2610:19103:89;;;;-1:-1:-1;;2610:19103:89;;1464:147:64;;;;;;;;;;;;1736:19;;2036:3:88;1736:19:64;2610:19103:89;;;1837:10:64;1833:177;;2610:19103:89;2341:95:64;2036:3:88;2341:95:64;;2508:145;;;;;;2610:19103:89;;2508:145:64;;3094:82;;3480:21;2610:19103:89;858:4141:64;:::o;1833:177::-;1867:98;;2036:3:88;1867:98:64;;;1982:13;:::o;2036:3:88:-;2610:19103:89;;;2036:3:88;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;2610:19103:89;;-1:-1:-1;;2036:3:88;;;;;;;:::o;:::-;2610:19103:89;;;2036:3:88;;;;;-1:-1:-1;;2036:3:88;;;;;:::o;:::-;;2610:19103:89;;;;;2036:3:88;;;;;;;;;;;;:::o;6696:1292::-;;;;6998:23;7178:75;6696:1292;;6909:53;1795:4;6917:25;;6909:53;:::i;:::-;6998:23;:::i;:::-;7035:12;;;7031:120;;6696:1292;-1:-1:-1;;;;;2610:19103:89;7178:75:88;:::i;:::-;-1:-1:-1;;;;;7267:26:88;;7263:58;;6696:1292;7412:73;;7469:15;;7348:44;;-1:-1:-1;;;;;2610:19103:89;7348:44:88;:::i;:::-;7469:15;;2036:3;;;;2610:19103:89;;;;2036:3:88;7412:73;;;:::i;:::-;7512:39;2036:3;;;2610:19103:89;;;;2036:3:88;7512:39;:::i;:::-;7577:8;;;;:::i;:::-;2610:19103:89;;;;;;7600:17:88;;7596:136;7600:17;;;7633;;;;7758:61;7633:17;7596:136;;7770:48;;;;2036:3;2610:19103:89;;2036:3:88;7770:48;7758:61;:::i;:::-;7829:153;;;;2610:19103:89;;;;;;7864:17:88;7860:40;;7829:153;6696:1292::o;7860:40::-;7883:17;-1:-1:-1;18149:431:89:o;7829:153:88:-;2610:19103:89;;;;;;7935:17:88;7931:40;;7829:153;6696:1292::o;7770:48::-;2036:3;7802:16;;2610:19103:89;;7802:16:88;:::i;7596:136::-;2610:19103:89;;;;;;;;-1:-1:-1;7667:65:88;;7596:136;;;7758:61;7596:136;;;7667:65;;-1:-1:-1;7758:61:88;7667:65;;7263:58;-1:-1:-1;;;;;;7263:58:88;;7031:120;7081:41;7080:60;7081:41;2610:19103:89;7080:60:88;:::i;:::-;7031:120;;;4633:271:35;-1:-1:-1;;;;;2610:19103:89;;4732:24:35;;4779:13;;4772:20;:::o;4728:170::-;2610:19103:89;;-1:-1:-1;;;4830:57:35;;-1:-1:-1;;;;;2610:19103:89;;;4830:57:35;;;2610:19103:89;;;;;;4830:57:35;;2610:19103:89;;;4830:57:35;;;;;;;2610:19103:89;4830:57:35;;;4823:64;;:::o;4830:57::-;;;;2610:19103:89;4830:57:35;2610:19103:89;4830:57:35;;;;;;;:::i;1472:2873::-;;;;-1:-1:-1;;;;;2610:19103:89;;1769:24:35;;1809:163;-1:-1:-1;1809:163:35;;;2085:8;1809:163;;;;2085:8;;2610:19103:89;2085:8:35;2081:127;;1765:2574;1472:2873::o;2081:127::-;2163:29;:::i;1765:2574::-;2238:1774;;;-1:-1:-1;;;2238:1774:35;;-1:-1:-1;;;;;2238:1774:35;;;;;;;;;;;;;;;;-1:-1:-1;;2238:1774:35;-1:-1:-1;2238:1774:35;;-1:-1:-1;2238:1774:35;;;;;;;;;;;;;;;;;;;;;;;;;;4124:8;4120:209;;1765:2574;1472:2873::o;4120:209::-;-1:-1:-1;;;;;2610:19103:89;4268:28:35;:::i;1925:240:73:-;;3518:62:72;3473:2;2610:19103:89;;3526:28:72;;3518:62;:::i;:::-;3620:119;;;;;;2610:19103:89;;;;3944:27:72;2610:19103:89;;;4032:81:72;;;;2610:19103:89;;3518:62:72;2610:19103:89;;3620:119:72;2610:19103:89;;3526:28:72;;3518:62;:::i;:::-;3620:119;;;;;1925:240:73;:::o;2610:19103:89:-;;;-1:-1:-1;;;2610:19103:89;;3620:119:72;2610:19103:89;;;;3473:2:72;2610:19103:89;;;;-1:-1:-1;;;2610:19103:89;;;;;;;8270:307:88;;8359:17;8410:1;2610:19103:89;;;;;;;8410:1:88;2610:19103:89;8427:95:88;8434:10;;;;;;8539:11;;8531:39;8539:11;;;8531:39;:::i;8427:95::-;8460:10;;-1:-1:-1;8460:10:88;2036:3;;;;;;;2610:19103:89;;;;;;;;8410:1:88;2610:19103:89;8427:95:88;;;7772:4824:68;2391:66;-1:-1:-1;;1979:10:68;;-1:-1:-1;;;;;2610:19103:89;8327:79:68;8323:168;;2610:19103:89;;;;;;8521:27:68;;2610:19103:89;;2391:66:68;;8521:27;;8594:43;8608:29;;;:::i;:::-;2610:19103:89;;2391:66:68;;8594:43;8656:10;8663:3;8656:10;;8663:3;;-1:-1:-1;;;2610:19103:89;;;;8652:83:68;-1:-1:-1;;2391:66:68;2610:19103:89;;8805:196:68;;;;;;;2610:19103:89;8805:196:68;;9014;;;8805;9014;;2610:19103:89;9014:196:68;;9223;;;8805;9223;;2610:19103:89;9223:196:68;;9432;;;8805;9432;;2610:19103:89;9432:196:68;;9641;;;8805;9641;;2610:19103:89;9641:196:68;;9850;;;8805;9850;;2610:19103:89;9850:196:68;;10059;;;;8805;10059;;2610:19103:89;10059:196:68;;10268;;;;8805;10268;;2610:19103:89;10268:196:68;;10477;;;;8805;10477;;2610:19103:89;10477:196:68;;10686;;;;8805;10686;;2610:19103:89;10686:196:68;;10895;;;;8805;10895;;2610:19103:89;10895:196:68;;11104;;;;8805;11104;;2610:19103:89;11104:196:68;;11313;;;;;8805;11313;;2610:19103:89;11313:196:68;;11522:165;;;;;;11313:196;;;;;11104;;;;;10895;;;;;10686;;;;;10477;;;;;10268;2610:19103:89;10268:196:68;;;;;;10059;2610:19103:89;10059:196:68;;;;;;9850;2610:19103:89;9850:196:68;;;;;;9641;2610:19103:89;9641:196:68;;;;;;9432;2610:19103:89;9432:196:68;;;;;;9223;2610:19103:89;9223:196:68;;;;;;9014;2610:19103:89;9014:196:68;;;;;;8805;2610:19103:89;8805:196:68;;;;;;;9014;9223;9432;9641;9850;10059;10268;10477;10686;10895;11104;11313;11522:165;11732:24;2391:66;;;;;11932:62;;2610:19103:89;2391:66:68;;;11932:62;2610:19103:89;;2391:66:68;12346:39;2391:66;2610:19103:89;2391:66:68;2610:19103:89;;12416:163:68;2610:19103:89;;;;;;12416:17:68;:163;:17;;;:163;;;7772:4824;:::o;12416:163::-;-1:-1:-1;;;;;12478:26:68;;;:::i;:::-;2610:19103:89;12478:42:68;:101;;;7772:4824;:::o;12478:101::-;;;2610:19103:89;:::o;8652:83:68:-;2610:19103:89;;;8725:3:68;2610:19103:89;;8652:83:68;;;8323:168;8463:12;:::i;2610:19103:89:-;;;;;;;;;-1:-1:-1;;2610:19103:89;;;;;;;;:::o;:::-;;;;;;;;;;;-1:-1:-1;;2610:19103:89;;-1:-1:-1;;2610:19103:89;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;:::o;7790:949:56:-;;;;7908:825;;;2610:19103:89;;;;7978:8:56;7974:349;2610:19103:89;;;8117:38:56;8118:18;:22;:18;;8116:54;8118:18;;:::i;:::-;:22;:::i;:::-;8117:38;:::i;:::-;8116:54;:::i;7974:349::-;8275:18;;8274:34;8275:18;;:::i;7908:825::-;2610:19103:89;;;;;8393:8:56;8389:334;2610:19103:89;;;8519:18:56;;;8518:34;8519:18;;:::i;8389:334::-;8656:18;;;;:::i;:::-;2610:19103:89;;-1:-1:-1;;2610:19103:89;;-1:-1:-1;;2610:19103:89;;;;;;;;8655:38:56;;8654:54;8655:38;;:::i;2533:168:68:-;2610:19103:89;;;1434:6:68;;;;;;;2610:19103:89;;2533:168:68;:::o;3508:1663:21:-;3741:1424;;-1:-1:-1;;;3741:1424:21;;-1:-1:-1;;;;;3741:1424:21;;;;;;;-1:-1:-1;;;3741:1424:21;;;;;;;;;2610:19103:89;3741:1424:21;2610:19103:89;3741:1424:21;-1:-1:-1;;3741:1424:21;;;;;;;;;;;;;;-1:-1:-1;3741:1424:21;;;;;;;;;;;;;4268:28:35;;;3741:1424:21;;;;;;;3508:1663;3741:1424;;-1:-1:-1;;;3741:1424:21;;-1:-1:-1;;;;;3741:1424:21;;;;;;;-1:-1:-1;3741:1424:21;;;;;;;;;;;2610:19103:89;3741:1424:21;2610:19103:89;3741:1424:21;-1:-1:-1;;3741:1424:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2163:29:35;;;3741:1424:21;;;;;;;2610:19103:89;;;;:::o;:::-;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;2610:19103:89;;;;;;;;;;;;-1:-1:-1;;;2610:19103:89;;;;;;;8370:720:5;;-1:-1:-1;8507:421:5;8370:720;8507:421;;;;;;;;;;;;-1:-1:-1;8507:421:5;;8942:15;;-1:-1:-1;;;;;;2610:19103:89;;8960:26:5;:31;8942:68;8938:146;;8370:720;:::o;8938:146::-;-1:-1:-1;;;;9033:40:5;;;-1:-1:-1;;;;;2610:19103:89;;;;9033:40:5;2610:19103:89;;;9033:40:5;8942:68;9009:1;8994:16;;8942:68;;1793:259:62;-1:-1:-1;;;1869:177:62;;;;-1:-1:-1;;;;;1869:177:62;;;;;;;;;769:648:61;858:5;;2610:19103:89;;875:536:61;;;-1:-1:-1;;;;;875:536:61;-1:-1:-1;875:536:61;;;;;-1:-1:-1;;;;;875:536:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;769:648::o;3258:4054:68:-;3406:459;;;;;;;;;;1434:6;3883:35;;3879:78;;6533:763;4465:13;;4492:160;;;;;2610:19103:89;4492:160:68;;;4669:13;3406:459;4669:13;;4665:83;;3258:4054;4776:3;4766:13;;4762:83;;3258:4054;4873:3;4863:13;;4859:83;;3258:4054;4970:4;4960:14;;4956:84;;3258:4054;5068:4;5058:14;;5054:84;;3258:4054;5166:4;5156:14;;5152:84;;3258:4054;4492:160;5254:14;;5250:84;;3258:4054;5362:5;5352:15;;5348:85;;3258:4054;5461:5;5451:15;;5447:85;;3258:4054;5560:5;5550:15;;5546:85;;3258:4054;5659:5;5649:15;;5645:85;;3258:4054;5758:6;5748:16;;5744:86;;3258:4054;5858:6;5848:16;;5844:86;;3258:4054;5958:6;5948:16;;5944:86;;3258:4054;6058:6;6048:16;;6044:86;;3258:4054;6158:7;6148:17;;6144:86;;3258:4054;6258:7;6248:17;;6244:85;;3258:4054;6357:7;6347:17;;6343:83;;3258:4054;6454:7;6444:17;6440:78;;3258:4054;-1:-1:-1;;6533:763:68;;3258:4054;6533:763;5068:4;6533:763;3258:4054;:::o;6533:763::-;-1:-1:-1;;6533:763:68;;;6440:78;6485:25;2610:19103:89;;;;;;6440:78:68;;6343:83;6388:30;2610:19103:89;;;;;;6343:83:68;;6244:85;2610:19103:89;6289:32:68;2610:19103:89;;;6244:85:68;;;6144:86;2610:19103:89;6189:33:68;2610:19103:89;;;6144:86:68;;;6044;2610:19103:89;6088:34:68;2610:19103:89;;;6044:86:68;;;5944;2610:19103:89;5988:34:68;2610:19103:89;;;5944:86:68;;;5844;2610:19103:89;5888:34:68;2610:19103:89;;;5844:86:68;;;5744;2610:19103:89;5788:34:68;2610:19103:89;;;5744:86:68;;;5645:85;2610:19103:89;5688:34:68;2610:19103:89;;;5645:85:68;;;5546;2610:19103:89;5589:34:68;2610:19103:89;;;5546:85:68;;;5447;2610:19103:89;5490:34:68;2610:19103:89;;;5447:85:68;;;5348;2610:19103:89;5391:34:68;2610:19103:89;;;5348:85:68;;;5250:84;2610:19103:89;5292:34:68;2610:19103:89;;;5250:84:68;;;5152;2610:19103:89;5194:34:68;2610:19103:89;;;5152:84:68;;;5054;2610:19103:89;5096:34:68;2610:19103:89;;;5054:84:68;;;4956;2610:19103:89;4998:34:68;2610:19103:89;;;4956:84:68;;;4859:83;2610:19103:89;4900:34:68;2610:19103:89;;;4859:83:68;;;4762;2610:19103:89;4803:34:68;2610:19103:89;;;4762:83:68;;;4665;2610:19103:89;4706:34:68;2610:19103:89;;;4665:83:68;;;3879:78;3952:4;3920:20;;;1552:143:62;;;;;;;;","linkReferences":{},"immutableReferences":{"16032":[{"start":1405,"length":32}],"16734":[{"start":1498,"length":32},{"start":2315,"length":32},{"start":3609,"length":32},{"start":5299,"length":32},{"start":5824,"length":32},{"start":6438,"length":32},{"start":7054,"length":32},{"start":7261,"length":32},{"start":7465,"length":32}],"16738":[{"start":223,"length":32},{"start":865,"length":32},{"start":6608,"length":32},{"start":6845,"length":32},{"start":8763,"length":32}],"16742":[{"start":1098,"length":32},{"start":1622,"length":32}]}},"methodIdentifiers":{"getLimitOrderConfig()":"e3e8580c","msgSender()":"d737d0c7","poolManager()":"dc4c90d3","setLimitOrderConfig((uint256[],uint256[]))":"18ed2974","swapRouter()":"c31c9c07","swapWithLimitOrders((address,(uint256[],uint256[]),address,uint256,bytes,(address,address,uint24,int24,address)[],uint256))":"c48677f4","unlockCallback(bytes)":"91dd7346","zoraLimitOrderBook()":"6baaa167"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"poolManager_\",\"type\":\"address\"},{\"internalType\":\"contract IZoraLimitOrderBook\",\"name\":\"zoraLimitOrderBook_\",\"type\":\"address\"},{\"internalType\":\"contract ISwapRouter\",\"name\":\"swapRouter_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permit2_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"EmptyV4Route\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FromAddressIsNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableAmount\",\"type\":\"uint256\"}],\"name\":\"InsufficientInputCurrency\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientOutputAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientTransferFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLimitOrderConfig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMultiple\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPercent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyAuthority\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPoolManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PercentOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsafeCast\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"V3RouteDoesNotConnectToV4RouteStart\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroSwapDelta\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"multiples\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"percentages\",\"type\":\"uint256[]\"}],\"name\":\"LimitOrderConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PoolKey\",\"name\":\"poolKey\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickBeforeSwap\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickAfterSwap\",\"type\":\"int24\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"orderId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"multiple\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SwapWithLimitOrders.CreatedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"SwapWithLimitOrdersExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLimitOrderConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"multiples\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"percentages\",\"type\":\"uint256[]\"}],\"internalType\":\"struct LimitOrderConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolManager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"multiples\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"percentages\",\"type\":\"uint256[]\"}],\"internalType\":\"struct LimitOrderConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"setLimitOrderConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapRouter\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256[]\",\"name\":\"multiples\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"percentages\",\"type\":\"uint256[]\"}],\"internalType\":\"struct LimitOrderConfig\",\"name\":\"limitOrderConfig\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"inputCurrency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"v3Route\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey[]\",\"name\":\"v4Route\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"internalType\":\"struct SwapWithLimitOrders.SwapWithLimitOrdersParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"swapWithLimitOrders\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlockCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zoraLimitOrderBook\",\"outputs\":[{\"internalType\":\"contract IZoraLimitOrderBook\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"oveddan\",\"details\":\"This contract uses the poolManager unlock/callback pattern to execute swaps, place limit orders based on the tick range crossed during the swap, and attempt to fill those orders in a single transaction. Users call swapWithLimitOrders() directly, which triggers the unlock callback flow. Uses Permit2 for token approvals, matching the universal-router pattern.\",\"errors\":{\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"events\":{\"SwapWithLimitOrdersExecuted(address,address,(address,address,uint24,int24,address),int256,int24,int24,(bytes32,uint256,uint256)[])\":{\"params\":{\"orders\":\"Array of created orders with their configuration. Only includes orders that were actually created (skipped rungs due to rounding are omitted).\"}}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"permit2_\":\"The Permit2 contract address (0x000000000022D473030F116dDEE9F6B43aC78BA3)\",\"poolManager_\":\"The Uniswap V4 pool manager\",\"swapRouter_\":\"The Uniswap V3 swap router\",\"zoraLimitOrderBook_\":\"The limit order book contract\"}},\"getLimitOrderConfig()\":{\"returns\":{\"_0\":\"The current limit order configuration\"}},\"msgSender()\":{\"returns\":{\"_0\":\"The address of the message sender.\"}},\"setLimitOrderConfig((uint256[],uint256[]))\":{\"details\":\"Only callable by zoraLimitOrderBook.authority()\",\"params\":{\"config\":\"The new limit order configuration\"}},\"swapWithLimitOrders((address,(uint256[],uint256[]),address,uint256,bytes,(address,address,uint24,int24,address)[],uint256))\":{\"params\":{\"params\":\"The swap and limit order parameters\"},\"returns\":{\"delta\":\"The balance delta from the swap\"}},\"unlockCallback(bytes)\":{\"details\":\"This function executes V4 swaps and settles coins to recipient\",\"params\":{\"data\":\"Encoded CallbackData\"},\"returns\":{\"_0\":\"Encoded UnlockResult containing coin amount and pool info\"}}},\"title\":\"SwapWithLimitOrders\",\"version\":1},\"userdoc\":{\"errors\":{\"EmptyV4Route()\":[{\"notice\":\"Error thrown when v4Route is empty\"}],\"InsufficientOutputAmount()\":[{\"notice\":\"Error thrown when final swap output is below minimum\"}],\"InsufficientTransferFunds()\":[{\"notice\":\"Transfer in of funds failed or was insufficient.\"}],\"InvalidLimitOrderConfig()\":[{\"notice\":\"Error thrown when config does not match canonical config\"}],\"InvalidMultiple()\":[{\"notice\":\"A multiple is \\u2264 1.0x\"}],\"InvalidPercent()\":[{\"notice\":\"A percentage is zero\"}],\"LengthMismatch()\":[{\"notice\":\"Multiples and percentages arrays have different lengths\"}],\"OnlyAuthority()\":[{\"notice\":\"Error thrown when caller is not the authority\"}],\"OnlyPoolManager()\":[{\"notice\":\"Error thrown when caller is not the pool manager\"}],\"PercentOverflow()\":[{\"notice\":\"Percentages sum exceeds 100%\"}],\"UnsafeCast()\":[{\"notice\":\"Thrown when a valude greater than type(uint160).max is cast to uint160\"}],\"ZeroSwapDelta()\":[{\"notice\":\"Error thrown when swap delta is zero\"}]},\"events\":{\"LimitOrderConfigUpdated(uint256[],uint256[])\":{\"notice\":\"Emitted when limit order config is updated\"},\"SwapWithLimitOrdersExecuted(address,address,(address,address,uint24,int24,address),int256,int24,int24,(bytes32,uint256,uint256)[])\":{\"notice\":\"Emitted when a swap with limit order placement is executed\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructor\"},\"getLimitOrderConfig()\":{\"notice\":\"Returns the current limit order configuration\"},\"msgSender()\":{\"notice\":\"Returns the address of the message sender.\"},\"poolManager()\":{\"notice\":\"The Uniswap V4 pool manager\"},\"setLimitOrderConfig((uint256[],uint256[]))\":{\"notice\":\"Sets the canonical limit order configuration\"},\"swapRouter()\":{\"notice\":\"The Uniswap V3 swap router\"},\"swapWithLimitOrders((address,(uint256[],uint256[]),address,uint256,bytes,(address,address,uint24,int24,address)[],uint256))\":{\"notice\":\"Executes a swap with automatic limit order placement and filling\"},\"unlockCallback(bytes)\":{\"notice\":\"Callback function called by the pool manager during unlock\"},\"zoraLimitOrderBook()\":{\"notice\":\"The limit order book contract\"}},\"notice\":\"Standalone router contract that executes swaps with automatic limit order placement and filling.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/router/SwapWithLimitOrders.sol\":\"SwapWithLimitOrders\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/access/manager/IAuthority.sol\":{\"keccak256\":\"0x9c9a58dd831b9bb4a0ea47d96b53c13ab9a6e4270a518ea395b1424092fd74dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d806b0c87fbcaf0cb827b51203b27f8289b13743aeadb5867fbbe041fcf87a92\",\"dweb:/ipfs/QmfTEGiDGxKDaqBuBJ5wWJockGDrsEBZnW5S7UWrKhAxGc\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100\",\"dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037\",\"dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d\",\"dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508\",\"dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB\"]},\"node_modules/@openzeppelin/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"node_modules/@uniswap/permit2/src/libraries/SafeCast160.sol\":{\"keccak256\":\"0x8a34e2beac108d74f89510c949983212b5f09307a93ee9e17a9d50e93f6bc8e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://828697f9567ce617c5c1c8f76b6bcd250e93aea2c4f3ee188be6dff8443c19e7\",\"dweb:/ipfs/QmafxeSPhUc9gGtNDLAw26oZooC5XNLhDMxHxYhJxL5Nwi\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"node_modules/@uniswap/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"node_modules/@uniswap/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"]},\"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"node_modules/@uniswap/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"node_modules/@uniswap/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"node_modules/@uniswap/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"node_modules/@zoralabs/coins/src/interfaces/IDopplerErrors.sol\":{\"keccak256\":\"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e\",\"dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs\"]},\"node_modules/@zoralabs/coins/src/interfaces/IMsgSender.sol\":{\"keccak256\":\"0xd3928a356b5055c1699b3e51850e3f5febeca9b2e5fe8b13bd94444eec650f2c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://691bea8613e6549099039b28a1426fce547188fca70a1fe530f1722b244c3fd4\",\"dweb:/ipfs/QmTZi3jQatxmGACRcGMnLoyaHu86rPU3xHxgS7k73a4vWm\"]},\"node_modules/@zoralabs/coins/src/interfaces/ISupportsLimitOrderFill.sol\":{\"keccak256\":\"0xf02724436809e4a1acbecc11ab3e2cd4a0996dd6a9e881d724d54cd702c737fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d4080b8a6626ecdb2d2e1b5bf0e117509649188d08ea7a0497d89f56f414ace\",\"dweb:/ipfs/QmR4iB65jqWfnqCHdVFDy3NExQZ2kfa3gGBk7Ew2CfjoEG\"]},\"node_modules/@zoralabs/coins/src/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0xaf30c3539218aaf53155bc673c47b9cb425d8b4f9018628d506cd90b1a80dfd1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://930eab99801c6858ae3024eec13c8e6aceecca22cb25277a82bd99e0478eee85\",\"dweb:/ipfs/Qmdiac9xNoydkqX7GQdkW2NnGHeJZS7XnDXPHSyiTxLkQi\"]},\"node_modules/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol\":{\"keccak256\":\"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a\",\"dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy\"]},\"node_modules/@zoralabs/coins/src/libs/CoinConstants.sol\":{\"keccak256\":\"0x0c17b040ed707c2353e4b238bf6bac90d22a71980ff1a091f763da281b7035bf\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://083bb0022dd69434858946ea15b55d08483913baf57b428d600ede1eb5a19f46\",\"dweb:/ipfs/QmXdNPvCm2Wv4R8Kbd7FYdnjjQCLWVGsr1DhCn5MrQj3Z7\"]},\"node_modules/@zoralabs/coins/src/libs/DopplerMath.sol\":{\"keccak256\":\"0xafa02392a303dd86c7728266484b038b933bba74cad3a0fb44848a2463626683\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://b307a817e4a60a99b1d4ccdbae1fe65b9ce7e6753bb2bb019c8588712cfbe96b\",\"dweb:/ipfs/QmeCjTfTGADS9aU9x2zMyauak3vqSCmiWSEoSBhBVLWaAx\"]},\"node_modules/@zoralabs/coins/src/libs/V3ToV4SwapLib.sol\":{\"keccak256\":\"0x0fc4e7de08b200a78f3cc68cebf99b3f75e7c87190ece89434b563ac5291894f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8df5d26b3ae49e596baa5e89513435b919cd874b86cf9dc9575ecd6be59bd98d\",\"dweb:/ipfs/QmW11qSa1aSpqcKH9Dha4QzxYgAvd36acmtY5GCBg1fAcN\"]},\"node_modules/@zoralabs/coins/src/types/LpPosition.sol\":{\"keccak256\":\"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6\",\"dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol\":{\"keccak256\":\"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070\",\"dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol\":{\"keccak256\":\"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a\",\"dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/FixedPoint96.sol\":{\"keccak256\":\"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348\",\"dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol\":{\"keccak256\":\"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509\",\"dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/LiquidityAmounts.sol\":{\"keccak256\":\"0x4811d0187e6ccf97d6323c597355967e481392cbdc65dea804f770dec91cece7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8d41f633f2a92b4caeb0430096851b62b0be1f68915603ff8c5b220c693e9755\",\"dweb:/ipfs/QmY9c5EwQVKi2Ak7xude2iUe7TGAdwmChUtwzwWcGb62PE\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol\":{\"keccak256\":\"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298\",\"dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol\":{\"keccak256\":\"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74\",\"dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol\":{\"keccak256\":\"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7\",\"dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3\"]},\"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol\":{\"keccak256\":\"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c\",\"dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt\"]},\"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol\":{\"keccak256\":\"0xccaccab57b0d5a23ba1092ef049ece0352d276fbbf20baf22f5aa5ade46ffe64\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://51a3e5c723fa25de65bc0a01778fa25eae3f6309afe239bdd2baeab5e995c485\",\"dweb:/ipfs/QmXYticnovthF2AzTkwSQdUbeXhiu7TuSQTJLrUpTLDd57\"]},\"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9\",\"dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM\"]},\"node_modules/@zoralabs/shared-contracts/src/libs/UniswapV3/BytesLib.sol\":{\"keccak256\":\"0x1835886738a49409fa8eff78c12bd09ced0545e0a52d5b26d66fadf2c80c8326\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://9c50f3408c2f2c38c841962bf2437a8fc23249b733c5c53650819a4328151c14\",\"dweb:/ipfs/QmNRKcsT6Mb9G8kEcNwiPAw5TouMdgTSNhSgQCy4f1pxdP\"]},\"node_modules/@zoralabs/shared-contracts/src/libs/UniswapV3/Path.sol\":{\"keccak256\":\"0x5d8c2b62745b5270877adc9b6037c9db98433735dff4b722e79a3d4506c29dff\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://15d03ccf38d2f706a506d20c239045d26902fae92fd82869dd06b897f997f0b4\",\"dweb:/ipfs/QmWSYmEyZCr619LfLQYY4fHMeEU178YzWsuqbZi9tYCxx4\"]},\"src/IZoraLimitOrderBook.sol\":{\"keccak256\":\"0x2b2ef15b8e9b1fdfd403fb771542fd90b00b1f9afa1359c1c707c67bdd1dde10\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://a982830679c4f9a09ae38fcb261e70d0be58795f5e911187538312402042b470\",\"dweb:/ipfs/QmVMnET7gFkPEXbWZGB3WeaCw5jFbxiUFzbFsSLbNNSAaa\"]},\"src/access/SimpleAccessManaged.sol\":{\"keccak256\":\"0xd92f23941a7a5709efdb66928036b6812d6742eca3b4d7d1ff42197a7b8916c8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ea18ad22ef178f454a65f55fcb29cdbd45396e1da3bab178357c54162be0269\",\"dweb:/ipfs/QmZVGjcJ1v6bFaG3VTkGZHz3Fb32xZ4KBDmAxdJHxdQzBM\"]},\"src/libs/Permit2Payments.sol\":{\"keccak256\":\"0x7537454ca103a2ef94bf9cd861c465ecd6192134f8f7cc983dfc6a0310c1f39f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59aaa4f0222cf6a3b0ba24d038cfee3150e483a28fa0c62fb40f44a6ab37d97f\",\"dweb:/ipfs/QmezJ1DcomHmTjiE3qmfL1VvcU74NVR8GSC7ST4ua3euwa\"]},\"src/libs/SwapLimitOrders.sol\":{\"keccak256\":\"0x8cae687f28f2afa4b9ca021c0d8f8e3209534986e2c98036ddfe4bdc5d9b3d1b\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://873f7e137bbbcc9a56bf362525eaf122ca6912d4e20c44bebabf12f565f78b5a\",\"dweb:/ipfs/QmUfYtnhmc8vFNZaWhjYriMXR1bGg6JzdAbXpS6wMASxHM\"]},\"src/router/SwapWithLimitOrders.sol\":{\"keccak256\":\"0x3099dce672e92fba16d89a0fdbc102a18f065526fd80b440984e8f773723515a\",\"license\":\"ZORA-DELAYED-OSL-v1\",\"urls\":[\"bzz-raw://85ed25ad0efec286508a79193b921ff3240fdb5eaf16086b156db98041364b9a\",\"dweb:/ipfs/QmQv1W6Caqwg4HwdR3r3oXD2FYUd1jnG3Rznu1xP4K7D3r\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPoolManager","name":"poolManager_","type":"address"},{"internalType":"contract IZoraLimitOrderBook","name":"zoraLimitOrderBook_","type":"address"},{"internalType":"contract ISwapRouter","name":"swapRouter_","type":"address"},{"internalType":"address","name":"permit2_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"EmptyV4Route"},{"inputs":[],"type":"error","name":"FromAddressIsNotOwner"},{"inputs":[{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"uint256","name":"availableAmount","type":"uint256"}],"type":"error","name":"InsufficientInputCurrency"},{"inputs":[],"type":"error","name":"InsufficientOutputAmount"},{"inputs":[],"type":"error","name":"InsufficientTransferFunds"},{"inputs":[],"type":"error","name":"InvalidLimitOrderConfig"},{"inputs":[],"type":"error","name":"InvalidMultiple"},{"inputs":[],"type":"error","name":"InvalidPercent"},{"inputs":[],"type":"error","name":"LengthMismatch"},{"inputs":[],"type":"error","name":"OnlyAuthority"},{"inputs":[],"type":"error","name":"OnlyPoolManager"},{"inputs":[],"type":"error","name":"PercentOverflow"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"type":"error","name":"SafeERC20FailedOperation"},{"inputs":[],"type":"error","name":"UnsafeCast"},{"inputs":[],"type":"error","name":"V3RouteDoesNotConnectToV4RouteStart"},{"inputs":[],"type":"error","name":"ZeroSwapDelta"},{"inputs":[{"internalType":"uint256[]","name":"multiples","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"percentages","type":"uint256[]","indexed":false}],"type":"event","name":"LimitOrderConfigUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"struct PoolKey","name":"poolKey","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"indexed":false},{"internalType":"BalanceDelta","name":"delta","type":"int256","indexed":false},{"internalType":"int24","name":"tickBeforeSwap","type":"int24","indexed":false},{"internalType":"int24","name":"tickAfterSwap","type":"int24","indexed":false},{"internalType":"struct SwapWithLimitOrders.CreatedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"bytes32","name":"orderId","type":"bytes32"},{"internalType":"uint256","name":"multiple","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"}],"indexed":false}],"type":"event","name":"SwapWithLimitOrdersExecuted","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"getLimitOrderConfig","outputs":[{"internalType":"struct LimitOrderConfig","name":"","type":"tuple","components":[{"internalType":"uint256[]","name":"multiples","type":"uint256[]"},{"internalType":"uint256[]","name":"percentages","type":"uint256[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"msgSender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}]},{"inputs":[{"internalType":"struct LimitOrderConfig","name":"config","type":"tuple","components":[{"internalType":"uint256[]","name":"multiples","type":"uint256[]"},{"internalType":"uint256[]","name":"percentages","type":"uint256[]"}]}],"stateMutability":"nonpayable","type":"function","name":"setLimitOrderConfig"},{"inputs":[],"stateMutability":"view","type":"function","name":"swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}]},{"inputs":[{"internalType":"struct SwapWithLimitOrders.SwapWithLimitOrdersParams","name":"params","type":"tuple","components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"struct LimitOrderConfig","name":"limitOrderConfig","type":"tuple","components":[{"internalType":"uint256[]","name":"multiples","type":"uint256[]"},{"internalType":"uint256[]","name":"percentages","type":"uint256[]"}]},{"internalType":"address","name":"inputCurrency","type":"address"},{"internalType":"uint256","name":"inputAmount","type":"uint256"},{"internalType":"bytes","name":"v3Route","type":"bytes"},{"internalType":"struct PoolKey[]","name":"v4Route","type":"tuple[]","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint256","name":"minAmountOut","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"swapWithLimitOrders","outputs":[{"internalType":"BalanceDelta","name":"delta","type":"int256"}]},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlockCallback","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"zoraLimitOrderBook","outputs":[{"internalType":"contract IZoraLimitOrderBook","name":"","type":"address"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"permit2_":"The Permit2 contract address (0x000000000022D473030F116dDEE9F6B43aC78BA3)","poolManager_":"The Uniswap V4 pool manager","swapRouter_":"The Uniswap V3 swap router","zoraLimitOrderBook_":"The limit order book contract"}},"getLimitOrderConfig()":{"returns":{"_0":"The current limit order configuration"}},"msgSender()":{"returns":{"_0":"The address of the message sender."}},"setLimitOrderConfig((uint256[],uint256[]))":{"details":"Only callable by zoraLimitOrderBook.authority()","params":{"config":"The new limit order configuration"}},"swapWithLimitOrders((address,(uint256[],uint256[]),address,uint256,bytes,(address,address,uint24,int24,address)[],uint256))":{"params":{"params":"The swap and limit order parameters"},"returns":{"delta":"The balance delta from the swap"}},"unlockCallback(bytes)":{"details":"This function executes V4 swaps and settles coins to recipient","params":{"data":"Encoded CallbackData"},"returns":{"_0":"Encoded UnlockResult containing coin amount and pool info"}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Constructor"},"getLimitOrderConfig()":{"notice":"Returns the current limit order configuration"},"msgSender()":{"notice":"Returns the address of the message sender."},"poolManager()":{"notice":"The Uniswap V4 pool manager"},"setLimitOrderConfig((uint256[],uint256[]))":{"notice":"Sets the canonical limit order configuration"},"swapRouter()":{"notice":"The Uniswap V3 swap router"},"swapWithLimitOrders((address,(uint256[],uint256[]),address,uint256,bytes,(address,address,uint24,int24,address)[],uint256))":{"notice":"Executes a swap with automatic limit order placement and filling"},"unlockCallback(bytes)":{"notice":"Callback function called by the pool manager during unlock"},"zoraLimitOrderBook()":{"notice":"The limit order book contract"}},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/router/SwapWithLimitOrders.sol":"SwapWithLimitOrders"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts/access/manager/IAuthority.sol":{"keccak256":"0x9c9a58dd831b9bb4a0ea47d96b53c13ab9a6e4270a518ea395b1424092fd74dc","urls":["bzz-raw://d806b0c87fbcaf0cb827b51203b27f8289b13743aeadb5867fbbe041fcf87a92","dweb:/ipfs/QmfTEGiDGxKDaqBuBJ5wWJockGDrsEBZnW5S7UWrKhAxGc"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol":{"keccak256":"0xd5ea07362ab630a6a3dee4285a74cf2377044ca2e4be472755ad64d7c5d4b69d","urls":["bzz-raw://da5e832b40fc5c3145d3781e2e5fa60ac2052c9d08af7e300dc8ab80c4343100","dweb:/ipfs/QmTzf7N5ZUdh5raqtzbM11yexiUoLC9z3Ws632MCuycq1d"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol":{"keccak256":"0x0afcb7e740d1537b252cb2676f600465ce6938398569f09ba1b9ca240dde2dfc","urls":["bzz-raw://1c299900ac4ec268d4570ecef0d697a3013cd11a6eb74e295ee3fbc945056037","dweb:/ipfs/Qmab9owJoxcA7vJT5XNayCMaUR1qxqj1NDzzisduwaJMcZ"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol":{"keccak256":"0x1a6221315ce0307746c2c4827c125d821ee796c74a676787762f4778671d4f44","urls":["bzz-raw://1bb2332a7ee26dd0b0de9b7fe266749f54820c99ab6a3bcb6f7e6b751d47ee2d","dweb:/ipfs/QmcRWpaBeCYkhy68PR3B4AgD7asuQk7PwkWxrvJbZcikLF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2","urls":["bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303","dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x982c5cb790ab941d1e04f807120a71709d4c313ba0bfc16006447ffbd27fbbd5","urls":["bzz-raw://8150ceb4ac947e8a442b2a9c017e01e880b2be2dd958f1fa9bc405f4c5a86508","dweb:/ipfs/QmbcBmFX66AY6Kbhnd5gx7zpkgqnUafo43XnmayAM7zVdB"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"},"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29","urls":["bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0","dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN"],"license":"MIT"},"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138","urls":["bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72","dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk"],"license":"MIT"},"node_modules/@uniswap/permit2/src/libraries/SafeCast160.sol":{"keccak256":"0x8a34e2beac108d74f89510c949983212b5f09307a93ee9e17a9d50e93f6bc8e9","urls":["bzz-raw://828697f9567ce617c5c1c8f76b6bcd250e93aea2c4f3ee188be6dff8443c19e7","dweb:/ipfs/QmafxeSPhUc9gGtNDLAw26oZooC5XNLhDMxHxYhJxL5Nwi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952","urls":["bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0","dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IDopplerErrors.sol":{"keccak256":"0xf78efeb8a0d37914bae9be8c6ed70d54a1d48305b3f9e3f8b95d20f9685640ea","urls":["bzz-raw://1e51cc18a8367dc9363a958f179cf2e8af662cbe41474647aa78424be781120e","dweb:/ipfs/QmNrxrY2P7FMRY7tJtV2n5eiPDyM5pRhBpn9wgDfgwdDCs"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/IMsgSender.sol":{"keccak256":"0xd3928a356b5055c1699b3e51850e3f5febeca9b2e5fe8b13bd94444eec650f2c","urls":["bzz-raw://691bea8613e6549099039b28a1426fce547188fca70a1fe530f1722b244c3fd4","dweb:/ipfs/QmTZi3jQatxmGACRcGMnLoyaHu86rPU3xHxgS7k73a4vWm"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/ISupportsLimitOrderFill.sol":{"keccak256":"0xf02724436809e4a1acbecc11ab3e2cd4a0996dd6a9e881d724d54cd702c737fa","urls":["bzz-raw://8d4080b8a6626ecdb2d2e1b5bf0e117509649188d08ea7a0497d89f56f414ace","dweb:/ipfs/QmR4iB65jqWfnqCHdVFDy3NExQZ2kfa3gGBk7Ew2CfjoEG"],"license":"MIT"},"node_modules/@zoralabs/coins/src/interfaces/ISwapRouter.sol":{"keccak256":"0xaf30c3539218aaf53155bc673c47b9cb425d8b4f9018628d506cd90b1a80dfd1","urls":["bzz-raw://930eab99801c6858ae3024eec13c8e6aceecca22cb25277a82bd99e0478eee85","dweb:/ipfs/Qmdiac9xNoydkqX7GQdkW2NnGHeJZS7XnDXPHSyiTxLkQi"],"license":"GPL-2.0-or-later"},"node_modules/@zoralabs/coins/src/interfaces/IZoraLimitOrderBookCoinsInterface.sol":{"keccak256":"0xcf41c76b6dcf12b79c26ba93040c0ec6b68614c00597203c9330f4b769dcd389","urls":["bzz-raw://f2c1b3b86b7f67c3de52e7886697fc02de9837ba724cbfde34031ecf832faf7a","dweb:/ipfs/QmXStRKqsn9KC5WXQvTz57Qxqcr1WrB2Lrs1b28bZmL4Sy"],"license":"ZORA-DELAYED-OSL-v1"},"node_modules/@zoralabs/coins/src/libs/CoinConstants.sol":{"keccak256":"0x0c17b040ed707c2353e4b238bf6bac90d22a71980ff1a091f763da281b7035bf","urls":["bzz-raw://083bb0022dd69434858946ea15b55d08483913baf57b428d600ede1eb5a19f46","dweb:/ipfs/QmXdNPvCm2Wv4R8Kbd7FYdnjjQCLWVGsr1DhCn5MrQj3Z7"],"license":"ZORA-DELAYED-OSL-v1"},"node_modules/@zoralabs/coins/src/libs/DopplerMath.sol":{"keccak256":"0xafa02392a303dd86c7728266484b038b933bba74cad3a0fb44848a2463626683","urls":["bzz-raw://b307a817e4a60a99b1d4ccdbae1fe65b9ce7e6753bb2bb019c8588712cfbe96b","dweb:/ipfs/QmeCjTfTGADS9aU9x2zMyauak3vqSCmiWSEoSBhBVLWaAx"],"license":"ZORA-DELAYED-OSL-v1"},"node_modules/@zoralabs/coins/src/libs/V3ToV4SwapLib.sol":{"keccak256":"0x0fc4e7de08b200a78f3cc68cebf99b3f75e7c87190ece89434b563ac5291894f","urls":["bzz-raw://8df5d26b3ae49e596baa5e89513435b919cd874b86cf9dc9575ecd6be59bd98d","dweb:/ipfs/QmW11qSa1aSpqcKH9Dha4QzxYgAvd36acmtY5GCBg1fAcN"],"license":"MIT"},"node_modules/@zoralabs/coins/src/types/LpPosition.sol":{"keccak256":"0x19dfc13b9f6a831ee7a624094c17a7c0b20bbc9ef62121dd98d85a8641d53aaf","urls":["bzz-raw://fe77a4cb9ff9afbf7561ed647d15729b201259ef767d6c140a0b6e9254a97fe6","dweb:/ipfs/QmaieKjUcT2SG2Spdg2sHzZso8zd5YTVsMRRoDzz6Kgn1t"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/BitMath.sol":{"keccak256":"0x4b5411b3868695776c707738846c79a2dd96bf2fd29e5fe8a47818cd20e1a19d","urls":["bzz-raw://3d9016ed3d9902f455ce8aba6cb4e29d7cb47e5af555de00bb802d7f01566070","dweb:/ipfs/QmeHZHQsXkuCN3i1YAt9WayYTTWWtNz5F8R1EspyEER2JN"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/CustomRevert.sol":{"keccak256":"0x5c17fced6eedcacc452d65842bb5904bd26b8a72a7973a2d6fac0167700328d4","urls":["bzz-raw://07044645057353591b0e9f03e0c6802d225307963b45f443c082bce0738c0c2a","dweb:/ipfs/QmWPo2kbp4jkm6CETwPjpqhdVgeA3EfJAtF1SVZMGbf8xU"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/FixedPoint96.sol":{"keccak256":"0x711b83cbdbbfe19afc1df6f45f2f71abb1b75305ecb288e36a37cc286bc8de46","urls":["bzz-raw://2957b0c179395705c49084b5b0c1033c0f47beeca043658a6c572226f5d07348","dweb:/ipfs/QmZQD8s7u1Kjnydkw6n9FUyzVK9Loo6gYSZXic732Y7J76"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/FullMath.sol":{"keccak256":"0xc6b0d61b8d60acb295d196a72f81e577007e822f63c737ae0fa87d63e228f074","urls":["bzz-raw://643ddf8897f3d2610ce5ac45c0571e86cd2a97542c2599121fa39a06daa95509","dweb:/ipfs/QmZ74RCf31apWy8UukKUrFi98kgSK6sRH68MFMGudPVpqx"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/LiquidityAmounts.sol":{"keccak256":"0x4811d0187e6ccf97d6323c597355967e481392cbdc65dea804f770dec91cece7","urls":["bzz-raw://8d41f633f2a92b4caeb0430096851b62b0be1f68915603ff8c5b220c693e9755","dweb:/ipfs/QmY9c5EwQVKi2Ak7xude2iUe7TGAdwmChUtwzwWcGb62PE"],"license":"UNLICENSED"},"node_modules/@zoralabs/coins/src/utils/uniswap/SafeCast.sol":{"keccak256":"0x5ec831c0fbdcb16091d35eee2e49d54eaadf7ce72d971aec9ea30f379cba258a","urls":["bzz-raw://9440106f4a5ff5d829ed68c82de4f92e171c4e9306e89d28fe75b4ca30b5f298","dweb:/ipfs/QmdLJitnGXNMZxG6XZxhvCMjoNEKzpZVJ2dnzGVXtWUSFf"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/SqrtPriceMath.sol":{"keccak256":"0x45ed757203ba04c7337435dd32e6231b768abf1709917b1d5e81ae1333513f75","urls":["bzz-raw://2fa319aa9c92b8da5a9634407ff487cbf0e0e6e234a99146f49c9ded06e8fd74","dweb:/ipfs/QmcqHrXBGpcfgMyb8DqyPYuafBKuESGcvJo1tfCAUrYokb"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/TickMath.sol":{"keccak256":"0xb8d86efe55d877582bdd2d2580d5c57c0fd955fdfb08116dba033f2e8f429e2e","urls":["bzz-raw://997e7fc24b30ff5464a5d3db14ac17eb07bed862bbce553a060f38affd8cb6f7","dweb:/ipfs/QmfQ8bo8zEGT6NEDVRdWJaCWaAXMoH7eH8xz14XA1p4Ex3"],"license":"MIT"},"node_modules/@zoralabs/coins/src/utils/uniswap/UnsafeMath.sol":{"keccak256":"0x44ea34293d502dcff60379eff5504313d7a042ebcae72e7d82ca937f199f3d84","urls":["bzz-raw://142c8209cf7ff88b88fa5fe41c0c22a59a8065e1726c0e18b0582facbead3c5c","dweb:/ipfs/QmRZZfsipKck8Ja4pPCK5GYFNfD5TeZggjqLVwJi1AjBzt"],"license":"MIT"},"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/ISwapRouter.sol":{"keccak256":"0xccaccab57b0d5a23ba1092ef049ece0352d276fbbf20baf22f5aa5ade46ffe64","urls":["bzz-raw://51a3e5c723fa25de65bc0a01778fa25eae3f6309afe239bdd2baeab5e995c485","dweb:/ipfs/QmXYticnovthF2AzTkwSQdUbeXhiu7TuSQTJLrUpTLDd57"],"license":"GPL-2.0-or-later"},"node_modules/@zoralabs/shared-contracts/src/interfaces/uniswap/IUniswapV3SwapCallback.sol":{"keccak256":"0xf2f5787cbc1a19abdedeacfa625ab7f733b1545e75e7085948dbe92c01e613d1","urls":["bzz-raw://a1161d4ce4f7f0740900fa69b6a745186d73b03767ff51fea368939542bec9b9","dweb:/ipfs/Qma3egiUREoMGPiji678bkhjnKgLPCdJKz7Ku9JK1iVkFM"],"license":"GPL-2.0-or-later"},"node_modules/@zoralabs/shared-contracts/src/libs/UniswapV3/BytesLib.sol":{"keccak256":"0x1835886738a49409fa8eff78c12bd09ced0545e0a52d5b26d66fadf2c80c8326","urls":["bzz-raw://9c50f3408c2f2c38c841962bf2437a8fc23249b733c5c53650819a4328151c14","dweb:/ipfs/QmNRKcsT6Mb9G8kEcNwiPAw5TouMdgTSNhSgQCy4f1pxdP"],"license":"GPL-2.0-or-later"},"node_modules/@zoralabs/shared-contracts/src/libs/UniswapV3/Path.sol":{"keccak256":"0x5d8c2b62745b5270877adc9b6037c9db98433735dff4b722e79a3d4506c29dff","urls":["bzz-raw://15d03ccf38d2f706a506d20c239045d26902fae92fd82869dd06b897f997f0b4","dweb:/ipfs/QmWSYmEyZCr619LfLQYY4fHMeEU178YzWsuqbZi9tYCxx4"],"license":"GPL-2.0-or-later"},"src/IZoraLimitOrderBook.sol":{"keccak256":"0x2b2ef15b8e9b1fdfd403fb771542fd90b00b1f9afa1359c1c707c67bdd1dde10","urls":["bzz-raw://a982830679c4f9a09ae38fcb261e70d0be58795f5e911187538312402042b470","dweb:/ipfs/QmVMnET7gFkPEXbWZGB3WeaCw5jFbxiUFzbFsSLbNNSAaa"],"license":"ZORA-DELAYED-OSL-v1"},"src/access/SimpleAccessManaged.sol":{"keccak256":"0xd92f23941a7a5709efdb66928036b6812d6742eca3b4d7d1ff42197a7b8916c8","urls":["bzz-raw://6ea18ad22ef178f454a65f55fcb29cdbd45396e1da3bab178357c54162be0269","dweb:/ipfs/QmZVGjcJ1v6bFaG3VTkGZHz3Fb32xZ4KBDmAxdJHxdQzBM"],"license":"MIT"},"src/libs/Permit2Payments.sol":{"keccak256":"0x7537454ca103a2ef94bf9cd861c465ecd6192134f8f7cc983dfc6a0310c1f39f","urls":["bzz-raw://59aaa4f0222cf6a3b0ba24d038cfee3150e483a28fa0c62fb40f44a6ab37d97f","dweb:/ipfs/QmezJ1DcomHmTjiE3qmfL1VvcU74NVR8GSC7ST4ua3euwa"],"license":"MIT"},"src/libs/SwapLimitOrders.sol":{"keccak256":"0x8cae687f28f2afa4b9ca021c0d8f8e3209534986e2c98036ddfe4bdc5d9b3d1b","urls":["bzz-raw://873f7e137bbbcc9a56bf362525eaf122ca6912d4e20c44bebabf12f565f78b5a","dweb:/ipfs/QmUfYtnhmc8vFNZaWhjYriMXR1bGg6JzdAbXpS6wMASxHM"],"license":"ZORA-DELAYED-OSL-v1"},"src/router/SwapWithLimitOrders.sol":{"keccak256":"0x3099dce672e92fba16d89a0fdbc102a18f065526fd80b440984e8f773723515a","urls":["bzz-raw://85ed25ad0efec286508a79193b921ff3240fdb5eaf16086b156db98041364b9a","dweb:/ipfs/QmQv1W6Caqwg4HwdR3r3oXD2FYUd1jnG3Rznu1xP4K7D3r"],"license":"ZORA-DELAYED-OSL-v1"}},"version":1},"id":89}
@@ -0,0 +1 @@
1
+ {"abi":[{"type":"error","name":"TickMisaligned","inputs":[{"name":"tick","type":"int24","internalType":"int24"},{"name":"tickSpacing","type":"int24","internalType":"int24"}]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"340:5925:30:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"340:5925:30:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickMisaligned\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"The mapping uses int16 for keys since ticks are represented as int24 and there are 256 (2^8) values per word.\",\"errors\":{\"TickMisaligned(int24,int24)\":[{\"params\":{\"tick\":\"the invalid tick\",\"tickSpacing\":\"The tick spacing of the pool\"}}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"Packed tick initialized state library\",\"version\":1},\"userdoc\":{\"errors\":{\"TickMisaligned(int24,int24)\":[{\"notice\":\"Thrown when the tick is not enumerated by the tick spacing\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Stores a packed mapping of tick index to its initialized state\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@uniswap/v4-core/src/libraries/TickBitmap.sol\":\"TickBitmap\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"node_modules/@uniswap/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"int24","name":"tick","type":"int24"},{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickMisaligned"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@uniswap/v4-core/src/libraries/TickBitmap.sol":"TickBitmap"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"}},"version":1},"id":30}
@@ -0,0 +1 @@
1
+ {"abi":[{"type":"error","name":"InvalidSqrtPrice","inputs":[{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"}]},{"type":"error","name":"InvalidTick","inputs":[{"name":"tick","type":"int24","internalType":"int24"}]}],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"381:12000:31:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"381:12000:31:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"InvalidSqrtPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"InvalidTick\",\"type\":\"error\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MAX_SQRT_PRICE\":{\"details\":\"The maximum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MAX_TICK)\"},\"MAX_SQRT_PRICE_MINUS_MIN_SQRT_PRICE_MINUS_ONE\":{\"details\":\"A threshold used for optimized bounds check, equals `MAX_SQRT_PRICE - MIN_SQRT_PRICE - 1`\"},\"MAX_TICK\":{\"details\":\"The maximum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**128If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used\"},\"MAX_TICK_SPACING\":{\"details\":\"The maximum tick spacing value drawn from the range of type int16, i.e. max from the range [1, 32767]\"},\"MIN_SQRT_PRICE\":{\"details\":\"The minimum value that can be returned from #getSqrtPriceAtTick. Equivalent to getSqrtPriceAtTick(MIN_TICK)\"},\"MIN_TICK\":{\"details\":\"The minimum tick that may be passed to #getSqrtPriceAtTick computed from log base 1.0001 of 2**-128If ever MIN_TICK and MAX_TICK are not centered around 0, the absTick logic in getSqrtPriceAtTick cannot be used\"},\"MIN_TICK_SPACING\":{\"details\":\"The minimum tick spacing value drawn from the range of type int16 that is greater than 0, i.e. min from the range [1, 32767]\"}},\"title\":\"Math library for computing sqrt prices from ticks and vice versa\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidSqrtPrice(uint160)\":[{\"notice\":\"Thrown when the price passed to #getTickAtSqrtPrice does not correspond to a price between MIN_TICK and MAX_TICK\"}],\"InvalidTick(int24)\":[{\"notice\":\"Thrown when the tick passed to #getSqrtPriceAtTick is not between MIN_TICK and MAX_TICK\"}]},\"kind\":\"user\",\"methods\":{},\"notice\":\"Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports prices between 2**-128 and 2**128\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol\":\"TickMath\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"type":"error","name":"InvalidSqrtPrice"},{"inputs":[{"internalType":"int24","name":"tick","type":"int24"}],"type":"error","name":"InvalidTick"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol":"TickMath"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@uniswap/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"}},"version":1},"id":31}
@@ -0,0 +1 @@
1
+ {"abi":[],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"1163:3911:7:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"1163:3911:7:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing value-types to specific transient storage slots. Transient slots are often used to store temporary values that are removed after the current transaction. This library helps with reading and writing to such slots without the need for inline assembly. * Example reading and writing values using transient storage: ```solidity contract Lock { using TransientSlot for *; // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _LOCK_SLOT = 0xf4678858b2b588224636b8522b729e7722d32fc491da849ed75b3fdf3c84f542; modifier locked() { require(!_LOCK_SLOT.asBoolean().tload()); _LOCK_SLOT.asBoolean().tstore(true); _; _LOCK_SLOT.asBoolean().tstore(false); } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/utils/TransientSlot.sol\":\"TransientSlot\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de\",\"dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@openzeppelin/contracts/utils/TransientSlot.sol":"TransientSlot"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts/utils/TransientSlot.sol":{"keccak256":"0xac673fa1e374d9e6107504af363333e3e5f6344d2e83faf57d9bfd41d77cc946","urls":["bzz-raw://5982478dbbb218e9dd5a6e83f5c0e8d1654ddf20178484b43ef21dd2246809de","dweb:/ipfs/QmaB1hS68n2kG8vTbt7EPEzmrGhkUbfiFyykGGLsAr9X22"],"license":"MIT"}},"version":1},"id":7}
@@ -0,0 +1 @@
1
+ {"abi":[],"bytecode":{"object":"0x6080806040523460175760039081601c823930815050f35b5f80fdfe5f80fd","sourceMap":"389:1971:32:-:0;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x5f80fd","sourceMap":"389:1971:32:-:0;;","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A helper library to provide state getters that use exttload\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@uniswap/v4-core/src/libraries/TransientStateLibrary.sol\":\"TransientStateLibrary\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/\",\":@uniswap/v4-core/=node_modules/@uniswap/v4-core/\",\":@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/\",\":@zoralabs/coins/=node_modules/@zoralabs/coins/\",\":@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":permit2/src/=node_modules/@uniswap/permit2/src/\",\":solady/=node_modules/solady/src/\",\":solmate/=node_modules/solmate/src/\"],\"viaIR\":true},\"sources\":{\"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"node_modules/@uniswap/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"node_modules/@uniswap/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"node_modules/@uniswap/v4-core/src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"node_modules/@uniswap/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"node_modules/@uniswap/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"node_modules/@uniswap/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"node_modules/@uniswap/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","@uniswap/universal-router/contracts/=node_modules/@uniswap/universal-router/contracts/","@uniswap/v4-core/=node_modules/@uniswap/v4-core/","@uniswap/v4-periphery/=node_modules/@uniswap/v4-periphery/","@zoralabs/coins/=node_modules/@zoralabs/coins/","@zoralabs/shared-contracts/=node_modules/@zoralabs/shared-contracts/src/","ds-test/=node_modules/ds-test/src/","forge-std/=node_modules/forge-std/src/","permit2/src/=node_modules/@uniswap/permit2/src/","solady/=node_modules/solady/src/","solmate/=node_modules/solmate/src/"],"optimizer":{"enabled":true,"runs":100},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"node_modules/@uniswap/v4-core/src/libraries/TransientStateLibrary.sol":"TransientStateLibrary"},"evmVersion":"prague","libraries":{},"viaIR":true},"sources":{"node_modules/@uniswap/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"node_modules/@uniswap/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"node_modules/@uniswap/v4-core/src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"node_modules/@uniswap/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"node_modules/@uniswap/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"}},"version":1},"id":32}