@layerzerolabs/lz-evm-sdk-v2 2.3.8 → 2.3.10

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 (347) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/artifacts-tron/contracts/EndpointV2.sol/EndpointV2.json +2361 -0
  3. package/artifacts-tron/contracts/EndpointV2Alt.sol/EndpointV2Alt.json +2376 -0
  4. package/artifacts-tron/contracts/EndpointV2View.sol/EndpointV2View.json +209 -0
  5. package/artifacts-tron/contracts/EndpointV2ViewUpgradeable.sol/EndpointV2ViewUpgradeable.json +196 -0
  6. package/artifacts-tron/contracts/Executor.sol/Executor.json +1276 -0
  7. package/artifacts-tron/contracts/Executor.sol/ILayerZeroEndpointV2.json +230 -0
  8. package/artifacts-tron/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +367 -0
  9. package/artifacts-tron/contracts/MessageLibBase.sol/MessageLibBase.json +16 -0
  10. package/artifacts-tron/contracts/MessageLibManager.sol/MessageLibManager.json +771 -0
  11. package/artifacts-tron/contracts/MessagingChannel.sol/MessagingChannel.json +426 -0
  12. package/artifacts-tron/contracts/MessagingComposer.sol/MessagingComposer.json +320 -0
  13. package/artifacts-tron/contracts/MessagingContext.sol/MessagingContext.json +42 -0
  14. package/artifacts-tron/contracts/PriceFeed.sol/PriceFeed.json +694 -0
  15. package/artifacts-tron/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +154 -0
  16. package/artifacts-tron/contracts/SendLibBase.sol/SendLibBase.json +381 -0
  17. package/artifacts-tron/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +819 -0
  18. package/artifacts-tron/contracts/Treasury.sol/Treasury.json +309 -0
  19. package/artifacts-tron/contracts/Worker.sol/Worker.json +579 -0
  20. package/artifacts-tron/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +10 -0
  21. package/artifacts-tron/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +329 -0
  22. package/artifacts-tron/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +92 -0
  23. package/artifacts-tron/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +10 -0
  24. package/artifacts-tron/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +220 -0
  25. package/artifacts-tron/contracts/interfaces/IExecutor.sol/IExecutor.json +439 -0
  26. package/artifacts-tron/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +241 -0
  27. package/artifacts-tron/contracts/interfaces/ILayerZeroComposer.sol/ILayerZeroComposer.json +44 -0
  28. package/artifacts-tron/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json +1899 -0
  29. package/artifacts-tron/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +79 -0
  30. package/artifacts-tron/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +222 -0
  31. package/artifacts-tron/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.json +121 -0
  32. package/artifacts-tron/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +79 -0
  33. package/artifacts-tron/contracts/interfaces/IMessageLib.sol/IMessageLib.json +149 -0
  34. package/artifacts-tron/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.json +646 -0
  35. package/artifacts-tron/contracts/interfaces/IMessagingChannel.sol/IMessagingChannel.json +373 -0
  36. package/artifacts-tron/contracts/interfaces/IMessagingComposer.sol/IMessagingComposer.json +246 -0
  37. package/artifacts-tron/contracts/interfaces/IMessagingContext.sol/IMessagingContext.json +42 -0
  38. package/artifacts-tron/contracts/interfaces/ISendLib.sol/ISendLib.json +364 -0
  39. package/artifacts-tron/contracts/interfaces/IWorker.sol/IWorker.json +221 -0
  40. package/artifacts-tron/contracts/libs/AddressCast.sol/AddressCast.json +21 -0
  41. package/artifacts-tron/contracts/libs/CalldataBytesLib.sol/CalldataBytesLib.json +10 -0
  42. package/artifacts-tron/contracts/libs/Errors.sol/Errors.json +211 -0
  43. package/artifacts-tron/contracts/libs/GUID.sol/GUID.json +10 -0
  44. package/artifacts-tron/contracts/libs/SafeCall.sol/SafeCall.json +10 -0
  45. package/artifacts-tron/contracts/libs/Transfer.sol/Transfer.json +32 -0
  46. package/artifacts-tron/contracts/messagelib/BlockedMessageLib.sol/BlockedMessageLib.json +94 -0
  47. package/artifacts-tron/contracts/messagelib/SimpleMessageLib.sol/SimpleMessageLib.json +591 -0
  48. package/artifacts-tron/contracts/messagelib/libs/BitMaps.sol/BitMaps.json +10 -0
  49. package/artifacts-tron/contracts/messagelib/libs/ExecutorOptions.sol/ExecutorOptions.json +26 -0
  50. package/artifacts-tron/contracts/messagelib/libs/PacketV1Codec.sol/PacketV1Codec.json +10 -0
  51. package/artifacts-tron/contracts/oapp/OApp.sol/OApp.json +383 -0
  52. package/artifacts-tron/contracts/oapp/OAppCore.sol/OAppCore.json +200 -0
  53. package/artifacts-tron/contracts/oapp/OAppReceiver.sol/OAppReceiver.json +367 -0
  54. package/artifacts-tron/contracts/oapp/OAppSender.sol/OAppSender.json +216 -0
  55. package/artifacts-tron/contracts/oapp/examples/OmniCounter.sol/OmniCounter.json +925 -0
  56. package/artifacts-tron/contracts/oapp/examples/OmniCounterAbstract.sol/MsgCodec.json +10 -0
  57. package/artifacts-tron/contracts/oapp/examples/OmniCounterAbstract.sol/OmniCounterAbstract.json +909 -0
  58. package/artifacts-tron/contracts/oapp/examples/OmniCounterPreCrime.sol/OmniCounterPreCrime.json +368 -0
  59. package/artifacts-tron/contracts/oapp/interfaces/IOAppComposer.sol/IOAppComposer.json +44 -0
  60. package/artifacts-tron/contracts/oapp/interfaces/IOAppCore.sol/IOAppCore.json +148 -0
  61. package/artifacts-tron/contracts/oapp/interfaces/IOAppMsgInspector.sol/IOAppMsgInspector.json +51 -0
  62. package/artifacts-tron/contracts/oapp/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +111 -0
  63. package/artifacts-tron/contracts/oapp/interfaces/IOAppReceiver.sol/IOAppReceiver.json +167 -0
  64. package/artifacts-tron/contracts/oapp/libs/OAppOptionsType3.sol/OAppOptionsType3.json +187 -0
  65. package/artifacts-tron/contracts/oapp/libs/OptionsBuilder.sol/OptionsBuilder.json +38 -0
  66. package/artifacts-tron/contracts/oapp/utils/RateLimiter.sol/RateLimiter.json +104 -0
  67. package/artifacts-tron/contracts/oft/OFT.sol/OFT.json +1514 -0
  68. package/artifacts-tron/contracts/oft/OFTAdapter.sol/OFTAdapter.json +1244 -0
  69. package/artifacts-tron/contracts/oft/OFTCore.sol/OFTCore.json +1244 -0
  70. package/artifacts-tron/contracts/oft/interfaces/IOFT.sol/IOFT.json +456 -0
  71. package/artifacts-tron/contracts/oft/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +10 -0
  72. package/artifacts-tron/contracts/oft/libs/OFTMsgCodec.sol/OFTMsgCodec.json +10 -0
  73. package/artifacts-tron/contracts/precrime/OAppPreCrimeSimulator.sol/OAppPreCrimeSimulator.json +277 -0
  74. package/artifacts-tron/contracts/precrime/PreCrime.sol/PreCrime.json +352 -0
  75. package/artifacts-tron/contracts/precrime/extensions/PreCrimeE1.sol/PreCrimeE1.json +352 -0
  76. package/artifacts-tron/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol/IOAppPreCrimeSimulator.json +175 -0
  77. package/artifacts-tron/contracts/precrime/interfaces/IPreCrime.sol/IPreCrime.json +188 -0
  78. package/artifacts-tron/contracts/precrime/libs/Packet.sol/PacketDecoder.json +10 -0
  79. package/artifacts-tron/contracts/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +160 -0
  80. package/artifacts-tron/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +35 -0
  81. package/artifacts-tron/contracts/uln/LzExecutor.sol/LzExecutor.json +515 -0
  82. package/artifacts-tron/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +551 -0
  83. package/artifacts-tron/contracts/uln/SendUlnBase.sol/SendUlnBase.json +412 -0
  84. package/artifacts-tron/contracts/uln/UlnBase.sol/UlnBase.json +387 -0
  85. package/artifacts-tron/contracts/uln/dvn/DVN.sol/DVN.json +1370 -0
  86. package/artifacts-tron/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +311 -0
  87. package/artifacts-tron/contracts/uln/dvn/MultiSig.sol/MultiSig.json +164 -0
  88. package/artifacts-tron/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1040 -0
  89. package/artifacts-tron/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +417 -0
  90. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +789 -0
  91. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +34 -0
  92. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +30 -0
  93. package/artifacts-tron/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +936 -0
  94. package/artifacts-tron/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +868 -0
  95. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1171 -0
  96. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +30 -0
  97. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +574 -0
  98. package/artifacts-tron/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +16 -0
  99. package/artifacts-tron/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +924 -0
  100. package/artifacts-tron/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +891 -0
  101. package/artifacts-tron/contracts/uln/interfaces/IDVN.sol/IDVN.json +370 -0
  102. package/artifacts-tron/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +189 -0
  103. package/artifacts-tron/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +96 -0
  104. package/artifacts-tron/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +52 -0
  105. package/artifacts-tron/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +160 -0
  106. package/artifacts-tron/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +293 -0
  107. package/artifacts-tron/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +78 -0
  108. package/artifacts-tron/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +301 -0
  109. package/artifacts-tron/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +27 -0
  110. package/artifacts-tron/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +54 -0
  111. package/artifacts-tron/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +129 -0
  112. package/artifacts-tron/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +68 -0
  113. package/artifacts-tron/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +416 -0
  114. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1000 -0
  115. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +178 -0
  116. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +126 -0
  117. package/artifacts-tron/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +804 -0
  118. package/artifacts-tron/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1278 -0
  119. package/artifacts-tron/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +94 -0
  120. package/artifacts-tron/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +247 -0
  121. package/artifacts-tron/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +40 -0
  122. package/artifacts-tron/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +44 -0
  123. package/artifacts-tron/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +29 -0
  124. package/artifacts-tron/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +93 -0
  125. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +757 -0
  126. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +146 -0
  127. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +251 -0
  128. package/artifacts-tron/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1259 -0
  129. package/artifacts-tron/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +592 -0
  130. package/artifacts-tron/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +181 -0
  131. package/artifacts-tron/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +160 -0
  132. package/artifacts-zk/contracts/EndpointV2.sol/EndpointV2.json +2364 -0
  133. package/artifacts-zk/contracts/EndpointV2Alt.sol/EndpointV2Alt.json +2379 -0
  134. package/artifacts-zk/contracts/EndpointV2View.sol/EndpointV2View.json +210 -0
  135. package/artifacts-zk/contracts/EndpointV2ViewUpgradeable.sol/EndpointV2ViewUpgradeable.json +197 -0
  136. package/artifacts-zk/contracts/Executor.sol/Executor.json +1157 -0
  137. package/artifacts-zk/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +353 -0
  138. package/artifacts-zk/contracts/MessageLibBase.sol/MessageLibBase.json +17 -0
  139. package/artifacts-zk/contracts/MessageLibManager.sol/MessageLibManager.json +772 -0
  140. package/artifacts-zk/contracts/MessagingChannel.sol/MessagingChannel.json +427 -0
  141. package/artifacts-zk/contracts/MessagingComposer.sol/MessagingComposer.json +321 -0
  142. package/artifacts-zk/contracts/MessagingContext.sol/MessagingContext.json +43 -0
  143. package/artifacts-zk/contracts/PriceFeed.sol/PriceFeed.json +651 -0
  144. package/artifacts-zk/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +155 -0
  145. package/artifacts-zk/contracts/SendLibBase.sol/SendLibBase.json +382 -0
  146. package/artifacts-zk/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +820 -0
  147. package/artifacts-zk/contracts/Treasury.sol/Treasury.json +310 -0
  148. package/artifacts-zk/contracts/Worker.sol/Worker.json +580 -0
  149. package/artifacts-zk/contracts/interfaces/IExecutor.sol/IExecutor.json +430 -0
  150. package/artifacts-zk/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +227 -0
  151. package/artifacts-zk/contracts/interfaces/ILayerZeroComposer.sol/ILayerZeroComposer.json +45 -0
  152. package/artifacts-zk/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json +1900 -0
  153. package/artifacts-zk/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +80 -0
  154. package/artifacts-zk/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +223 -0
  155. package/artifacts-zk/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.json +122 -0
  156. package/artifacts-zk/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +80 -0
  157. package/artifacts-zk/contracts/interfaces/IMessageLib.sol/IMessageLib.json +150 -0
  158. package/artifacts-zk/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.json +647 -0
  159. package/artifacts-zk/contracts/interfaces/IMessagingChannel.sol/IMessagingChannel.json +374 -0
  160. package/artifacts-zk/contracts/interfaces/IMessagingComposer.sol/IMessagingComposer.json +247 -0
  161. package/artifacts-zk/contracts/interfaces/IMessagingContext.sol/IMessagingContext.json +43 -0
  162. package/artifacts-zk/contracts/interfaces/ISendLib.sol/ISendLib.json +365 -0
  163. package/artifacts-zk/contracts/interfaces/IWorker.sol/IWorker.json +222 -0
  164. package/artifacts-zk/contracts/libs/AddressCast.sol/AddressCast.json +22 -0
  165. package/artifacts-zk/contracts/libs/CalldataBytesLib.sol/CalldataBytesLib.json +11 -0
  166. package/artifacts-zk/contracts/libs/Errors.sol/Errors.json +212 -0
  167. package/artifacts-zk/contracts/libs/GUID.sol/GUID.json +11 -0
  168. package/artifacts-zk/contracts/libs/SafeCall.sol/SafeCall.json +11 -0
  169. package/artifacts-zk/contracts/libs/Transfer.sol/Transfer.json +33 -0
  170. package/artifacts-zk/contracts/messagelib/BlockedMessageLib.sol/BlockedMessageLib.json +95 -0
  171. package/artifacts-zk/contracts/messagelib/SimpleMessageLib.sol/SimpleMessageLib.json +592 -0
  172. package/artifacts-zk/contracts/messagelib/libs/BitMaps.sol/BitMaps.json +11 -0
  173. package/artifacts-zk/contracts/messagelib/libs/ExecutorOptions.sol/ExecutorOptions.json +27 -0
  174. package/artifacts-zk/contracts/messagelib/libs/PacketV1Codec.sol/PacketV1Codec.json +11 -0
  175. package/artifacts-zk/contracts/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +161 -0
  176. package/artifacts-zk/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +36 -0
  177. package/artifacts-zk/contracts/uln/LzExecutor.sol/LzExecutor.json +516 -0
  178. package/artifacts-zk/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +552 -0
  179. package/artifacts-zk/contracts/uln/SendUlnBase.sol/SendUlnBase.json +413 -0
  180. package/artifacts-zk/contracts/uln/UlnBase.sol/UlnBase.json +388 -0
  181. package/artifacts-zk/contracts/uln/dvn/DVN.sol/DVN.json +1371 -0
  182. package/artifacts-zk/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +312 -0
  183. package/artifacts-zk/contracts/uln/dvn/MultiSig.sol/MultiSig.json +165 -0
  184. package/artifacts-zk/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1062 -0
  185. package/artifacts-zk/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +418 -0
  186. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +790 -0
  187. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +35 -0
  188. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +31 -0
  189. package/artifacts-zk/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +937 -0
  190. package/artifacts-zk/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +869 -0
  191. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1167 -0
  192. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +31 -0
  193. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +575 -0
  194. package/artifacts-zk/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +17 -0
  195. package/artifacts-zk/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +925 -0
  196. package/artifacts-zk/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +892 -0
  197. package/artifacts-zk/contracts/uln/interfaces/IDVN.sol/IDVN.json +371 -0
  198. package/artifacts-zk/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +190 -0
  199. package/artifacts-zk/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +97 -0
  200. package/artifacts-zk/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +53 -0
  201. package/artifacts-zk/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +161 -0
  202. package/artifacts-zk/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +294 -0
  203. package/artifacts-zk/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +92 -0
  204. package/artifacts-zk/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +302 -0
  205. package/artifacts-zk/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +28 -0
  206. package/artifacts-zk/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +55 -0
  207. package/artifacts-zk/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +130 -0
  208. package/artifacts-zk/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +69 -0
  209. package/artifacts-zk/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +417 -0
  210. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1001 -0
  211. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +179 -0
  212. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +127 -0
  213. package/artifacts-zk/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +805 -0
  214. package/artifacts-zk/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1279 -0
  215. package/artifacts-zk/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +95 -0
  216. package/artifacts-zk/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +248 -0
  217. package/artifacts-zk/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +41 -0
  218. package/artifacts-zk/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +45 -0
  219. package/artifacts-zk/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +30 -0
  220. package/artifacts-zk/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +94 -0
  221. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +758 -0
  222. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +147 -0
  223. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +252 -0
  224. package/artifacts-zk/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1260 -0
  225. package/artifacts-zk/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +593 -0
  226. package/artifacts-zk/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +182 -0
  227. package/artifacts-zk/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +161 -0
  228. package/deployments/arbitrum-sandbox-local/DVN.json +28 -28
  229. package/deployments/arbitrum-sandbox-local/DVNDecompressor.json +11 -11
  230. package/deployments/arbitrum-sandbox-local/DVNFeeLib.json +8 -8
  231. package/deployments/arbitrum-sandbox-local/PriceFeed.json +16 -16
  232. package/deployments/arbitrum-sandbox-local/PriceFeedProxyAdmin.json +11 -11
  233. package/deployments/arbitrum-sandbox-local/PriceFeed_Implementation.json +28 -28
  234. package/deployments/arbitrum-sandbox-local/PriceFeed_Proxy.json +16 -16
  235. package/deployments/bsc-sandbox-local/DVN.json +34 -34
  236. package/deployments/bsc-sandbox-local/DVNDecompressor.json +11 -11
  237. package/deployments/bsc-sandbox-local/DVNFeeLib.json +8 -8
  238. package/deployments/bsc-sandbox-local/DefaultProxyAdmin.json +7 -7
  239. package/deployments/bsc-sandbox-local/EndpointV2.json +13 -13
  240. package/deployments/bsc-sandbox-local/EndpointV2View.json +13 -13
  241. package/deployments/bsc-sandbox-local/EndpointV2View_Implementation.json +4 -4
  242. package/deployments/bsc-sandbox-local/EndpointV2View_Proxy.json +13 -13
  243. package/deployments/bsc-sandbox-local/Executor.json +43 -43
  244. package/deployments/bsc-sandbox-local/ExecutorDecompressor.json +10 -10
  245. package/deployments/bsc-sandbox-local/ExecutorFeeLib.json +9 -9
  246. package/deployments/bsc-sandbox-local/ExecutorProxyAdmin.json +11 -11
  247. package/deployments/bsc-sandbox-local/Executor_Implementation.json +40 -40
  248. package/deployments/bsc-sandbox-local/Executor_Proxy.json +43 -43
  249. package/deployments/bsc-sandbox-local/LzExecutor.json +16 -16
  250. package/deployments/bsc-sandbox-local/LzExecutor_Implementation.json +8 -8
  251. package/deployments/bsc-sandbox-local/LzExecutor_Proxy.json +16 -16
  252. package/deployments/bsc-sandbox-local/NonceContractMock.json +6 -6
  253. package/deployments/bsc-sandbox-local/PriceFeed.json +16 -16
  254. package/deployments/bsc-sandbox-local/PriceFeedProxyAdmin.json +11 -11
  255. package/deployments/bsc-sandbox-local/PriceFeed_Implementation.json +28 -28
  256. package/deployments/bsc-sandbox-local/PriceFeed_Proxy.json +16 -16
  257. package/deployments/bsc-sandbox-local/ReceiveUln301.json +35 -35
  258. package/deployments/bsc-sandbox-local/ReceiveUln301View.json +13 -13
  259. package/deployments/bsc-sandbox-local/ReceiveUln301View_Implementation.json +10 -10
  260. package/deployments/bsc-sandbox-local/ReceiveUln301View_Proxy.json +13 -13
  261. package/deployments/bsc-sandbox-local/ReceiveUln302.json +32 -32
  262. package/deployments/bsc-sandbox-local/ReceiveUln302View.json +13 -13
  263. package/deployments/bsc-sandbox-local/ReceiveUln302View_Implementation.json +9 -9
  264. package/deployments/bsc-sandbox-local/ReceiveUln302View_Proxy.json +13 -13
  265. package/deployments/bsc-sandbox-local/SendUln301.json +35 -35
  266. package/deployments/bsc-sandbox-local/SendUln302.json +33 -33
  267. package/deployments/bsc-sandbox-local/SimpleMessageLib.json +7 -7
  268. package/deployments/bsc-sandbox-local/Treasury.json +11 -11
  269. package/deployments/bsc-sandbox-local/TreasuryFeeHandler.json +5 -5
  270. package/deployments/ethereum-sandbox-local/DVN.json +34 -34
  271. package/deployments/ethereum-sandbox-local/DVNDecompressor.json +11 -11
  272. package/deployments/ethereum-sandbox-local/DVNFeeLib.json +8 -8
  273. package/deployments/ethereum-sandbox-local/DefaultProxyAdmin.json +7 -7
  274. package/deployments/ethereum-sandbox-local/EndpointV2.json +13 -13
  275. package/deployments/ethereum-sandbox-local/EndpointV2View.json +13 -13
  276. package/deployments/ethereum-sandbox-local/EndpointV2View_Implementation.json +4 -4
  277. package/deployments/ethereum-sandbox-local/EndpointV2View_Proxy.json +13 -13
  278. package/deployments/ethereum-sandbox-local/Executor.json +43 -43
  279. package/deployments/ethereum-sandbox-local/ExecutorDecompressor.json +10 -10
  280. package/deployments/ethereum-sandbox-local/ExecutorFeeLib.json +9 -9
  281. package/deployments/ethereum-sandbox-local/ExecutorProxyAdmin.json +11 -11
  282. package/deployments/ethereum-sandbox-local/Executor_Implementation.json +40 -40
  283. package/deployments/ethereum-sandbox-local/Executor_Proxy.json +43 -43
  284. package/deployments/ethereum-sandbox-local/LzExecutor.json +16 -16
  285. package/deployments/ethereum-sandbox-local/LzExecutor_Implementation.json +8 -8
  286. package/deployments/ethereum-sandbox-local/LzExecutor_Proxy.json +16 -16
  287. package/deployments/ethereum-sandbox-local/NonceContractMock.json +6 -6
  288. package/deployments/ethereum-sandbox-local/PriceFeed.json +16 -16
  289. package/deployments/ethereum-sandbox-local/PriceFeedProxyAdmin.json +11 -11
  290. package/deployments/ethereum-sandbox-local/PriceFeed_Implementation.json +28 -28
  291. package/deployments/ethereum-sandbox-local/PriceFeed_Proxy.json +16 -16
  292. package/deployments/ethereum-sandbox-local/ReceiveUln301.json +35 -35
  293. package/deployments/ethereum-sandbox-local/ReceiveUln301View.json +13 -13
  294. package/deployments/ethereum-sandbox-local/ReceiveUln301View_Implementation.json +10 -10
  295. package/deployments/ethereum-sandbox-local/ReceiveUln301View_Proxy.json +13 -13
  296. package/deployments/ethereum-sandbox-local/ReceiveUln302.json +32 -32
  297. package/deployments/ethereum-sandbox-local/ReceiveUln302View.json +13 -13
  298. package/deployments/ethereum-sandbox-local/ReceiveUln302View_Implementation.json +9 -9
  299. package/deployments/ethereum-sandbox-local/ReceiveUln302View_Proxy.json +13 -13
  300. package/deployments/ethereum-sandbox-local/SendUln301.json +35 -35
  301. package/deployments/ethereum-sandbox-local/SendUln302.json +33 -33
  302. package/deployments/ethereum-sandbox-local/SimpleMessageLib.json +7 -7
  303. package/deployments/ethereum-sandbox-local/Treasury.json +11 -11
  304. package/deployments/ethereum-sandbox-local/TreasuryFeeHandler.json +5 -5
  305. package/deployments/polygon-sandbox-local/DVN.json +34 -34
  306. package/deployments/polygon-sandbox-local/DVNDecompressor.json +11 -11
  307. package/deployments/polygon-sandbox-local/DVNFeeLib.json +8 -8
  308. package/deployments/polygon-sandbox-local/DefaultProxyAdmin.json +7 -7
  309. package/deployments/polygon-sandbox-local/EndpointV2.json +13 -13
  310. package/deployments/polygon-sandbox-local/EndpointV2View.json +13 -13
  311. package/deployments/polygon-sandbox-local/EndpointV2View_Implementation.json +4 -4
  312. package/deployments/polygon-sandbox-local/EndpointV2View_Proxy.json +13 -13
  313. package/deployments/polygon-sandbox-local/Executor.json +43 -43
  314. package/deployments/polygon-sandbox-local/ExecutorDecompressor.json +10 -10
  315. package/deployments/polygon-sandbox-local/ExecutorFeeLib.json +9 -9
  316. package/deployments/polygon-sandbox-local/ExecutorProxyAdmin.json +11 -11
  317. package/deployments/polygon-sandbox-local/Executor_Implementation.json +40 -40
  318. package/deployments/polygon-sandbox-local/Executor_Proxy.json +43 -43
  319. package/deployments/polygon-sandbox-local/LzExecutor.json +16 -16
  320. package/deployments/polygon-sandbox-local/LzExecutor_Implementation.json +8 -8
  321. package/deployments/polygon-sandbox-local/LzExecutor_Proxy.json +16 -16
  322. package/deployments/polygon-sandbox-local/NonceContractMock.json +6 -6
  323. package/deployments/polygon-sandbox-local/PriceFeed.json +16 -16
  324. package/deployments/polygon-sandbox-local/PriceFeedProxyAdmin.json +11 -11
  325. package/deployments/polygon-sandbox-local/PriceFeed_Implementation.json +28 -28
  326. package/deployments/polygon-sandbox-local/PriceFeed_Proxy.json +16 -16
  327. package/deployments/polygon-sandbox-local/ReceiveUln301.json +35 -35
  328. package/deployments/polygon-sandbox-local/ReceiveUln301View.json +13 -13
  329. package/deployments/polygon-sandbox-local/ReceiveUln301View_Implementation.json +10 -10
  330. package/deployments/polygon-sandbox-local/ReceiveUln301View_Proxy.json +13 -13
  331. package/deployments/polygon-sandbox-local/ReceiveUln302.json +32 -32
  332. package/deployments/polygon-sandbox-local/ReceiveUln302View.json +13 -13
  333. package/deployments/polygon-sandbox-local/ReceiveUln302View_Implementation.json +9 -9
  334. package/deployments/polygon-sandbox-local/ReceiveUln302View_Proxy.json +13 -13
  335. package/deployments/polygon-sandbox-local/SendUln301.json +35 -35
  336. package/deployments/polygon-sandbox-local/SendUln302.json +33 -33
  337. package/deployments/polygon-sandbox-local/SimpleMessageLib.json +7 -7
  338. package/deployments/polygon-sandbox-local/Treasury.json +11 -11
  339. package/deployments/polygon-sandbox-local/TreasuryFeeHandler.json +5 -5
  340. package/deployments/tron-sandbox-local/DVN.json +35 -35
  341. package/deployments/tron-sandbox-local/DVNDecompressor.json +16 -16
  342. package/deployments/tron-sandbox-local/DVNFeeLib.json +11 -11
  343. package/deployments/tron-sandbox-local/PriceFeed.json +27 -27
  344. package/deployments/tron-sandbox-local/PriceFeedProxyAdmin.json +15 -15
  345. package/deployments/tron-sandbox-local/PriceFeed_Implementation.json +30 -30
  346. package/deployments/tron-sandbox-local/PriceFeed_Proxy.json +26 -26
  347. package/package.json +11 -9
