@arbitrum/nitro-contracts 2.1.0 → 3.0.0-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (503) hide show
  1. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  2. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  12. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
  14. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
  21. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
  22. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
  24. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
  26. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +4 -0
  28. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +10 -0
  29. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  31. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  52. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  53. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  54. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  55. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
  56. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
  57. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
  58. package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
  59. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
  60. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
  61. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
  62. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
  63. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
  64. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
  65. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
  66. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
  67. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
  68. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
  69. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
  70. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
  71. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
  72. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
  73. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
  74. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
  75. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
  76. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json +232 -0
  77. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
  78. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
  79. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  80. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  81. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  82. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +20 -7
  83. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  84. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  85. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  86. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
  87. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
  88. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  89. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  90. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  91. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +22 -9
  92. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  93. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  94. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  95. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  96. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  97. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  98. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  99. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  100. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
  101. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  102. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  103. package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
  104. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  105. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
  106. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  107. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  108. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  109. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
  110. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  111. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +22 -4
  112. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  113. package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
  114. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  115. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  116. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  117. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +564 -7
  118. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  119. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
  120. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
  121. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
  122. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
  123. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
  124. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
  125. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
  126. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
  127. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
  128. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
  129. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +10 -0
  130. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
  131. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
  132. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
  133. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
  134. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
  135. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
  136. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  137. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
  138. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  139. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  140. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  141. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  142. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
  143. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  144. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
  145. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  146. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
  147. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  148. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  149. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  150. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  151. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  152. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  153. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  154. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  155. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  156. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
  157. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  158. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
  159. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  160. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +28 -2
  161. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  162. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  163. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
  164. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
  165. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
  166. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
  167. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  168. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
  169. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  170. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
  171. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  172. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
  173. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  174. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  175. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  176. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
  177. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
  178. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
  179. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  180. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +564 -7
  181. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  182. package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
  183. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  184. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
  185. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
  186. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
  187. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  188. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  189. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
  190. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
  191. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
  192. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
  193. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  194. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  195. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  196. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  197. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  198. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
  199. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  200. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
  201. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  202. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  203. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  204. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
  205. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  206. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
  207. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  208. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
  209. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  210. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
  211. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  212. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
  213. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  214. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
  215. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  216. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  217. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  218. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  219. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  220. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  221. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  222. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  223. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  224. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  225. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  226. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  227. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  228. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  229. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  230. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  231. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  232. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
  233. package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
  234. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
  235. package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
  236. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
  237. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
  238. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
  239. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
  240. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
  241. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
  242. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
  243. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
  244. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
  245. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
  246. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
  247. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
  248. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
  249. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
  250. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  251. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
  252. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  253. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  254. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  255. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  256. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  257. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
  258. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  259. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  260. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  261. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  262. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  263. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
  264. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  265. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
  266. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  267. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  268. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -499
  269. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  270. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
  271. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  272. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
  273. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  274. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
  275. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  276. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  277. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  278. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  279. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  280. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
  281. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  282. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -535
  283. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  284. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
  285. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  286. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  287. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  288. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  289. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  290. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
  291. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  292. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  293. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  294. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  295. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  296. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  297. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  298. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  299. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  300. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  301. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  302. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
  303. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  304. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
  305. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  306. package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
  307. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  308. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  309. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  310. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  311. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  312. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  313. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  314. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  315. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  316. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  317. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  318. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
  319. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  320. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
  321. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  322. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
  323. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  324. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  325. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  326. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
  327. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  328. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  329. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  330. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  331. package/out/yul/Reader4844.yul/Reader4844.json +1 -1
  332. package/package.json +15 -5
  333. package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
  334. package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
  335. package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
  336. package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
  337. package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
  338. package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
  339. package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
  340. package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
  341. package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
  342. package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
  343. package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
  344. package/src/bridge/AbsBridge.sol +38 -48
  345. package/src/bridge/AbsInbox.sol +88 -97
  346. package/src/bridge/AbsOutbox.sol +23 -37
  347. package/src/bridge/Bridge.sol +6 -4
  348. package/src/bridge/DelayBuffer.sol +123 -0
  349. package/src/bridge/DelayBufferTypes.sol +38 -0
  350. package/src/bridge/ERC20Bridge.sol +8 -4
  351. package/src/bridge/ERC20Inbox.sol +46 -53
  352. package/src/bridge/ERC20Outbox.sol +7 -3
  353. package/src/bridge/GasRefunder.sol +38 -24
  354. package/src/bridge/IBridge.sol +30 -21
  355. package/src/bridge/IERC20Bridge.sol +1 -1
  356. package/src/bridge/IERC20Inbox.sol +4 -2
  357. package/src/bridge/IEthBridge.sol +4 -2
  358. package/src/bridge/IInbox.sol +4 -2
  359. package/src/bridge/IInboxBase.sol +17 -13
  360. package/src/bridge/IOutbox.sol +13 -8
  361. package/src/bridge/ISequencerInbox.sol +118 -13
  362. package/src/bridge/Inbox.sol +131 -151
  363. package/src/bridge/Messages.sol +48 -18
  364. package/src/bridge/Outbox.sol +6 -2
  365. package/src/bridge/SequencerInbox.sol +339 -274
  366. package/src/chain/CacheManager.sol +49 -18
  367. package/src/challengeV2/EdgeChallengeManager.sol +783 -0
  368. package/src/challengeV2/IAssertionChain.sol +39 -0
  369. package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
  370. package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
  371. package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
  372. package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
  373. package/src/challengeV2/libraries/Enums.sol +26 -0
  374. package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
  375. package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
  376. package/src/libraries/AddressAliasHelper.sol +6 -2
  377. package/src/libraries/AdminFallbackProxy.sol +8 -4
  378. package/src/libraries/ArbitrumChecker.sol +3 -4
  379. package/src/libraries/CryptographyPrimitives.sol +39 -46
  380. package/src/libraries/DecimalsConverterHelper.sol +2 -4
  381. package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
  382. package/src/libraries/Error.sol +18 -3
  383. package/src/libraries/GasRefundEnabled.sol +3 -4
  384. package/src/libraries/MerkleLib.sol +6 -5
  385. package/src/libraries/UUPSNotUpgradeable.sol +2 -4
  386. package/src/mocks/BridgeStub.sol +50 -48
  387. package/src/mocks/BridgeUnproxied.sol +2 -0
  388. package/src/mocks/InboxStub.sol +22 -17
  389. package/src/mocks/MerkleTreeAccess.sol +72 -0
  390. package/src/mocks/MockRollupEventInbox.sol +59 -0
  391. package/src/mocks/MultiCallTest.sol +3 -1
  392. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
  393. package/src/mocks/Program.sol +9 -7
  394. package/src/mocks/SequencerInboxBlobMock.sol +38 -0
  395. package/src/mocks/SequencerInboxStub.sol +9 -12
  396. package/src/mocks/Simple.sol +13 -25
  397. package/src/mocks/SimpleCacheManager.sol +10 -3
  398. package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
  399. package/src/mocks/SimpleProxy.sol +3 -1
  400. package/src/mocks/TestWETH9.sol +30 -0
  401. package/src/mocks/UpgradeExecutorMock.sol +10 -17
  402. package/src/node-interface/NodeInterface.sol +23 -22
  403. package/src/node-interface/NodeInterfaceDebug.sol +5 -3
  404. package/src/osp/HashProofHelper.sol +9 -10
  405. package/src/osp/IOneStepProofEntry.sol +14 -9
  406. package/src/osp/IOneStepProver.sol +1 -0
  407. package/src/osp/OneStepProofEntry.sol +63 -54
  408. package/src/osp/OneStepProver0.sol +14 -27
  409. package/src/osp/OneStepProverHostIo.sol +31 -58
  410. package/src/osp/OneStepProverMath.sol +15 -23
  411. package/src/osp/OneStepProverMemory.sol +9 -23
  412. package/src/precompiles/ArbAddressTable.sol +19 -9
  413. package/src/precompiles/ArbAggregator.sol +12 -4
  414. package/src/precompiles/ArbBLS.sol +1 -3
  415. package/src/precompiles/ArbDebug.sol +5 -11
  416. package/src/precompiles/ArbFunctionTable.sol +7 -10
  417. package/src/precompiles/ArbGasInfo.sol +9 -43
  418. package/src/precompiles/ArbInfo.sol +6 -2
  419. package/src/precompiles/ArbOwner.sol +101 -34
  420. package/src/precompiles/ArbOwnerPublic.sol +6 -2
  421. package/src/precompiles/ArbRetryableTx.sol +15 -5
  422. package/src/precompiles/ArbStatistics.sol +1 -8
  423. package/src/precompiles/ArbSys.sol +16 -18
  424. package/src/precompiles/ArbWasm.sol +24 -14
  425. package/src/precompiles/ArbWasmCache.sol +15 -5
  426. package/src/precompiles/ArbosTest.sol +3 -1
  427. package/src/rollup/AbsRollupEventInbox.sol +15 -16
  428. package/src/rollup/Assertion.sol +100 -0
  429. package/src/rollup/AssertionState.sol +29 -0
  430. package/src/rollup/BOLDUpgradeAction.sol +631 -0
  431. package/src/rollup/BridgeCreator.sol +42 -15
  432. package/src/rollup/Config.sol +15 -7
  433. package/src/rollup/DeployHelper.sol +12 -31
  434. package/src/rollup/ERC20RollupEventInbox.sol +8 -9
  435. package/src/rollup/FactoryDeployerHelper.sol +8 -10
  436. package/src/rollup/IRollupAdmin.sol +127 -45
  437. package/src/rollup/IRollupCore.sol +64 -84
  438. package/src/rollup/IRollupEventInbox.sol +3 -1
  439. package/src/rollup/IRollupLogic.sol +35 -72
  440. package/src/rollup/RollupAdminLogic.sol +224 -203
  441. package/src/rollup/RollupCore.sol +407 -428
  442. package/src/rollup/RollupCreator.sol +88 -75
  443. package/src/rollup/RollupEventInbox.sol +7 -7
  444. package/src/rollup/RollupLib.sol +50 -86
  445. package/src/rollup/RollupProxy.sol +8 -12
  446. package/src/rollup/RollupUserLogic.sol +279 -644
  447. package/src/rollup/ValidatorUtils.sol +0 -242
  448. package/src/rollup/ValidatorWallet.sol +22 -38
  449. package/src/rollup/ValidatorWalletCreator.sol +8 -8
  450. package/src/state/Deserialize.sol +74 -96
  451. package/src/state/GlobalState.sol +74 -20
  452. package/src/state/Instructions.sol +4 -3
  453. package/src/state/Machine.sol +18 -19
  454. package/src/state/Module.sol +14 -13
  455. package/src/state/ModuleMemory.sol +6 -25
  456. package/src/state/ModuleMemoryCompact.sol +3 -1
  457. package/src/state/MultiStack.sol +16 -20
  458. package/src/state/PcArray.sol +7 -7
  459. package/src/state/StackFrame.sol +21 -14
  460. package/src/state/Value.sol +18 -6
  461. package/src/state/ValueArray.sol +7 -7
  462. package/src/state/ValueStack.sol +9 -3
  463. package/src/test-helpers/BridgeTester.sol +32 -42
  464. package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
  465. package/src/test-helpers/EthVault.sol +4 -2
  466. package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
  467. package/src/test-helpers/MessageTester.sol +3 -10
  468. package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
  469. package/src/test-helpers/RollupMock.sol +3 -7
  470. package/src/test-helpers/TestToken.sol +4 -2
  471. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
  472. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
  473. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
  474. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
  475. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
  476. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
  477. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
  478. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
  479. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
  480. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
  481. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
  482. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
  483. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
  484. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
  485. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
  486. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1332
  487. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
  488. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1466
  489. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
  490. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
  491. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1614
  492. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
  493. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1748
  494. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
  495. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
  496. package/src/challenge/ChallengeLib.sol +0 -88
  497. package/src/challenge/ChallengeManager.sol +0 -375
  498. package/src/challenge/IChallengeManager.sol +0 -86
  499. package/src/challenge/IChallengeResultReceiver.sol +0 -13
  500. package/src/mocks/MockResultReceiver.sol +0 -59
  501. package/src/mocks/SingleExecutionChallenge.sol +0 -41
  502. package/src/mocks/TimedOutChallengeManager.sol +0 -13
  503. package/src/rollup/Node.sol +0 -113