@@ -0,0 +1,1259 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "SendUln302",
4
+ "sourceName": "contracts/uln/uln302/SendUln302.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_endpoint",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "_treasuryGasLimit",
16
+ "type": "uint256"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "_treasuryGasForFeeCap",
21
+ "type": "uint256"
22
+ }
23
+ ],
24
+ "stateMutability": "nonpayable",
25
+ "type": "constructor"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "DVN_InvalidDVNIdx",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [
34
+ {
35
+ "internalType": "uint256",
36
+ "name": "cursor",
37
+ "type": "uint256"
38
+ }
39
+ ],
40
+ "name": "DVN_InvalidDVNOptions",
41
+ "type": "error"
42
+ },
43
+ {
44
+ "inputs": [],
45
+ "name": "LZ_MessageLib_CannotWithdrawAltToken",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [
50
+ {
51
+ "internalType": "uint256",
52
+ "name": "requested",
53
+ "type": "uint256"
54
+ },
55
+ {
56
+ "internalType": "uint256",
57
+ "name": "available",
58
+ "type": "uint256"
59
+ }
60
+ ],
61
+ "name": "LZ_MessageLib_InvalidAmount",
62
+ "type": "error"
63
+ },
64
+ {
65
+ "inputs": [],
66
+ "name": "LZ_MessageLib_InvalidExecutor",
67
+ "type": "error"
68
+ },
69
+ {
70
+ "inputs": [
71
+ {
72
+ "internalType": "uint256",
73
+ "name": "actual",
74
+ "type": "uint256"
75
+ },
76
+ {
77
+ "internalType": "uint256",
78
+ "name": "max",
79
+ "type": "uint256"
80
+ }
81
+ ],
82
+ "name": "LZ_MessageLib_InvalidMessageSize",
83
+ "type": "error"
84
+ },
85
+ {
86
+ "inputs": [],
87
+ "name": "LZ_MessageLib_NotTreasury",
88
+ "type": "error"
89
+ },
90
+ {
91
+ "inputs": [],
92
+ "name": "LZ_MessageLib_OnlyEndpoint",
93
+ "type": "error"
94
+ },
95
+ {
96
+ "inputs": [],
97
+ "name": "LZ_MessageLib_TransferFailed",
98
+ "type": "error"
99
+ },
100
+ {
101
+ "inputs": [],
102
+ "name": "LZ_MessageLib_ZeroMessageSize",
103
+ "type": "error"
104
+ },
105
+ {
106
+ "inputs": [],
107
+ "name": "LZ_ULN_AtLeastOneDVN",
108
+ "type": "error"
109
+ },
110
+ {
111
+ "inputs": [
112
+ {
113
+ "internalType": "uint32",
114
+ "name": "configType",
115
+ "type": "uint32"
116
+ }
117
+ ],
118
+ "name": "LZ_ULN_InvalidConfigType",
119
+ "type": "error"
120
+ },
121
+ {
122
+ "inputs": [],
123
+ "name": "LZ_ULN_InvalidConfirmations",
124
+ "type": "error"
125
+ },
126
+ {
127
+ "inputs": [],
128
+ "name": "LZ_ULN_InvalidLegacyType1Option",
129
+ "type": "error"
130
+ },
131
+ {
132
+ "inputs": [],
133
+ "name": "LZ_ULN_InvalidLegacyType2Option",
134
+ "type": "error"
135
+ },
136
+ {
137
+ "inputs": [],
138
+ "name": "LZ_ULN_InvalidOptionalDVNCount",
139
+ "type": "error"
140
+ },
141
+ {
142
+ "inputs": [],
143
+ "name": "LZ_ULN_InvalidOptionalDVNThreshold",
144
+ "type": "error"
145
+ },
146
+ {
147
+ "inputs": [],
148
+ "name": "LZ_ULN_InvalidRequiredDVNCount",
149
+ "type": "error"
150
+ },
151
+ {
152
+ "inputs": [
153
+ {
154
+ "internalType": "uint8",
155
+ "name": "workerId",
156
+ "type": "uint8"
157
+ }
158
+ ],
159
+ "name": "LZ_ULN_InvalidWorkerId",
160
+ "type": "error"
161
+ },
162
+ {
163
+ "inputs": [
164
+ {
165
+ "internalType": "uint256",
166
+ "name": "cursor",
167
+ "type": "uint256"
168
+ }
169
+ ],
170
+ "name": "LZ_ULN_InvalidWorkerOptions",
171
+ "type": "error"
172
+ },
173
+ {
174
+ "inputs": [],
175
+ "name": "LZ_ULN_Unsorted",
176
+ "type": "error"
177
+ },
178
+ {
179
+ "inputs": [
180
+ {
181
+ "internalType": "uint32",
182
+ "name": "eid",
183
+ "type": "uint32"
184
+ }
185
+ ],
186
+ "name": "LZ_ULN_UnsupportedEid",
187
+ "type": "error"
188
+ },
189
+ {
190
+ "inputs": [
191
+ {
192
+ "internalType": "uint16",
193
+ "name": "optionType",
194
+ "type": "uint16"
195
+ }
196
+ ],
197
+ "name": "LZ_ULN_UnsupportedOptionType",
198
+ "type": "error"
199
+ },
200
+ {
201
+ "inputs": [
202
+ {
203
+ "internalType": "address",
204
+ "name": "_to",
205
+ "type": "address"
206
+ },
207
+ {
208
+ "internalType": "uint256",
209
+ "name": "_value",
210
+ "type": "uint256"
211
+ }
212
+ ],
213
+ "name": "Transfer_NativeFailed",
214
+ "type": "error"
215
+ },
216
+ {
217
+ "inputs": [],
218
+ "name": "Transfer_ToAddressIsZero",
219
+ "type": "error"
220
+ },
221
+ {
222
+ "anonymous": false,
223
+ "inputs": [
224
+ {
225
+ "indexed": false,
226
+ "internalType": "address[]",
227
+ "name": "requiredDVNs",
228
+ "type": "address[]"
229
+ },
230
+ {
231
+ "indexed": false,
232
+ "internalType": "address[]",
233
+ "name": "optionalDVNs",
234
+ "type": "address[]"
235
+ },
236
+ {
237
+ "indexed": false,
238
+ "internalType": "uint256[]",
239
+ "name": "fees",
240
+ "type": "uint256[]"
241
+ }
242
+ ],
243
+ "name": "DVNFeePaid",
244
+ "type": "event"
245
+ },
246
+ {
247
+ "anonymous": false,
248
+ "inputs": [
249
+ {
250
+ "components": [
251
+ {
252
+ "internalType": "uint32",
253
+ "name": "eid",
254
+ "type": "uint32"
255
+ },
256
+ {
257
+ "components": [
258
+ {
259
+ "internalType": "uint32",
260
+ "name": "maxMessageSize",
261
+ "type": "uint32"
262
+ },
263
+ {
264
+ "internalType": "address",
265
+ "name": "executor",
266
+ "type": "address"
267
+ }
268
+ ],
269
+ "internalType": "struct ExecutorConfig",
270
+ "name": "config",
271
+ "type": "tuple"
272
+ }
273
+ ],
274
+ "indexed": false,
275
+ "internalType": "struct SetDefaultExecutorConfigParam[]",
276
+ "name": "params",
277
+ "type": "tuple[]"
278
+ }
279
+ ],
280
+ "name": "DefaultExecutorConfigsSet",
281
+ "type": "event"
282
+ },
283
+ {
284
+ "anonymous": false,
285
+ "inputs": [
286
+ {
287
+ "components": [
288
+ {
289
+ "internalType": "uint32",
290
+ "name": "eid",
291
+ "type": "uint32"
292
+ },
293
+ {
294
+ "components": [
295
+ {
296
+ "internalType": "uint64",
297
+ "name": "confirmations",
298
+ "type": "uint64"
299
+ },
300
+ {
301
+ "internalType": "uint8",
302
+ "name": "requiredDVNCount",
303
+ "type": "uint8"
304
+ },
305
+ {
306
+ "internalType": "uint8",
307
+ "name": "optionalDVNCount",
308
+ "type": "uint8"
309
+ },
310
+ {
311
+ "internalType": "uint8",
312
+ "name": "optionalDVNThreshold",
313
+ "type": "uint8"
314
+ },
315
+ {
316
+ "internalType": "address[]",
317
+ "name": "requiredDVNs",
318
+ "type": "address[]"
319
+ },
320
+ {
321
+ "internalType": "address[]",
322
+ "name": "optionalDVNs",
323
+ "type": "address[]"
324
+ }
325
+ ],
326
+ "internalType": "struct UlnConfig",
327
+ "name": "config",
328
+ "type": "tuple"
329
+ }
330
+ ],
331
+ "indexed": false,
332
+ "internalType": "struct SetDefaultUlnConfigParam[]",
333
+ "name": "params",
334
+ "type": "tuple[]"
335
+ }
336
+ ],
337
+ "name": "DefaultUlnConfigsSet",
338
+ "type": "event"
339
+ },
340
+ {
341
+ "anonymous": false,
342
+ "inputs": [
343
+ {
344
+ "indexed": false,
345
+ "internalType": "address",
346
+ "name": "oapp",
347
+ "type": "address"
348
+ },
349
+ {
350
+ "indexed": false,
351
+ "internalType": "uint32",
352
+ "name": "eid",
353
+ "type": "uint32"
354
+ },
355
+ {
356
+ "components": [
357
+ {
358
+ "internalType": "uint32",
359
+ "name": "maxMessageSize",
360
+ "type": "uint32"
361
+ },
362
+ {
363
+ "internalType": "address",
364
+ "name": "executor",
365
+ "type": "address"
366
+ }
367
+ ],
368
+ "indexed": false,
369
+ "internalType": "struct ExecutorConfig",
370
+ "name": "config",
371
+ "type": "tuple"
372
+ }
373
+ ],
374
+ "name": "ExecutorConfigSet",
375
+ "type": "event"
376
+ },
377
+ {
378
+ "anonymous": false,
379
+ "inputs": [
380
+ {
381
+ "indexed": false,
382
+ "internalType": "address",
383
+ "name": "executor",
384
+ "type": "address"
385
+ },
386
+ {
387
+ "indexed": false,
388
+ "internalType": "uint256",
389
+ "name": "fee",
390
+ "type": "uint256"
391
+ }
392
+ ],
393
+ "name": "ExecutorFeePaid",
394
+ "type": "event"
395
+ },
396
+ {
397
+ "anonymous": false,
398
+ "inputs": [
399
+ {
400
+ "indexed": false,
401
+ "internalType": "address",
402
+ "name": "lzToken",
403
+ "type": "address"
404
+ },
405
+ {
406
+ "indexed": false,
407
+ "internalType": "address",
408
+ "name": "receiver",
409
+ "type": "address"
410
+ },
411
+ {
412
+ "indexed": false,
413
+ "internalType": "uint256",
414
+ "name": "amount",
415
+ "type": "uint256"
416
+ }
417
+ ],
418
+ "name": "LzTokenFeeWithdrawn",
419
+ "type": "event"
420
+ },
421
+ {
422
+ "anonymous": false,
423
+ "inputs": [
424
+ {
425
+ "indexed": false,
426
+ "internalType": "address",
427
+ "name": "worker",
428
+ "type": "address"
429
+ },
430
+ {
431
+ "indexed": false,
432
+ "internalType": "address",
433
+ "name": "receiver",
434
+ "type": "address"
435
+ },
436
+ {
437
+ "indexed": false,
438
+ "internalType": "uint256",
439
+ "name": "amount",
440
+ "type": "uint256"
441
+ }
442
+ ],
443
+ "name": "NativeFeeWithdrawn",
444
+ "type": "event"
445
+ },
446
+ {
447
+ "anonymous": false,
448
+ "inputs": [
449
+ {
450
+ "indexed": true,
451
+ "internalType": "address",
452
+ "name": "previousOwner",
453
+ "type": "address"
454
+ },
455
+ {
456
+ "indexed": true,
457
+ "internalType": "address",
458
+ "name": "newOwner",
459
+ "type": "address"
460
+ }
461
+ ],
462
+ "name": "OwnershipTransferred",
463
+ "type": "event"
464
+ },
465
+ {
466
+ "anonymous": false,
467
+ "inputs": [
468
+ {
469
+ "indexed": false,
470
+ "internalType": "uint256",
471
+ "name": "newTreasuryNativeFeeCap",
472
+ "type": "uint256"
473
+ }
474
+ ],
475
+ "name": "TreasuryNativeFeeCapSet",
476
+ "type": "event"
477
+ },
478
+ {
479
+ "anonymous": false,
480
+ "inputs": [
481
+ {
482
+ "indexed": false,
483
+ "internalType": "address",
484
+ "name": "treasury",
485
+ "type": "address"
486
+ }
487
+ ],
488
+ "name": "TreasurySet",
489
+ "type": "event"
490
+ },
491
+ {
492
+ "anonymous": false,
493
+ "inputs": [
494
+ {
495
+ "indexed": false,
496
+ "internalType": "address",
497
+ "name": "oapp",
498
+ "type": "address"
499
+ },
500
+ {
501
+ "indexed": false,
502
+ "internalType": "uint32",
503
+ "name": "eid",
504
+ "type": "uint32"
505
+ },
506
+ {
507
+ "components": [
508
+ {
509
+ "internalType": "uint64",
510
+ "name": "confirmations",
511
+ "type": "uint64"
512
+ },
513
+ {
514
+ "internalType": "uint8",
515
+ "name": "requiredDVNCount",
516
+ "type": "uint8"
517
+ },
518
+ {
519
+ "internalType": "uint8",
520
+ "name": "optionalDVNCount",
521
+ "type": "uint8"
522
+ },
523
+ {
524
+ "internalType": "uint8",
525
+ "name": "optionalDVNThreshold",
526
+ "type": "uint8"
527
+ },
528
+ {
529
+ "internalType": "address[]",
530
+ "name": "requiredDVNs",
531
+ "type": "address[]"
532
+ },
533
+ {
534
+ "internalType": "address[]",
535
+ "name": "optionalDVNs",
536
+ "type": "address[]"
537
+ }
538
+ ],
539
+ "indexed": false,
540
+ "internalType": "struct UlnConfig",
541
+ "name": "config",
542
+ "type": "tuple"
543
+ }
544
+ ],
545
+ "name": "UlnConfigSet",
546
+ "type": "event"
547
+ },
548
+ {
549
+ "inputs": [
550
+ {
551
+ "internalType": "address",
552
+ "name": "oapp",
553
+ "type": "address"
554
+ },
555
+ {
556
+ "internalType": "uint32",
557
+ "name": "eid",
558
+ "type": "uint32"
559
+ }
560
+ ],
561
+ "name": "executorConfigs",
562
+ "outputs": [
563
+ {
564
+ "internalType": "uint32",
565
+ "name": "maxMessageSize",
566
+ "type": "uint32"
567
+ },
568
+ {
569
+ "internalType": "address",
570
+ "name": "executor",
571
+ "type": "address"
572
+ }
573
+ ],
574
+ "stateMutability": "view",
575
+ "type": "function"
576
+ },
577
+ {
578
+ "inputs": [
579
+ {
580
+ "internalType": "address",
581
+ "name": "worker",
582
+ "type": "address"
583
+ }
584
+ ],
585
+ "name": "fees",
586
+ "outputs": [
587
+ {
588
+ "internalType": "uint256",
589
+ "name": "",
590
+ "type": "uint256"
591
+ }
592
+ ],
593
+ "stateMutability": "view",
594
+ "type": "function"
595
+ },
596
+ {
597
+ "inputs": [
598
+ {
599
+ "internalType": "address",
600
+ "name": "_oapp",
601
+ "type": "address"
602
+ },
603
+ {
604
+ "internalType": "uint32",
605
+ "name": "_remoteEid",
606
+ "type": "uint32"
607
+ }
608
+ ],
609
+ "name": "getAppUlnConfig",
610
+ "outputs": [
611
+ {
612
+ "components": [
613
+ {
614
+ "internalType": "uint64",
615
+ "name": "confirmations",
616
+ "type": "uint64"
617
+ },
618
+ {
619
+ "internalType": "uint8",
620
+ "name": "requiredDVNCount",
621
+ "type": "uint8"
622
+ },
623
+ {
624
+ "internalType": "uint8",
625
+ "name": "optionalDVNCount",
626
+ "type": "uint8"
627
+ },
628
+ {
629
+ "internalType": "uint8",
630
+ "name": "optionalDVNThreshold",
631
+ "type": "uint8"
632
+ },
633
+ {
634
+ "internalType": "address[]",
635
+ "name": "requiredDVNs",
636
+ "type": "address[]"
637
+ },
638
+ {
639
+ "internalType": "address[]",
640
+ "name": "optionalDVNs",
641
+ "type": "address[]"
642
+ }
643
+ ],
644
+ "internalType": "struct UlnConfig",
645
+ "name": "",
646
+ "type": "tuple"
647
+ }
648
+ ],
649
+ "stateMutability": "view",
650
+ "type": "function"
651
+ },
652
+ {
653
+ "inputs": [
654
+ {
655
+ "internalType": "uint32",
656
+ "name": "_eid",
657
+ "type": "uint32"
658
+ },
659
+ {
660
+ "internalType": "address",
661
+ "name": "_oapp",
662
+ "type": "address"
663
+ },
664
+ {
665
+ "internalType": "uint32",
666
+ "name": "_configType",
667
+ "type": "uint32"
668
+ }
669
+ ],
670
+ "name": "getConfig",
671
+ "outputs": [
672
+ {
673
+ "internalType": "bytes",
674
+ "name": "",
675
+ "type": "bytes"
676
+ }
677
+ ],
678
+ "stateMutability": "view",
679
+ "type": "function"
680
+ },
681
+ {
682
+ "inputs": [
683
+ {
684
+ "internalType": "address",
685
+ "name": "_oapp",
686
+ "type": "address"
687
+ },
688
+ {
689
+ "internalType": "uint32",
690
+ "name": "_remoteEid",
691
+ "type": "uint32"
692
+ }
693
+ ],
694
+ "name": "getExecutorConfig",
695
+ "outputs": [
696
+ {
697
+ "components": [
698
+ {
699
+ "internalType": "uint32",
700
+ "name": "maxMessageSize",
701
+ "type": "uint32"
702
+ },
703
+ {
704
+ "internalType": "address",
705
+ "name": "executor",
706
+ "type": "address"
707
+ }
708
+ ],
709
+ "internalType": "struct ExecutorConfig",
710
+ "name": "rtnConfig",
711
+ "type": "tuple"
712
+ }
713
+ ],
714
+ "stateMutability": "view",
715
+ "type": "function"
716
+ },
717
+ {
718
+ "inputs": [
719
+ {
720
+ "internalType": "address",
721
+ "name": "_oapp",
722
+ "type": "address"
723
+ },
724
+ {
725
+ "internalType": "uint32",
726
+ "name": "_remoteEid",
727
+ "type": "uint32"
728
+ }
729
+ ],
730
+ "name": "getUlnConfig",
731
+ "outputs": [
732
+ {
733
+ "components": [
734
+ {
735
+ "internalType": "uint64",
736
+ "name": "confirmations",
737
+ "type": "uint64"
738
+ },
739
+ {
740
+ "internalType": "uint8",
741
+ "name": "requiredDVNCount",
742
+ "type": "uint8"
743
+ },
744
+ {
745
+ "internalType": "uint8",
746
+ "name": "optionalDVNCount",
747
+ "type": "uint8"
748
+ },
749
+ {
750
+ "internalType": "uint8",
751
+ "name": "optionalDVNThreshold",
752
+ "type": "uint8"
753
+ },
754
+ {
755
+ "internalType": "address[]",
756
+ "name": "requiredDVNs",
757
+ "type": "address[]"
758
+ },
759
+ {
760
+ "internalType": "address[]",
761
+ "name": "optionalDVNs",
762
+ "type": "address[]"
763
+ }
764
+ ],
765
+ "internalType": "struct UlnConfig",
766
+ "name": "rtnConfig",
767
+ "type": "tuple"
768
+ }
769
+ ],
770
+ "stateMutability": "view",
771
+ "type": "function"
772
+ },
773
+ {
774
+ "inputs": [
775
+ {
776
+ "internalType": "uint32",
777
+ "name": "_eid",
778
+ "type": "uint32"
779
+ }
780
+ ],
781
+ "name": "isSupportedEid",
782
+ "outputs": [
783
+ {
784
+ "internalType": "bool",
785
+ "name": "",
786
+ "type": "bool"
787
+ }
788
+ ],
789
+ "stateMutability": "view",
790
+ "type": "function"
791
+ },
792
+ {
793
+ "inputs": [],
794
+ "name": "messageLibType",
795
+ "outputs": [
796
+ {
797
+ "internalType": "enum MessageLibType",
798
+ "name": "",
799
+ "type": "uint8"
800
+ }
801
+ ],
802
+ "stateMutability": "pure",
803
+ "type": "function"
804
+ },
805
+ {
806
+ "inputs": [],
807
+ "name": "owner",
808
+ "outputs": [
809
+ {
810
+ "internalType": "address",
811
+ "name": "",
812
+ "type": "address"
813
+ }
814
+ ],
815
+ "stateMutability": "view",
816
+ "type": "function"
817
+ },
818
+ {
819
+ "inputs": [
820
+ {
821
+ "components": [
822
+ {
823
+ "internalType": "uint64",
824
+ "name": "nonce",
825
+ "type": "uint64"
826
+ },
827
+ {
828
+ "internalType": "uint32",
829
+ "name": "srcEid",
830
+ "type": "uint32"
831
+ },
832
+ {
833
+ "internalType": "address",
834
+ "name": "sender",
835
+ "type": "address"
836
+ },
837
+ {
838
+ "internalType": "uint32",
839
+ "name": "dstEid",
840
+ "type": "uint32"
841
+ },
842
+ {
843
+ "internalType": "bytes32",
844
+ "name": "receiver",
845
+ "type": "bytes32"
846
+ },
847
+ {
848
+ "internalType": "bytes32",
849
+ "name": "guid",
850
+ "type": "bytes32"
851
+ },
852
+ {
853
+ "internalType": "bytes",
854
+ "name": "message",
855
+ "type": "bytes"
856
+ }
857
+ ],
858
+ "internalType": "struct Packet",
859
+ "name": "_packet",
860
+ "type": "tuple"
861
+ },
862
+ {
863
+ "internalType": "bytes",
864
+ "name": "_options",
865
+ "type": "bytes"
866
+ },
867
+ {
868
+ "internalType": "bool",
869
+ "name": "_payInLzToken",
870
+ "type": "bool"
871
+ }
872
+ ],
873
+ "name": "quote",
874
+ "outputs": [
875
+ {
876
+ "components": [
877
+ {
878
+ "internalType": "uint256",
879
+ "name": "nativeFee",
880
+ "type": "uint256"
881
+ },
882
+ {
883
+ "internalType": "uint256",
884
+ "name": "lzTokenFee",
885
+ "type": "uint256"
886
+ }
887
+ ],
888
+ "internalType": "struct MessagingFee",
889
+ "name": "",
890
+ "type": "tuple"
891
+ }
892
+ ],
893
+ "stateMutability": "view",
894
+ "type": "function"
895
+ },
896
+ {
897
+ "inputs": [],
898
+ "name": "renounceOwnership",
899
+ "outputs": [],
900
+ "stateMutability": "nonpayable",
901
+ "type": "function"
902
+ },
903
+ {
904
+ "inputs": [
905
+ {
906
+ "components": [
907
+ {
908
+ "internalType": "uint64",
909
+ "name": "nonce",
910
+ "type": "uint64"
911
+ },
912
+ {
913
+ "internalType": "uint32",
914
+ "name": "srcEid",
915
+ "type": "uint32"
916
+ },
917
+ {
918
+ "internalType": "address",
919
+ "name": "sender",
920
+ "type": "address"
921
+ },
922
+ {
923
+ "internalType": "uint32",
924
+ "name": "dstEid",
925
+ "type": "uint32"
926
+ },
927
+ {
928
+ "internalType": "bytes32",
929
+ "name": "receiver",
930
+ "type": "bytes32"
931
+ },
932
+ {
933
+ "internalType": "bytes32",
934
+ "name": "guid",
935
+ "type": "bytes32"
936
+ },
937
+ {
938
+ "internalType": "bytes",
939
+ "name": "message",
940
+ "type": "bytes"
941
+ }
942
+ ],
943
+ "internalType": "struct Packet",
944
+ "name": "_packet",
945
+ "type": "tuple"
946
+ },
947
+ {
948
+ "internalType": "bytes",
949
+ "name": "_options",
950
+ "type": "bytes"
951
+ },
952
+ {
953
+ "internalType": "bool",
954
+ "name": "_payInLzToken",
955
+ "type": "bool"
956
+ }
957
+ ],
958
+ "name": "send",
959
+ "outputs": [
960
+ {
961
+ "components": [
962
+ {
963
+ "internalType": "uint256",
964
+ "name": "nativeFee",
965
+ "type": "uint256"
966
+ },
967
+ {
968
+ "internalType": "uint256",
969
+ "name": "lzTokenFee",
970
+ "type": "uint256"
971
+ }
972
+ ],
973
+ "internalType": "struct MessagingFee",
974
+ "name": "",
975
+ "type": "tuple"
976
+ },
977
+ {
978
+ "internalType": "bytes",
979
+ "name": "",
980
+ "type": "bytes"
981
+ }
982
+ ],
983
+ "stateMutability": "nonpayable",
984
+ "type": "function"
985
+ },
986
+ {
987
+ "inputs": [
988
+ {
989
+ "internalType": "address",
990
+ "name": "_oapp",
991
+ "type": "address"
992
+ },
993
+ {
994
+ "components": [
995
+ {
996
+ "internalType": "uint32",
997
+ "name": "eid",
998
+ "type": "uint32"
999
+ },
1000
+ {
1001
+ "internalType": "uint32",
1002
+ "name": "configType",
1003
+ "type": "uint32"
1004
+ },
1005
+ {
1006
+ "internalType": "bytes",
1007
+ "name": "config",
1008
+ "type": "bytes"
1009
+ }
1010
+ ],
1011
+ "internalType": "struct SetConfigParam[]",
1012
+ "name": "_params",
1013
+ "type": "tuple[]"
1014
+ }
1015
+ ],
1016
+ "name": "setConfig",
1017
+ "outputs": [],
1018
+ "stateMutability": "nonpayable",
1019
+ "type": "function"
1020
+ },
1021
+ {
1022
+ "inputs": [
1023
+ {
1024
+ "components": [
1025
+ {
1026
+ "internalType": "uint32",
1027
+ "name": "eid",
1028
+ "type": "uint32"
1029
+ },
1030
+ {
1031
+ "components": [
1032
+ {
1033
+ "internalType": "uint32",
1034
+ "name": "maxMessageSize",
1035
+ "type": "uint32"
1036
+ },
1037
+ {
1038
+ "internalType": "address",
1039
+ "name": "executor",
1040
+ "type": "address"
1041
+ }
1042
+ ],
1043
+ "internalType": "struct ExecutorConfig",
1044
+ "name": "config",
1045
+ "type": "tuple"
1046
+ }
1047
+ ],
1048
+ "internalType": "struct SetDefaultExecutorConfigParam[]",
1049
+ "name": "_params",
1050
+ "type": "tuple[]"
1051
+ }
1052
+ ],
1053
+ "name": "setDefaultExecutorConfigs",
1054
+ "outputs": [],
1055
+ "stateMutability": "nonpayable",
1056
+ "type": "function"
1057
+ },
1058
+ {
1059
+ "inputs": [
1060
+ {
1061
+ "components": [
1062
+ {
1063
+ "internalType": "uint32",
1064
+ "name": "eid",
1065
+ "type": "uint32"
1066
+ },
1067
+ {
1068
+ "components": [
1069
+ {
1070
+ "internalType": "uint64",
1071
+ "name": "confirmations",
1072
+ "type": "uint64"
1073
+ },
1074
+ {
1075
+ "internalType": "uint8",
1076
+ "name": "requiredDVNCount",
1077
+ "type": "uint8"
1078
+ },
1079
+ {
1080
+ "internalType": "uint8",
1081
+ "name": "optionalDVNCount",
1082
+ "type": "uint8"
1083
+ },
1084
+ {
1085
+ "internalType": "uint8",
1086
+ "name": "optionalDVNThreshold",
1087
+ "type": "uint8"
1088
+ },
1089
+ {
1090
+ "internalType": "address[]",
1091
+ "name": "requiredDVNs",
1092
+ "type": "address[]"
1093
+ },
1094
+ {
1095
+ "internalType": "address[]",
1096
+ "name": "optionalDVNs",
1097
+ "type": "address[]"
1098
+ }
1099
+ ],
1100
+ "internalType": "struct UlnConfig",
1101
+ "name": "config",
1102
+ "type": "tuple"
1103
+ }
1104
+ ],
1105
+ "internalType": "struct SetDefaultUlnConfigParam[]",
1106
+ "name": "_params",
1107
+ "type": "tuple[]"
1108
+ }
1109
+ ],
1110
+ "name": "setDefaultUlnConfigs",
1111
+ "outputs": [],
1112
+ "stateMutability": "nonpayable",
1113
+ "type": "function"
1114
+ },
1115
+ {
1116
+ "inputs": [
1117
+ {
1118
+ "internalType": "address",
1119
+ "name": "_treasury",
1120
+ "type": "address"
1121
+ }
1122
+ ],
1123
+ "name": "setTreasury",
1124
+ "outputs": [],
1125
+ "stateMutability": "nonpayable",
1126
+ "type": "function"
1127
+ },
1128
+ {
1129
+ "inputs": [
1130
+ {
1131
+ "internalType": "uint256",
1132
+ "name": "_newTreasuryNativeFeeCap",
1133
+ "type": "uint256"
1134
+ }
1135
+ ],
1136
+ "name": "setTreasuryNativeFeeCap",
1137
+ "outputs": [],
1138
+ "stateMutability": "nonpayable",
1139
+ "type": "function"
1140
+ },
1141
+ {
1142
+ "inputs": [
1143
+ {
1144
+ "internalType": "bytes4",
1145
+ "name": "_interfaceId",
1146
+ "type": "bytes4"
1147
+ }
1148
+ ],
1149
+ "name": "supportsInterface",
1150
+ "outputs": [
1151
+ {
1152
+ "internalType": "bool",
1153
+ "name": "",
1154
+ "type": "bool"
1155
+ }
1156
+ ],
1157
+ "stateMutability": "view",
1158
+ "type": "function"
1159
+ },
1160
+ {
1161
+ "inputs": [
1162
+ {
1163
+ "internalType": "address",
1164
+ "name": "newOwner",
1165
+ "type": "address"
1166
+ }
1167
+ ],
1168
+ "name": "transferOwnership",
1169
+ "outputs": [],
1170
+ "stateMutability": "nonpayable",
1171
+ "type": "function"
1172
+ },
1173
+ {
1174
+ "inputs": [],
1175
+ "name": "treasury",
1176
+ "outputs": [
1177
+ {
1178
+ "internalType": "address",
1179
+ "name": "",
1180
+ "type": "address"
1181
+ }
1182
+ ],
1183
+ "stateMutability": "view",
1184
+ "type": "function"
1185
+ },
1186
+ {
1187
+ "inputs": [],
1188
+ "name": "version",
1189
+ "outputs": [
1190
+ {
1191
+ "internalType": "uint64",
1192
+ "name": "major",
1193
+ "type": "uint64"
1194
+ },
1195
+ {
1196
+ "internalType": "uint8",
1197
+ "name": "minor",
1198
+ "type": "uint8"
1199
+ },
1200
+ {
1201
+ "internalType": "uint8",
1202
+ "name": "endpointVersion",
1203
+ "type": "uint8"
1204
+ }
1205
+ ],
1206
+ "stateMutability": "pure",
1207
+ "type": "function"
1208
+ },
1209
+ {
1210
+ "inputs": [
1211
+ {
1212
+ "internalType": "address",
1213
+ "name": "_to",
1214
+ "type": "address"
1215
+ },
1216
+ {
1217
+ "internalType": "uint256",
1218
+ "name": "_amount",
1219
+ "type": "uint256"
1220
+ }
1221
+ ],
1222
+ "name": "withdrawFee",
1223
+ "outputs": [],
1224
+ "stateMutability": "nonpayable",
1225
+ "type": "function"
1226
+ },
1227
+ {
1228
+ "inputs": [
1229
+ {
1230
+ "internalType": "address",
1231
+ "name": "_lzToken",
1232
+ "type": "address"
1233
+ },
1234
+ {
1235
+ "internalType": "address",
1236
+ "name": "_to",
1237
+ "type": "address"
1238
+ },
1239
+ {
1240
+ "internalType": "uint256",
1241
+ "name": "_amount",
1242
+ "type": "uint256"
1243
+ }
1244
+ ],
1245
+ "name": "withdrawLzTokenFee",
1246
+ "outputs": [],
1247
+ "stateMutability": "nonpayable",
1248
+ "type": "function"
1249
+ },
1250
+ {
1251
+ "stateMutability": "payable",
1252
+ "type": "receive"
1253
+ }
1254
+ ],
1255
+ "bytecode": "0x60e06040523480156200001157600080fd5b50d380156200001f57600080fd5b50d280156200002d57600080fd5b5060405162005fb038038062005fb0833981016040819052620000509162000145565b82828282836001600160a01b031663416ecebf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000093573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b9919062000195565b6001600160a01b03821660805263ffffffff811660a0528383620000dd33620000f5565b60c09190915260025550620001c49650505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156200015b57600080fd5b83516001600160a81b03811681146200017357600080fd5b60208501516040909501516001600160a01b0391909116969495509392505050565b600060208284031215620001a857600080fd5b815163ffffffff81168114620001bd57600080fd5b9392505050565b60805160a05160c051615da36200020d600039600081816122b00152612b5401526000505060008181610a4001528181610b85015281816110e701526119de0152615da36000f3fe6080604052600436106101845760003560e01c806361d027b3116100d6578063d15b0d491161007f578063f2fde38b11610059578063f2fde38b1461071b578063faaebd2114610755578063fd9be522146107aa57600080fd5b8063d15b0d4914610660578063d80e9bd91461069a578063f0f44260146106e157600080fd5b80638da5cb5b116100b05780638da5cb5b1461059a5780639c33abf7146105df578063c14c43491461062657600080fd5b806361d027b3146104c55780636750cd4c14610531578063715018a61461056b57600080fd5b806329460b0b1161013857806343ea4fa91161011257806343ea4fa91461039b5780634d963200146103d557806354fd4d501461047e57600080fd5b806329460b0b146102d257806339e3f9381461030c5780634389e58f1461035357600080fd5b80631881d94d116101695780631881d94d14610226578063200175f71461025c57806320efd7221461029857600080fd5b806301ffc9a714610190578063188183f4146101df57600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b50d380156101a957600080fd5b50d280156101b657600080fd5b506101ca6101c53660046147de565b6107e4565b60405190151581526020015b60405180910390f35b3480156101eb57600080fd5b50d380156101f857600080fd5b50d2801561020557600080fd5b5061021961021436600461488e565b6108c9565b6040516101d691906148dd565b34801561023257600080fd5b50d3801561023f57600080fd5b50d2801561024c57600080fd5b5060006040516101d69190614910565b34801561026857600080fd5b50d3801561027557600080fd5b50d2801561028257600080fd5b50610296610291366004614951565b6109d6565b005b3480156102a457600080fd5b50d380156102b157600080fd5b50d280156102be57600080fd5b506102966102cd3660046149f1565b610b83565b3480156102de57600080fd5b50d380156102eb57600080fd5b50d280156102f857600080fd5b50610296610307366004614a5c565b610d41565b34801561031857600080fd5b50d3801561032557600080fd5b50d2801561033257600080fd5b5061034661034136600461488e565b610f2e565b6040516101d69190614b61565b34801561035f57600080fd5b50d3801561036c57600080fd5b50d2801561037957600080fd5b5061038d610388366004614b8d565b6110cf565b6040516101d6929190614cab565b3480156103a757600080fd5b50d380156103b457600080fd5b50d280156103c157600080fd5b506103466103d036600461488e565b6111c9565b3480156103e157600080fd5b50d380156103ee57600080fd5b50d280156103fb57600080fd5b5061044d61040a36600461488e565b600460209081526000928352604080842090915290825290205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101d6565b34801561048a57600080fd5b50d3801561049757600080fd5b50d280156104a457600080fd5b506040805160038152600060208201526002918101919091526060016101d6565b3480156104d157600080fd5b50d380156104de57600080fd5b50d280156104eb57600080fd5b5060035461050c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d6565b34801561053d57600080fd5b50d3801561054a57600080fd5b50d2801561055757600080fd5b506101ca610566366004614ccf565b611583565b34801561057757600080fd5b50d3801561058457600080fd5b50d2801561059157600080fd5b5061029661158e565b3480156105a657600080fd5b50d380156105b357600080fd5b50d280156105c057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661050c565b3480156105eb57600080fd5b50d380156105f857600080fd5b50d2801561060557600080fd5b50610619610614366004614cec565b6115a2565b6040516101d69190614d4d565b34801561063257600080fd5b50d3801561063f57600080fd5b50d2801561064c57600080fd5b5061029661065b366004614d60565b611689565b34801561066c57600080fd5b50d3801561067957600080fd5b50d2801561068657600080fd5b50610296610695366004614dd5565b61180b565b3480156106a657600080fd5b50d380156106b357600080fd5b50d280156106c057600080fd5b506106d46106cf366004614b8d565b611899565b6040516101d69190614dee565b3480156106ed57600080fd5b50d380156106fa57600080fd5b50d2801561070757600080fd5b50610296610716366004614e05565b611909565b34801561072757600080fd5b50d3801561073457600080fd5b50d2801561074157600080fd5b50610296610750366004614e05565b61191d565b34801561076157600080fd5b50d3801561076e57600080fd5b50d2801561077b57600080fd5b5061079c61078a366004614e05565b60056020526000908152604090205481565b6040519081526020016101d6565b3480156107b657600080fd5b50d380156107c357600080fd5b50d280156107d057600080fd5b506102966107df366004614e3f565b6119d1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061087757507fffffffff0000000000000000000000000000000000000000000000000000000082167fb6e9ace300000000000000000000000000000000000000000000000000000000145b806108c357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b604080518082019091526000808252602082015263ffffffff80831660008181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845260048352818420948452939091528120805492939092169081900361095a57825463ffffffff1661095c565b805b63ffffffff1684528154640100000000900473ffffffffffffffffffffffffffffffffffffffff16806109ae578354640100000000900473ffffffffffffffffffffffffffffffffffffffff166109b0565b805b73ffffffffffffffffffffffffffffffffffffffff166020860152509295945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610a27576040517f885762a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd9190614e81565b73ffffffffffffffffffffffffffffffffffffffff1603610b1a576040517fe695d04400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b25838383611acb565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527fe081464b7278501267de69fa85b7b9560b0ae05d5fbfaab9b1986c70356e2efe906060015b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610bf2576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610d3b5736838383818110610c1057610c10614e9e565b9050602002810190610c229190614ecd565b9050610c39610c346020830183614ccf565b611b3e565b6001610c4b6040830160208401614ccf565b63ffffffff1603610c8b57610c86610c666020830183614ccf565b86610c746040850185614f0b565b810190610c81919061503a565b611b85565b610d28565b6002610c9d6040830160208401614ccf565b63ffffffff1603610cd857610c86610cb86020830183614ccf565b86610cc66040850185614f0b565b810190610cd3919061521f565b611c32565b610ce86040820160208301614ccf565b6040517fba97c1fa00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5080610d3381615283565b915050610bf5565b50505050565b610d49611c7b565b60005b81811015610ef05736838383818110610d6757610d67614e9e565b9050602002810190610d7991906152bb565b905060ff610d8a60208301836152ef565b610d9b906040810190602001615323565b60ff1603610dd5576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff610de460208301836152ef565b610df5906060810190604001615323565b60ff1603610e2f576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff610e4560208301836152ef565b610e5390602081019061533e565b67ffffffffffffffff1603610e94576040517f503667ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb2610ea460208301836152ef565b610ead90615359565b611cfc565b610edf6000610ec46020840184614ccf565b610ed160208501856152ef565b610eda90615359565b611d4d565b50610ee981615283565b9050610d4c565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b5608282604051610f22929190615417565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a0100000000000000000000909104166060820152928101805485518185028101850190965280865293949193608086019383018282801561104f57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611024575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156110be57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611093575b505050505081525050905092915050565b604080518082019091526000808252602082015260607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314611154576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806111628888886120e1565b909250905060008061119461117d60608c0160408d01614e05565b61118d60808d0160608e01614ccf565b858a6121ae565b90925090506111a382846155b7565b604080518082019091529081526020810191909152945091925050505b94509492505050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff168061127957825467ffffffffffffffff168452611298565b67ffffffffffffffff818116146112985767ffffffffffffffff811684525b815468010000000000000000900460ff1661134e57825468010000000000000000900460ff1615611349578260010180548060200260200160405190810160405280929190818152602001828054801561132857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116112fd575b50505050506080850152825468010000000000000000900460ff1660208501525b6113ec565b815468010000000000000000900460ff908116146113ec57816001018054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a0575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff166114bb5782546901000000000000000000900460ff16156114b6578260020180548060200260200160405190810160405280929190818152602001828054801561147e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611453575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b611571565b81546901000000000000000000900460ff90811614611571578160020180548060200260200160405190810160405280929190818152602001828054801561153957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161150e575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b61157a84611cfc565b50505092915050565b60006108c38261233c565b611596611c7b565b6115a060006123a3565b565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff831601611601576115db83856108c9565b6040516020016115eb91906148dd565b6040516020818303038152906040529050611682565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff8316016116485761163883856111c9565b6040516020016115eb9190614b61565b6040517fba97c1fa00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610d1f565b9392505050565b611691611c7b565b60005b818110156117d957368383838181106116af576116af614e9e565b60609081029290920192506000916116cd9150830160408401614e05565b73ffffffffffffffffffffffffffffffffffffffff160361171a576040517f20e9d05a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61172a6040820160208301614ccf565b63ffffffff16600003611769576040517f49cfac4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808052600460209081528201907f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec906117a48385614ccf565b63ffffffff16815260208101919091526040016000206117c482826155ca565b90505050806117d290615283565b9050611694565b507f2b001e1c6683bf79cc52891bd7215b204c787d18134fc7f3d21b4f32a49e47de8282604051610f22929190615662565b611813611c7b565b60025481111561185d576002546040517f34084fb8000000000000000000000000000000000000000000000000000000008152610d1f918391600401918252602082015260400190565b60028190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b7842906020015b60405180910390a150565b60408051808201909152600080825260208201526000806118ea6118c36060890160408a01614e05565b6118d360808a0160608b01614ccf565b6118e060c08b018b614f0b565b9050878a8a612418565b604080518082019091529182526020820152925050505b949350505050565b611911611c7b565b61191a8161251e565b50565b611925611c7b565b73ffffffffffffffffffffffffffffffffffffffff81166119c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d1f565b61191a816123a3565b6119da81612591565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6b9190614e81565b9050611a788184846125fb565b6040805133815273ffffffffffffffffffffffffffffffffffffffff851660208201529081018390527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a666988390606001610b76565b73ffffffffffffffffffffffffffffffffffffffff8216611b18576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b3973ffffffffffffffffffffffffffffffffffffffff8416838361262b565b505050565b611b478161233c565b61191a576040517ff0c10d0400000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610d1f565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260046020908152604080832063ffffffff8089168552908352928190208551815493870151909516640100000000027fffffffffffffffff0000000000000000000000000000000000000000000000009093169490931693909317179055517f779cb2dd9d2bb1be1737d05435d744facbfb84a2a4912e21379d39beddcdc80590610b76908490869085906156ef565b611c3d828483611d4d565b611c4782846111c9565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f5081828483604051610b769392919061574b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d1f565b602081015160ff16158015611d165750606081015160ff16155b1561191a576040517fce2c375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff9081161480611d685750602081015160ff16155b15611daf5760808101515115611daa576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2e565b806020015160ff16816080015151141580611dea57506002611dd3600160ff615786565b611ddd919061579f565b60ff16816020015160ff16115b15611e21576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2e81608001516126b8565b604081015160ff9081161480611e495750604081015160ff16155b15611ecf5760a08101515115611e8b576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615611eca576040517f38682fa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fa6565b806040015160ff168160a0015151141580611f0a57506002611ef3600160ff615786565b611efd919061579f565b60ff16816040015160ff16115b15611f41576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161580611f625750806040015160ff16816060015160ff16115b15611f99576040517f38682fa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fa68160a001516126b8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a01000000000000000000009590911694909402939093178355608084015180518594936120bd93908501920190614748565b5060a082015180516120d9916002840191602090910190614748565b505050505050565b606060008060006120f2868661275c565b9092509050600061211c61210c60608a0160408b01614e05565b61021460808b0160608c01614ccf565b9050600061212d60c08a018a614f0b565b9050905061214581836000015163ffffffff16612775565b60208201516121759061215e60808c0160608d01614ccf565b61216e60608d0160408e01614e05565b84886127bd565b61217f90866155b7565b945060008061218e8b866128f6565b909250905061219d82886155b7565b909b909a5098505050505050505050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff16156111c05760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd51c54860000000000000000000000000000000000000000000000000000000017905260035491925060009182916122d89173ffffffffffffffffffffffffffffffffffffffff16907f000000000000000000000000000000000000000000000000000000000000000090849087612919565b915091506122e8878784846129ca565b909550935084156123305760035473ffffffffffffffffffffffffffffffffffffffff166000908152600560205260408120805487929061232a9084906155b7565b90915550505b50505094509492505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff161515806116825750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080612428868661275c565b9150915060006124398b8b84612a45565b905060006124478c8c6108c9565b905061245d8a826000015163ffffffff16612775565b806020015173ffffffffffffffffffffffffffffffffffffffff1663709eb6648c8e8d886040518563ffffffff1660e01b81526004016124a094939291906157e8565b602060405180830381865afa1580156124bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e19190615833565b6124eb90836155b7565b91506000806124fc8e8e868e612a52565b909250905061250b82856155b7565b9e909d509b505050505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161188e565b33600090815260056020526040902054808211156125e5576040517f34084fb80000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610d1f565b3360009081526005602052604090209190039055565b73ffffffffffffffffffffffffffffffffffffffff831661262057611b398282612b96565b611b39838383611acb565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611b39908490612c9c565b6000805b8251811015611b395760008382815181106126d9576126d9614e9e565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611612748576040517f447516e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b91508061275481615283565b9150506126bc565b6060806127698484612dab565b915091505b9250929050565b808211156127b9576040517fc667af3e0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610d1f565b5050565b6040517f717e8a4200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063717e8a42906128189088908890889088906004016157e8565b6020604051808303816000875af1158015612837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285b9190615833565b9050801561289e5773ffffffffffffffffffffffffffffffffffffffff8616600090815260056020526040812080548392906128989084906155b7565b90915550505b6040805173ffffffffffffffffffffffffffffffffffffffff88168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a195945050505050565b6000606061290e6005612908866158da565b85612e98565b909590945092505050565b60006060863b808303612940576040805160008082526020820190925292509250506129c0565b60008060008761ffff1667ffffffffffffffff81111561296257612962614f70565b6040519080825280601f01601f19166020018201604052801561298c576020820181803683370190505b509050600080885160208a018c8f8ff191503d9250878311156129ad578792505b828152826000602083013e909450925050505b9550959350505050565b6000808315806129db575082516020115b156129eb575060009050806111c0565b600083806020019051810190612a019190615833565b90508515612a1157809150612a3b565b60006002548811612a2457600254612a26565b875b9050808211612a355781612a37565b805b9350505b5094509492505050565b6000611901848484612ff4565b600354600090819073ffffffffffffffffffffffffffffffffffffffff16156111c05760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd4244221000000000000000000000000000000000000000000000000000000001790526003549192506000918291612b7a9173ffffffffffffffffffffffffffffffffffffffff16907f0000000000000000000000000000000000000000000000000000000000000000908661306e565b91509150612b8a878784846129ca565b945094505050506111c0565b73ffffffffffffffffffffffffffffffffffffffff8216612be3576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612c3d576040519150601f19603f3d011682016040523d82523d6000602084013e612c42565b606091505b5050905080611b39576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610d1f565b6000612cfe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661311b9092919063ffffffff16565b9050805160001480612d1f575080806020019051810190612d1f9190615978565b611b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d1f565b606080600080612dbb868661312a565b915091508051600003612e1357604080516000808252602082019092528391612e07565b604080518082019091526000815260606020820152815260200190600190039081612ddf5790505b5093509350505061276e565b604080516001808252818301909252600091816020015b604080518082019091526000815260606020820152815260200190600190039081612e2a5790505090506040518060400160405280600260ff1681526020018381525081600081518110612e8057612e80614e9e565b60209081029190910101529196919550909350505050565b600060606000612ea78561336b565b90506000612eb486613451565b805160208201206060880151604089015192935090916000612ed682846111c9565b905060008951600014612f075789600081518110612ef657612ef6614e9e565b602002602001015160200151612f18565b604051806020016040528060008152505b90506060612f788d846040518060a001604052808963ffffffff1681526020018c81526020018a8152602001876000015167ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff168152508561346e565b604051919b509150612f909089908990602001615995565b60405160208183030381529060405298507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464483608001518460a0015183604051612fdc939291906159c4565b60405180910390a15050505050505050935093915050565b60008061300185856111c9565b905060008351600014613032578360008151811061302157613021614e9e565b602002602001015160200151613043565b604051806020016040528060008152505b90506000806130518361376b565b9150915061306284888a8585613a0f565b98975050505050505050565b60006060853b808303613095576040805160008082526020820190925292509250506111c0565b60008060008761ffff1667ffffffffffffffff8111156130b7576130b7614f70565b6040519080825280601f01601f1916602001820160405280156130e1576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115613101578792505b828152826000602083013e90999098509650505050505050565b60606119018484600085613bdb565b606080600283101561316b576040517f6592671c00000000000000000000000000000000000000000000000000000000815260006004820152602401610d1f565b600061317a6002828688615a1f565b61318391615a49565b60f01c905060027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8201613354578060005b868310156132e05760006131ce60018501858a8c615a1f565b6131d791615a91565b60f81c9050600081900361321a576040517f6780cfaf00000000000000000000000000000000000000000000000000000000815260006004820152602401610d1f565b8160ff1660000361322d5780915061326a565b8160ff168160ff161461326a5736600061324986868c8e615a1f565b9150915061325a8989868585613cf4565b9099509750859450919250829150505b600184019360009061328190600301868b8d615a1f565b61328a91615a49565b60f01c905060008190036132cd576040517f6592671c00000000000000000000000000000000000000000000000000000000815260048101869052602401610d1f565b8060020161ffff168501945050506131b5565b82871461331c576040517f6592671c00000000000000000000000000000000000000000000000000000000815260048101849052602401610d1f565b600287111561334d5736600061333485858b8d615a1f565b915091506133458888858585613cf4565b909850965050505b5050613362565b61335f828787613e69565b93505b50509250929050565b8051602080830151604080850151606080870151608088015193517f01000000000000000000000000000000000000000000000000000000000000009681019690965260c09690961b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e093841b7fffffffff00000000000000000000000000000000000000000000000000000000908116602987015273ffffffffffffffffffffffffffffffffffffffff909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b60608160a001518260c0015160405160200161343b929190615ad7565b6000606060008061347e8561376b565b915091506000876040015188602001516134989190615afd565b90508060ff1667ffffffffffffffff8111156134b6576134b6614f70565b6040519080825280602002602001820160405280156134df578160200160208202803683370190505b50935060005b8160ff168160ff16101561375e576000896020015160ff168260ff161061353a5760a08a015160208b015161351a9084615786565b60ff168151811061352d5761352d614e9e565b602002602001015161355c565b89608001518260ff168151811061355357613553614e9e565b60200260200101515b60408051602081019091526000808252919250905b85518110156135d1578360ff1686828151811061359057613590614e9e565b602002602001015160ff16036135c1578681815181106135b2576135b2614e9e565b602002602001015191506135d1565b6135ca81615283565b9050613571565b506040517f95d376d700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906395d376d790613626908d908590600401615b16565b6020604051808303816000875af1158015613645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136699190615833565b878460ff168151811061367e5761367e614e9e565b6020026020010181815250506000878460ff16815181106136a1576136a1614e9e565b6020026020010151111561374b57868360ff16815181106136c4576136c4614e9e565b60200260200101518c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461371991906155b7565b92505081905550868360ff168151811061373557613735614e9e565b60200260200101518861374891906155b7565b97505b50508061375790615b94565b90506134e5565b5050505094509492505050565b606080825160000361377c57915091565b6000613787846140e8565b90508060ff166001036138395760408051600180825281830190925290816020015b60608152602001906001900390816137a957905050925083836000815181106137d4576137d4614e9e565b60209081029190910101526040805160018082528183019092529081602001602082028036833701905050915061380c84600361420d565b8260008151811061381f5761381f614e9e565b602002602001019060ff16908160ff168152505050915091565b8060ff1667ffffffffffffffff81111561385557613855614f70565b60405190808252806020026020018201604052801561387e578160200160208202803683370190505b5091508060ff1667ffffffffffffffff81111561389d5761389d614f70565b6040519080825280602002602001820160405280156138d057816020015b60608152602001906001900390816138bb5790505b50925060008060ff5b86518310156139845760019092019160006138f4888561428d565b6002949094019390506000613909898661420d565b90508260ff1660ff0361391e57809250613975565b8260ff168160ff1614613975577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd84860301600061395d8b878461430d565b905061396b8a8a8784614487565b5093909301929150815b5061ffff1692909201916138d9565b818303600061399489858461430d565b90506139a288888584614487565b60005b8660ff168160ff161015613a0357878160ff16815181106139c8576139c8614e9e565b6020908102919091010180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff1690526001016139a5565b50505050505050915091565b60008086604001518760200151613a269190615afd565b905060005b8160ff168160ff161015613bd0576000886020015160ff168260ff1610613a805760a089015160208a0151613a609084615786565b60ff1681518110613a7357613a73614e9e565b6020026020010151613aa2565b88608001518260ff1681518110613a9957613a99614e9e565b60200260200101515b60408051602081019091526000808252919250905b8651811015613b17578360ff16878281518110613ad657613ad6614e9e565b602002602001015160ff1603613b0757878181518110613af857613af8614e9e565b60200260200101519150613b17565b613b1081615283565b9050613ab7565b5089516040517f30bb3aac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416916330bb3aac91613b70918d918d908790600401615bb3565b602060405180830381865afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190615833565b613bbb90866155b7565b9450505080613bc990615b94565b9050613a2b565b505095945050505050565b606082471015613c6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d1f565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613c969190615bfe565b60006040518083038185875af1925050503d8060008114613cd3576040519150601f19603f3d011682016040523d82523d6000602084013e613cd8565b606091505b5091509150613ce9878383876145be565b979650505050505050565b6060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861601613d8f57865115613d5157868484604051602001613d3d93929190615c10565b604051602081830303815290604052613d88565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613e5e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff861601613e2757855115613de957858484604051602001613dd593929190615c10565b604051602081830303815290604052613e20565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613e5e565b6040517f6780cfaf00000000000000000000000000000000000000000000000000000000815260ff86166004820152602401610d1f565b509495939450505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff851601613f8f5760228214613ed0576040517f0dc652a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613ef1613ee3602260028688615a1f565b613eec91615c38565b61465e565b6040517f0100000000000000000000000000000000000000000000000000000000000000602082018190527e11000000000000000000000000000000000000000000000000000000000000602183015260238201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b166024820152909150603401604051602081830303815290604052915050611682565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61ffff8516016140b057604282111580613fca5750606282115b15614001576040517fc0927c5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000614014613ee3602260028688615a1f565b90506000614029613ee3604260228789615a1f565b905060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe850161405d866042818a615a1f565b61406691615c38565b60405160086020938403029190911c9250614097916001916011918391889183916031916002918b918b9101615c74565b6040516020818303038152906040529350505050611682565b6040517f4170513000000000000000000000000000000000000000000000000000000000815261ffff85166004820152602401610d1f565b600080805b83518210156141c9576001909101906000614108858461428d565b905060028301925060028161ffff161015614152576040517f04eb6e0c00000000000000000000000000000000000000000000000000000000815260048101849052602401610d1f565b600061415e868561420d565b90508060ff1660ff0361419d576040517fd3d3d9bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff82161b83166141ba5760019485019460ff82161b831792505b5061ffff1691909101906140ed565b83518214614206576040517f04eb6e0c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d1f565b5050919050565b600061421a8260016155b7565b83511015614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610d1f565b50016001015190565b600061429a8260026155b7565b83511015614304576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610d1f565b50016002015190565b60608161431b81601f6155b7565b1015614383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610d1f565b61438d82846155b7565b845110156143f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610d1f565b606082158015614416576040519150600082526020820160405261447e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561444f578051835260209283019201614437565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b8160ff1660ff036144c4576040517fd3d3d9bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006144d1836001615afd565b905060005b84518110156120d95760008582815181106144f3576144f3614e9e565b602002602001015190508060ff168360ff16036145685786828151811061451c5761451c614e9e565b602002602001015184604051602001614536929190615995565b60405160208183030381529060405287838151811061455757614557614e9e565b6020026020010181905250506120d9565b8060ff166000036145ad578286838151811061458657614586614e9e565b602002602001019060ff16908160ff16815250508387838151811061455757614557614e9e565b506145b781615283565b90506144d6565b6060831561465457825160000361464d5773ffffffffffffffffffffffffffffffffffffffff85163b61464d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d1f565b5081611901565b6119018383614704565b60006fffffffffffffffffffffffffffffffff821115614700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610d1f565b5090565b8151156147145781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f9190614d4d565b8280548282559060005260206000209081019282156147c2579160200282015b828111156147c257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190614768565b506147009291505b8082111561470057600081556001016147ca565b6000602082840312156147f057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461168257600080fd5b74ffffffffffffffffffffffffffffffffffffffffff8116811461191a57600080fd5b6000813561485081614820565b73ffffffffffffffffffffffffffffffffffffffff1692915050565b63ffffffff8116811461191a57600080fd5b80356148898161486c565b919050565b600080604083850312156148a157600080fd5b82356148ac81614820565b73ffffffffffffffffffffffffffffffffffffffff16915060208301356148d28161486c565b809150509250929050565b815163ffffffff16815260208083015173ffffffffffffffffffffffffffffffffffffffff1690820152604081016108c3565b602081016003831061494b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060006060848603121561496657600080fd5b833561497181614820565b73ffffffffffffffffffffffffffffffffffffffff908116935060208501359061499a82614820565b93969316945050506040919091013590565b60008083601f8401126149be57600080fd5b50813567ffffffffffffffff8111156149d657600080fd5b6020830191508360208260051b850101111561276e57600080fd5b600080600060408486031215614a0657600080fd5b8335614a1181614820565b73ffffffffffffffffffffffffffffffffffffffff169250602084013567ffffffffffffffff811115614a4357600080fd5b614a4f868287016149ac565b9497909650939450505050565b60008060208385031215614a6f57600080fd5b823567ffffffffffffffff811115614a8657600080fd5b614a92858286016149ac565b90969095509350505050565b600081518084526020808501945080840160005b83811015614ae457815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614ab2565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c06080850152614b3f60c0850182614a9e565b905060a083015184820360a0860152614b588282614a9e565b95945050505050565b6020815260006116826020830184614aef565b801515811461191a57600080fd5b803561488981614b74565b60008060008060608587031215614ba357600080fd5b843567ffffffffffffffff80821115614bbb57600080fd5b9086019060e08289031215614bcf57600080fd5b90945060208601359080821115614be557600080fd5b818701915087601f830112614bf957600080fd5b813581811115614c0857600080fd5b886020828501011115614c1a57600080fd5b602083019550809450505050614c3260408601614b82565b905092959194509250565b60005b83811015614c58578181015183820152602001614c40565b50506000910152565b60008151808452614c79816020860160208601614c3d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b82518152602080840151908201526060604082015260006119016060830184614c61565b600060208284031215614ce157600080fd5b81356116828161486c565b600080600060608486031215614d0157600080fd5b8335614d0c8161486c565b92506020840135614d1c81614820565b73ffffffffffffffffffffffffffffffffffffffff1691506040840135614d428161486c565b809150509250925092565b6020815260006116826020830184614c61565b60008060208385031215614d7357600080fd5b823567ffffffffffffffff80821115614d8b57600080fd5b818501915085601f830112614d9f57600080fd5b813581811115614dae57600080fd5b866020606083028501011115614dc357600080fd5b60209290920196919550909350505050565b600060208284031215614de757600080fd5b5035919050565b8151815260208083015190820152604081016108c3565b600060208284031215614e1757600080fd5b8135614e2281614820565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b60008060408385031215614e5257600080fd5b8235614e5d81614820565b73ffffffffffffffffffffffffffffffffffffffff16946020939093013593505050565b600060208284031215614e9357600080fd5b8151614e2281614820565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112614f0157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614f4057600080fd5b83018035915067ffffffffffffffff821115614f5b57600080fd5b60200191503681900382131561276e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614fc257614fc2614f70565b60405290565b60405160e0810167ffffffffffffffff81118282101715614fc257614fc2614f70565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561503257615032614f70565b604052919050565b60006040828403121561504c57600080fd5b6040516040810181811067ffffffffffffffff8211171561506f5761506f614f70565b604052823561507d8161486c565b8152602083013561508d81614820565b73ffffffffffffffffffffffffffffffffffffffff1660208201529392505050565b803567ffffffffffffffff8116811461488957600080fd5b803560ff8116811461488957600080fd5b600082601f8301126150e957600080fd5b8135602067ffffffffffffffff82111561510557615105614f70565b8160051b615114828201614feb565b928352848101820192828101908785111561512e57600080fd5b83870192505b84831015613ce957823561514781614820565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190615134565b600060c0828403121561517e57600080fd5b615186614f9f565b9050615191826150af565b815261519f602083016150c7565b60208201526151b0604083016150c7565b60408201526151c1606083016150c7565b6060820152608082013567ffffffffffffffff808211156151e157600080fd5b6151ed858386016150d8565b608084015260a084013591508082111561520657600080fd5b50615213848285016150d8565b60a08301525092915050565b60006020828403121561523157600080fd5b813567ffffffffffffffff81111561524857600080fd5b6119018482850161516c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036152b4576152b4615254565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614f0157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614f0157600080fd5b60006020828403121561533557600080fd5b611682826150c7565b60006020828403121561535057600080fd5b611682826150af565b60006108c3368361516c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261539a57600080fd5b830160208101925035905067ffffffffffffffff8111156153ba57600080fd5b8060051b360382131561276e57600080fd5b8183526000602080850194508260005b85811015614ae45781356153ef81614820565b73ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016153dc565b60208082528181018390526000906040808401600586901b8501820187855b888110156155a9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261549857600080fd5b8b0180356154a58161486c565b63ffffffff16855280880135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff410181126154e257600080fd5b8589018890520167ffffffffffffffff6154fb826150af565b168786015261550b8882016150c7565b606060ff808316828901526155218a85016150c7565b92506080818416818a01526155378386016150c7565b935060a09250818416838a015261555081860186615365565b60c08b8101529450915061556b9050610100890184836153cc565b92505061557a81840184615365565b93509050838783030160e08801526155938284836153cc565b978a019796505050928701925050600101615436565b509098975050505050505050565b808201808211156108c3576108c3615254565b81356155d58161486c565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008216178355602084013561561581614820565b77ffffffffffffffffffffffffffffffffffffffff000000008160201b16837fffffffffffffffff0000000000000000000000000000000000000000000000008416171784555050505050565b6020808252818101839052600090604080840186845b878110156156e257813561568b8161486c565b63ffffffff908116845282860135906156a38261486c565b1683860152818401356156b581614820565b73ffffffffffffffffffffffffffffffffffffffff16838501526060928301929190910190600101615678565b5090979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152608081016119016040830184805163ffffffff16825260209081015173ffffffffffffffffffffffffffffffffffffffff16910152565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000614b586060830184614aef565b60ff82811682821603908111156108c3576108c3615254565b600060ff8316806157d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b63ffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006158296080830184614c61565b9695505050505050565b60006020828403121561584557600080fd5b5051919050565b600082601f83011261585d57600080fd5b813567ffffffffffffffff81111561587757615877614f70565b6158a860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614feb565b8181528460208386010111156158bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082360312156158ec57600080fd5b6158f4614fc8565b6158fd836150af565b815261590b6020840161487e565b602082015261591c60408401614843565b604082015261592d6060840161487e565b60608201526080830135608082015260a083013560a082015260c083013567ffffffffffffffff81111561596057600080fd5b61596c3682860161584c565b60c08301525092915050565b60006020828403121561598a57600080fd5b815161168281614b74565b600083516159a7818460208801614c3d565b8351908301906159bb818360208801614c3d565b01949350505050565b6060815260006159d76060830186614a9e565b6020838203818501526159ea8287614a9e565b8481036040860152855180825282870193509082019060005b818110156155a957845183529383019391830191600101615a03565b60008085851115615a2f57600080fd5b83861115615a3c57600080fd5b5050820193919092039150565b7fffff0000000000000000000000000000000000000000000000000000000000008135818116916002851015615a895780818660020360031b1b83161692505b505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008135818116916001851015615a895760019490940360031b84901b1690921692915050565b82815260008251615aef816020850160208701614c3d565b919091016020019392505050565b60ff81811683821601908111156108c3576108c3615254565b6040815263ffffffff83511660408201526000602084015160a06060840152615b4260e0840182614c61565b90506040850151608084015267ffffffffffffffff60608601511660a084015273ffffffffffffffffffffffffffffffffffffffff60808601511660c08401528281036020840152614b588185614c61565b600060ff821660ff8103615baa57615baa615254565b60010192915050565b63ffffffff8516815267ffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff831660408201526080606082015260006158296080830184614c61565b60008251614f01818460208701614c3d565b60008451615c22818460208901614c3d565b8201838582376000930192835250909392505050565b803560208310156108c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60007fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1683527fffff000000000000000000000000000000000000000000000000000000000000808c60f01b166001850152818b60f81b1660038501527fffffffffffffffffffffffffffffffff000000000000000000000000000000008a60801b166004850152818960f81b166014850152808860f01b16601585015250808660f81b16601784015250615d55601883018560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000169052565b5060288101919091526048019897505050505050505056fea26474726f6e58221220880d831013a2c3aec9f02e710e93fcf3dbb7c513adc9a68afde200de6ee0cbca64736f6c63430008140033",
1256
+ "deployedBytecode": "0x6080604052600436106101845760003560e01c806361d027b3116100d6578063d15b0d491161007f578063f2fde38b11610059578063f2fde38b1461071b578063faaebd2114610755578063fd9be522146107aa57600080fd5b8063d15b0d4914610660578063d80e9bd91461069a578063f0f44260146106e157600080fd5b80638da5cb5b116100b05780638da5cb5b1461059a5780639c33abf7146105df578063c14c43491461062657600080fd5b806361d027b3146104c55780636750cd4c14610531578063715018a61461056b57600080fd5b806329460b0b1161013857806343ea4fa91161011257806343ea4fa91461039b5780634d963200146103d557806354fd4d501461047e57600080fd5b806329460b0b146102d257806339e3f9381461030c5780634389e58f1461035357600080fd5b80631881d94d116101695780631881d94d14610226578063200175f71461025c57806320efd7221461029857600080fd5b806301ffc9a714610190578063188183f4146101df57600080fd5b3661018b57005b600080fd5b34801561019c57600080fd5b50d380156101a957600080fd5b50d280156101b657600080fd5b506101ca6101c53660046147de565b6107e4565b60405190151581526020015b60405180910390f35b3480156101eb57600080fd5b50d380156101f857600080fd5b50d2801561020557600080fd5b5061021961021436600461488e565b6108c9565b6040516101d691906148dd565b34801561023257600080fd5b50d3801561023f57600080fd5b50d2801561024c57600080fd5b5060006040516101d69190614910565b34801561026857600080fd5b50d3801561027557600080fd5b50d2801561028257600080fd5b50610296610291366004614951565b6109d6565b005b3480156102a457600080fd5b50d380156102b157600080fd5b50d280156102be57600080fd5b506102966102cd3660046149f1565b610b83565b3480156102de57600080fd5b50d380156102eb57600080fd5b50d280156102f857600080fd5b50610296610307366004614a5c565b610d41565b34801561031857600080fd5b50d3801561032557600080fd5b50d2801561033257600080fd5b5061034661034136600461488e565b610f2e565b6040516101d69190614b61565b34801561035f57600080fd5b50d3801561036c57600080fd5b50d2801561037957600080fd5b5061038d610388366004614b8d565b6110cf565b6040516101d6929190614cab565b3480156103a757600080fd5b50d380156103b457600080fd5b50d280156103c157600080fd5b506103466103d036600461488e565b6111c9565b3480156103e157600080fd5b50d380156103ee57600080fd5b50d280156103fb57600080fd5b5061044d61040a36600461488e565b600460209081526000928352604080842090915290825290205463ffffffff811690640100000000900473ffffffffffffffffffffffffffffffffffffffff1682565b6040805163ffffffff909316835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101d6565b34801561048a57600080fd5b50d3801561049757600080fd5b50d280156104a457600080fd5b506040805160038152600060208201526002918101919091526060016101d6565b3480156104d157600080fd5b50d380156104de57600080fd5b50d280156104eb57600080fd5b5060035461050c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d6565b34801561053d57600080fd5b50d3801561054a57600080fd5b50d2801561055757600080fd5b506101ca610566366004614ccf565b611583565b34801561057757600080fd5b50d3801561058457600080fd5b50d2801561059157600080fd5b5061029661158e565b3480156105a657600080fd5b50d380156105b357600080fd5b50d280156105c057600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661050c565b3480156105eb57600080fd5b50d380156105f857600080fd5b50d2801561060557600080fd5b50610619610614366004614cec565b6115a2565b6040516101d69190614d4d565b34801561063257600080fd5b50d3801561063f57600080fd5b50d2801561064c57600080fd5b5061029661065b366004614d60565b611689565b34801561066c57600080fd5b50d3801561067957600080fd5b50d2801561068657600080fd5b50610296610695366004614dd5565b61180b565b3480156106a657600080fd5b50d380156106b357600080fd5b50d280156106c057600080fd5b506106d46106cf366004614b8d565b611899565b6040516101d69190614dee565b3480156106ed57600080fd5b50d380156106fa57600080fd5b50d2801561070757600080fd5b50610296610716366004614e05565b611909565b34801561072757600080fd5b50d3801561073457600080fd5b50d2801561074157600080fd5b50610296610750366004614e05565b61191d565b34801561076157600080fd5b50d3801561076e57600080fd5b50d2801561077b57600080fd5b5061079c61078a366004614e05565b60056020526000908152604090205481565b6040519081526020016101d6565b3480156107b657600080fd5b50d380156107c357600080fd5b50d280156107d057600080fd5b506102966107df366004614e3f565b6119d1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f97f0258400000000000000000000000000000000000000000000000000000000148061087757507fffffffff0000000000000000000000000000000000000000000000000000000082167fb6e9ace300000000000000000000000000000000000000000000000000000000145b806108c357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b604080518082019091526000808252602082015263ffffffff80831660008181527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916845260048352818420948452939091528120805492939092169081900361095a57825463ffffffff1661095c565b805b63ffffffff1684528154640100000000900473ffffffffffffffffffffffffffffffffffffffff16806109ae578354640100000000900473ffffffffffffffffffffffffffffffffffffffff166109b0565b805b73ffffffffffffffffffffffffffffffffffffffff166020860152509295945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610a27576040517f885762a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd9190614e81565b73ffffffffffffffffffffffffffffffffffffffff1603610b1a576040517fe695d04400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b25838383611acb565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527fe081464b7278501267de69fa85b7b9560b0ae05d5fbfaab9b1986c70356e2efe906060015b60405180910390a1505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314610bf2576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610d3b5736838383818110610c1057610c10614e9e565b9050602002810190610c229190614ecd565b9050610c39610c346020830183614ccf565b611b3e565b6001610c4b6040830160208401614ccf565b63ffffffff1603610c8b57610c86610c666020830183614ccf565b86610c746040850185614f0b565b810190610c81919061503a565b611b85565b610d28565b6002610c9d6040830160208401614ccf565b63ffffffff1603610cd857610c86610cb86020830183614ccf565b86610cc66040850185614f0b565b810190610cd3919061521f565b611c32565b610ce86040820160208301614ccf565b6040517fba97c1fa00000000000000000000000000000000000000000000000000000000815263ffffffff90911660048201526024015b60405180910390fd5b5080610d3381615283565b915050610bf5565b50505050565b610d49611c7b565b60005b81811015610ef05736838383818110610d6757610d67614e9e565b9050602002810190610d7991906152bb565b905060ff610d8a60208301836152ef565b610d9b906040810190602001615323565b60ff1603610dd5576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff610de460208301836152ef565b610df5906060810190604001615323565b60ff1603610e2f576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff610e4560208301836152ef565b610e5390602081019061533e565b67ffffffffffffffff1603610e94576040517f503667ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610eb2610ea460208301836152ef565b610ead90615359565b611cfc565b610edf6000610ec46020840184614ccf565b610ed160208501856152ef565b610eda90615359565b611d4d565b50610ee981615283565b9050610d4c565b507faaf3aaa0c11056e86ac56eb653e25b005ca1a7d4dcd21ba24647f7ab63f3b5608282604051610f22929190615417565b60405180910390a15050565b6040805160c0810182526000808252602082018190529181018290526060808201929092526080810182905260a081019190915273ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020835160c081018552815467ffffffffffffffff8116825260ff680100000000000000008204811683860152690100000000000000000082048116838801526a0100000000000000000000909104166060820152928101805485518185028101850190965280865293949193608086019383018282801561104f57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611024575b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156110be57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611093575b505050505081525050905092915050565b604080518082019091526000808252602082015260607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163314611154576040517f467409c300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806111628888886120e1565b909250905060008061119461117d60608c0160408d01614e05565b61118d60808d0160608e01614ccf565b858a6121ae565b90925090506111a382846155b7565b604080518082019091529081526020810191909152945091925050505b94509492505050565b6040805160c0810182526000808252602080830182905282840182905260608084018390526080840181905260a084015263ffffffff85168083527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49825284832073ffffffffffffffffffffffffffffffffffffffff88168452600183528584209184529152929020805491929167ffffffffffffffff168061127957825467ffffffffffffffff168452611298565b67ffffffffffffffff818116146112985767ffffffffffffffff811684525b815468010000000000000000900460ff1661134e57825468010000000000000000900460ff1615611349578260010180548060200260200160405190810160405280929190818152602001828054801561132857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116112fd575b50505050506080850152825468010000000000000000900460ff1660208501525b6113ec565b815468010000000000000000900460ff908116146113ec57816001018054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116113a0575b50505050506080850152815468010000000000000000900460ff1660208501525b81546901000000000000000000900460ff166114bb5782546901000000000000000000900460ff16156114b6578260020180548060200260200160405190810160405280929190818152602001828054801561147e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611453575b505050505060a0850152825460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b611571565b81546901000000000000000000900460ff90811614611571578160020180548060200260200160405190810160405280929190818152602001828054801561153957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161150e575b505050505060a0850152815460ff69010000000000000000008204811660408701526a01000000000000000000009091041660608501525b61157a84611cfc565b50505092915050565b60006108c38261233c565b611596611c7b565b6115a060006123a3565b565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff831601611601576115db83856108c9565b6040516020016115eb91906148dd565b6040516020818303038152906040529050611682565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe63ffffffff8316016116485761163883856111c9565b6040516020016115eb9190614b61565b6040517fba97c1fa00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610d1f565b9392505050565b611691611c7b565b60005b818110156117d957368383838181106116af576116af614e9e565b60609081029290920192506000916116cd9150830160408401614e05565b73ffffffffffffffffffffffffffffffffffffffff160361171a576040517f20e9d05a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61172a6040820160208301614ccf565b63ffffffff16600003611769576040517f49cfac4300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808052600460209081528201907f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec906117a48385614ccf565b63ffffffff16815260208101919091526040016000206117c482826155ca565b90505050806117d290615283565b9050611694565b507f2b001e1c6683bf79cc52891bd7215b204c787d18134fc7f3d21b4f32a49e47de8282604051610f22929190615662565b611813611c7b565b60025481111561185d576002546040517f34084fb8000000000000000000000000000000000000000000000000000000008152610d1f918391600401918252602082015260400190565b60028190556040518181527f491ff913b5444f4136b0d4075f020cfe3a5f60de926ec0b091612401a22b7842906020015b60405180910390a150565b60408051808201909152600080825260208201526000806118ea6118c36060890160408a01614e05565b6118d360808a0160608b01614ccf565b6118e060c08b018b614f0b565b9050878a8a612418565b604080518082019091529182526020820152925050505b949350505050565b611911611c7b565b61191a8161251e565b50565b611925611c7b565b73ffffffffffffffffffffffffffffffffffffffff81166119c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d1f565b61191a816123a3565b6119da81612591565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6b9190614e81565b9050611a788184846125fb565b6040805133815273ffffffffffffffffffffffffffffffffffffffff851660208201529081018390527f820b7fd51bf79c54350bab98400651b3314ff6e79b33528821871d94a666988390606001610b76565b73ffffffffffffffffffffffffffffffffffffffff8216611b18576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b3973ffffffffffffffffffffffffffffffffffffffff8416838361262b565b505050565b611b478161233c565b61191a576040517ff0c10d0400000000000000000000000000000000000000000000000000000000815263ffffffff82166004820152602401610d1f565b73ffffffffffffffffffffffffffffffffffffffff808316600090815260046020908152604080832063ffffffff8089168552908352928190208551815493870151909516640100000000027fffffffffffffffff0000000000000000000000000000000000000000000000009093169490931693909317179055517f779cb2dd9d2bb1be1737d05435d744facbfb84a2a4912e21379d39beddcdc80590610b76908490869085906156ef565b611c3d828483611d4d565b611c4782846111c9565b507f82118522aa536ac0e96cc5c689407ae42b89d592aa133890a01f1509842f5081828483604051610b769392919061574b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d1f565b602081015160ff16158015611d165750606081015160ff16155b1561191a576040517fce2c375100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602081015160ff9081161480611d685750602081015160ff16155b15611daf5760808101515115611daa576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2e565b806020015160ff16816080015151141580611dea57506002611dd3600160ff615786565b611ddd919061579f565b60ff16816020015160ff16115b15611e21576040517f83aa17da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2e81608001516126b8565b604081015160ff9081161480611e495750604081015160ff16155b15611ecf5760a08101515115611e8b576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff1615611eca576040517f38682fa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fa6565b806040015160ff168160a0015151141580611f0a57506002611ef3600160ff615786565b611efd919061579f565b60ff16816040015160ff16115b15611f41576040517f4221136600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606081015160ff161580611f625750806040015160ff16816060015160ff16115b15611f99576040517f38682fa900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611fa68160a001516126b8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020818152604080842063ffffffff87168552825292839020845181548684015195870151606088015167ffffffffffffffff9093167fffffffffffffffffffffffffffffffffffffffffffffff000000000000000000909216919091176801000000000000000060ff97881602177fffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffff166901000000000000000000918716919091027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff16176a01000000000000000000009590911694909402939093178355608084015180518594936120bd93908501920190614748565b5060a082015180516120d9916002840191602090910190614748565b505050505050565b606060008060006120f2868661275c565b9092509050600061211c61210c60608a0160408b01614e05565b61021460808b0160608c01614ccf565b9050600061212d60c08a018a614f0b565b9050905061214581836000015163ffffffff16612775565b60208201516121759061215e60808c0160608d01614ccf565b61216e60608d0160408e01614e05565b84886127bd565b61217f90866155b7565b945060008061218e8b866128f6565b909250905061219d82886155b7565b909b909a5098505050505050505050565b600354600090819073ffffffffffffffffffffffffffffffffffffffff16156111c05760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd51c54860000000000000000000000000000000000000000000000000000000017905260035491925060009182916122d89173ffffffffffffffffffffffffffffffffffffffff16907f000000000000000000000000000000000000000000000000000000000000000090849087612919565b915091506122e8878784846129ca565b909550935084156123305760035473ffffffffffffffffffffffffffffffffffffffff166000908152600560205260408120805487929061232a9084906155b7565b90915550505b50505094509492505050565b63ffffffff811660009081527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb4960205260408120805468010000000000000000900460ff161515806116825750546a0100000000000000000000900460ff16151592915050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600080612428868661275c565b9150915060006124398b8b84612a45565b905060006124478c8c6108c9565b905061245d8a826000015163ffffffff16612775565b806020015173ffffffffffffffffffffffffffffffffffffffff1663709eb6648c8e8d886040518563ffffffff1660e01b81526004016124a094939291906157e8565b602060405180830381865afa1580156124bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e19190615833565b6124eb90836155b7565b91506000806124fc8e8e868e612a52565b909250905061250b82856155b7565b9e909d509b505050505050505050505050565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f3c864541ef71378c6229510ed90f376565ee42d9c5e0904a984a9e863e6db44f9060200161188e565b33600090815260056020526040902054808211156125e5576040517f34084fb80000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610d1f565b3360009081526005602052604090209190039055565b73ffffffffffffffffffffffffffffffffffffffff831661262057611b398282612b96565b611b39838383611acb565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052611b39908490612c9c565b6000805b8251811015611b395760008382815181106126d9576126d9614e9e565b602002602001015190508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611612748576040517f447516e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b91508061275481615283565b9150506126bc565b6060806127698484612dab565b915091505b9250929050565b808211156127b9576040517fc667af3e0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052604401610d1f565b5050565b6040517f717e8a4200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063717e8a42906128189088908890889088906004016157e8565b6020604051808303816000875af1158015612837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061285b9190615833565b9050801561289e5773ffffffffffffffffffffffffffffffffffffffff8616600090815260056020526040812080548392906128989084906155b7565b90915550505b6040805173ffffffffffffffffffffffffffffffffffffffff88168152602081018390527f61ed099e74a97a1d7f8bb0952a88ca8b7b8ebd00c126ea04671f92a81213318a910160405180910390a195945050505050565b6000606061290e6005612908866158da565b85612e98565b909590945092505050565b60006060863b808303612940576040805160008082526020820190925292509250506129c0565b60008060008761ffff1667ffffffffffffffff81111561296257612962614f70565b6040519080825280601f01601f19166020018201604052801561298c576020820181803683370190505b509050600080885160208a018c8f8ff191503d9250878311156129ad578792505b828152826000602083013e909450925050505b9550959350505050565b6000808315806129db575082516020115b156129eb575060009050806111c0565b600083806020019051810190612a019190615833565b90508515612a1157809150612a3b565b60006002548811612a2457600254612a26565b875b9050808211612a355781612a37565b805b9350505b5094509492505050565b6000611901848484612ff4565b600354600090819073ffffffffffffffffffffffffffffffffffffffff16156111c05760405173ffffffffffffffffffffffffffffffffffffffff8716602482015263ffffffff8616604482015260648101859052831515608482015260009060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd4244221000000000000000000000000000000000000000000000000000000001790526003549192506000918291612b7a9173ffffffffffffffffffffffffffffffffffffffff16907f0000000000000000000000000000000000000000000000000000000000000000908661306e565b91509150612b8a878784846129ca565b945094505050506111c0565b73ffffffffffffffffffffffffffffffffffffffff8216612be3576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612c3d576040519150601f19603f3d011682016040523d82523d6000602084013e612c42565b606091505b5050905080611b39576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610d1f565b6000612cfe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661311b9092919063ffffffff16565b9050805160001480612d1f575080806020019051810190612d1f9190615978565b611b39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610d1f565b606080600080612dbb868661312a565b915091508051600003612e1357604080516000808252602082019092528391612e07565b604080518082019091526000815260606020820152815260200190600190039081612ddf5790505b5093509350505061276e565b604080516001808252818301909252600091816020015b604080518082019091526000815260606020820152815260200190600190039081612e2a5790505090506040518060400160405280600260ff1681526020018381525081600081518110612e8057612e80614e9e565b60209081029190910101529196919550909350505050565b600060606000612ea78561336b565b90506000612eb486613451565b805160208201206060880151604089015192935090916000612ed682846111c9565b905060008951600014612f075789600081518110612ef657612ef6614e9e565b602002602001015160200151612f18565b604051806020016040528060008152505b90506060612f788d846040518060a001604052808963ffffffff1681526020018c81526020018a8152602001876000015167ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff168152508561346e565b604051919b509150612f909089908990602001615995565b60405160208183030381529060405298507f07ea52d82345d6e838192107d8fd7123d9c2ec8e916cd0aad13fd2b60db2464483608001518460a0015183604051612fdc939291906159c4565b60405180910390a15050505050505050935093915050565b60008061300185856111c9565b905060008351600014613032578360008151811061302157613021614e9e565b602002602001015160200151613043565b604051806020016040528060008152505b90506000806130518361376b565b9150915061306284888a8585613a0f565b98975050505050505050565b60006060853b808303613095576040805160008082526020820190925292509250506111c0565b60008060008761ffff1667ffffffffffffffff8111156130b7576130b7614f70565b6040519080825280601f01601f1916602001820160405280156130e1576020820181803683370190505b509050600080885160208a018d8dfa91503d925087831115613101578792505b828152826000602083013e90999098509650505050505050565b60606119018484600085613bdb565b606080600283101561316b576040517f6592671c00000000000000000000000000000000000000000000000000000000815260006004820152602401610d1f565b600061317a6002828688615a1f565b61318391615a49565b60f01c905060027ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd8201613354578060005b868310156132e05760006131ce60018501858a8c615a1f565b6131d791615a91565b60f81c9050600081900361321a576040517f6780cfaf00000000000000000000000000000000000000000000000000000000815260006004820152602401610d1f565b8160ff1660000361322d5780915061326a565b8160ff168160ff161461326a5736600061324986868c8e615a1f565b9150915061325a8989868585613cf4565b9099509750859450919250829150505b600184019360009061328190600301868b8d615a1f565b61328a91615a49565b60f01c905060008190036132cd576040517f6592671c00000000000000000000000000000000000000000000000000000000815260048101869052602401610d1f565b8060020161ffff168501945050506131b5565b82871461331c576040517f6592671c00000000000000000000000000000000000000000000000000000000815260048101849052602401610d1f565b600287111561334d5736600061333485858b8d615a1f565b915091506133458888858585613cf4565b909850965050505b5050613362565b61335f828787613e69565b93505b50509250929050565b8051602080830151604080850151606080870151608088015193517f01000000000000000000000000000000000000000000000000000000000000009681019690965260c09690961b7fffffffffffffffff00000000000000000000000000000000000000000000000016602186015260e093841b7fffffffff00000000000000000000000000000000000000000000000000000000908116602987015273ffffffffffffffffffffffffffffffffffffffff909216602d8601529490921b909116604d83015260518201526071015b6040516020818303038152906040529050919050565b60608160a001518260c0015160405160200161343b929190615ad7565b6000606060008061347e8561376b565b915091506000876040015188602001516134989190615afd565b90508060ff1667ffffffffffffffff8111156134b6576134b6614f70565b6040519080825280602002602001820160405280156134df578160200160208202803683370190505b50935060005b8160ff168160ff16101561375e576000896020015160ff168260ff161061353a5760a08a015160208b015161351a9084615786565b60ff168151811061352d5761352d614e9e565b602002602001015161355c565b89608001518260ff168151811061355357613553614e9e565b60200260200101515b60408051602081019091526000808252919250905b85518110156135d1578360ff1686828151811061359057613590614e9e565b602002602001015160ff16036135c1578681815181106135b2576135b2614e9e565b602002602001015191506135d1565b6135ca81615283565b9050613571565b506040517f95d376d700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906395d376d790613626908d908590600401615b16565b6020604051808303816000875af1158015613645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136699190615833565b878460ff168151811061367e5761367e614e9e565b6020026020010181815250506000878460ff16815181106136a1576136a1614e9e565b6020026020010151111561374b57868360ff16815181106136c4576136c4614e9e565b60200260200101518c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461371991906155b7565b92505081905550868360ff168151811061373557613735614e9e565b60200260200101518861374891906155b7565b97505b50508061375790615b94565b90506134e5565b5050505094509492505050565b606080825160000361377c57915091565b6000613787846140e8565b90508060ff166001036138395760408051600180825281830190925290816020015b60608152602001906001900390816137a957905050925083836000815181106137d4576137d4614e9e565b60209081029190910101526040805160018082528183019092529081602001602082028036833701905050915061380c84600361420d565b8260008151811061381f5761381f614e9e565b602002602001019060ff16908160ff168152505050915091565b8060ff1667ffffffffffffffff81111561385557613855614f70565b60405190808252806020026020018201604052801561387e578160200160208202803683370190505b5091508060ff1667ffffffffffffffff81111561389d5761389d614f70565b6040519080825280602002602001820160405280156138d057816020015b60608152602001906001900390816138bb5790505b50925060008060ff5b86518310156139845760019092019160006138f4888561428d565b6002949094019390506000613909898661420d565b90508260ff1660ff0361391e57809250613975565b8260ff168160ff1614613975577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd84860301600061395d8b878461430d565b905061396b8a8a8784614487565b5093909301929150815b5061ffff1692909201916138d9565b818303600061399489858461430d565b90506139a288888584614487565b60005b8660ff168160ff161015613a0357878160ff16815181106139c8576139c8614e9e565b6020908102919091010180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160ff1690526001016139a5565b50505050505050915091565b60008086604001518760200151613a269190615afd565b905060005b8160ff168160ff161015613bd0576000886020015160ff168260ff1610613a805760a089015160208a0151613a609084615786565b60ff1681518110613a7357613a73614e9e565b6020026020010151613aa2565b88608001518260ff1681518110613a9957613a99614e9e565b60200260200101515b60408051602081019091526000808252919250905b8651811015613b17578360ff16878281518110613ad657613ad6614e9e565b602002602001015160ff1603613b0757878181518110613af857613af8614e9e565b60200260200101519150613b17565b613b1081615283565b9050613ab7565b5089516040517f30bb3aac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416916330bb3aac91613b70918d918d908790600401615bb3565b602060405180830381865afa158015613b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bb19190615833565b613bbb90866155b7565b9450505080613bc990615b94565b9050613a2b565b505095945050505050565b606082471015613c6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610d1f565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613c969190615bfe565b60006040518083038185875af1925050503d8060008114613cd3576040519150601f19603f3d011682016040523d82523d6000602084013e613cd8565b606091505b5091509150613ce9878383876145be565b979650505050505050565b6060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861601613d8f57865115613d5157868484604051602001613d3d93929190615c10565b604051602081830303815290604052613d88565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9650613e5e565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff861601613e2757855115613de957858484604051602001613dd593929190615c10565b604051602081830303815290604052613e20565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050505b9550613e5e565b6040517f6780cfaf00000000000000000000000000000000000000000000000000000000815260ff86166004820152602401610d1f565b509495939450505050565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61ffff851601613f8f5760228214613ed0576040517f0dc652a800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000613ef1613ee3602260028688615a1f565b613eec91615c38565b61465e565b6040517f0100000000000000000000000000000000000000000000000000000000000000602082018190527e11000000000000000000000000000000000000000000000000000000000000602183015260238201527fffffffffffffffffffffffffffffffff00000000000000000000000000000000608083901b166024820152909150603401604051602081830303815290604052915050611682565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe61ffff8516016140b057604282111580613fca5750606282115b15614001576040517fc0927c5600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000614014613ee3602260028688615a1f565b90506000614029613ee3604260228789615a1f565b905060007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbe850161405d866042818a615a1f565b61406691615c38565b60405160086020938403029190911c9250614097916001916011918391889183916031916002918b918b9101615c74565b6040516020818303038152906040529350505050611682565b6040517f4170513000000000000000000000000000000000000000000000000000000000815261ffff85166004820152602401610d1f565b600080805b83518210156141c9576001909101906000614108858461428d565b905060028301925060028161ffff161015614152576040517f04eb6e0c00000000000000000000000000000000000000000000000000000000815260048101849052602401610d1f565b600061415e868561420d565b90508060ff1660ff0361419d576040517fd3d3d9bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff82161b83166141ba5760019485019460ff82161b831792505b5061ffff1691909101906140ed565b83518214614206576040517f04eb6e0c00000000000000000000000000000000000000000000000000000000815260048101839052602401610d1f565b5050919050565b600061421a8260016155b7565b83511015614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f746f55696e74385f6f75744f66426f756e6473000000000000000000000000006044820152606401610d1f565b50016001015190565b600061429a8260026155b7565b83511015614304576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e64730000000000000000000000006044820152606401610d1f565b50016002015190565b60608161431b81601f6155b7565b1015614383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f770000000000000000000000000000000000006044820152606401610d1f565b61438d82846155b7565b845110156143f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e64730000000000000000000000000000006044820152606401610d1f565b606082158015614416576040519150600082526020820160405261447e565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561444f578051835260209283019201614437565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b8160ff1660ff036144c4576040517fd3d3d9bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006144d1836001615afd565b905060005b84518110156120d95760008582815181106144f3576144f3614e9e565b602002602001015190508060ff168360ff16036145685786828151811061451c5761451c614e9e565b602002602001015184604051602001614536929190615995565b60405160208183030381529060405287838151811061455757614557614e9e565b6020026020010181905250506120d9565b8060ff166000036145ad578286838151811061458657614586614e9e565b602002602001019060ff16908160ff16815250508387838151811061455757614557614e9e565b506145b781615283565b90506144d6565b6060831561465457825160000361464d5773ffffffffffffffffffffffffffffffffffffffff85163b61464d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d1f565b5081611901565b6119018383614704565b60006fffffffffffffffffffffffffffffffff821115614700576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f32382062697473000000000000000000000000000000000000000000000000006064820152608401610d1f565b5090565b8151156147145781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1f9190614d4d565b8280548282559060005260206000209081019282156147c2579160200282015b828111156147c257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190614768565b506147009291505b8082111561470057600081556001016147ca565b6000602082840312156147f057600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461168257600080fd5b74ffffffffffffffffffffffffffffffffffffffffff8116811461191a57600080fd5b6000813561485081614820565b73ffffffffffffffffffffffffffffffffffffffff1692915050565b63ffffffff8116811461191a57600080fd5b80356148898161486c565b919050565b600080604083850312156148a157600080fd5b82356148ac81614820565b73ffffffffffffffffffffffffffffffffffffffff16915060208301356148d28161486c565b809150509250929050565b815163ffffffff16815260208083015173ffffffffffffffffffffffffffffffffffffffff1690820152604081016108c3565b602081016003831061494b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60008060006060848603121561496657600080fd5b833561497181614820565b73ffffffffffffffffffffffffffffffffffffffff908116935060208501359061499a82614820565b93969316945050506040919091013590565b60008083601f8401126149be57600080fd5b50813567ffffffffffffffff8111156149d657600080fd5b6020830191508360208260051b850101111561276e57600080fd5b600080600060408486031215614a0657600080fd5b8335614a1181614820565b73ffffffffffffffffffffffffffffffffffffffff169250602084013567ffffffffffffffff811115614a4357600080fd5b614a4f868287016149ac565b9497909650939450505050565b60008060208385031215614a6f57600080fd5b823567ffffffffffffffff811115614a8657600080fd5b614a92858286016149ac565b90969095509350505050565b600081518084526020808501945080840160005b83811015614ae457815173ffffffffffffffffffffffffffffffffffffffff1687529582019590820190600101614ab2565b509495945050505050565b67ffffffffffffffff815116825260ff602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160c06080850152614b3f60c0850182614a9e565b905060a083015184820360a0860152614b588282614a9e565b95945050505050565b6020815260006116826020830184614aef565b801515811461191a57600080fd5b803561488981614b74565b60008060008060608587031215614ba357600080fd5b843567ffffffffffffffff80821115614bbb57600080fd5b9086019060e08289031215614bcf57600080fd5b90945060208601359080821115614be557600080fd5b818701915087601f830112614bf957600080fd5b813581811115614c0857600080fd5b886020828501011115614c1a57600080fd5b602083019550809450505050614c3260408601614b82565b905092959194509250565b60005b83811015614c58578181015183820152602001614c40565b50506000910152565b60008151808452614c79816020860160208601614c3d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b82518152602080840151908201526060604082015260006119016060830184614c61565b600060208284031215614ce157600080fd5b81356116828161486c565b600080600060608486031215614d0157600080fd5b8335614d0c8161486c565b92506020840135614d1c81614820565b73ffffffffffffffffffffffffffffffffffffffff1691506040840135614d428161486c565b809150509250925092565b6020815260006116826020830184614c61565b60008060208385031215614d7357600080fd5b823567ffffffffffffffff80821115614d8b57600080fd5b818501915085601f830112614d9f57600080fd5b813581811115614dae57600080fd5b866020606083028501011115614dc357600080fd5b60209290920196919550909350505050565b600060208284031215614de757600080fd5b5035919050565b8151815260208083015190820152604081016108c3565b600060208284031215614e1757600080fd5b8135614e2281614820565b73ffffffffffffffffffffffffffffffffffffffff169392505050565b60008060408385031215614e5257600080fd5b8235614e5d81614820565b73ffffffffffffffffffffffffffffffffffffffff16946020939093013593505050565b600060208284031215614e9357600080fd5b8151614e2281614820565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112614f0157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614f4057600080fd5b83018035915067ffffffffffffffff821115614f5b57600080fd5b60200191503681900382131561276e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715614fc257614fc2614f70565b60405290565b60405160e0810167ffffffffffffffff81118282101715614fc257614fc2614f70565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561503257615032614f70565b604052919050565b60006040828403121561504c57600080fd5b6040516040810181811067ffffffffffffffff8211171561506f5761506f614f70565b604052823561507d8161486c565b8152602083013561508d81614820565b73ffffffffffffffffffffffffffffffffffffffff1660208201529392505050565b803567ffffffffffffffff8116811461488957600080fd5b803560ff8116811461488957600080fd5b600082601f8301126150e957600080fd5b8135602067ffffffffffffffff82111561510557615105614f70565b8160051b615114828201614feb565b928352848101820192828101908785111561512e57600080fd5b83870192505b84831015613ce957823561514781614820565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190615134565b600060c0828403121561517e57600080fd5b615186614f9f565b9050615191826150af565b815261519f602083016150c7565b60208201526151b0604083016150c7565b60408201526151c1606083016150c7565b6060820152608082013567ffffffffffffffff808211156151e157600080fd5b6151ed858386016150d8565b608084015260a084013591508082111561520657600080fd5b50615213848285016150d8565b60a08301525092915050565b60006020828403121561523157600080fd5b813567ffffffffffffffff81111561524857600080fd5b6119018482850161516c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036152b4576152b4615254565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614f0157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112614f0157600080fd5b60006020828403121561533557600080fd5b611682826150c7565b60006020828403121561535057600080fd5b611682826150af565b60006108c3368361516c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261539a57600080fd5b830160208101925035905067ffffffffffffffff8111156153ba57600080fd5b8060051b360382131561276e57600080fd5b8183526000602080850194508260005b85811015614ae45781356153ef81614820565b73ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016153dc565b60208082528181018390526000906040808401600586901b8501820187855b888110156155a9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08089850301855282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c360301811261549857600080fd5b8b0180356154a58161486c565b63ffffffff16855280880135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff410181126154e257600080fd5b8589018890520167ffffffffffffffff6154fb826150af565b168786015261550b8882016150c7565b606060ff808316828901526155218a85016150c7565b92506080818416818a01526155378386016150c7565b935060a09250818416838a015261555081860186615365565b60c08b8101529450915061556b9050610100890184836153cc565b92505061557a81840184615365565b93509050838783030160e08801526155938284836153cc565b978a019796505050928701925050600101615436565b509098975050505050505050565b808201808211156108c3576108c3615254565b81356155d58161486c565b63ffffffff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008216178355602084013561561581614820565b77ffffffffffffffffffffffffffffffffffffffff000000008160201b16837fffffffffffffffff0000000000000000000000000000000000000000000000008416171784555050505050565b6020808252818101839052600090604080840186845b878110156156e257813561568b8161486c565b63ffffffff908116845282860135906156a38261486c565b1683860152818401356156b581614820565b73ffffffffffffffffffffffffffffffffffffffff16838501526060928301929190910190600101615678565b5090979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152608081016119016040830184805163ffffffff16825260209081015173ffffffffffffffffffffffffffffffffffffffff16910152565b73ffffffffffffffffffffffffffffffffffffffff8416815263ffffffff83166020820152606060408201526000614b586060830184614aef565b60ff82811682821603908111156108c3576108c3615254565b600060ff8316806157d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8060ff84160491505092915050565b63ffffffff8516815273ffffffffffffffffffffffffffffffffffffffff841660208201528260408201526080606082015260006158296080830184614c61565b9695505050505050565b60006020828403121561584557600080fd5b5051919050565b600082601f83011261585d57600080fd5b813567ffffffffffffffff81111561587757615877614f70565b6158a860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614feb565b8181528460208386010111156158bd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082360312156158ec57600080fd5b6158f4614fc8565b6158fd836150af565b815261590b6020840161487e565b602082015261591c60408401614843565b604082015261592d6060840161487e565b60608201526080830135608082015260a083013560a082015260c083013567ffffffffffffffff81111561596057600080fd5b61596c3682860161584c565b60c08301525092915050565b60006020828403121561598a57600080fd5b815161168281614b74565b600083516159a7818460208801614c3d565b8351908301906159bb818360208801614c3d565b01949350505050565b6060815260006159d76060830186614a9e565b6020838203818501526159ea8287614a9e565b8481036040860152855180825282870193509082019060005b818110156155a957845183529383019391830191600101615a03565b60008085851115615a2f57600080fd5b83861115615a3c57600080fd5b5050820193919092039150565b7fffff0000000000000000000000000000000000000000000000000000000000008135818116916002851015615a895780818660020360031b1b83161692505b505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008135818116916001851015615a895760019490940360031b84901b1690921692915050565b82815260008251615aef816020850160208701614c3d565b919091016020019392505050565b60ff81811683821601908111156108c3576108c3615254565b6040815263ffffffff83511660408201526000602084015160a06060840152615b4260e0840182614c61565b90506040850151608084015267ffffffffffffffff60608601511660a084015273ffffffffffffffffffffffffffffffffffffffff60808601511660c08401528281036020840152614b588185614c61565b600060ff821660ff8103615baa57615baa615254565b60010192915050565b63ffffffff8516815267ffffffffffffffff8416602082015273ffffffffffffffffffffffffffffffffffffffff831660408201526080606082015260006158296080830184614c61565b60008251614f01818460208701614c3d565b60008451615c22818460208901614c3d565b8201838582376000930192835250909392505050565b803560208310156108c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60007fff00000000000000000000000000000000000000000000000000000000000000808c60f81b1683527fffff000000000000000000000000000000000000000000000000000000000000808c60f01b166001850152818b60f81b1660038501527fffffffffffffffffffffffffffffffff000000000000000000000000000000008a60801b166004850152818960f81b166014850152808860f01b16601585015250808660f81b16601784015250615d55601883018560801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000169052565b5060288101919091526048019897505050505050505056fea26474726f6e58221220880d831013a2c3aec9f02e710e93fcf3dbb7c513adc9a68afde200de6ee0cbca64736f6c63430008140033",
1257
+ "linkReferences": {},
1258
+ "deployedLinkReferences": {}
1259
+ }