@@ -0,0 +1,807 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "BOLDUpgradeAction",
4
+ "sourceName": "src/rollup/BOLDUpgradeAction.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "components": [
10
+ {
11
+ "internalType": "address",
12
+ "name": "excessStakeReceiver",
13
+ "type": "address"
14
+ },
15
+ {
16
+ "internalType": "contract IOldRollup",
17
+ "name": "rollup",
18
+ "type": "address"
19
+ },
20
+ {
21
+ "internalType": "address",
22
+ "name": "bridge",
23
+ "type": "address"
24
+ },
25
+ {
26
+ "internalType": "address",
27
+ "name": "sequencerInbox",
28
+ "type": "address"
29
+ },
30
+ {
31
+ "internalType": "address",
32
+ "name": "rollupEventInbox",
33
+ "type": "address"
34
+ },
35
+ {
36
+ "internalType": "address",
37
+ "name": "outbox",
38
+ "type": "address"
39
+ },
40
+ {
41
+ "internalType": "address",
42
+ "name": "inbox",
43
+ "type": "address"
44
+ },
45
+ {
46
+ "internalType": "contract IOneStepProofEntry",
47
+ "name": "osp",
48
+ "type": "address"
49
+ }
50
+ ],
51
+ "internalType": "struct BOLDUpgradeAction.Contracts",
52
+ "name": "contracts",
53
+ "type": "tuple"
54
+ },
55
+ {
56
+ "components": [
57
+ {
58
+ "internalType": "address",
59
+ "name": "outbox",
60
+ "type": "address"
61
+ },
62
+ {
63
+ "internalType": "address",
64
+ "name": "bridge",
65
+ "type": "address"
66
+ },
67
+ {
68
+ "internalType": "address",
69
+ "name": "rei",
70
+ "type": "address"
71
+ },
72
+ {
73
+ "internalType": "address",
74
+ "name": "seqInbox",
75
+ "type": "address"
76
+ },
77
+ {
78
+ "internalType": "address",
79
+ "name": "inbox",
80
+ "type": "address"
81
+ }
82
+ ],
83
+ "internalType": "struct BOLDUpgradeAction.ProxyAdmins",
84
+ "name": "proxyAdmins",
85
+ "type": "tuple"
86
+ },
87
+ {
88
+ "components": [
89
+ {
90
+ "internalType": "address",
91
+ "name": "bridge",
92
+ "type": "address"
93
+ },
94
+ {
95
+ "internalType": "address",
96
+ "name": "seqInbox",
97
+ "type": "address"
98
+ },
99
+ {
100
+ "internalType": "address",
101
+ "name": "inbox",
102
+ "type": "address"
103
+ },
104
+ {
105
+ "internalType": "address",
106
+ "name": "rei",
107
+ "type": "address"
108
+ },
109
+ {
110
+ "internalType": "address",
111
+ "name": "outbox",
112
+ "type": "address"
113
+ },
114
+ {
115
+ "internalType": "address",
116
+ "name": "oldRollupUser",
117
+ "type": "address"
118
+ },
119
+ {
120
+ "internalType": "address",
121
+ "name": "newRollupUser",
122
+ "type": "address"
123
+ },
124
+ {
125
+ "internalType": "address",
126
+ "name": "newRollupAdmin",
127
+ "type": "address"
128
+ },
129
+ {
130
+ "internalType": "address",
131
+ "name": "challengeManager",
132
+ "type": "address"
133
+ }
134
+ ],
135
+ "internalType": "struct BOLDUpgradeAction.Implementations",
136
+ "name": "implementations",
137
+ "type": "tuple"
138
+ },
139
+ {
140
+ "components": [
141
+ {
142
+ "internalType": "uint64",
143
+ "name": "confirmPeriodBlocks",
144
+ "type": "uint64"
145
+ },
146
+ {
147
+ "internalType": "uint64",
148
+ "name": "challengePeriodBlocks",
149
+ "type": "uint64"
150
+ },
151
+ {
152
+ "internalType": "address",
153
+ "name": "stakeToken",
154
+ "type": "address"
155
+ },
156
+ {
157
+ "internalType": "uint256",
158
+ "name": "stakeAmt",
159
+ "type": "uint256"
160
+ },
161
+ {
162
+ "internalType": "uint256[]",
163
+ "name": "miniStakeAmounts",
164
+ "type": "uint256[]"
165
+ },
166
+ {
167
+ "internalType": "uint256",
168
+ "name": "chainId",
169
+ "type": "uint256"
170
+ },
171
+ {
172
+ "internalType": "bool",
173
+ "name": "disableValidatorWhitelist",
174
+ "type": "bool"
175
+ },
176
+ {
177
+ "internalType": "uint256",
178
+ "name": "blockLeafSize",
179
+ "type": "uint256"
180
+ },
181
+ {
182
+ "internalType": "uint256",
183
+ "name": "bigStepLeafSize",
184
+ "type": "uint256"
185
+ },
186
+ {
187
+ "internalType": "uint256",
188
+ "name": "smallStepLeafSize",
189
+ "type": "uint256"
190
+ },
191
+ {
192
+ "internalType": "uint8",
193
+ "name": "numBigStepLevel",
194
+ "type": "uint8"
195
+ },
196
+ {
197
+ "internalType": "uint64",
198
+ "name": "challengeGracePeriodBlocks",
199
+ "type": "uint64"
200
+ },
201
+ {
202
+ "internalType": "bool",
203
+ "name": "isDelayBufferable",
204
+ "type": "bool"
205
+ },
206
+ {
207
+ "components": [
208
+ {
209
+ "internalType": "uint64",
210
+ "name": "threshold",
211
+ "type": "uint64"
212
+ },
213
+ {
214
+ "internalType": "uint64",
215
+ "name": "max",
216
+ "type": "uint64"
217
+ },
218
+ {
219
+ "internalType": "uint64",
220
+ "name": "replenishRateInBasis",
221
+ "type": "uint64"
222
+ }
223
+ ],
224
+ "internalType": "struct BufferConfig",
225
+ "name": "bufferConfig",
226
+ "type": "tuple"
227
+ }
228
+ ],
229
+ "internalType": "struct BOLDUpgradeAction.Settings",
230
+ "name": "settings",
231
+ "type": "tuple"
232
+ }
233
+ ],
234
+ "stateMutability": "nonpayable",
235
+ "type": "constructor"
236
+ },
237
+ {
238
+ "anonymous": false,
239
+ "inputs": [
240
+ {
241
+ "indexed": false,
242
+ "internalType": "address",
243
+ "name": "rollup",
244
+ "type": "address"
245
+ },
246
+ {
247
+ "indexed": false,
248
+ "internalType": "address",
249
+ "name": "challengeManager",
250
+ "type": "address"
251
+ }
252
+ ],
253
+ "name": "RollupMigrated",
254
+ "type": "event"
255
+ },
256
+ {
257
+ "inputs": [],
258
+ "name": "BIGSTEP_LEAF_SIZE",
259
+ "outputs": [
260
+ {
261
+ "internalType": "uint256",
262
+ "name": "",
263
+ "type": "uint256"
264
+ }
265
+ ],
266
+ "stateMutability": "view",
267
+ "type": "function"
268
+ },
269
+ {
270
+ "inputs": [],
271
+ "name": "BLOCK_LEAF_SIZE",
272
+ "outputs": [
273
+ {
274
+ "internalType": "uint256",
275
+ "name": "",
276
+ "type": "uint256"
277
+ }
278
+ ],
279
+ "stateMutability": "view",
280
+ "type": "function"
281
+ },
282
+ {
283
+ "inputs": [],
284
+ "name": "BRIDGE",
285
+ "outputs": [
286
+ {
287
+ "internalType": "address",
288
+ "name": "",
289
+ "type": "address"
290
+ }
291
+ ],
292
+ "stateMutability": "view",
293
+ "type": "function"
294
+ },
295
+ {
296
+ "inputs": [],
297
+ "name": "CHAIN_ID",
298
+ "outputs": [
299
+ {
300
+ "internalType": "uint256",
301
+ "name": "",
302
+ "type": "uint256"
303
+ }
304
+ ],
305
+ "stateMutability": "view",
306
+ "type": "function"
307
+ },
308
+ {
309
+ "inputs": [],
310
+ "name": "CHALLENGE_GRACE_PERIOD_BLOCKS",
311
+ "outputs": [
312
+ {
313
+ "internalType": "uint64",
314
+ "name": "",
315
+ "type": "uint64"
316
+ }
317
+ ],
318
+ "stateMutability": "view",
319
+ "type": "function"
320
+ },
321
+ {
322
+ "inputs": [],
323
+ "name": "CHALLENGE_PERIOD_BLOCKS",
324
+ "outputs": [
325
+ {
326
+ "internalType": "uint64",
327
+ "name": "",
328
+ "type": "uint64"
329
+ }
330
+ ],
331
+ "stateMutability": "view",
332
+ "type": "function"
333
+ },
334
+ {
335
+ "inputs": [],
336
+ "name": "CONFIRM_PERIOD_BLOCKS",
337
+ "outputs": [
338
+ {
339
+ "internalType": "uint64",
340
+ "name": "",
341
+ "type": "uint64"
342
+ }
343
+ ],
344
+ "stateMutability": "view",
345
+ "type": "function"
346
+ },
347
+ {
348
+ "inputs": [],
349
+ "name": "DISABLE_VALIDATOR_WHITELIST",
350
+ "outputs": [
351
+ {
352
+ "internalType": "bool",
353
+ "name": "",
354
+ "type": "bool"
355
+ }
356
+ ],
357
+ "stateMutability": "view",
358
+ "type": "function"
359
+ },
360
+ {
361
+ "inputs": [],
362
+ "name": "EXCESS_STAKE_RECEIVER",
363
+ "outputs": [
364
+ {
365
+ "internalType": "address",
366
+ "name": "",
367
+ "type": "address"
368
+ }
369
+ ],
370
+ "stateMutability": "view",
371
+ "type": "function"
372
+ },
373
+ {
374
+ "inputs": [],
375
+ "name": "IMPL_BRIDGE",
376
+ "outputs": [
377
+ {
378
+ "internalType": "address",
379
+ "name": "",
380
+ "type": "address"
381
+ }
382
+ ],
383
+ "stateMutability": "view",
384
+ "type": "function"
385
+ },
386
+ {
387
+ "inputs": [],
388
+ "name": "IMPL_CHALLENGE_MANAGER",
389
+ "outputs": [
390
+ {
391
+ "internalType": "address",
392
+ "name": "",
393
+ "type": "address"
394
+ }
395
+ ],
396
+ "stateMutability": "view",
397
+ "type": "function"
398
+ },
399
+ {
400
+ "inputs": [],
401
+ "name": "IMPL_INBOX",
402
+ "outputs": [
403
+ {
404
+ "internalType": "address",
405
+ "name": "",
406
+ "type": "address"
407
+ }
408
+ ],
409
+ "stateMutability": "view",
410
+ "type": "function"
411
+ },
412
+ {
413
+ "inputs": [],
414
+ "name": "IMPL_NEW_ROLLUP_ADMIN",
415
+ "outputs": [
416
+ {
417
+ "internalType": "address",
418
+ "name": "",
419
+ "type": "address"
420
+ }
421
+ ],
422
+ "stateMutability": "view",
423
+ "type": "function"
424
+ },
425
+ {
426
+ "inputs": [],
427
+ "name": "IMPL_NEW_ROLLUP_USER",
428
+ "outputs": [
429
+ {
430
+ "internalType": "address",
431
+ "name": "",
432
+ "type": "address"
433
+ }
434
+ ],
435
+ "stateMutability": "view",
436
+ "type": "function"
437
+ },
438
+ {
439
+ "inputs": [],
440
+ "name": "IMPL_OUTBOX",
441
+ "outputs": [
442
+ {
443
+ "internalType": "address",
444
+ "name": "",
445
+ "type": "address"
446
+ }
447
+ ],
448
+ "stateMutability": "view",
449
+ "type": "function"
450
+ },
451
+ {
452
+ "inputs": [],
453
+ "name": "IMPL_PATCHED_OLD_ROLLUP_USER",
454
+ "outputs": [
455
+ {
456
+ "internalType": "address",
457
+ "name": "",
458
+ "type": "address"
459
+ }
460
+ ],
461
+ "stateMutability": "view",
462
+ "type": "function"
463
+ },
464
+ {
465
+ "inputs": [],
466
+ "name": "IMPL_REI",
467
+ "outputs": [
468
+ {
469
+ "internalType": "address",
470
+ "name": "",
471
+ "type": "address"
472
+ }
473
+ ],
474
+ "stateMutability": "view",
475
+ "type": "function"
476
+ },
477
+ {
478
+ "inputs": [],
479
+ "name": "IMPL_SEQUENCER_INBOX",
480
+ "outputs": [
481
+ {
482
+ "internalType": "address",
483
+ "name": "",
484
+ "type": "address"
485
+ }
486
+ ],
487
+ "stateMutability": "view",
488
+ "type": "function"
489
+ },
490
+ {
491
+ "inputs": [],
492
+ "name": "INBOX",
493
+ "outputs": [
494
+ {
495
+ "internalType": "address",
496
+ "name": "",
497
+ "type": "address"
498
+ }
499
+ ],
500
+ "stateMutability": "view",
501
+ "type": "function"
502
+ },
503
+ {
504
+ "inputs": [],
505
+ "name": "IS_DELAY_BUFFERABLE",
506
+ "outputs": [
507
+ {
508
+ "internalType": "bool",
509
+ "name": "",
510
+ "type": "bool"
511
+ }
512
+ ],
513
+ "stateMutability": "view",
514
+ "type": "function"
515
+ },
516
+ {
517
+ "inputs": [],
518
+ "name": "MAX",
519
+ "outputs": [
520
+ {
521
+ "internalType": "uint64",
522
+ "name": "",
523
+ "type": "uint64"
524
+ }
525
+ ],
526
+ "stateMutability": "view",
527
+ "type": "function"
528
+ },
529
+ {
530
+ "inputs": [],
531
+ "name": "MINI_STAKE_AMOUNTS_STORAGE",
532
+ "outputs": [
533
+ {
534
+ "internalType": "address",
535
+ "name": "",
536
+ "type": "address"
537
+ }
538
+ ],
539
+ "stateMutability": "view",
540
+ "type": "function"
541
+ },
542
+ {
543
+ "inputs": [],
544
+ "name": "NUM_BIGSTEP_LEVEL",
545
+ "outputs": [
546
+ {
547
+ "internalType": "uint8",
548
+ "name": "",
549
+ "type": "uint8"
550
+ }
551
+ ],
552
+ "stateMutability": "view",
553
+ "type": "function"
554
+ },
555
+ {
556
+ "inputs": [],
557
+ "name": "OLD_ROLLUP",
558
+ "outputs": [
559
+ {
560
+ "internalType": "contract IOldRollup",
561
+ "name": "",
562
+ "type": "address"
563
+ }
564
+ ],
565
+ "stateMutability": "view",
566
+ "type": "function"
567
+ },
568
+ {
569
+ "inputs": [],
570
+ "name": "OSP",
571
+ "outputs": [
572
+ {
573
+ "internalType": "contract IOneStepProofEntry",
574
+ "name": "",
575
+ "type": "address"
576
+ }
577
+ ],
578
+ "stateMutability": "view",
579
+ "type": "function"
580
+ },
581
+ {
582
+ "inputs": [],
583
+ "name": "OUTBOX",
584
+ "outputs": [
585
+ {
586
+ "internalType": "address",
587
+ "name": "",
588
+ "type": "address"
589
+ }
590
+ ],
591
+ "stateMutability": "view",
592
+ "type": "function"
593
+ },
594
+ {
595
+ "inputs": [],
596
+ "name": "PREIMAGE_LOOKUP",
597
+ "outputs": [
598
+ {
599
+ "internalType": "contract StateHashPreImageLookup",
600
+ "name": "",
601
+ "type": "address"
602
+ }
603
+ ],
604
+ "stateMutability": "view",
605
+ "type": "function"
606
+ },
607
+ {
608
+ "inputs": [],
609
+ "name": "PROXY_ADMIN_BRIDGE",
610
+ "outputs": [
611
+ {
612
+ "internalType": "contract ProxyAdmin",
613
+ "name": "",
614
+ "type": "address"
615
+ }
616
+ ],
617
+ "stateMutability": "view",
618
+ "type": "function"
619
+ },
620
+ {
621
+ "inputs": [],
622
+ "name": "PROXY_ADMIN_INBOX",
623
+ "outputs": [
624
+ {
625
+ "internalType": "contract ProxyAdmin",
626
+ "name": "",
627
+ "type": "address"
628
+ }
629
+ ],
630
+ "stateMutability": "view",
631
+ "type": "function"
632
+ },
633
+ {
634
+ "inputs": [],
635
+ "name": "PROXY_ADMIN_OUTBOX",
636
+ "outputs": [
637
+ {
638
+ "internalType": "contract ProxyAdmin",
639
+ "name": "",
640
+ "type": "address"
641
+ }
642
+ ],
643
+ "stateMutability": "view",
644
+ "type": "function"
645
+ },
646
+ {
647
+ "inputs": [],
648
+ "name": "PROXY_ADMIN_REI",
649
+ "outputs": [
650
+ {
651
+ "internalType": "contract ProxyAdmin",
652
+ "name": "",
653
+ "type": "address"
654
+ }
655
+ ],
656
+ "stateMutability": "view",
657
+ "type": "function"
658
+ },
659
+ {
660
+ "inputs": [],
661
+ "name": "PROXY_ADMIN_SEQUENCER_INBOX",
662
+ "outputs": [
663
+ {
664
+ "internalType": "contract ProxyAdmin",
665
+ "name": "",
666
+ "type": "address"
667
+ }
668
+ ],
669
+ "stateMutability": "view",
670
+ "type": "function"
671
+ },
672
+ {
673
+ "inputs": [],
674
+ "name": "REI",
675
+ "outputs": [
676
+ {
677
+ "internalType": "address",
678
+ "name": "",
679
+ "type": "address"
680
+ }
681
+ ],
682
+ "stateMutability": "view",
683
+ "type": "function"
684
+ },
685
+ {
686
+ "inputs": [],
687
+ "name": "REPLENISH_RATE_IN_BASIS",
688
+ "outputs": [
689
+ {
690
+ "internalType": "uint64",
691
+ "name": "",
692
+ "type": "uint64"
693
+ }
694
+ ],
695
+ "stateMutability": "view",
696
+ "type": "function"
697
+ },
698
+ {
699
+ "inputs": [],
700
+ "name": "ROLLUP_READER",
701
+ "outputs": [
702
+ {
703
+ "internalType": "contract RollupReader",
704
+ "name": "",
705
+ "type": "address"
706
+ }
707
+ ],
708
+ "stateMutability": "view",
709
+ "type": "function"
710
+ },
711
+ {
712
+ "inputs": [],
713
+ "name": "SECONDS_PER_SLOT",
714
+ "outputs": [
715
+ {
716
+ "internalType": "uint256",
717
+ "name": "",
718
+ "type": "uint256"
719
+ }
720
+ ],
721
+ "stateMutability": "view",
722
+ "type": "function"
723
+ },
724
+ {
725
+ "inputs": [],
726
+ "name": "SEQ_INBOX",
727
+ "outputs": [
728
+ {
729
+ "internalType": "address",
730
+ "name": "",
731
+ "type": "address"
732
+ }
733
+ ],
734
+ "stateMutability": "view",
735
+ "type": "function"
736
+ },
737
+ {
738
+ "inputs": [],
739
+ "name": "SMALLSTEP_LEAF_SIZE",
740
+ "outputs": [
741
+ {
742
+ "internalType": "uint256",
743
+ "name": "",
744
+ "type": "uint256"
745
+ }
746
+ ],
747
+ "stateMutability": "view",
748
+ "type": "function"
749
+ },
750
+ {
751
+ "inputs": [],
752
+ "name": "STAKE_AMOUNT",
753
+ "outputs": [
754
+ {
755
+ "internalType": "uint256",
756
+ "name": "",
757
+ "type": "uint256"
758
+ }
759
+ ],
760
+ "stateMutability": "view",
761
+ "type": "function"
762
+ },
763
+ {
764
+ "inputs": [],
765
+ "name": "STAKE_TOKEN",
766
+ "outputs": [
767
+ {
768
+ "internalType": "address",
769
+ "name": "",
770
+ "type": "address"
771
+ }
772
+ ],
773
+ "stateMutability": "view",
774
+ "type": "function"
775
+ },
776
+ {
777
+ "inputs": [],
778
+ "name": "THRESHOLD",
779
+ "outputs": [
780
+ {
781
+ "internalType": "uint64",
782
+ "name": "",
783
+ "type": "uint64"
784
+ }
785
+ ],
786
+ "stateMutability": "view",
787
+ "type": "function"
788
+ },
789
+ {
790
+ "inputs": [
791
+ {
792
+ "internalType": "address[]",
793
+ "name": "validators",
794
+ "type": "address[]"
795
+ }
796
+ ],
797
+ "name": "perform",
798
+ "outputs": [],
799
+ "stateMutability": "nonpayable",
800
+ "type": "function"
801
+ }
802
+ ],
803
+ "bytecode": "0x6105806040523480156200001257600080fd5b506040516200853c3803806200853c833981016040819052620000359162000779565b83516001600160a01b039081166101005260208086015182166101205260408087015183166101405260608088015184166101605260808089015185166101805260a089015185166101a05260c089015185166101c05260e089015185166103605287518516610380529287015184166103a0528682015184166103c05286015183166103e052908501519091166104005251620000d390620002b3565b604051809103906000f080158015620000f0573d6000803e3d6000fd5b506001600160a01b03166104205260208401516040516200011190620002c1565b6001600160a01b039091168152602001604051809103906000f0801580156200013e573d6000803e3d6000fd5b506001600160a01b0390811661044052825181166104605260208084015182166104805260408085015183166104a05260608086015184166104c05260808087015185166104e05260a08088015186166105005260c088015186166105205260e08801518616610540526101008801518616610560528601516102605285516001600160401b039081166101e0529386015190931661020052848201519093166102205291830151610240528201519051620001fa90620002cf565b620002069190620008a0565b604051809103906000f08015801562000223573d6000803e3d6000fd5b506001600160a01b03166102c05260c08082015115156102805260e08083015160805261010083015160a05261012083015190915261014082015160ff1690526101608101516001600160401b039081166102a05261018082015115156102e0526101a09091018051602001518216610300528051518216610320525160400151166103405250620008e6915050565b610a2d8062006c0283390190565b610c6d806200762f83390190565b6102a0806200829c83390190565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715620003195762000319620002dd565b60405290565b6040516101c081016001600160401b0381118282101715620003195762000319620002dd565b60405161010081016001600160401b0381118282101715620003195762000319620002dd565b6001600160a01b03811681146200038157600080fd5b50565b805162000391816200036b565b919050565b600060a08284031215620003a957600080fd5b60405160a081016001600160401b0381118282101715620003ce57620003ce620002dd565b80604052508091508251620003e3816200036b565b81526020830151620003f5816200036b565b602082015260408301516200040a816200036b565b604082015260608301516200041f816200036b565b6060820152608083015162000434816200036b565b6080919091015292915050565b600061012082840312156200045557600080fd5b6200045f620002f3565b90506200046c8262000384565b81526200047c6020830162000384565b60208201526200048f6040830162000384565b6040820152620004a26060830162000384565b6060820152620004b56080830162000384565b6080820152620004c860a0830162000384565b60a0820152620004db60c0830162000384565b60c0820152620004ee60e0830162000384565b60e08201526101006200050381840162000384565b9082015292915050565b80516001600160401b03811681146200039157600080fd5b600082601f8301126200053757600080fd5b815160206001600160401b0380831115620005565762000556620002dd565b8260051b604051601f19603f830116810181811084821117156200057e576200057e620002dd565b6040529384528581018301938381019250878511156200059d57600080fd5b83870191505b84821015620005be57815183529183019190830190620005a3565b979650505050505050565b805180151581146200039157600080fd5b805160ff811681146200039157600080fd5b600060608284031215620005ff57600080fd5b604051606081016001600160401b0381118282101715620006245762000624620002dd565b60405290508062000635836200050d565b815262000645602084016200050d565b602082015262000658604084016200050d565b60408201525092915050565b600061020082840312156200067857600080fd5b620006826200031f565b90506200068f826200050d565b81526200069f602083016200050d565b6020820152620006b26040830162000384565b60408201526060828101519082015260808201516001600160401b03811115620006db57600080fd5b620006e98482850162000525565b60808301525060a082015160a08201526200070760c08301620005c9565b60c082015260e08281015190820152610100808301519082015261012080830151908201526101406200073c818401620005da565b90820152610160620007508382016200050d565b9082015261018062000764838201620005c9565b908201526101a06200050384848301620005ec565b6000806000808486036102e08112156200079257600080fd5b61010080821215620007a357600080fd5b620007ad62000345565b91508651620007bc816200036b565b8252620007cc6020880162000384565b6020830152620007df6040880162000384565b6040830152620007f26060880162000384565b6060830152620008056080880162000384565b60808301526200081860a0880162000384565b60a08301526200082b60c0880162000384565b60c08301526200083e60e0880162000384565b60e0830152819550620008548882890162000396565b9450505062000868866101a0870162000441565b6102c08601519092506001600160401b038111156200088657600080fd5b620008948782880162000664565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015620008da57835183529284019291840191600101620008bc565b50909695505050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c0516102e05161030051610320516103405161036051610380516103a0516103c0516103e05161040051610420516104405161046051610480516104a0516104c0516104e05161050051610520516105405161056051615f5e62000ca4600039600081816103fa0152610a050152600081816103230152610ba301526000818161052a0152610bd20152600081816104d101526117cf01526000818161081e01526123210152600081816107ce01526121e5015260008181610655015261211e0152600081816107f6015281816124e00152818161269601526127550152600081816108be0152611fb501526000818161057a01528181610c0101528181610f7f015281816112030152818161144a01528181611542015281816115f601528181611866015281816118950152611c5e015260008181610846015281816119d50152611a9f01526000818161055201526121470152600081816104a9015281816124b0015281816126be0152612779015260008181610502015261220f01526000818161039001528181610a260152611fde015260008181610368015261234b0152600081816106f50152610d3901526000818161090e015261256c01526000818161062d015261250c015260008181610896015261253c0152600081816108e60152818161248901526128690152600081816107560152611d6101526000818161094f0152611eac01526000818161071d01528181611145015261119201526000818161067d0152611d260152600081816109c70152611c3801526000818161044a0152611c090152600081816106cd0152610d180152600081816103b80152611bd901526000818161077e01528181610b0701526120f501526000818161042201528181610b36015281816122f801526123ac0152600081816107a601528181610b65015281816121bc015261227001526000818161086e01528181610ad8015281816124680152818161288c0152818161298e01528181612a7401528181612b1c0152612d5f01526000818161097701528181610aa901528181611f8c01526120740152600081816106a5015281816113d30152818161170101526117f701526000818161060501528181610d710152611cf70152600081816105a20152611e8301526000818161099f0152611e410152600081816104720152611e1b0152600081816105dd0152611df50152615f5e6000f3fe60806040523480156200001157600080fd5b5060043610620003185760003560e01c80638765240f11620001a5578063cc8089bb11620000f5578063eb657a4e11620000a3578063ee9a31a2116200007a578063ee9a31a21462000971578063fa2874201462000999578063faf5625f14620009c157600080fd5b8063eb657a4e1462000908578063ebe03a931462000930578063ec4f74ce146200094957600080fd5b8063d49d518111620000d8578063d49d51811462000890578063dae7cb8b14620008b8578063e8180c2914620008e057600080fd5b8063cc8089bb1462000840578063d384cb95146200086857600080fd5b8063b70106971162000153578063c21c42331162000136578063c21c423314620007c8578063c519d15114620007f0578063c897f55e146200081857600080fd5b8063b70106971462000778578063be41b36714620007a057600080fd5b80639f9854e511620001885780639f9854e514620006ef578063b38d57f01462000717578063b5e00c3f146200075057600080fd5b80638765240f146200069f57806391ddb28514620006c757600080fd5b8063304b9071116200026d5780635d9e2444116200021b578063785ffb3711620001f2578063785ffb371462000627578063817cd312146200064f57806385e1f4d0146200067757600080fd5b80635d9e2444146200059c578063609fb50314620005d757806364f4992a14620005ff57600080fd5b80634692de5d11620002505780634692de5d14620005245780634b2f51ef146200054c5780634e0e75fb146200057457600080fd5b8063304b907114620004f35780633c2b784014620004fc57600080fd5b80631b142ea711620002cb5780631ccc2cd111620002ae5780631ccc2cd1146200046c5780632cfb7ca314620004a35780632db93bdc14620004cb57600080fd5b80631b142ea7146200041c5780631c39b672146200044457600080fd5b80630a54257d11620003005780630a54257d146200038a5780631047fc5214620003b257806310a662e214620003f457600080fd5b8062f9731e146200031d5780630787484b1462000362575b600080fd5b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b62000494600c81565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620005c47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200162000359565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6200073f7f000000000000000000000000000000000000000000000000000000000000000081565b604051901515815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6200073f7f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620009476200094136600462003068565b620009e9565b005b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620009f3620013d1565b6000620009ff62001858565b905060007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405162000a539062002dde565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000a96573d6000803e3d6000fd5b50905060006040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c5e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c84919062003113565b6001600160a01b0316815250905060008360405160200162000ca791906200343d565b604051602081830303815290604052805190602001209050600062000cf9826040518060200162000cd89062002dec565b6020820181038252601f19601f820116604052508051906020012062001ee9565b905062000d068162001f75565b836001600160a01b0316631a72d54c827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008961014001518a61016001518b61018001518c602001517f00000000000000000000000000000000000000000000000000000000000000008e61020001518f61010001516040518b63ffffffff1660e01b815260040162000dc39a9998979695949392919062003452565b600060405180830381600087803b15801562000dde57600080fd5b505af115801562000df3573d6000803e3d6000fd5b5050505060008260405162000e089062002dec565b8190604051809103906000f590508015801562000e29573d6000803e3d6000fd5b509050816001600160a01b0316816001600160a01b03161462000e935760405162461bcd60e51b815260206004820152601560248201527f554e455850435445445f524f4c4c55505f41444452000000000000000000000060448201526064015b60405180910390fd5b608086018051309091526040517fd384644b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063d384644b9062000ee6908a908990600401620034cf565b600060405180830381600087803b15801562000f0157600080fd5b505af115801562000f16573d6000803e3d6000fd5b50505050875160001462001143576000885167ffffffffffffffff81111562000f435762000f4362002f8b565b60405190808252806020026020018201604052801562000f6d578160200160208202803683370190505b50905060005b8951811015620010c3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663facd743b8b838151811062000fc15762000fc1620035b5565b60200260200101516040518263ffffffff1660e01b815260040162000ff591906001600160a01b0391909116815260200190565b602060405180830381865afa15801562001013573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010399190620035e1565b620010875760405162461bcd60e51b815260206004820152601860248201527f554e45585045435445445f4e45575f56414c494441544f520000000000000000604482015260640162000e8a565b60018282815181106200109e576200109e620035b5565b9115156020928302919091019091015280620010ba8162003615565b91505062000f73565b506040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063a3ffb772906200110d908c9085906004016200368b565b600060405180830381600087803b1580156200112857600080fd5b505af11580156200113d573d6000803e3d6000fd5b50505050505b7f00000000000000000000000000000000000000000000000000000000000000001562001201576040517fa2b4f1d80000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000151560048201526001600160a01b0383169063a2b4f1d890602401600060405180830381600087803b158015620011e757600080fd5b505af1158015620011fc573d6000803e3d6000fd5b505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166355840a586040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200127e575060408051601f3d908101601f191682019092526200127b9181019062003113565b60015b156200130d576001600160a01b038116156200130b576040517f0d561b370000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152841690630d561b3790602401600060405180830381600087803b158015620012f157600080fd5b505af115801562001306573d6000803e3d6000fd5b505050505b505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528316906313af403590602401600060405180830381600087803b1580156200136a57600080fd5b505af11580156200137f573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528a1660208201527f7e5cc5c3fce046d868d5918548df8d3e8ef9f09e6fb30a68081f1f1348cd0314935001905060405180910390a15050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200142d57600080fd5b505af115801562001442573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620014a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014cd919062003701565b905060328167ffffffffffffffff161115620014e7575060325b60005b8167ffffffffffffffff168167ffffffffffffffff1610156200179e576040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa15801562001592573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b8919062003113565b6040517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa1580156200163e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200166491906200371f565b905080608001518015620016845750606081015167ffffffffffffffff16155b156200178657604080516001808252818301909252600091602080830190803683370190505090508281600081518110620016c357620016c3620035b5565b6001600160a01b0392831660209182029290920101526040517f7c75c2980000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090911690637c75c298906200173a908490600401620037b2565b600060405180830381600087803b1580156200175557600080fd5b505af11580156200176a573d6000803e3d6000fd5b505050506001856200177d9190620037c7565b94505062001796565b826200179281620037f2565b9350505b5050620014ea565b506040517f0d40a0fd0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630d40a0fd90602401600060405180830381600087803b1580156200183c57600080fd5b505af115801562001851573d6000803e3d6000fd5b5050505050565b6200186262002dfa565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166392c8134c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001918919062003701565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff909116600482015260240161018060405180830381865afa15801562001977573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200199d91906200381c565b516040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081526004810182905290915060009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac09060240160c060405180830381865afa15801562001a25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a4b919062003970565b9150915062001a5962002f04565b8251815260208084015190820190600281111562001a7b5762001a7b62003227565b9081600281111562001a915762001a9162003227565b905250836001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633164413062001acf8462002426565b856040518363ffffffff1660e01b815260040162001aef92919062003a41565b602060405180830381865afa15801562001b0d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b33919062003a78565b1462001b825760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c617465737420657865637574696f6e2068617368000000604482015260640162000e8a565b62001bae6040518060800160405280600081526020016000815260200160008152602001600081525090565b60408051606081018252600080825260208201819052918101919091526040518061026001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001cbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ce1919062003a78565b8152602001306001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020016040518060200160405280600081525081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ec2ae16040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001dbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001de8919081019062003a92565b81526020018381526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f0000000000000000000000000000000000000000000000000000000000000000815260200184815260200185815260200160006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000060ff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815260200182815250965050505050505090565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b90505b92915050565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b1580156200202557600080fd5b505af11580156200203a573d6000803e3d6000fd5b50506040517f919cc7060000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063919cc7069150602401600060405180830381600087803b158015620020bb57600080fd5b505af1158015620020d0573d6000803e3d6000fd5b50505050620020de62002466565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b1580156200218e57600080fd5b505af1158015620021a3573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b1580156200225557600080fd5b505af11580156200226a573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620022ca57600080fd5b505af1158015620022df573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b1580156200239157600080fd5b505af1158015620023a6573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200240657600080fd5b505af11580156200241b573d6000803e3d6000fd5b505050505050505050565b6200243062002f2d565b604051806040016040528083600001518152602001836020015160028111156200245e576200245e62003227565b905292915050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000001562002677577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639623609d827f000000000000000000000000000000000000000000000000000000000000000060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815250604051602401620025aa919062003b21565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa655d93700000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200263d9392919060040162003b53565b600060405180830381600087803b1580156200265857600080fd5b505af11580156200266d573d6000803e3d6000fd5b505050506200271d565b60405163266a23b160e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906399a88ec490604401600060405180830381600087803b1580156200270357600080fd5b505af115801562002718573d6000803e3d6000fd5b505050505b6040517f204e1c7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000008116917f00000000000000000000000000000000000000000000000000000000000000009091169063204e1c7a90602401602060405180830381865afa158015620027c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027e9919062003113565b6001600160a01b031614620028675760405162461bcd60e51b815260206004820152603160248201527f44656c61794275666665723a206e65772073657120696e626f7820696d706c6560448201527f6d656e746174696f6e206e6f7420736574000000000000000000000000000000606482015260840162000e8a565b7f000000000000000000000000000000000000000000000000000000000000000015157f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634b678a666040518163ffffffff1660e01b8152600401602060405180830381865afa158015620028e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200290f9190620035e1565b151514620029865760405162461bcd60e51b815260206004820152602660248201527f44656c61794275666665723a20697344656c617942756666657261626c65206e60448201527f6f74207365740000000000000000000000000000000000000000000000000000606482015260840162000e8a565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ebea461d6040518163ffffffff1660e01b8152600401608060405180830381865afa158015620029eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a11919062003b8a565b93509350935093506000600c8362002a2a919062003bd7565b1562002a505762002a3d600c8462003bee565b62002a4a90600162003c05565b62002a5d565b62002a5d600c8462003bee565b905084811162002a6e578462002a70565b805b94507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b31761f86040518060800160405280888152602001878152602001868152602001858152506040518263ffffffff1660e01b815260040162002ae0919062003c1b565b600060405180830381600087803b15801562002afb57600080fd5b505af115801562002b10573d6000803e3d6000fd5b505050506000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ebea461d6040518163ffffffff1660e01b8152600401608060405180830381865afa15801562002b79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9f919062003b8a565b935093509350935088841462002bf85760405162461bcd60e51b815260206004820181905260248201527f44656c61794275666665723a2064656c6179426c6f636b73206e6f7420736574604482015260640162000e8a565b86821462002c6f5760405162461bcd60e51b815260206004820152602160248201527f44656c61794275666665723a2064656c61795365636f6e6473206e6f7420736560448201527f7400000000000000000000000000000000000000000000000000000000000000606482015260840162000e8a565b87831462002ce65760405162461bcd60e51b815260206004820152602160248201527f44656c61794275666665723a20667574757265426c6f636b73206e6f7420736560448201527f7400000000000000000000000000000000000000000000000000000000000000606482015260840162000e8a565b85811462002d5d5760405162461bcd60e51b815260206004820152602260248201527f44656c61794275666665723a206675747572655365636f6e6473206e6f74207360448201527f6574000000000000000000000000000000000000000000000000000000000000606482015260840162000e8a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002db957600080fd5b505af115801562002dce573d6000803e3d6000fd5b5050505050505050505050505050565b610ed38062003c4883390190565b61140e8062004b1b83390190565b604051806102600160405280600067ffffffffffffffff16815260200160006001600160a01b03168152602001600081526020016000801916815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001606081526020016060815260200162002e996040518060800160405280600081526020016000815260200160008152602001600081525090565b815260200160008152602001600081526020016000815260200162002ebd62002f04565b81526000602080830182905260408084018390526060808501849052608085018490528151908101825283815291820183905281019190915260a09091015290565b905290565b604051806060016040528062002f1962002f4e565b815260200160008152600060209091015290565b604051806040016040528062002f4262002f4e565b81526020016000905290565b604051806040016040528062002f6362002f6d565b815260200162002eff5b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562002fc85762002fc862002f8b565b60405290565b6040805190810167ffffffffffffffff8111828210171562002fc85762002fc862002f8b565b604051601f8201601f1916810167ffffffffffffffff8111828210171562003020576200302062002f8b565b604052919050565b600067ffffffffffffffff82111562003045576200304562002f8b565b5060051b60200190565b6001600160a01b03811681146200306557600080fd5b50565b600060208083850312156200307c57600080fd5b823567ffffffffffffffff8111156200309457600080fd5b8301601f81018513620030a657600080fd5b8035620030bd620030b78262003028565b62002ff4565b81815260059190911b82018301908381019087831115620030dd57600080fd5b928401925b8284101562003108578335620030f8816200304f565b82529284019290840190620030e2565b979650505050505050565b6000602082840312156200312657600080fd5b815162003133816200304f565b9392505050565b6000815180845260005b81811015620031625760208185018101518683018201520162003144565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b83811015620031b45781518752958201959082019060010162003196565b509495945050505050565b80518260005b6002811015620031e6578251825260209283019290910190600101620031c5565b5050506020808201516040840160005b60028110156200321f57825167ffffffffffffffff1682529183019190830190600101620031f6565b505050505050565b634e487b7160e01b600052602160045260246000fd5b600381106200325c57634e487b7160e01b600052602160045260246000fd5b9052565b6200326d828251620031bf565b60208101516200328160808401826200323d565b506040015160a09190910152565b805167ffffffffffffffff16825260006103a06020830151620032bd60208601826001600160a01b03169052565b5060408301516040850152606083015160608501526080830151620032ed60808601826001600160a01b03169052565b5060a08301516200330960a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e08601526200332d828601826200313a565b91505061010080840151858303828701526200334a838262003182565b6101208681015180518983015260208101516101408a015260408101516101608a015260608101516101808a01529194509250905050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e083818901528287015193506102009250620033c88389018562003260565b908601516102c08801528501516001600160a01b03166102e087015284015160ff166103008601525061022083015167ffffffffffffffff908116610320860152610240840151805182166103408701526020810151821661036087015260408101519091166103808601525b509392505050565b60208152600062001f6c60208301846200328f565b60006101406001600160a01b03808e16845267ffffffffffffffff8d166020850152808c1660408501528a60608501528960808501528860a085015280881660c085015280871660e08501525060ff851661010084015280610120840152620034be8184018562003182565b9d9c50505050505050505050505050565b6000610140808352620034e5818401866200328f565b9150506001600160a01b03835116602083015260208301516200351360408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e08301516101006200359a818501836001600160a01b03169052565b8401516001600160a01b038116610120850152905062003435565b634e487b7160e01b600052603260045260246000fd5b80518015158114620035dc57600080fd5b919050565b600060208284031215620035f457600080fd5b62001f6c82620035cb565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620036495762003649620035ff565b5060010190565b600081518084526020808501945080840160005b83811015620031b45781516001600160a01b03168752958201959082019060010162003664565b604081526000620036a0604083018562003650565b82810360208481019190915284518083528582019282019060005b81811015620036db578451151583529383019391830191600101620036bb565b5090979650505050505050565b805167ffffffffffffffff81168114620035dc57600080fd5b6000602082840312156200371457600080fd5b62001f6c82620036e8565b600060a082840312156200373257600080fd5b60405160a0810181811067ffffffffffffffff8211171562003758576200375862002f8b565b604052825181526200376d60208401620036e8565b60208201526200378060408401620036e8565b60408201526200379360608401620036e8565b6060820152620037a660808401620035cb565b60808201529392505050565b60208152600062001f6c602083018462003650565b67ffffffffffffffff828116828216039080821115620037eb57620037eb620035ff565b5092915050565b600067ffffffffffffffff808316818103620038125762003812620035ff565b6001019392505050565b600061018082840312156200383057600080fd5b6200383a62002fa1565b8251815260208301516020820152604083015160408201526200386060608401620036e8565b60608201526200387360808401620036e8565b60808201526200388660a08401620036e8565b60a08201526200389960c08401620036e8565b60c0820152620038ac60e08401620036e8565b60e0820152610100620038c1818501620036e8565b90820152610120620038d5848201620036e8565b90820152610140620038e9848201620036e8565b90820152610160928301519281019290925250919050565b600082601f8301126200391357600080fd5b6200391d62002fce565b8060408401858111156200393057600080fd5b845b8181101562003955576200394681620036e8565b84526020938401930162003932565b509095945050505050565b805160038110620035dc57600080fd5b60008082840360c08112156200398557600080fd5b60a08112156200399457600080fd5b6200399e62002fce565b6080821215620039ad57600080fd5b620039b762002fce565b915085601f860112620039c957600080fd5b620039d362002fce565b806040870188811115620039e657600080fd5b875b8181101562003a02578051845260209384019301620039e8565b5081855262003a12898262003901565b602086015250505081815262003a2b6080860162003960565b602082015260a094909401519395939450505050565b600060c08201905062003a56828551620031bf565b602084015162003a6a60808401826200323d565b508260a08301529392505050565b60006020828403121562003a8b57600080fd5b5051919050565b6000602080838503121562003aa657600080fd5b825167ffffffffffffffff81111562003abe57600080fd5b8301601f8101851362003ad057600080fd5b805162003ae1620030b78262003028565b81815260059190911b8201830190838101908783111562003b0157600080fd5b928401925b82841015620031085783518252928401929084019062003b06565b6060810162001f6f8284805167ffffffffffffffff908116835260208083015182169084015260409182015116910152565b60006001600160a01b0380861683528085166020840152506060604083015262003b8160608301846200313a565b95945050505050565b6000806000806080858703121562003ba157600080fd5b505082516020840151604085015160609095015191969095509092509050565b634e487b7160e01b600052601260045260246000fd5b60008262003be95762003be962003bc1565b500690565b60008262003c005762003c0062003bc1565b500490565b8082018082111562001f6f5762001f6f620035ff565b815181526020808301519082015260408083015190820152606080830151908201526080810162001f6f56fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b506113ee806100206000396000f3fe6080604052600436106100225760003560e01c8063d384644b1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610d95565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d792919061113d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9e7e6aa70000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461132b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a661134c565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61132b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff61134c565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e61132b565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d146104585761045861134c565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161139260279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf9190611362565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c919061137e565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610260810167ffffffffffffffff8111828210171561094157610941610908565b604051601f8201601f1916810167ffffffffffffffff811182821017156109db576109db610908565b604052919050565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f830112610a2357600080fd5b813567ffffffffffffffff811115610a3d57610a3d610908565b610a506020601f19601f840116016109b2565b818152846020838601011115610a6557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610a9357600080fd5b8135602067ffffffffffffffff821115610aaf57610aaf610908565b8160051b610abe8282016109b2565b9283528481018201928281019087851115610ad857600080fd5b83870192505b84831015610af757823582529183019190830190610ade565b979650505050505050565b600060808284031215610b1457600080fd5b6040516080810181811067ffffffffffffffff82111715610b3757610b37610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610b7957600080fd5b610b81610947565b806040840185811115610b9357600080fd5b845b81811015610bb457610ba6816109e3565b845260209384019301610b95565b509095945050505050565b80356003811061029c57600080fd5b600081830360c0811215610be157600080fd5b610be961091e565b91506080811215610bf957600080fd5b50610c02610947565b83601f840112610c1157600080fd5b610c19610947565b806040850186811115610c2b57600080fd5b855b81811015610c45578035845260209384019301610c2d565b50818452610c538782610b68565b60208501525050508152610c6960808301610bbf565b602082015260a0820135604082015292915050565b803560ff8116811461029c57600080fd5b600060608284031215610ca157600080fd5b610ca961091e565b9050610cb4826109e3565b8152610cc2602083016109e3565b6020820152610cd3604083016109e3565b604082015292915050565b60006101208284031215610cf157600080fd5b610cf961096a565b9050610d04826109fb565b8152610d12602083016109fb565b6020820152610d23604083016109fb565b6040820152610d34606083016109fb565b6060820152610d45608083016109fb565b6080820152610d5660a083016109fb565b60a0820152610d6760c083016109fb565b60c0820152610d7860e083016109fb565b60e0820152610100610d8b8184016109fb565b9082015292915050565b600080610140808486031215610daa57600080fd5b833567ffffffffffffffff80821115610dc257600080fd5b908501906103a08288031215610dd757600080fd5b610ddf61098e565b610de8836109e3565b8152610df6602084016109fb565b60208201526040830135604082015260608301356060820152610e1b608084016109fb565b6080820152610e2c60a084016109fb565b60a082015260c083013560c082015260e083013582811115610e4d57600080fd5b610e5989828601610a12565b60e0830152506101008084013583811115610e7357600080fd5b610e7f8a828701610a82565b8284015250506101209150610e9688838501610b02565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610ed28a828701610bce565b848401526102c085013586840152610eed6102e086016109fb565b82840152610efe6103008601610c7e565b9083015250610f1061032084016109e3565b610220820152610f24886103408501610c8f565b61024082015280955050505050610f3e8460208501610cde565b90509250929050565b60005b83811015610f62578181015183820152602001610f4a565b50506000910152565b60008151808452610f83816020860160208601610f47565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610fc757815187529582019590820190600101610fab565b509495945050505050565b60038110610ff057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b600281101561101b578251825260209283019290910190600101610ffc565b505050602090810151906040840160005b600281101561105357835167ffffffffffffffff168252928201929082019060010161102c565b505082015190506110676080840182610fd2565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516110b660608401826001600160a01b03169052565b5060808101516110d160808401826001600160a01b03169052565b5060a08101516110ec60a08401826001600160a01b03169052565b5060c081015161110760c08401826001600160a01b03169052565b5060e081015161112260e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b600061014080835261115b818401865167ffffffffffffffff169052565b6020850151610160611177818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c06111b3818901866001600160a01b03169052565b60a08a015194506101e06111d1818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c015196506102206103a0818c01526111ff6104e08c0189610f6b565b97506101008d01516102407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08d8b0301818e015261123d8a83610f97565b99506101208f015191506112766102608e0183805182526020810151602083015260408101516040830152606081015160608301525050565b998e01516102e08d0152878e01516103008d0152868e01516103208d0152858e0151996112a76103408e018c610ff4565b948e01516104008d015250918c01516001600160a01b03166104208b01528b015160ff166104408a01528a015167ffffffffffffffff9081166104608a0152908a0151805182166104808a0152602081015182166104a08a015260408101519091166104c0890152945061131a92505050565b915061082490506020830184611075565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251611374818460208701610f47565b9190910192915050565b6020815260006106486020830184610f6b56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122031f55e3d5fa05a560e2a6fd55fb29943763c9e5689f86f5b2da68232793f691264736f6c63430008110033a2646970667358221220a64a84b35448a6fba6092676c69c8d42a04350aec69257e44edc2f7c712707be64736f6c63430008110033608060405234801561001057600080fd5b50610a0d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806331644130146100465780638eaa6ac01461006c578063945c94941461008d575b600080fd5b61005961005436600461041d565b6100a2565b6040519081526020015b60405180910390f35b61007f61007a366004610448565b610193565b604051610063929190610483565b6100a061009b36600461050a565b6102bf565b005b60006101526100b636859003850185610598565b8051805160209182015192820151805190830151604080517f476c6f62616c2073746174653a0000000000000000000000000000000000000081870152602d810194909452604d8401959095527fffffffffffffffff00000000000000000000000000000000000000000000000060c092831b8116606d850152911b1660758201528251808203605d018152607d909101909252815191012090565b8261016360a0860160808701610667565b6040516020016101759392919061068b565b60405160208183030381529060405280519060200120905092915050565b61019b6103ab565b600082815260208190526040812080546101b4906106c9565b80601f01602080910402602001604051908101604052809291908181526020018280546101e0906106c9565b801561022d5780601f106102025761010080835404028352916020019161022d565b820191906000526020600020905b81548152906001019060200180831161021057829003601f168201915b50505050508060200190518101906102459190610766565b909250905060008190036102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f48617368206e6f7420796574207365740000000000000000000000000000000060448201526064015b60405180910390fd5b915091565b6102c982826100a2565b8314610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642068617368000000000000000000000000000000000000000060448201526064016102b1565b818160405160200161034492919061088c565b60408051601f1981840301815291815260008581526020819052209061036a90826108f5565b507f14c0a6b8d81f5915dacfd85e41ae4798343ec29de408ac4c13360c7238ae0ad983838360405161039e939291906109b5565b60405180910390a1505050565b60405180604001604052806103be6103cb565b815260200160005b905290565b60405180604001604052806103de6103e7565b81526020016103c65b60405180604001604052806002906020820280368337509192915050565b600060a0828403121561041757600080fd5b50919050565b60008060c0838503121561043057600080fd5b61043a8484610405565b9460a0939093013593505050565b60006020828403121561045a57600080fd5b5035919050565b6003811061047f57634e487b7160e01b600052602160045260246000fd5b9052565b8251805160c0830191908360005b60028110156104b0578251825260209283019290910190600101610491565b505050602090810151906040840160005b60028110156104e857835167ffffffffffffffff16825292820192908201906001016104c1565b505085015190506104fc6080840182610461565b508260a08301529392505050565b600080600060e0848603121561051f57600080fd5b833592506105308560208601610405565b915060c084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561057957610579610540565b60405290565b67ffffffffffffffff8116811461059557600080fd5b50565b6000608082840312156105aa57600080fd5b6105b2610556565b83601f8401126105c157600080fd5b6105c9610556565b8060408501868111156105db57600080fd5b855b818110156105f55780358452602093840193016105dd565b5081845286605f87011261060857600080fd5b610610610556565b9250829150608086018781111561062657600080fd5b8082101561064b5781356106398161057f565b84526020938401939190910190610626565b50506020830152509392505050565b6003811061059557600080fd5b60006020828403121561067957600080fd5b81356106848161065a565b9392505050565b8381528260208201526000600383106106b457634e487b7160e01b600052602160045260246000fd5b5060f89190911b604082015260410192915050565b600181811c908216806106dd57607f821691505b60208210810361041757634e487b7160e01b600052602260045260246000fd5b600082601f83011261070e57600080fd5b610716610556565b80604084018581111561072857600080fd5b845b8181101561074b57805161073d8161057f565b84526020938401930161072a565b509095945050505050565b80516107618161065a565b919050565b60008082840360c081121561077a57600080fd5b60a081121561078857600080fd5b610790610556565b608082121561079e57600080fd5b6107a6610556565b915085601f8601126107b757600080fd5b6107bf610556565b8060408701888111156107d157600080fd5b875b818110156107eb5780518452602093840193016107d3565b508185526107f989826106fd565b602086015250505081815261081060808601610756565b602082015260a094909401519395939450505050565b6040818337604082016040820160005b600281101561086957813561084a8161057f565b67ffffffffffffffff1683526020928301929190910190600101610836565b505050608081013561087a8161065a565b6108876080840182610461565b505050565b60c0810161089a8285610826565b8260a08301529392505050565b601f82111561088757600081815260208120601f850160051c810160208610156108ce5750805b601f850160051c820191505b818110156108ed578281556001016108da565b505050505050565b815167ffffffffffffffff81111561090f5761090f610540565b6109238161091d84546106c9565b846108a7565b602080601f83116001811461095857600084156109405750858301515b600019600386901b1c1916600185901b1785556108ed565b600085815260208120601f198616915b8281101561098757888601518255948401946001909101908401610968565b50858210156109a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b83815260e081016109c96020830185610826565b8260c083015294935050505056fea26469706673582212206f17ff74638b091f76dd1fd0369b5226eebb0992cba2c4263a21abfb3c644d8e64736f6c6343000811003360a060405234801561001057600080fd5b50604051610c6d380380610c6d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610ba36100ca600039600081816101c801528181610219015281816102a20152818161035d015281816103da015281816104f7015281816105c2015281816106310152818161069101526107280152610ba36000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063a23c44b111610076578063cb23bcb51161005b578063cb23bcb5146101c3578063dff69787146101ea578063facd743b146101f257600080fd5b8063a23c44b114610152578063bc45e0ae146101bb57600080fd5b80636ddd3744116100a75780636ddd3744146101095780638ee1a1261461011c57806392c8134c1461013257600080fd5b806355840a58146100c357806365f7f80d146100e8575b600080fd5b6100cb610215565b6040516001600160a01b0390911681526020015b60405180910390f35b6100f061029e565b60405167ffffffffffffffff90911681526020016100df565b6100cb6101173660046107ae565b610322565b6101246103d6565b6040519081526020016100df565b6101456101403660046107ae565b61045a565b6040516100df91906107d2565b6101656101603660046108eb565b610563565b6040516100df9190600060a08201905082518252602083015167ffffffffffffffff8082166020850152806040860151166040850152806060860151166060850152505060808301511515608083015292915050565b6100cb61062d565b6100cb7f000000000000000000000000000000000000000000000000000000000000000081565b6100f061068d565b6102056102003660046108eb565b6106ed565b60405190151581526020016100df565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166355840a586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190610908565b905090565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190610935565b6040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa1580156103ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d09190610908565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa158015610436573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102999190610952565b6040805161018081018252600080825260208201819052818301819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201819052610140820181905261016082015290517f92c8134c00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906392c8134c9060240161018060405180830381865afa15801561053f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d091906109bc565b6040805160a08101825260008082526020820181905281830181905260608201819052608082015290517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa158015610609573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d09190610a9e565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610275573d6000803e3d6000fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102fe573d6000803e3d6000fd5b6040517ffacd743b0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063facd743b90602401602060405180830381865afa158015610771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d09190610b52565b67ffffffffffffffff811681146107ab57600080fd5b50565b6000602082840312156107c057600080fd5b81356107cb81610795565b9392505050565b600061018082019050825182526020830151602083015260408301516040830152606083015161080e606084018267ffffffffffffffff169052565b50608083015161082a608084018267ffffffffffffffff169052565b5060a083015161084660a084018267ffffffffffffffff169052565b5060c083015161086260c084018267ffffffffffffffff169052565b5060e083015161087e60e084018267ffffffffffffffff169052565b506101008381015167ffffffffffffffff81168483015250506101208381015167ffffffffffffffff81168483015250506101408381015167ffffffffffffffff811684830152505061016092830151919092015290565b6001600160a01b03811681146107ab57600080fd5b6000602082840312156108fd57600080fd5b81356107cb816108d6565b60006020828403121561091a57600080fd5b81516107cb816108d6565b805161093081610795565b919050565b60006020828403121561094757600080fd5b81516107cb81610795565b60006020828403121561096457600080fd5b5051919050565b604051610180810167ffffffffffffffff811182821017156109b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b600061018082840312156109cf57600080fd5b6109d761096b565b8251815260208301516020820152604083015160408201526109fb60608401610925565b6060820152610a0c60808401610925565b6080820152610a1d60a08401610925565b60a0820152610a2e60c08401610925565b60c0820152610a3f60e08401610925565b60e0820152610100610a52818501610925565b90820152610120610a64848201610925565b90820152610140610a76848201610925565b90820152610160928301519281019290925250919050565b8051801515811461093057600080fd5b600060a08284031215610ab057600080fd5b60405160a0810181811067ffffffffffffffff82111715610afa577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052825181526020830151610b0f81610795565b60208201526040830151610b2281610795565b60408201526060830151610b3581610795565b6060820152610b4660808401610a8e565b60808201529392505050565b600060208284031215610b6457600080fd5b6107cb82610a8e56fea264697066735822122039c32239ca8cecd157175b73f3f47cd8547ebdf92e1a6567375fd2c867d6fa9f64736f6c63430008110033608060405234801561001057600080fd5b506040516102a03803806102a083398101604081905261002f916100bf565b8051610042906000906020840190610049565b505061017c565b828054828255906000526020600020908101928215610084579160200282015b82811115610084578251825591602001919060010190610069565b50610090929150610094565b5090565b5b808211156100905760008155600101610095565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156100d257600080fd5b82516001600160401b03808211156100e957600080fd5b818501915085601f8301126100fd57600080fd5b81518181111561010f5761010f6100a9565b8060051b604051601f19603f83011681018181108582111715610134576101346100a9565b60405291825284820192508381018501918883111561015257600080fd5b938501935b8285101561017057845184529385019392850192610157565b98975050505050505050565b6101158061018b6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063b0ec2ae114602d575b600080fd5b60336047565b604051603e9190609d565b60405180910390f35b60606000805480602002602001604051908101604052809291908181526020018280548015609357602002820191906000526020600020905b8154815260200190600101908083116080575b5050505050905090565b6020808252825182820181905260009190848201906040850190845b8181101560d35783518352928401929184019160010160b9565b5090969550505050505056fea2646970667358221220023dc6f41b732f8d9086c50d1d0b8d7f12e641122375e74523ccc087bf76836564736f6c63430008110033",
804
+ "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620003185760003560e01c80638765240f11620001a5578063cc8089bb11620000f5578063eb657a4e11620000a3578063ee9a31a2116200007a578063ee9a31a21462000971578063fa2874201462000999578063faf5625f14620009c157600080fd5b8063eb657a4e1462000908578063ebe03a931462000930578063ec4f74ce146200094957600080fd5b8063d49d518111620000d8578063d49d51811462000890578063dae7cb8b14620008b8578063e8180c2914620008e057600080fd5b8063cc8089bb1462000840578063d384cb95146200086857600080fd5b8063b70106971162000153578063c21c42331162000136578063c21c423314620007c8578063c519d15114620007f0578063c897f55e146200081857600080fd5b8063b70106971462000778578063be41b36714620007a057600080fd5b80639f9854e511620001885780639f9854e514620006ef578063b38d57f01462000717578063b5e00c3f146200075057600080fd5b80638765240f146200069f57806391ddb28514620006c757600080fd5b8063304b9071116200026d5780635d9e2444116200021b578063785ffb3711620001f2578063785ffb371462000627578063817cd312146200064f57806385e1f4d0146200067757600080fd5b80635d9e2444146200059c578063609fb50314620005d757806364f4992a14620005ff57600080fd5b80634692de5d11620002505780634692de5d14620005245780634b2f51ef146200054c5780634e0e75fb146200057457600080fd5b8063304b907114620004f35780633c2b784014620004fc57600080fd5b80631b142ea711620002cb5780631ccc2cd111620002ae5780631ccc2cd1146200046c5780632cfb7ca314620004a35780632db93bdc14620004cb57600080fd5b80631b142ea7146200041c5780631c39b672146200044457600080fd5b80630a54257d11620003005780630a54257d146200038a5780631047fc5214620003b257806310a662e214620003f457600080fd5b8062f9731e146200031d5780630787484b1462000362575b600080fd5b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff909116815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b60405190815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b62000494600c81565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620005c47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200162000359565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6200073f7f000000000000000000000000000000000000000000000000000000000000000081565b604051901515815260200162000359565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b6200073f7f000000000000000000000000000000000000000000000000000000000000000081565b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620009476200094136600462003068565b620009e9565b005b620003da7f000000000000000000000000000000000000000000000000000000000000000081565b620003457f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620004947f000000000000000000000000000000000000000000000000000000000000000081565b620009f3620013d1565b6000620009ff62001858565b905060007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405162000a539062002dde565b6001600160a01b03928316815291166020820152606060408201819052600090820152608001604051809103906000f08015801562000a96573d6000803e3d6000fd5b50905060006040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bc45e0ae6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c5e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c84919062003113565b6001600160a01b0316815250905060008360405160200162000ca791906200343d565b604051602081830303815290604052805190602001209050600062000cf9826040518060200162000cd89062002dec565b6020820181038252601f19601f820116604052508051906020012062001ee9565b905062000d068162001f75565b836001600160a01b0316631a72d54c827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008961014001518a61016001518b61018001518c602001517f00000000000000000000000000000000000000000000000000000000000000008e61020001518f61010001516040518b63ffffffff1660e01b815260040162000dc39a9998979695949392919062003452565b600060405180830381600087803b15801562000dde57600080fd5b505af115801562000df3573d6000803e3d6000fd5b5050505060008260405162000e089062002dec565b8190604051809103906000f590508015801562000e29573d6000803e3d6000fd5b509050816001600160a01b0316816001600160a01b03161462000e935760405162461bcd60e51b815260206004820152601560248201527f554e455850435445445f524f4c4c55505f41444452000000000000000000000060448201526064015b60405180910390fd5b608086018051309091526040517fd384644b0000000000000000000000000000000000000000000000000000000081526001600160a01b0383169063d384644b9062000ee6908a908990600401620034cf565b600060405180830381600087803b15801562000f0157600080fd5b505af115801562000f16573d6000803e3d6000fd5b50505050875160001462001143576000885167ffffffffffffffff81111562000f435762000f4362002f8b565b60405190808252806020026020018201604052801562000f6d578160200160208202803683370190505b50905060005b8951811015620010c3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663facd743b8b838151811062000fc15762000fc1620035b5565b60200260200101516040518263ffffffff1660e01b815260040162000ff591906001600160a01b0391909116815260200190565b602060405180830381865afa15801562001013573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010399190620035e1565b620010875760405162461bcd60e51b815260206004820152601860248201527f554e45585045435445445f4e45575f56414c494441544f520000000000000000604482015260640162000e8a565b60018282815181106200109e576200109e620035b5565b9115156020928302919091019091015280620010ba8162003615565b91505062000f73565b506040517fa3ffb7720000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063a3ffb772906200110d908c9085906004016200368b565b600060405180830381600087803b1580156200112857600080fd5b505af11580156200113d573d6000803e3d6000fd5b50505050505b7f00000000000000000000000000000000000000000000000000000000000000001562001201576040517fa2b4f1d80000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000151560048201526001600160a01b0383169063a2b4f1d890602401600060405180830381600087803b158015620011e757600080fd5b505af1158015620011fc573d6000803e3d6000fd5b505050505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166355840a586040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200127e575060408051601f3d908101601f191682019092526200127b9181019062003113565b60015b156200130d576001600160a01b038116156200130b576040517f0d561b370000000000000000000000000000000000000000000000000000000081526001600160a01b038281166004830152841690630d561b3790602401600060405180830381600087803b158015620012f157600080fd5b505af115801562001306573d6000803e3d6000fd5b505050505b505b6040517f13af40350000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301528316906313af403590602401600060405180830381600087803b1580156200136a57600080fd5b505af11580156200137f573d6000803e3d6000fd5b5050604080516001600160a01b0380881682528a1660208201527f7e5cc5c3fce046d868d5918548df8d3e8ef9f09e6fb30a68081f1f1348cd0314935001905060405180910390a15050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638456cb596040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200142d57600080fd5b505af115801562001442573d6000803e3d6000fd5b5050505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dff697876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620014a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014cd919062003701565b905060328167ffffffffffffffff161115620014e7575060325b60005b8167ffffffffffffffff168167ffffffffffffffff1610156200179e576040517f6ddd374400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ddd374490602401602060405180830381865afa15801562001592573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015b8919062003113565b6040517fa23c44b10000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063a23c44b19060240160a060405180830381865afa1580156200163e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200166491906200371f565b905080608001518015620016845750606081015167ffffffffffffffff16155b156200178657604080516001808252818301909252600091602080830190803683370190505090508281600081518110620016c357620016c3620035b5565b6001600160a01b0392831660209182029290920101526040517f7c75c2980000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090911690637c75c298906200173a908490600401620037b2565b600060405180830381600087803b1580156200175557600080fd5b505af11580156200176a573d6000803e3d6000fd5b505050506001856200177d9190620037c7565b94505062001796565b826200179281620037f2565b9350505b5050620014ea565b506040517f0d40a0fd0000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630d40a0fd90602401600060405180830381600087803b1580156200183c57600080fd5b505af115801562001851573d6000803e3d6000fd5b5050505050565b6200186262002dfa565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166392c8134c7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166365f7f80d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001918919062003701565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815267ffffffffffffffff909116600482015260240161018060405180830381865afa15801562001977573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200199d91906200381c565b516040517f8eaa6ac00000000000000000000000000000000000000000000000000000000081526004810182905290915060009081907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638eaa6ac09060240160c060405180830381865afa15801562001a25573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a4b919062003970565b9150915062001a5962002f04565b8251815260208084015190820190600281111562001a7b5762001a7b62003227565b9081600281111562001a915762001a9162003227565b905250836001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633164413062001acf8462002426565b856040518363ffffffff1660e01b815260040162001aef92919062003a41565b602060405180830381865afa15801562001b0d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b33919062003a78565b1462001b825760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206c617465737420657865637574696f6e2068617368000000604482015260640162000e8a565b62001bae6040518060800160405280600081526020016000815260200160008152602001600081525090565b60408051606081018252600080825260208201819052918101919091526040518061026001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638ee1a1266040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001cbb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ce1919062003a78565b8152602001306001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000081526020016040518060200160405280600081525081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b0ec2ae16040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001dbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001de8919081019062003a92565b81526020018381526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f000000000000000000000000000000000000000000000000000000000000000081526020017f0000000000000000000000000000000000000000000000000000000000000000815260200184815260200185815260200160006001600160a01b031681526020017f000000000000000000000000000000000000000000000000000000000000000060ff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815260200182815250965050505050505090565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602183015260358201859052605580830185905283518084039091018152607590920190925280519101206000905b90505b92915050565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b1580156200202557600080fd5b505af11580156200203a573d6000803e3d6000fd5b50506040517f919cc7060000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301527f000000000000000000000000000000000000000000000000000000000000000016925063919cc7069150602401600060405180830381600087803b158015620020bb57600080fd5b505af1158015620020d0573d6000803e3d6000fd5b50505050620020de62002466565b60405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f000000000000000000000000000000000000000000000000000000000000000082166024840152917f0000000000000000000000000000000000000000000000000000000000000000909116906399a88ec490604401600060405180830381600087803b1580156200218e57600080fd5b505af1158015620021a3573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b1580156200225557600080fd5b505af11580156200226a573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620022ca57600080fd5b505af1158015620022df573d6000803e3d6000fd5b505060405163266a23b160e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081811660048401527f00000000000000000000000000000000000000000000000000000000000000008216602484015293507f00000000000000000000000000000000000000000000000000000000000000001691506399a88ec490604401600060405180830381600087803b1580156200239157600080fd5b505af1158015620023a6573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200240657600080fd5b505af11580156200241b573d6000803e3d6000fd5b505050505050505050565b6200243062002f2d565b604051806040016040528083600001518152602001836020015160028111156200245e576200245e62003227565b905292915050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000001562002677577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639623609d827f000000000000000000000000000000000000000000000000000000000000000060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16815250604051602401620025aa919062003b21565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa655d93700000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526200263d9392919060040162003b53565b600060405180830381600087803b1580156200265857600080fd5b505af11580156200266d573d6000803e3d6000fd5b505050506200271d565b60405163266a23b160e21b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f000000000000000000000000000000000000000000000000000000000000000016906399a88ec490604401600060405180830381600087803b1580156200270357600080fd5b505af115801562002718573d6000803e3d6000fd5b505050505b6040517f204e1c7a0000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000008116917f00000000000000000000000000000000000000000000000000000000000000009091169063204e1c7a90602401602060405180830381865afa158015620027c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027e9919062003113565b6001600160a01b031614620028675760405162461bcd60e51b815260206004820152603160248201527f44656c61794275666665723a206e65772073657120696e626f7820696d706c6560448201527f6d656e746174696f6e206e6f7420736574000000000000000000000000000000606482015260840162000e8a565b7f000000000000000000000000000000000000000000000000000000000000000015157f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634b678a666040518163ffffffff1660e01b8152600401602060405180830381865afa158015620028e9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200290f9190620035e1565b151514620029865760405162461bcd60e51b815260206004820152602660248201527f44656c61794275666665723a20697344656c617942756666657261626c65206e60448201527f6f74207365740000000000000000000000000000000000000000000000000000606482015260840162000e8a565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ebea461d6040518163ffffffff1660e01b8152600401608060405180830381865afa158015620029eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a11919062003b8a565b93509350935093506000600c8362002a2a919062003bd7565b1562002a505762002a3d600c8462003bee565b62002a4a90600162003c05565b62002a5d565b62002a5d600c8462003bee565b905084811162002a6e578462002a70565b805b94507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b31761f86040518060800160405280888152602001878152602001868152602001858152506040518263ffffffff1660e01b815260040162002ae0919062003c1b565b600060405180830381600087803b15801562002afb57600080fd5b505af115801562002b10573d6000803e3d6000fd5b505050506000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ebea461d6040518163ffffffff1660e01b8152600401608060405180830381865afa15801562002b79573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b9f919062003b8a565b935093509350935088841462002bf85760405162461bcd60e51b815260206004820181905260248201527f44656c61794275666665723a2064656c6179426c6f636b73206e6f7420736574604482015260640162000e8a565b86821462002c6f5760405162461bcd60e51b815260206004820152602160248201527f44656c61794275666665723a2064656c61795365636f6e6473206e6f7420736560448201527f7400000000000000000000000000000000000000000000000000000000000000606482015260840162000e8a565b87831462002ce65760405162461bcd60e51b815260206004820152602160248201527f44656c61794275666665723a20667574757265426c6f636b73206e6f7420736560448201527f7400000000000000000000000000000000000000000000000000000000000000606482015260840162000e8a565b85811462002d5d5760405162461bcd60e51b815260206004820152602260248201527f44656c61794275666665723a206675747572655365636f6e6473206e6f74207360448201527f6574000000000000000000000000000000000000000000000000000000000000606482015260840162000e8a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636ae71f126040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002db957600080fd5b505af115801562002dce573d6000803e3d6000fd5b5050505050505050505050505050565b610ed38062003c4883390190565b61140e8062004b1b83390190565b604051806102600160405280600067ffffffffffffffff16815260200160006001600160a01b03168152602001600081526020016000801916815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001606081526020016060815260200162002e996040518060800160405280600081526020016000815260200160008152602001600081525090565b815260200160008152602001600081526020016000815260200162002ebd62002f04565b81526000602080830182905260408084018390526060808501849052608085018490528151908101825283815291820183905281019190915260a09091015290565b905290565b604051806060016040528062002f1962002f4e565b815260200160008152600060209091015290565b604051806040016040528062002f4262002f4e565b81526020016000905290565b604051806040016040528062002f6362002f6d565b815260200162002eff5b60405180604001604052806002906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051610180810167ffffffffffffffff8111828210171562002fc85762002fc862002f8b565b60405290565b6040805190810167ffffffffffffffff8111828210171562002fc85762002fc862002f8b565b604051601f8201601f1916810167ffffffffffffffff8111828210171562003020576200302062002f8b565b604052919050565b600067ffffffffffffffff82111562003045576200304562002f8b565b5060051b60200190565b6001600160a01b03811681146200306557600080fd5b50565b600060208083850312156200307c57600080fd5b823567ffffffffffffffff8111156200309457600080fd5b8301601f81018513620030a657600080fd5b8035620030bd620030b78262003028565b62002ff4565b81815260059190911b82018301908381019087831115620030dd57600080fd5b928401925b8284101562003108578335620030f8816200304f565b82529284019290840190620030e2565b979650505050505050565b6000602082840312156200312657600080fd5b815162003133816200304f565b9392505050565b6000815180845260005b81811015620031625760208185018101518683018201520162003144565b506000602082860101526020601f19601f83011685010191505092915050565b600081518084526020808501945080840160005b83811015620031b45781518752958201959082019060010162003196565b509495945050505050565b80518260005b6002811015620031e6578251825260209283019290910190600101620031c5565b5050506020808201516040840160005b60028110156200321f57825167ffffffffffffffff1682529183019190830190600101620031f6565b505050505050565b634e487b7160e01b600052602160045260246000fd5b600381106200325c57634e487b7160e01b600052602160045260246000fd5b9052565b6200326d828251620031bf565b60208101516200328160808401826200323d565b506040015160a09190910152565b805167ffffffffffffffff16825260006103a06020830151620032bd60208601826001600160a01b03169052565b5060408301516040850152606083015160608501526080830151620032ed60808601826001600160a01b03169052565b5060a08301516200330960a08601826001600160a01b03169052565b5060c083015160c085015260e08301518160e08601526200332d828601826200313a565b91505061010080840151858303828701526200334a838262003182565b6101208681015180518983015260208101516101408a015260408101516101608a015260608101516101808a01529194509250905050506101408301516101a0818187015261016085015191506101c0828188015261018086015192506101e083818901528287015193506102009250620033c88389018562003260565b908601516102c08801528501516001600160a01b03166102e087015284015160ff166103008601525061022083015167ffffffffffffffff908116610320860152610240840151805182166103408701526020810151821661036087015260408101519091166103808601525b509392505050565b60208152600062001f6c60208301846200328f565b60006101406001600160a01b03808e16845267ffffffffffffffff8d166020850152808c1660408501528a60608501528960808501528860a085015280881660c085015280871660e08501525060ff851661010084015280610120840152620034be8184018562003182565b9d9c50505050505050505050505050565b6000610140808352620034e5818401866200328f565b9150506001600160a01b03835116602083015260208301516200351360408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b03811660808401525060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160a01b03811660e08401525060e08301516101006200359a818501836001600160a01b03169052565b8401516001600160a01b038116610120850152905062003435565b634e487b7160e01b600052603260045260246000fd5b80518015158114620035dc57600080fd5b919050565b600060208284031215620035f457600080fd5b62001f6c82620035cb565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620036495762003649620035ff565b5060010190565b600081518084526020808501945080840160005b83811015620031b45781516001600160a01b03168752958201959082019060010162003664565b604081526000620036a0604083018562003650565b82810360208481019190915284518083528582019282019060005b81811015620036db578451151583529383019391830191600101620036bb565b5090979650505050505050565b805167ffffffffffffffff81168114620035dc57600080fd5b6000602082840312156200371457600080fd5b62001f6c82620036e8565b600060a082840312156200373257600080fd5b60405160a0810181811067ffffffffffffffff8211171562003758576200375862002f8b565b604052825181526200376d60208401620036e8565b60208201526200378060408401620036e8565b60408201526200379360608401620036e8565b6060820152620037a660808401620035cb565b60808201529392505050565b60208152600062001f6c602083018462003650565b67ffffffffffffffff828116828216039080821115620037eb57620037eb620035ff565b5092915050565b600067ffffffffffffffff808316818103620038125762003812620035ff565b6001019392505050565b600061018082840312156200383057600080fd5b6200383a62002fa1565b8251815260208301516020820152604083015160408201526200386060608401620036e8565b60608201526200387360808401620036e8565b60808201526200388660a08401620036e8565b60a08201526200389960c08401620036e8565b60c0820152620038ac60e08401620036e8565b60e0820152610100620038c1818501620036e8565b90820152610120620038d5848201620036e8565b90820152610140620038e9848201620036e8565b90820152610160928301519281019290925250919050565b600082601f8301126200391357600080fd5b6200391d62002fce565b8060408401858111156200393057600080fd5b845b8181101562003955576200394681620036e8565b84526020938401930162003932565b509095945050505050565b805160038110620035dc57600080fd5b60008082840360c08112156200398557600080fd5b60a08112156200399457600080fd5b6200399e62002fce565b6080821215620039ad57600080fd5b620039b762002fce565b915085601f860112620039c957600080fd5b620039d362002fce565b806040870188811115620039e657600080fd5b875b8181101562003a02578051845260209384019301620039e8565b5081855262003a12898262003901565b602086015250505081815262003a2b6080860162003960565b602082015260a094909401519395939450505050565b600060c08201905062003a56828551620031bf565b602084015162003a6a60808401826200323d565b508260a08301529392505050565b60006020828403121562003a8b57600080fd5b5051919050565b6000602080838503121562003aa657600080fd5b825167ffffffffffffffff81111562003abe57600080fd5b8301601f8101851362003ad057600080fd5b805162003ae1620030b78262003028565b81815260059190911b8201830190838101908783111562003b0157600080fd5b928401925b82841015620031085783518252928401929084019062003b06565b6060810162001f6f8284805167ffffffffffffffff908116835260208083015182169084015260409182015116910152565b60006001600160a01b0380861683528085166020840152506060604083015262003b8160608301846200313a565b95945050505050565b6000806000806080858703121562003ba157600080fd5b505082516020840151604085015160609095015191969095509092509050565b634e487b7160e01b600052601260045260246000fd5b60008262003be95762003be962003bc1565b500690565b60008262003c005762003c0062003bc1565b500490565b8082018082111562001f6f5762001f6f620035ff565b815181526020808301519082015260408083015190820152606080830151908201526080810162001f6f56fe608060405260405162000ed338038062000ed3833981016040819052620000269162000487565b828162000036828260006200004d565b50620000449050826200008a565b505050620005ba565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b6200023e1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000eac60279139620002f8565b9392505050565b60006200018060008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8c83398151915260001b620003de60201b620001fa1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a81620003e160201b6200026a1760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b620003de60201b620001fa1760201c565b60606001600160a01b0384163b620003625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620001f1565b600080856001600160a01b0316856040516200037f919062000567565b600060405180830381855af49150503d8060008114620003bc576040519150601f19603f3d011682016040523d82523d6000602084013e620003c1565b606091505b509092509050620003d4828286620003f0565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620004015750816200014f565b825115620004125782518084602001fd5b8160405162461bcd60e51b8152600401620001f1919062000585565b80516001600160a01b03811681146200044657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200047e57818101518382015260200162000464565b50506000910152565b6000806000606084860312156200049d57600080fd5b620004a8846200042e565b9250620004b8602085016200042e565b60408501519092506001600160401b0380821115620004d657600080fd5b818601915086601f830112620004eb57600080fd5b8151818111156200050057620005006200044b565b604051601f8201601f19908116603f011681019083821181831017156200052b576200052b6200044b565b816040528281528960208487010111156200054557600080fd5b6200055883602083016020880162000461565b80955050505050509250925092565b600082516200057b81846020870162000461565b9190910192915050565b6020815260008251806020840152620005a681604085016020870162000461565b601f01601f19169190910160400192915050565b6108c280620005ca6000396000f3fe60806040526004361061005e5760003560e01c80635c60da1b116100435780635c60da1b146100a85780638f283970146100d9578063f851a440146100f95761006d565b80633659cfe6146100755780634f1ef286146100955761006d565b3661006d5761006b61010e565b005b61006b61010e565b34801561008157600080fd5b5061006b610090366004610736565b610128565b61006b6100a3366004610751565b610165565b3480156100b457600080fd5b506100bd6101cc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100e557600080fd5b5061006b6100f4366004610736565b6101fd565b34801561010557600080fd5b506100bd61021d565b610116610279565b610126610121610329565b610333565b565b610130610357565b6001600160a01b0316330361015d5761015a8160405180602001604052806000815250600061038a565b50565b61015a61010e565b61016d610357565b6001600160a01b031633036101c4576101bf8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061038a915050565b505050565b6101bf61010e565b60006101d6610357565b6001600160a01b031633036101f2576101ed610329565b905090565b6101fa61010e565b90565b610205610357565b6001600160a01b0316330361015d5761015a816103b5565b6000610227610357565b6001600160a01b031633036101f2576101ed610357565b6060610263838360405180606001604052806027815260200161086660279139610409565b9392505050565b6001600160a01b03163b151590565b610281610357565b6001600160a01b031633036101265760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006101ed6104fd565b3660008037600080366000845af43d6000803e808015610352573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039383610525565b6000825111806103a05750805b156101bf576103af838361023e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103de610357565b604080516001600160a01b03928316815291841660208301520160405180910390a161015a81610565565b60606001600160a01b0384163b6104885760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610320565b600080856001600160a01b0316856040516104a391906107f8565b600060405180830381855af49150503d80600081146104de576040519150601f19603f3d011682016040523d82523d6000602084013e6104e3565b606091505b50915091506104f382828661063d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61037b565b61052e81610676565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105e15760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610320565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6060831561064c575081610263565b82511561065c5782518084602001fd5b8160405162461bcd60e51b81526004016103209190610814565b6001600160a01b0381163b6106f35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610320565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610604565b80356001600160a01b038116811461073157600080fd5b919050565b60006020828403121561074857600080fd5b6102638261071a565b60008060006040848603121561076657600080fd5b61076f8461071a565b9250602084013567ffffffffffffffff8082111561078c57600080fd5b818601915086601f8301126107a057600080fd5b8135818111156107af57600080fd5b8760208285010111156107c157600080fd5b6020830194508093505050509250925092565b60005b838110156107ef5781810151838201526020016107d7565b50506000910152565b6000825161080a8184602087016107d4565b9190910192915050565b60208152600082518060208401526108338160408501602087016107d4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c1888b421836e473bfc3e72d153dc5c76569ce769e37cfa444506490e142daa564736f6c63430008110033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564608060405234801561001057600080fd5b506113ee806100206000396000f3fe6080604052600436106100225760003560e01c8063d384644b1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f610054366004610d95565b61006b565b6100696100646101bd565b6102a1565b565b60006100756102ca565b6001600160a01b031614801561009b575060006100906102fd565b6001600160a01b0316145b80156100b7575060006100ac610325565b6001600160a01b0316145b156101b5576101b18160c0015183836040516024016100d792919061113d565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9e7e6aa70000000000000000000000000000000000000000000000000000000017905260e08601519087015191516001600160a01b0390921660248301529060440160408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc4d66de800000000000000000000000000000000000000000000000000000000179052608087015161034d565b5050565b6101b1610059565b600060043610156102155760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f46554e435f53494700000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000336102206102ca565b6001600160a01b03160361023b576102366102fd565b610243565b610243610325565b90506001600160a01b0381163b61029c5760405162461bcd60e51b815260206004820152601360248201527f5441524745545f4e4f545f434f4e545241435400000000000000000000000000604482015260640161020c565b919050565b3660008037600080366000845af43d6000803e8080156102c0573d6000f35b3d6000fd5b505050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102ee565b60007f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6102ee565b61037860017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610461132b565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103146103a6576103a661134c565b6103d160017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61132b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc146103ff576103ff61134c565b61042a60017f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546e61132b565b7f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d146104585761045861134c565b61046181610480565b61046d858560006104d7565b61047983836000610502565b5050505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6104a96102ca565b604080516001600160a01b03928316815291841660208301520160405180910390a16104d48161050b565b50565b6104e0836105e3565b6000825111806104ed5750805b156102c5576104fc8383610623565b50505050565b6104e083610651565b6001600160a01b0381166105875760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020c565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039290921691909117905550565b6105ec81610691565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610648838360405180606001604052806027815260200161139260279139610735565b90505b92915050565b61065a8161082b565b6040516001600160a01b038216907ff7eed2a7fabbf1bec8d55ed5e785cc76622376dde5df4ff15470551e030b813490600090a250565b6001600160a01b0381163b61070e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e747261637400000000000000000000000000000000000000606482015260840161020c565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105aa565b60606001600160a01b0384163b6107b45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161020c565b600080856001600160a01b0316856040516107cf9190611362565b600060405180830381855af49150503d806000811461080a576040519150601f19603f3d011682016040523d82523d6000602084013e61080f565b606091505b509150915061081f8282866108cf565b925050505b9392505050565b6001600160a01b0381163b6108a85760405162461bcd60e51b815260206004820152603760248201527f455243313936373a206e6577207365636f6e6461727920696d706c656d656e7460448201527f6174696f6e206973206e6f74206120636f6e7472616374000000000000000000606482015260840161020c565b807f2b1dbce74324248c222f0ec2d5ed7bd323cfc425b336f0253c5ccfda7265546d6105aa565b606083156108de575081610824565b8251156108ee5782518084602001fd5b8160405162461bcd60e51b815260040161020c919061137e565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561094157610941610908565b60405290565b6040805190810167ffffffffffffffff8111828210171561094157610941610908565b604051610120810167ffffffffffffffff8111828210171561094157610941610908565b604051610260810167ffffffffffffffff8111828210171561094157610941610908565b604051601f8201601f1916810167ffffffffffffffff811182821017156109db576109db610908565b604052919050565b803567ffffffffffffffff8116811461029c57600080fd5b80356001600160a01b038116811461029c57600080fd5b600082601f830112610a2357600080fd5b813567ffffffffffffffff811115610a3d57610a3d610908565b610a506020601f19601f840116016109b2565b818152846020838601011115610a6557600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f830112610a9357600080fd5b8135602067ffffffffffffffff821115610aaf57610aaf610908565b8160051b610abe8282016109b2565b9283528481018201928281019087851115610ad857600080fd5b83870192505b84831015610af757823582529183019190830190610ade565b979650505050505050565b600060808284031215610b1457600080fd5b6040516080810181811067ffffffffffffffff82111715610b3757610b37610908565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201525092915050565b600082601f830112610b7957600080fd5b610b81610947565b806040840185811115610b9357600080fd5b845b81811015610bb457610ba6816109e3565b845260209384019301610b95565b509095945050505050565b80356003811061029c57600080fd5b600081830360c0811215610be157600080fd5b610be961091e565b91506080811215610bf957600080fd5b50610c02610947565b83601f840112610c1157600080fd5b610c19610947565b806040850186811115610c2b57600080fd5b855b81811015610c45578035845260209384019301610c2d565b50818452610c538782610b68565b60208501525050508152610c6960808301610bbf565b602082015260a0820135604082015292915050565b803560ff8116811461029c57600080fd5b600060608284031215610ca157600080fd5b610ca961091e565b9050610cb4826109e3565b8152610cc2602083016109e3565b6020820152610cd3604083016109e3565b604082015292915050565b60006101208284031215610cf157600080fd5b610cf961096a565b9050610d04826109fb565b8152610d12602083016109fb565b6020820152610d23604083016109fb565b6040820152610d34606083016109fb565b6060820152610d45608083016109fb565b6080820152610d5660a083016109fb565b60a0820152610d6760c083016109fb565b60c0820152610d7860e083016109fb565b60e0820152610100610d8b8184016109fb565b9082015292915050565b600080610140808486031215610daa57600080fd5b833567ffffffffffffffff80821115610dc257600080fd5b908501906103a08288031215610dd757600080fd5b610ddf61098e565b610de8836109e3565b8152610df6602084016109fb565b60208201526040830135604082015260608301356060820152610e1b608084016109fb565b6080820152610e2c60a084016109fb565b60a082015260c083013560c082015260e083013582811115610e4d57600080fd5b610e5989828601610a12565b60e0830152506101008084013583811115610e7357600080fd5b610e7f8a828701610a82565b8284015250506101209150610e9688838501610b02565b828201526101a0915081830135848201526101c09350838301356101608201526101e080840135610180830152610200610ed28a828701610bce565b848401526102c085013586840152610eed6102e086016109fb565b82840152610efe6103008601610c7e565b9083015250610f1061032084016109e3565b610220820152610f24886103408501610c8f565b61024082015280955050505050610f3e8460208501610cde565b90509250929050565b60005b83811015610f62578181015183820152602001610f4a565b50506000910152565b60008151808452610f83816020860160208601610f47565b601f01601f19169290920160200192915050565b600081518084526020808501945080840160005b83811015610fc757815187529582019590820190600101610fab565b509495945050505050565b60038110610ff057634e487b7160e01b600052602160045260246000fd5b9052565b805180518360005b600281101561101b578251825260209283019290910190600101610ffc565b505050602090810151906040840160005b600281101561105357835167ffffffffffffffff168252928201929082019060010161102c565b505082015190506110676080840182610fd2565b506040015160a09190910152565b6001600160a01b038082511683528060208301511660208401528060408301511660408401525060608101516110b660608401826001600160a01b03169052565b5060808101516110d160808401826001600160a01b03169052565b5060a08101516110ec60a08401826001600160a01b03169052565b5060c081015161110760c08401826001600160a01b03169052565b5060e081015161112260e08401826001600160a01b03169052565b50610100818101516001600160a01b038116848301526104fc565b600061014080835261115b818401865167ffffffffffffffff169052565b6020850151610160611177818601836001600160a01b03169052565b604087015191506101808281870152606088015192506101a08381880152608089015193506101c06111b3818901866001600160a01b03169052565b60a08a015194506101e06111d1818a01876001600160a01b03169052565b60c08b0151955061020086818b015260e08c015196506102206103a0818c01526111ff6104e08c0189610f6b565b97506101008d01516102407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec08d8b0301818e015261123d8a83610f97565b99506101208f015191506112766102608e0183805182526020810151602083015260408101516040830152606081015160608301525050565b998e01516102e08d0152878e01516103008d0152868e01516103208d0152858e0151996112a76103408e018c610ff4565b948e01516104008d015250918c01516001600160a01b03166104208b01528b015160ff166104408a01528a015167ffffffffffffffff9081166104608a0152908a0151805182166104808a0152602081015182166104a08a015260408101519091166104c0890152945061131a92505050565b915061082490506020830184611075565b8181038181111561064b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008251611374818460208701610f47565b9190910192915050565b6020815260006106486020830184610f6b56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122031f55e3d5fa05a560e2a6fd55fb29943763c9e5689f86f5b2da68232793f691264736f6c63430008110033a2646970667358221220a64a84b35448a6fba6092676c69c8d42a04350aec69257e44edc2f7c712707be64736f6c63430008110033",
805
+ "linkReferences": {},
806
+ "deployedLinkReferences": {}
807
+ }