@etherisc/gif-next 0.0.2-7ef1483-704 → 0.0.2-7f111bb-562

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/README.md +49 -4
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1032 -0
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1342 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +57 -461
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +286 -235
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +77 -108
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +95 -164
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +165 -47
  36. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  37. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  38. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  39. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  40. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  44. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  45. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +64 -84
  48. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  49. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -45
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +62 -219
  52. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1218 -284
  54. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  56. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +407 -127
  58. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +195 -192
  60. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +52 -99
  62. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +387 -268
  64. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  66. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  68. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  70. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  72. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  75. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  80. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  81. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  82. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  83. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +979 -0
  84. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  86. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  88. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  90. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  92. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +871 -0
  94. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +922 -0
  96. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +679 -0
  98. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1248 -0
  100. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  102. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +433 -168
  104. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +121 -92
  106. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +218 -1
  108. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +49 -294
  110. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +248 -100
  112. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/Pool.sol/Pool.json +56 -587
  114. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +302 -250
  116. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +46 -89
  118. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +68 -162
  120. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +44 -95
  122. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1096 -0
  124. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  126. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +222 -167
  128. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +71 -102
  130. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +18 -0
  132. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +127 -0
  134. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +197 -119
  136. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +56 -43
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +36 -83
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  141. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +15 -2
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +269 -303
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +66 -101
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.json +130 -245
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +59 -118
  150. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  151. package/artifacts/contracts/product/Product.sol/Product.json +46 -389
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.json +583 -0
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +651 -0
  156. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +246 -42
  160. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +13 -183
  162. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/Registry.sol/Registry.json +464 -99
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  166. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1607 -153
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  168. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +48 -123
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  170. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +37 -76
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  172. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  174. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1169 -0
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  176. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  178. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  179. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  180. package/artifacts/contracts/shared/Component.sol/Component.json +11 -222
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +264 -171
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +72 -107
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  186. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +10 -109
  187. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +4 -30
  189. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +173 -0
  191. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -41
  193. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -15
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +0 -42
  200. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  203. package/artifacts/contracts/shared/IService.sol/IService.json +13 -0
  204. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  206. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  208. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +43 -286
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  210. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -99
  211. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  214. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  218. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +4 -136
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  222. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  223. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  224. package/artifacts/contracts/shared/Service.sol/Service.json +10 -109
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  226. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  228. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +141 -144
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  232. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +215 -70
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +145 -107
  235. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  236. package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -390
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  238. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -97
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +219 -18
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  244. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +254 -236
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  246. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +41 -96
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  248. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +776 -216
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +132 -19
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  252. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Amount.sol/AmountLib.json +97 -4
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +28 -4
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  268. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +149 -2
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  276. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +219 -6
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +74 -2
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  286. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  287. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  289. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  290. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  297. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  302. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +566 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  308. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  309. package/contracts/authorization/AccessAdmin.sol +589 -0
  310. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  311. package/contracts/authorization/Authorization.sol +217 -0
  312. package/contracts/authorization/IAccess.sol +48 -0
  313. package/contracts/authorization/IAccessAdmin.sol +136 -0
  314. package/contracts/authorization/IAuthorization.sol +54 -0
  315. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  316. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  317. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  318. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  319. package/contracts/distribution/BasicDistribution.sol +138 -0
  320. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  321. package/contracts/distribution/Distribution.sol +145 -111
  322. package/contracts/distribution/DistributionService.sol +83 -45
  323. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  324. package/contracts/distribution/IDistributionComponent.sol +25 -39
  325. package/contracts/distribution/IDistributionService.sol +23 -3
  326. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  327. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  328. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  329. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  330. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  331. package/contracts/instance/IInstance.sol +24 -40
  332. package/contracts/instance/IInstanceService.sol +34 -23
  333. package/contracts/instance/Instance.sol +112 -118
  334. package/contracts/instance/InstanceAdmin.sol +221 -267
  335. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  336. package/contracts/instance/InstanceReader.sol +79 -14
  337. package/contracts/instance/InstanceService.sol +192 -87
  338. package/contracts/instance/InstanceServiceManager.sol +2 -6
  339. package/contracts/instance/InstanceStore.sol +49 -22
  340. package/contracts/instance/base/BalanceStore.sol +11 -6
  341. package/contracts/instance/base/Cloneable.sol +2 -25
  342. package/contracts/instance/base/ObjectCounter.sol +21 -0
  343. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  344. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -14
  345. package/contracts/instance/module/IBundle.sol +1 -1
  346. package/contracts/instance/module/IComponents.sol +1 -7
  347. package/contracts/instance/module/IDistribution.sol +0 -1
  348. package/contracts/instance/module/IPolicy.sol +22 -22
  349. package/contracts/mock/Dip.sol +1 -1
  350. package/contracts/oracle/BasicOracle.sol +48 -0
  351. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  352. package/contracts/oracle/IOracle.sol +36 -0
  353. package/contracts/oracle/IOracleComponent.sol +33 -0
  354. package/contracts/oracle/IOracleService.sol +65 -0
  355. package/contracts/oracle/Oracle.sol +167 -0
  356. package/contracts/oracle/OracleService.sol +279 -0
  357. package/contracts/oracle/OracleServiceManager.sol +39 -0
  358. package/contracts/pool/BasicPool.sol +166 -0
  359. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  360. package/contracts/pool/BundleService.sol +210 -68
  361. package/contracts/pool/BundleServiceManager.sol +2 -5
  362. package/contracts/pool/IBundleService.sol +33 -5
  363. package/contracts/pool/IPoolComponent.sol +6 -60
  364. package/contracts/pool/IPoolService.sol +39 -26
  365. package/contracts/pool/Pool.sol +165 -138
  366. package/contracts/pool/PoolService.sol +198 -113
  367. package/contracts/pool/PoolServiceManager.sol +2 -5
  368. package/contracts/product/ApplicationService.sol +58 -64
  369. package/contracts/product/ApplicationServiceManager.sol +2 -2
  370. package/contracts/product/BasicProduct.sol +53 -0
  371. package/contracts/product/BasicProductAuthorization.sol +43 -0
  372. package/contracts/product/ClaimService.sol +131 -81
  373. package/contracts/product/ClaimServiceManager.sol +2 -2
  374. package/contracts/product/IApplicationService.sol +1 -0
  375. package/contracts/product/IClaimService.sol +31 -2
  376. package/contracts/product/IPolicyService.sol +27 -32
  377. package/contracts/product/IPricingService.sol +7 -7
  378. package/contracts/product/IProductComponent.sol +7 -10
  379. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  380. package/contracts/product/PolicyService.sol +287 -187
  381. package/contracts/product/PolicyServiceManager.sol +2 -5
  382. package/contracts/product/PricingService.sol +49 -49
  383. package/contracts/product/PricingServiceManager.sol +2 -5
  384. package/contracts/product/Product.sol +162 -114
  385. package/contracts/product/{ProductService.sol → RiskService.sol} +16 -43
  386. package/contracts/product/RiskServiceManager.sol +39 -0
  387. package/contracts/registry/ChainNft.sol +65 -31
  388. package/contracts/registry/IRegistry.sol +63 -19
  389. package/contracts/registry/IRegistryService.sol +6 -6
  390. package/contracts/registry/Registry.sol +333 -207
  391. package/contracts/registry/RegistryAdmin.sol +376 -149
  392. package/contracts/registry/RegistryService.sol +11 -25
  393. package/contracts/registry/RegistryServiceManager.sol +2 -7
  394. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  395. package/contracts/registry/ReleaseRegistry.sol +491 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  397. package/contracts/registry/TokenRegistry.sol +2 -48
  398. package/contracts/shared/Component.sol +35 -53
  399. package/contracts/shared/ComponentService.sol +121 -76
  400. package/contracts/shared/ComponentServiceManager.sol +2 -2
  401. package/contracts/shared/ComponentVerifyingService.sol +14 -8
  402. package/contracts/shared/IComponent.sol +7 -11
  403. package/contracts/shared/IComponentService.sol +26 -9
  404. package/contracts/shared/IInstanceLinkedComponent.sol +10 -7
  405. package/contracts/shared/IKeyValueStore.sol +2 -1
  406. package/contracts/shared/ILifecycle.sol +1 -2
  407. package/contracts/shared/IPolicyHolder.sol +0 -9
  408. package/contracts/shared/IService.sol +8 -1
  409. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  410. package/contracts/shared/InstanceLinkedComponent.sol +51 -23
  411. package/contracts/shared/KeyValueStore.sol +7 -6
  412. package/contracts/shared/Lifecycle.sol +16 -60
  413. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  414. package/contracts/shared/NftOwnable.sol +7 -7
  415. package/contracts/shared/PolicyHolder.sol +7 -53
  416. package/contracts/shared/Registerable.sol +4 -4
  417. package/contracts/shared/RegistryLinked.sol +3 -2
  418. package/contracts/shared/Service.sol +32 -27
  419. package/contracts/shared/TokenHandler.sol +100 -19
  420. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  421. package/contracts/staking/IStaking.sol +43 -27
  422. package/contracts/staking/IStakingService.sol +42 -44
  423. package/contracts/staking/StakeManagerLib.sol +118 -50
  424. package/contracts/staking/Staking.sol +147 -146
  425. package/contracts/staking/StakingLifecycle.sol +23 -0
  426. package/contracts/staking/StakingManager.sol +2 -6
  427. package/contracts/staking/StakingReader.sol +70 -33
  428. package/contracts/staking/StakingService.sol +122 -91
  429. package/contracts/staking/StakingServiceManager.sol +2 -3
  430. package/contracts/staking/StakingStore.sol +401 -127
  431. package/contracts/staking/TargetManagerLib.sol +35 -3
  432. package/contracts/type/Amount.sol +24 -3
  433. package/contracts/type/Blocknumber.sol +7 -1
  434. package/contracts/type/NftId.sol +8 -8
  435. package/contracts/type/ObjectType.sol +174 -68
  436. package/contracts/type/Referral.sol +1 -0
  437. package/contracts/type/RequestId.sol +75 -0
  438. package/contracts/type/RoleId.sol +103 -72
  439. package/contracts/type/Seconds.sol +31 -1
  440. package/contracts/type/Selector.sol +102 -0
  441. package/contracts/type/StateId.sol +13 -0
  442. package/contracts/type/String.sol +53 -0
  443. package/contracts/type/Timestamp.sol +17 -3
  444. package/contracts/type/UFixed.sol +34 -9
  445. package/contracts/type/Version.sol +3 -1
  446. package/contracts/{shared → upgradeability}/ProxyManager.sol +4 -5
  447. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  448. package/package.json +8 -5
  449. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  450. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  451. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  452. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -204
  453. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  454. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  455. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  456. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  457. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -679
  458. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  459. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -694
  460. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  461. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1292
  462. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +0 -4
  463. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +0 -137
  464. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  465. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  466. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  467. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1715
  468. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  469. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1728
  470. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  471. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1806
  472. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  473. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1824
  474. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  475. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  476. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  477. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  478. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  479. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  480. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  481. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  482. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  483. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  484. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  485. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  486. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  487. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  488. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +0 -4
  489. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.json +0 -37
  490. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +0 -4
  491. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +0 -357
  492. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -349
  493. package/contracts/product/ProductServiceManager.sol +0 -42
  494. package/contracts/registry/ReleaseManager.sol +0 -599
  495. package/contracts/registry/ServiceAuthorizationsLib.sol +0 -173
  496. package/contracts/shared/AccessManagerCustom.sol +0 -736
  497. package/contracts/shared/AccessManagerExtended.sol +0 -470
  498. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  499. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  500. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  501. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  502. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  503. package/contracts/staking/IStakingManager.sol +0 -15
  504. package/contracts/staking/IStakingStore.sol +0 -130
  505. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  506. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -41,28 +41,6 @@
41
41
  "name": "AccessManagedUnauthorized",
42
42
  "type": "error"
43
43
  },
44
- {
45
- "inputs": [
46
- {
47
- "internalType": "address",
48
- "name": "target",
49
- "type": "address"
50
- }
51
- ],
52
- "name": "AddressEmptyCode",
53
- "type": "error"
54
- },
55
- {
56
- "inputs": [
57
- {
58
- "internalType": "address",
59
- "name": "account",
60
- "type": "address"
61
- }
62
- ],
63
- "name": "AddressInsufficientBalance",
64
- "type": "error"
65
- },
66
44
  {
67
45
  "inputs": [],
68
46
  "name": "ErrorComponentNameLengthZero",
@@ -94,32 +72,6 @@
94
72
  "name": "ErrorComponentWalletAddressZero",
95
73
  "type": "error"
96
74
  },
97
- {
98
- "inputs": [
99
- {
100
- "internalType": "address",
101
- "name": "oldWallet",
102
- "type": "address"
103
- },
104
- {
105
- "internalType": "address",
106
- "name": "newWallet",
107
- "type": "address"
108
- },
109
- {
110
- "internalType": "uint256",
111
- "name": "allowance",
112
- "type": "uint256"
113
- },
114
- {
115
- "internalType": "uint256",
116
- "name": "balance",
117
- "type": "uint256"
118
- }
119
- ],
120
- "name": "ErrorComponentWalletAllowanceTooSmall",
121
- "type": "error"
122
- },
123
75
  {
124
76
  "inputs": [],
125
77
  "name": "ErrorComponentWalletNotComponent",
@@ -248,9 +200,19 @@
248
200
  "internalType": "NftId",
249
201
  "name": "targetNftId",
250
202
  "type": "uint96"
203
+ },
204
+ {
205
+ "internalType": "Seconds",
206
+ "name": "minLockingPeriod",
207
+ "type": "uint40"
208
+ },
209
+ {
210
+ "internalType": "Seconds",
211
+ "name": "lockingPeriod",
212
+ "type": "uint40"
251
213
  }
252
214
  ],
253
- "name": "ErrorStakingLockingPeriodZero",
215
+ "name": "ErrorStakingLockingPeriodTooShort",
254
216
  "type": "error"
255
217
  },
256
218
  {
@@ -323,6 +285,22 @@
323
285
  "name": "ErrorStakingStakeAmountZero",
324
286
  "type": "error"
325
287
  },
288
+ {
289
+ "inputs": [
290
+ {
291
+ "internalType": "NftId",
292
+ "name": "stakeNftId",
293
+ "type": "uint96"
294
+ },
295
+ {
296
+ "internalType": "Timestamp",
297
+ "name": "lockedUntil",
298
+ "type": "uint40"
299
+ }
300
+ ],
301
+ "name": "ErrorStakingStakeLocked",
302
+ "type": "error"
303
+ },
326
304
  {
327
305
  "inputs": [
328
306
  {
@@ -431,8 +409,19 @@
431
409
  "type": "error"
432
410
  },
433
411
  {
434
- "inputs": [],
435
- "name": "FailedInnerCall",
412
+ "inputs": [
413
+ {
414
+ "internalType": "uint256",
415
+ "name": "chainId",
416
+ "type": "uint256"
417
+ },
418
+ {
419
+ "internalType": "address",
420
+ "name": "token",
421
+ "type": "address"
422
+ }
423
+ ],
424
+ "name": "ErrorStakingTokenNotRegistered",
436
425
  "type": "error"
437
426
  },
438
427
  {
@@ -445,17 +434,6 @@
445
434
  "name": "NotInitializing",
446
435
  "type": "error"
447
436
  },
448
- {
449
- "inputs": [
450
- {
451
- "internalType": "address",
452
- "name": "token",
453
- "type": "address"
454
- }
455
- ],
456
- "name": "SafeERC20FailedOperation",
457
- "type": "error"
458
- },
459
437
  {
460
438
  "anonymous": false,
461
439
  "inputs": [
@@ -493,9 +471,9 @@
493
471
  },
494
472
  {
495
473
  "indexed": false,
496
- "internalType": "uint256",
474
+ "internalType": "Amount",
497
475
  "name": "limit",
498
- "type": "uint256"
476
+ "type": "uint96"
499
477
  }
500
478
  ],
501
479
  "name": "LogComponentTokenHandlerApproved",
@@ -595,6 +573,37 @@
595
573
  "name": "LogStakingRewardRateSet",
596
574
  "type": "event"
597
575
  },
576
+ {
577
+ "anonymous": false,
578
+ "inputs": [
579
+ {
580
+ "indexed": false,
581
+ "internalType": "uint256",
582
+ "name": "chainId",
583
+ "type": "uint256"
584
+ },
585
+ {
586
+ "indexed": false,
587
+ "internalType": "address",
588
+ "name": "token",
589
+ "type": "address"
590
+ },
591
+ {
592
+ "indexed": false,
593
+ "internalType": "UFixed",
594
+ "name": "oldStakingRate",
595
+ "type": "uint256"
596
+ },
597
+ {
598
+ "indexed": false,
599
+ "internalType": "UFixed",
600
+ "name": "newStakingRate",
601
+ "type": "uint256"
602
+ }
603
+ ],
604
+ "name": "LogStakingStakingRateSet",
605
+ "type": "event"
606
+ },
598
607
  {
599
608
  "inputs": [],
600
609
  "name": "COMPONENT_LOCATION_V1",
@@ -663,9 +672,14 @@
663
672
  {
664
673
  "inputs": [
665
674
  {
666
- "internalType": "uint256",
675
+ "internalType": "address",
676
+ "name": "token",
677
+ "type": "address"
678
+ },
679
+ {
680
+ "internalType": "Amount",
667
681
  "name": "spendingLimitAmount",
668
- "type": "uint256"
682
+ "type": "uint96"
669
683
  }
670
684
  ],
671
685
  "name": "approveTokenHandler",
@@ -676,14 +690,9 @@
676
690
  {
677
691
  "inputs": [
678
692
  {
679
- "internalType": "address",
680
- "name": "token",
681
- "type": "address"
682
- },
683
- {
684
- "internalType": "uint256",
693
+ "internalType": "Amount",
685
694
  "name": "spendingLimitAmount",
686
- "type": "uint256"
695
+ "type": "uint96"
687
696
  }
688
697
  ],
689
698
  "name": "approveTokenHandler",
@@ -708,59 +717,58 @@
708
717
  "inputs": [
709
718
  {
710
719
  "internalType": "NftId",
711
- "name": "targetNftId",
720
+ "name": "stakeNftId",
712
721
  "type": "uint96"
713
- },
714
- {
715
- "internalType": "Timestamp",
716
- "name": "rewardsLastUpdatedAt",
717
- "type": "uint40"
718
722
  }
719
723
  ],
720
- "name": "calculateRewardIncrementAmount",
724
+ "name": "claimRewards",
721
725
  "outputs": [
722
726
  {
723
727
  "internalType": "Amount",
724
- "name": "rewardIncrementAmount",
728
+ "name": "rewardsClaimedAmount",
725
729
  "type": "uint96"
726
730
  }
727
731
  ],
728
- "stateMutability": "view",
732
+ "stateMutability": "nonpayable",
729
733
  "type": "function"
730
734
  },
731
735
  {
732
736
  "inputs": [
733
737
  {
734
- "internalType": "NftId",
735
- "name": "stakeNftId",
736
- "type": "uint96"
737
- }
738
- ],
739
- "name": "claimRewards",
740
- "outputs": [
738
+ "internalType": "address",
739
+ "name": "from",
740
+ "type": "address"
741
+ },
741
742
  {
742
743
  "internalType": "Amount",
743
- "name": "rewardsClaimedAmount",
744
+ "name": "dipAmount",
744
745
  "type": "uint96"
745
746
  }
746
747
  ],
748
+ "name": "collectDipAmount",
749
+ "outputs": [],
747
750
  "stateMutability": "nonpayable",
748
751
  "type": "function"
749
752
  },
750
753
  {
751
754
  "inputs": [
752
755
  {
753
- "internalType": "address",
754
- "name": "from",
755
- "type": "address"
756
+ "internalType": "NftId",
757
+ "name": "stakeNftId",
758
+ "type": "uint96"
759
+ },
760
+ {
761
+ "internalType": "NftId",
762
+ "name": "targetNftId",
763
+ "type": "uint96"
756
764
  },
757
765
  {
758
766
  "internalType": "Amount",
759
- "name": "dipAmount",
767
+ "name": "stakeAmount",
760
768
  "type": "uint96"
761
769
  }
762
770
  ],
763
- "name": "collectDipAmount",
771
+ "name": "createStake",
764
772
  "outputs": [],
765
773
  "stateMutability": "nonpayable",
766
774
  "type": "function"
@@ -783,8 +791,14 @@
783
791
  "type": "uint96"
784
792
  }
785
793
  ],
786
- "name": "decreaseTvl",
787
- "outputs": [],
794
+ "name": "decreaseTotalValueLocked",
795
+ "outputs": [
796
+ {
797
+ "internalType": "Amount",
798
+ "name": "newBalance",
799
+ "type": "uint96"
800
+ }
801
+ ],
788
802
  "stateMutability": "nonpayable",
789
803
  "type": "function"
790
804
  },
@@ -980,49 +994,6 @@
980
994
  "stateMutability": "view",
981
995
  "type": "function"
982
996
  },
983
- {
984
- "inputs": [
985
- {
986
- "internalType": "NftId",
987
- "name": "targetNftId",
988
- "type": "uint96"
989
- }
990
- ],
991
- "name": "getStakedAmount",
992
- "outputs": [
993
- {
994
- "internalType": "Amount",
995
- "name": "stakeAmount",
996
- "type": "uint96"
997
- }
998
- ],
999
- "stateMutability": "view",
1000
- "type": "function"
1001
- },
1002
- {
1003
- "inputs": [
1004
- {
1005
- "internalType": "uint256",
1006
- "name": "chainId",
1007
- "type": "uint256"
1008
- },
1009
- {
1010
- "internalType": "address",
1011
- "name": "token",
1012
- "type": "address"
1013
- }
1014
- ],
1015
- "name": "getStakingRate",
1016
- "outputs": [
1017
- {
1018
- "internalType": "UFixed",
1019
- "name": "stakingRate",
1020
- "type": "uint256"
1021
- }
1022
- ],
1023
- "stateMutability": "view",
1024
- "type": "function"
1025
- },
1026
997
  {
1027
998
  "inputs": [],
1028
999
  "name": "getStakingReader",
@@ -1088,30 +1059,6 @@
1088
1059
  "stateMutability": "view",
1089
1060
  "type": "function"
1090
1061
  },
1091
- {
1092
- "inputs": [
1093
- {
1094
- "internalType": "NftId",
1095
- "name": "targetNftId",
1096
- "type": "uint96"
1097
- },
1098
- {
1099
- "internalType": "address",
1100
- "name": "token",
1101
- "type": "address"
1102
- }
1103
- ],
1104
- "name": "getTvlAmount",
1105
- "outputs": [
1106
- {
1107
- "internalType": "Amount",
1108
- "name": "tvlAmount",
1109
- "type": "uint96"
1110
- }
1111
- ],
1112
- "stateMutability": "view",
1113
- "type": "function"
1114
- },
1115
1062
  {
1116
1063
  "inputs": [],
1117
1064
  "name": "getVersion",
@@ -1156,142 +1103,14 @@
1156
1103
  "type": "uint96"
1157
1104
  }
1158
1105
  ],
1159
- "name": "increaseTvl",
1160
- "outputs": [],
1161
- "stateMutability": "nonpayable",
1162
- "type": "function"
1163
- },
1164
- {
1165
- "inputs": [
1166
- {
1167
- "internalType": "address",
1168
- "name": "authority",
1169
- "type": "address"
1170
- },
1171
- {
1172
- "internalType": "address",
1173
- "name": "registry",
1174
- "type": "address"
1175
- },
1106
+ "name": "increaseTotalValueLocked",
1107
+ "outputs": [
1176
1108
  {
1177
- "internalType": "NftId",
1178
- "name": "parentNftId",
1109
+ "internalType": "Amount",
1110
+ "name": "newBalance",
1179
1111
  "type": "uint96"
1180
- },
1181
- {
1182
- "internalType": "string",
1183
- "name": "name",
1184
- "type": "string"
1185
- },
1186
- {
1187
- "internalType": "address",
1188
- "name": "token",
1189
- "type": "address"
1190
- },
1191
- {
1192
- "internalType": "ObjectType",
1193
- "name": "componentType",
1194
- "type": "uint8"
1195
- },
1196
- {
1197
- "internalType": "bool",
1198
- "name": "isInterceptor",
1199
- "type": "bool"
1200
- },
1201
- {
1202
- "internalType": "address",
1203
- "name": "initialOwner",
1204
- "type": "address"
1205
- },
1206
- {
1207
- "internalType": "bytes",
1208
- "name": "registryData",
1209
- "type": "bytes"
1210
- },
1211
- {
1212
- "internalType": "bytes",
1213
- "name": "componentData",
1214
- "type": "bytes"
1215
1112
  }
1216
1113
  ],
1217
- "name": "initializeComponent",
1218
- "outputs": [],
1219
- "stateMutability": "nonpayable",
1220
- "type": "function"
1221
- },
1222
- {
1223
- "inputs": [],
1224
- "name": "initializeERC165",
1225
- "outputs": [],
1226
- "stateMutability": "nonpayable",
1227
- "type": "function"
1228
- },
1229
- {
1230
- "inputs": [
1231
- {
1232
- "internalType": "address",
1233
- "name": "initialOwner",
1234
- "type": "address"
1235
- },
1236
- {
1237
- "internalType": "address",
1238
- "name": "registryAddress",
1239
- "type": "address"
1240
- }
1241
- ],
1242
- "name": "initializeNftOwnable",
1243
- "outputs": [],
1244
- "stateMutability": "nonpayable",
1245
- "type": "function"
1246
- },
1247
- {
1248
- "inputs": [
1249
- {
1250
- "internalType": "address",
1251
- "name": "registryAddress",
1252
- "type": "address"
1253
- },
1254
- {
1255
- "internalType": "NftId",
1256
- "name": "parentNftId",
1257
- "type": "uint96"
1258
- },
1259
- {
1260
- "internalType": "ObjectType",
1261
- "name": "objectType",
1262
- "type": "uint8"
1263
- },
1264
- {
1265
- "internalType": "bool",
1266
- "name": "isInterceptor",
1267
- "type": "bool"
1268
- },
1269
- {
1270
- "internalType": "address",
1271
- "name": "initialOwner",
1272
- "type": "address"
1273
- },
1274
- {
1275
- "internalType": "bytes",
1276
- "name": "registryData",
1277
- "type": "bytes"
1278
- }
1279
- ],
1280
- "name": "initializeRegisterable",
1281
- "outputs": [],
1282
- "stateMutability": "nonpayable",
1283
- "type": "function"
1284
- },
1285
- {
1286
- "inputs": [
1287
- {
1288
- "internalType": "address",
1289
- "name": "registryAddress",
1290
- "type": "address"
1291
- }
1292
- ],
1293
- "name": "initializeRegistryLinked",
1294
- "outputs": [],
1295
1114
  "stateMutability": "nonpayable",
1296
1115
  "type": "function"
1297
1116
  },
@@ -1420,20 +1239,13 @@
1420
1239
  }
1421
1240
  ],
1422
1241
  "name": "refillRewardReserves",
1423
- "outputs": [],
1424
- "stateMutability": "nonpayable",
1425
- "type": "function"
1426
- },
1427
- {
1428
- "inputs": [
1242
+ "outputs": [
1429
1243
  {
1430
- "internalType": "bytes4",
1431
- "name": "interfaceId",
1432
- "type": "bytes4"
1244
+ "internalType": "Amount",
1245
+ "name": "newBalance",
1246
+ "type": "uint96"
1433
1247
  }
1434
1248
  ],
1435
- "name": "registerInterface",
1436
- "outputs": [],
1437
1249
  "stateMutability": "nonpayable",
1438
1250
  "type": "function"
1439
1251
  },
@@ -1477,29 +1289,6 @@
1477
1289
  "stateMutability": "nonpayable",
1478
1290
  "type": "function"
1479
1291
  },
1480
- {
1481
- "inputs": [
1482
- {
1483
- "internalType": "NftId",
1484
- "name": "stakeNftId",
1485
- "type": "uint96"
1486
- },
1487
- {
1488
- "internalType": "NftId",
1489
- "name": "targetNftId",
1490
- "type": "uint96"
1491
- },
1492
- {
1493
- "internalType": "Amount",
1494
- "name": "dipAmount",
1495
- "type": "uint96"
1496
- }
1497
- ],
1498
- "name": "registerStake",
1499
- "outputs": [],
1500
- "stateMutability": "nonpayable",
1501
- "type": "function"
1502
- },
1503
1292
  {
1504
1293
  "inputs": [
1505
1294
  {
@@ -1539,10 +1328,21 @@
1539
1328
  "internalType": "NftId",
1540
1329
  "name": "stakeNftId",
1541
1330
  "type": "uint96"
1331
+ },
1332
+ {
1333
+ "internalType": "NftId",
1334
+ "name": "newTargetNftId",
1335
+ "type": "uint96"
1542
1336
  }
1543
1337
  ],
1544
1338
  "name": "restake",
1545
- "outputs": [],
1339
+ "outputs": [
1340
+ {
1341
+ "internalType": "NftId",
1342
+ "name": "newStakeNftId",
1343
+ "type": "uint96"
1344
+ }
1345
+ ],
1546
1346
  "stateMutability": "nonpayable",
1547
1347
  "type": "function"
1548
1348
  },
@@ -1653,12 +1453,18 @@
1653
1453
  },
1654
1454
  {
1655
1455
  "internalType": "Amount",
1656
- "name": "dipAmount",
1456
+ "name": "stakeAmount",
1657
1457
  "type": "uint96"
1658
1458
  }
1659
1459
  ],
1660
1460
  "name": "stake",
1661
- "outputs": [],
1461
+ "outputs": [
1462
+ {
1463
+ "internalType": "Amount",
1464
+ "name": "stakeBalance",
1465
+ "type": "uint96"
1466
+ }
1467
+ ],
1662
1468
  "stateMutability": "nonpayable",
1663
1469
  "type": "function"
1664
1470
  },
@@ -1786,39 +1592,45 @@
1786
1592
  }
1787
1593
  ],
1788
1594
  "name": "withdrawRewardReserves",
1789
- "outputs": [],
1595
+ "outputs": [
1596
+ {
1597
+ "internalType": "Amount",
1598
+ "name": "newBalance",
1599
+ "type": "uint96"
1600
+ }
1601
+ ],
1790
1602
  "stateMutability": "nonpayable",
1791
1603
  "type": "function"
1792
1604
  }
1793
1605
  ],
1794
- "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6153c380620000e66000396000f3fe60806040523480156200001157600080fd5b5060043610620004095760003560e01c80636291423a116200021d5780639a7263641162000131578063deaa59df11620000bb578063e904ec661162000086578063e904ec66146200095f578063ea15869f1462000976578063f7c34ee0146200098d578063f8bf0d9f14620009a457600080fd5b8063deaa59df146200091a578063e3a817cd1462000931578063e7f7fb861462000948578063e8ce883d14620008cd57600080fd5b8063bf7e214f11620000fc578063bf7e214f14620008a3578063caed989714620008c3578063de0eb85f14620008cd578063dea4ccf214620008e257600080fd5b80639a726364146200085a578063ada9652e146200086b578063b423086c1462000882578063bb1e0e59146200088c57600080fd5b80637a9e5e4b11620001b3578063893d20e8116200017e578063893d20e814620007fc5780638fb36037146200080657806390edbd35146200082a578063958697a0146200084357600080fd5b80637a9e5e4b14620007ad5780637b21556114620007c4578063806b5ece14620007db57806386c7575414620007f257600080fd5b806369acf11e11620001f457806369acf11e146200075157806369aff9af14620007685780636c1e9dff146200077f578063719f761a146200079657600080fd5b80636291423a1462000710578063644c45e0146200071a578063675393bf146200073a57600080fd5b80632a80f673116200032157806351d3417e11620002ab5780635ecf260f11620002765780635ecf260f14620006a45780635fd1efec14620006bb578063614d08f814620006d2578063628937d214620006f957600080fd5b806351d3417e146200065a578063562119ee14620006715780635741e5e914620006885780635ab1bd53146200069257600080fd5b8063412ba9fb11620002ec578063412ba9fb146200060957806343d752d3146200062057806349bb9e4b146200062a5780634dd84ff7146200064157600080fd5b80632a80f67314620005ba578063329d6e7414620005d157806336644da614620005e857806336fc697e14620005ff57600080fd5b8063160e4b1f11620003a357806321df0da7116200036e57806321df0da7146200058f57806322366844146200059957806327415b7e146200052157806327bb7a3314620005a357600080fd5b8063160e4b1f146200052157806317d7de7c14620005375780631eff4b221462000550578063214cdb80146200057857600080fd5b80630fec111c11620003e45780630fec111c14620004a957806310a0638a14620004c25780631329960414620004db578063138461e014620004fe57600080fd5b806301ffc9a7146200040e578063062c9cdf14620004535780630d8e6e2c146200048a575b600080fd5b6200043e6200041f36600462003ea9565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6200047b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b6040519081526020016200044a565b62000494620009bb565b60405162ffffff90911681526020016200044a565b620004b362000a48565b6040516200044a919062003f29565b620004d9620004d336600462003fd7565b62000c19565b005b620004e562000cfd565b6040516001600160a01b0390911681526020016200044a565b6200050862000d12565b6040516001600160601b0390911681526020016200044a565b620004d9620005323660046200401a565b505050565b6200054162000d1f565b6040516200044a91906200406c565b6200047b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b620004d96200058936600462003ea9565b62000d31565b620004e562000d60565b6200043e62000d75565b620004d9620005b4366004620041d9565b62000e77565b620004d9620005cb3660046200427f565b62000f22565b620004d9620005e2366004620042ae565b620011a3565b620004d9620005f9366004620042fa565b620012fb565b620004d96200133a565b620004d96200061a36600462004380565b62001382565b620004e5620014c6565b620004d96200063b366004620043b5565b620014db565b62000508620006523660046200440a565b600092915050565b620005086200066b36600462004448565b620015e3565b620004d9620006823660046200447b565b6200162b565b6200043e62001794565b6001546001600160a01b0316620004e5565b620004d9620006b53660046200440a565b62001853565b620004d9620006cc366004620044dd565b62001ada565b62000541604051806040016040528060078152602001665374616b696e6760c81b81525081565b620004d96200070a366004620044fd565b62001c51565b620004e562001d2d565b6000805160206200530e833981519152546001600160601b031662000508565b620004d96200074b366004620044dd565b62001d4b565b620004d96200076236600462003fd7565b62001e62565b620004d96200077936600462004530565b62001ff3565b620004d9620007903660046200454a565b62002047565b62000508620007a736600462003fd7565b620021e0565b620004d9620007be366004620044dd565b620023d5565b6200047b620007d53660046200456b565b62002477565b62000508620007ec36600462003fd7565b620024ad565b620004e5620024df565b620004e5620024fd565b620008106200263c565b6040516001600160e01b031990911681526020016200044a565b6200083462002677565b6040516200044a919062004593565b620004d9620008543660046200401a565b620026a5565b620004d9620008543660046200461a565b6200047b6000805160206200530e83398151915281565b62000834620026e4565b620004d96200089d36600462004655565b620026f8565b6000805160206200534e833981519152546001600160a01b0316620004e5565b620004e56200279c565b620004d9620008de3660046200454a565b5050565b620008f9620008f336600462003fd7565b620027ba565b604080516001600160601b039384168152929091166020830152016200044a565b620004d96200092b366004620044dd565b62002a2c565b620004d962000942366004620044fd565b62002cca565b620004d96200095936600462004676565b62002da6565b620004d96200097036600462004655565b62002e4a565b6200047b6000805160206200532e83398151915281565b620004d96200099e366004620046ab565b62002f9b565b620004d9620009b5366004620046cc565b6200301a565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af415801562000a1d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a439190620047e2565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801562000afd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b23919062004816565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00162000b6d620024fd565b6001600160a01b0316815260200182600101805462000b8c9062004836565b80601f016020809104026020016040519081016040528092919081815260200182805462000bba9062004836565b801562000c0b5780601f1062000bdf5761010080835404028352916020019162000c0b565b820191906000526020600020905b81548152906001019060200180831162000bed57829003601f168201915b505050505081525091505090565b8062000c246200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa15801562000c77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c9d91906200487f565b62000ccb57604051632ab4595b60e11b81526001600160601b03821660048201526024015b60405180910390fd5b600062000cd76200313a565b6003810154600282015491925062000532916001600160a01b039182169116856200315e565b600062000d0962002677565b60800151905090565b600062000a433062003221565b606062000d2b62002677565b51919050565b62000d3b62003430565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b600062000d6c62002677565b60400151905090565b600062000d8a6001546001600160a01b031690565b604051636939560f60e11b81523060048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa15801562000dd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000df7919062004816565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562000e51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a4391906200487f565b62000e8162003430565b62000e8d828762002f9b565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30162000f188382620048f1565b5050505050505050565b8162000f2d6200313a565b60020160009054906101000a90046001600160a01b03166001600160a01b03166363fe327a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000f82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa89190620049bd565b604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa15801562000ff8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101e91906200487f565b62001048576040516396cff01560e01b81526001600160601b038216600482015260240162000cc2565b604051633a39e8ad60e21b81523060048201526001600160601b038416602482015260448101839052600090819073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063e8e7a2b49060640160a060405180830381865af4158015620010b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d9919062004a49565b91509150620010e76200313a565b60020154604051630300f49160e31b81526001600160a01b0390911690631807a488906200111c908890859060040162004a79565b600060405180830381600087803b1580156200113757600080fd5b505af11580156200114c573d6000803e3d6000fd5b5050604080516001600160601b0389168152602081018690529081018790527f3e76c26439d1ec3386e26dfeebf955ea11f5f5f30459052b70e061ade8c9554f925060600190505b60405180910390a15050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c620011c7620009bb565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af415801562001208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200122e919062004ac3565b6000805160206200536e8339815191528054600160401b900460ff168062001263575080546001600160401b03808416911610155b15620012825760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155620012ae836200346b565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b62001305620024fd565b6001600160a01b0316336001600160a01b031614620008de5760405163086391f760e31b815233600482015260240162000cc2565b6200134462003430565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600073__$dbe4bf03c942dc0574f54ee579c90d56ef$__6380877e9e620013a86200313a565b6003015460405160e083901b6001600160e01b03191681526001600160a01b0390911660048201526001600160601b03808716602483015285166044820152606401602060405180830381865af415801562001408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142e919062004aee565b90506200143a6200313a565b600201546040805160208101825264ffffffffff84811682529151633cacf20b60e01b81526001600160601b03808916600483015291519092166024830152841660448201526001600160a01b0390911690633cacf20b906064015b600060405180830381600087803b158015620014b157600080fd5b505af115801562000f18573d6000803e3d6000fd5b6000620014d262002677565b60600151905090565b6000805160206200536e8339815191528054600160401b810460ff1615906001600160401b0316600081158015620015105750825b90506000826001600160401b031660011480156200152d5750303b155b9050811580156200153c575080155b156200155b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200158657845460ff60401b1916600160401b1785555b62001592878762003475565b8315620015da57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b6000620015ef6200313a565b6001600160601b038085166000908152600692909201602090815260408084206001600160a01b03871685529091529091205416905092915050565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__639ed616cd620016586001546001600160a01b031690565b620016626200313a565b6003015460405160e084901b6001600160e01b03191681526001600160a01b039283166004820152911660248201526001600160601b038816604482015260ff8716606482015264ffffffffff8516608482015260a4810184905260c40160006040518083038186803b158015620016d957600080fd5b505af4158015620016ee573d6000803e3d6000fd5b50505050620016fc6200313a565b600201546040805160808101825260ff871681526020810186905264ffffffffff851681830152606081018490529051632df8be9b60e01b81526001600160a01b0390921691632df8be9b91620017599189919060040162004a79565b600060405180830381600087803b1580156200177457600080fd5b505af115801562001789573d6000803e3d6000fd5b505050505050505050565b6000620017a062000d75565b1562001823576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f090602401600060405180830381865afa158015620017f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620014d2919081019062004b67565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0354600160a01b900460ff1690565b816200185e6200313a565b60020160009054906101000a90046001600160a01b03166001600160a01b03166363fe327a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018d99190620049bd565b604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa15801562001929573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200194f91906200487f565b62001979576040516396cff01560e01b81526001600160601b038216600482015260240162000cc2565b604051635f9c0df360e11b81523060048201526001600160601b038416602482015264ffffffffff83166044820152600090819073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063bf381be69060640160a060405180830381865af4158015620019ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a10919062004c4d565b9150915062001a1e6200313a565b60020154604051630300f49160e31b81526001600160a01b0390911690631807a4889062001a53908890859060040162004a79565b600060405180830381600087803b15801562001a6e57600080fd5b505af115801562001a83573d6000803e3d6000fd5b5050604080516001600160601b038916815264ffffffffff80871660208301528816918101919091527fb847665302c1d8b6f507e07b17145514cea04af84e1665d629d82246992311e79250606001905062001194565b62001ae4620024fd565b6001600160a01b0316336001600160a01b03161462001b195760405163086391f760e31b815233600482015260240162000cc2565b306001600160a01b0316816001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001b62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b889190620049bd565b6001600160a01b03161462001c2257806001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bd6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bfc9190620049bd565b604051631641c88f60e11b81526001600160a01b03909116600482015260240162000cc2565b8062001c2d6200313a565b60030180546001600160a01b0319166001600160a01b039290921691909117905550565b600062001c5d620014c6565b9050600062001c6b62000cfd565b905073__$dbe4bf03c942dc0574f54ee579c90d56ef$__6382aaf2e762001c9162000d60565b8385876040518563ffffffff1660e01b815260040162001cb5949392919062004c7f565b60006040518083038186803b15801562001cce57600080fd5b505af415801562001ce3573d6000803e3d6000fd5b505060405163c661667d60e01b81526001600160a01b03848116600483015287811660248301526001600160601b03871660448301528516925063c661667d915060640162001496565b600062001d396200313a565b600301546001600160a01b0316919050565b62001d5562003430565b806001600160a01b03163b60000362001d8d5760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000cc2565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263e607072160e01b60048201526301ffc9a790602401602060405180830381865afa92505050801562001e0a575060408051601f3d908101601f1916820190925262001e07918101906200487f565b60015b62001e345760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000cc2565b80620008de5760405163fdeac91f60e01b81526001600160a01b038316600482015260240162000cc2565b50565b8062001e6d6200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa15801562001ec0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ee691906200487f565b62001f1057604051632ab4595b60e11b81526001600160601b038216600482015260240162000cc2565b600062001f1c6200313a565b6003810154604051633d9be4cd60e11b815291925060009173__$dbe4bf03c942dc0574f54ee579c90d56ef$__91637b37c99a9162001f6a916001600160a01b031690889060040162004cb1565b602060405180830381865af415801562001f88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fae919062004816565b60028301546040516387fe5abb60e01b81526001600160601b038088166004830152831660248201529192506001600160a01b0316906387fe5abb9060440162001496565b62001ffd620024fd565b6001600160a01b0316336001600160a01b031614620020325760405163086391f760e31b815233600482015260240162000cc2565b62001e5f6200204062000d60565b8262002e4a565b81620020526200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015620020a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020cb91906200487f565b620020f557604051632ab4595b60e11b81526001600160601b038216600482015260240162000cc2565b6000620021016200313a565b6003810154604051633d9be4cd60e11b815291925060009173__$dbe4bf03c942dc0574f54ee579c90d56ef$__91637b37c99a916200214f916001600160a01b031690899060040162004cb1565b602060405180830381865af41580156200216d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002193919062004816565b600283015460405163faaf715560e01b81526001600160601b0380891660048301528088166024830152831660448201529192506001600160a01b03169063faaf71559060640162001759565b600081620021ed6200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa15801562002240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200226691906200487f565b6200229057604051632ab4595b60e11b81526001600160601b038216600482015260240162000cc2565b60006200229c6200313a565b60038101546002820154919250620022c2916001600160a01b039182169116866200315e565b8060020160009054906101000a90046001600160a01b03166001600160a01b0316637eb71df48573__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801562002333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002359919062004816565b6040516001600160e01b031960e085901b1681526001600160601b039283166004820152911660248201526044016020604051808303816000875af1158015620023a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023cd919062004816565b949350505050565b33620023f76000805160206200534e833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b031614620024345760405162d1953b60e31b81526001600160a01b038216600482015260240162000cc2565b816001600160a01b03163b6000036200246c576040516361798f2f60e11b81526001600160a01b038316600482015260240162000cc2565b620008de826200389f565b6000620024836200313a565b6000938452600401602090815260408085206001600160a01b039490941685529290525090205490565b6000620024b96200313a565b6001600160601b0392831660009081526005919091016020526040902054909116919050565b6000620024eb6200313a565b600201546001600160a01b0316919050565b6000806000805160206200530e83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156200256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200259591906200487f565b1562002626576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015620025fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026209190620049bd565b91505090565b54600160601b90046001600160a01b0316919050565b6000805160206200534e833981519152805460009190600160a01b900460ff166200266957600062002620565b638fb3603760e01b91505090565b6200268162003e41565b6200268b62000d75565b156200269b5762000a43620038fb565b62000a43620026e4565b620026af620024fd565b6001600160a01b0316336001600160a01b031614620005325760405163086391f760e31b815233600482015260240162000cc2565b620026ee62003e41565b62000a43620038fb565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027689190620049bd565b6001600160a01b0316336001600160a01b031614620008de5760405162f0630960e01b815233600482015260240162000cc2565b6000620027a86200313a565b600101546001600160a01b0316919050565b60008082620027c86200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa1580156200281b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200284191906200487f565b6200286b57604051632ab4595b60e11b81526001600160601b038216600482015260240162000cc2565b6000620028776200313a565b600381015460028201549192506200289d916001600160a01b039182169116876200315e565b8060020160009054906101000a90046001600160a01b03166001600160a01b031663e4b23d6b8673__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156200290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002934919062004816565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156200297e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029a4919062004816565b60405160e085901b6001600160e01b03191681526001600160601b0393841660048201529183166024830152909116604482015260640160408051808303816000875af1158015620029fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a20919062004cd3565b90969095509350505050565b62002a36620024fd565b6001600160a01b0316336001600160a01b03161462002a6b5760405163086391f760e31b815233600482015260240162000cc2565b600062002a7762000cfd565b9050600062002a8562000d60565b6040516370a0823160e01b81526001600160a01b0384811660048301529192506000918316906370a0823190602401602060405180830381865afa15801562002ad2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002af8919062004d07565b9050801562002bd1576001600160a01b038316301462002bd157604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301526000919084169063dd62ed3e90604401602060405180830381865afa15801562002b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b89919062004d07565b90508181101562002bcf576040516372c963b360e11b81526001600160a01b03808616600483015286166024820152604481018290526064810183905260840162000cc2565b505b62002bdc8462003a7c565b801562002cc457306001600160a01b0384160362002c6a5760405163095ea7b360e01b8152306004820152602481018290526001600160a01b0383169063095ea7b3906044016020604051808303816000875af115801562002c42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c6891906200487f565b505b62002c788284868462003b69565b604080516001600160a01b038086168252861660208201529081018290527f8f925ed35e36754081a3353f30c5686c405280f94d1cfe322ee5707833d898679060600160405180910390a15b50505050565b600062002cd6620014c6565b9050600062002ce462000cfd565b905073__$dbe4bf03c942dc0574f54ee579c90d56ef$__6382aaf2e762002d0a62000d60565b8685876040518563ffffffff1660e01b815260040162002d2e949392919062004c7f565b60006040518083038186803b15801562002d4757600080fd5b505af415801562002d5c573d6000803e3d6000fd5b505060405163c661667d60e01b81526001600160a01b03878116600483015284811660248301526001600160601b03871660448301528516925063c661667d915060640162001496565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002df0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e169190620049bd565b6001600160a01b0316336001600160a01b031614620005325760405162f0630960e01b815233600482015260240162000cc2565b62002e54620024fd565b6001600160a01b0316336001600160a01b03161462002e895760405163086391f760e31b815233600482015260240162000cc2565b3062002e9462000cfd565b6001600160a01b03161462002ebc5760405163b6d7537f60e01b815260040160405180910390fd5b816001600160a01b031663095ea7b362002ed5620014c6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801562002f23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f4991906200487f565b507f2384a42fdaabc7c18091b047d32d817d2ead07cae899963c6bcf9ab42aff85d462002f75620014c6565b604080516001600160a01b03909216825260208201849052015b60405180910390a15050565b62002fa562003430565b62002fb08162001d4b565b62002fba6200133a565b6001600160a01b03821662002fe25760405163f17ef42d60e01b815260040160405180910390fd5b506000805160206200530e83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6200302462003430565b6200303489898787878762000e77565b6200303f8a62003bc5565b6001600160a01b03861662003067576040516327eab2e360e11b815260040160405180910390fd5b86516000036200308a5760405163591eebf360e11b815260040160405180910390fd5b6000805160206200532e83398151915280620030a78982620048f1565b506001810180546001600160a01b03199081166001600160a01b038a161790915560028201805490911690556003810180546001600160a81b0319163060ff60a01b191617600160a01b8715150217905560048101620031088382620048f1565b506200311b634a531f3360e01b62000d31565b6200312d63100951f160e31b62000d31565b5050505050505050505050565b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0090565b604051633d9be4cd60e11b815260009073__$dbe4bf03c942dc0574f54ee579c90d56ef$__90637b37c99a906200319c908790869060040162004cb1565b602060405180830381865af4158015620031ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031e0919062004816565b6040516365d467a960e01b81526001600160601b038085166004830152821660248201529091506001600160a01b038416906365d467a99060440162001496565b6000806000805160206200530e83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562003293573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032b991906200487f565b15620032e75780546040516301ab8b6760e21b81526001600160601b03909116600482015260240162000cc2565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa1580156200333c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200336291906200487f565b6200338c5760405163b9304b0d60e01b81526001600160a01b038416600482015260240162000cc2565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038581166004830152919091169063d272ac1e90602401602060405180830381865afa158015620033e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003407919062004816565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6000805160206200536e83398151915254600160401b900460ff166200346957604051631afcd79f60e31b815260040160405180910390fd5b565b6200040962003430565b6000805160206200536e8339815191528054600160401b810460ff1615906001600160401b0316600081158015620034aa5750825b90506000826001600160401b03166001148015620034c75750303b155b905081158015620034d6575080155b15620034f55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200352057845460ff60401b1916600160401b1785555b600080600080898060200190518101906200353c919062004d21565b935093509350935060008490506000816001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200358a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035b09190620049bd565b905060008590506000816001600160a01b031663b201f7096040518163ffffffff1660e01b8152600401602060405180830381865afa158015620035f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200361e9190620049bd565b9050620036d58389866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200368b919062004816565b6040805180820190915260078152665374616b696e6760c81b602082015285602d60008c60405180602001604052806000815250604051806020016040528060008152506200301a565b620036df62003bda565b6000620036eb6200313a565b9050620037006001546001600160a01b031690565b6001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200373e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003764919062004816565b6007820180546bffffffffffffffffffffffff19166001600160601b03929092169190911790556002810180546001600160a01b0319166001600160a01b03891690811790915560408051633148a11d60e11b81529051636291423a916004808201926020929091908290030181865afa158015620037e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200380d9190620049bd565b6003820180546001600160a01b03199081166001600160a01b0393841617909155600183018054909116918a169190911790556200385263299098bd60e11b62000d31565b5050505050505050508315620015da57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001620015d1565b6000805160206200534e83398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200162002f8f565b6200390562003e41565b60006000805160206200532e83398151915290506040518060c00160405280826000018054620039359062004836565b80601f0160208091040260200160405190810160405280929190818152602001828054620039639062004836565b8015620039b45780601f106200398857610100808354040283529160200191620039b4565b820191906000526020600020905b8154815290600101906020018083116200399657829003601f168201915b5050505050815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801562003a08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a2e919062004816565b6001600160601b0316815260018301546001600160a01b039081166020830152600284015481166040830152600384015416606082015260048301805460809092019162000b8c9062004836565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f03546000805160206200532e833981519152906001600160a01b0390811690831662003adb5760405163185a690f60e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03160362003b0e5760405163ade4578160e01b815260040160405180910390fd5b6003820180546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f610ad1290dceadae2c5ce18bae2eb495be595083a257fac7414e50686f7c26509101620012ee565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905262002cc490859062003c78565b62003bcf62003430565b62001e5f8162003ce2565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f01546040516000805160206200532e833981519152916001600160a01b03169062003c259062003e9b565b6001600160a01b039091168152602001604051809103906000f08015801562003c52573d6000803e3d6000fd5b5060029190910180546001600160a01b0319166001600160a01b03909216919091179055565b600062003c8f6001600160a01b0384168362003cf7565b9050805160001415801562003cb757508080602001905181019062003cb591906200487f565b155b156200053257604051635274afe760e01b81526001600160a01b038416600482015260240162000cc2565b62003cec62003430565b62001e5f816200389f565b606062003d078383600062003d0e565b9392505050565b60608147101562003d355760405163cd78605960e01b815230600482015260240162000cc2565b600080856001600160a01b0316848660405162003d53919062004d89565b60006040518083038185875af1925050503d806000811462003d92576040519150601f19603f3d011682016040523d82523d6000602084013e62003d97565b606091505b509150915062003da986838362003db3565b9695505050505050565b60608262003dcc5762003dc68262003e17565b62003d07565b815115801562003de457506001600160a01b0384163b155b1562003e0f57604051639996b31560e01b81526001600160a01b038516600482015260240162000cc2565b508062003d07565b80511562003e285780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060c001604052806060815260200160006001600160601b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b6105668062004da883390190565b60006020828403121562003ebc57600080fd5b81356001600160e01b03198116811462003d0757600080fd5b60005b8381101562003ef257818101518382015260200162003ed8565b50506000910152565b6000815180845262003f1581602086016020860162003ed5565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015162003f9360c08401826001600160a01b03169052565b5060c083015160e080840152620023cd61010084018262003efb565b6001600160601b038116811462001e5f57600080fd5b803562003fd28162003faf565b919050565b60006020828403121562003fea57600080fd5b813562003d078162003faf565b6001600160a01b038116811462001e5f57600080fd5b803562003fd28162003ff7565b6000806000606084860312156200403057600080fd5b83356200403d8162003faf565b925060208401356200404f8162003ff7565b91506040840135620040618162003faf565b809150509250925092565b60208152600062003d07602083018462003efb565b60ff8116811462001e5f57600080fd5b803562003fd28162004081565b801515811462001e5f57600080fd5b803562003fd2816200409e565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620040f557620040f5620040ba565b60405290565b60405160e081016001600160401b0381118282101715620040f557620040f5620040ba565b604051601f8201601f191681016001600160401b03811182821017156200414b576200414b620040ba565b604052919050565b60006001600160401b038211156200416f576200416f620040ba565b50601f01601f191660200190565b600082601f8301126200418f57600080fd5b8135620041a6620041a08262004153565b62004120565b818152846020838601011115620041bc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215620041f357600080fd5b8635620042008162003ff7565b95506020870135620042128162003faf565b94506040870135620042248162004081565b9350606087013562004236816200409e565b92506080870135620042488162003ff7565b915060a08701356001600160401b038111156200426457600080fd5b6200427289828a016200417d565b9150509295509295509295565b600080604083850312156200429357600080fd5b8235620042a08162003faf565b946020939093013593505050565b600060208284031215620042c157600080fd5b81356001600160401b03811115620042d857600080fd5b620023cd848285016200417d565b64ffffffffff8116811462001e5f57600080fd5b60008082840360a08112156200430f57600080fd5b83356200431c8162003faf565b92506080601f19820112156200433157600080fd5b506200433c620040d0565b60208401356200434c8162004081565b81526040840135602082015260608401356200436881620042e6565b60408201526080939093013560608401525092909150565b6000806000606084860312156200439657600080fd5b8335620043a38162003faf565b925060208401356200404f8162003faf565b60008060408385031215620043c957600080fd5b8235620043d68162003ff7565b915060208301356001600160401b03811115620043f257600080fd5b62004400858286016200417d565b9150509250929050565b600080604083850312156200441e57600080fd5b82356200442b8162003faf565b915060208301356200443d81620042e6565b809150509250929050565b600080604083850312156200445c57600080fd5b8235620044698162003faf565b915060208301356200443d8162003ff7565b600080600080600060a086880312156200449457600080fd5b8535620044a18162003faf565b94506020860135620044b38162004081565b9350604086013592506060860135620044cc81620042e6565b949793965091946080013592915050565b600060208284031215620044f057600080fd5b813562003d078162003ff7565b600080604083850312156200451157600080fd5b82356200451e8162003ff7565b915060208301356200443d8162003faf565b6000602082840312156200454357600080fd5b5035919050565b600080604083850312156200455e57600080fd5b82356200451e8162003faf565b600080604083850312156200457f57600080fd5b8235915060208301356200443d8162003ff7565b602081526000825160c06020840152620045b160e084018262003efb565b90506001600160601b036020850151166040840152604084015160018060a01b0380821660608601528060608701511660808601528060808701511660a0860152505060a0840151601f198483030160c085015262004611828262003efb565b95945050505050565b6000806000606084860312156200463057600080fd5b833592506020840135620046448162003ff7565b929592945050506040919091013590565b600080604083850312156200466957600080fd5b8235620042a08162003ff7565b6000806000606084860312156200468c57600080fd5b8335620046998162003ff7565b92506020840135620046448162003ff7565b60008060408385031215620046bf57600080fd5b8235620044698162003ff7565b6000806000806000806000806000806101408b8d031215620046ed57600080fd5b620046f88b6200400d565b99506200470860208c016200400d565b98506200471860408c0162003fc5565b975060608b01356001600160401b03808211156200473557600080fd5b620047438e838f016200417d565b98506200475360808e016200400d565b97506200476360a08e0162004091565b96506200477360c08e01620040ad565b95506200478360e08e016200400d565b94506101008d01359150808211156200479b57600080fd5b620047a98e838f016200417d565b93506101208d0135915080821115620047c157600080fd5b50620047d08d828e016200417d565b9150509295989b9194979a5092959850565b600060208284031215620047f557600080fd5b815162ffffff8116811462003d0757600080fd5b805162003fd28162003faf565b6000602082840312156200482957600080fd5b815162003d078162003faf565b600181811c908216806200484b57607f821691505b6020821081036200486c57634e487b7160e01b600052602260045260246000fd5b50919050565b805162003fd2816200409e565b6000602082840312156200489257600080fd5b815162003d07816200409e565b601f8211156200053257600081815260208120601f850160051c81016020861015620048c85750805b601f850160051c820191505b81811015620048e957828155600101620048d4565b505050505050565b81516001600160401b038111156200490d576200490d620040ba565b62004925816200491e845462004836565b846200489f565b602080601f8311600181146200495d5760008415620049445750858301515b600019600386901b1c1916600185901b178555620048e9565b600085815260208120601f198616915b828110156200498e578886015182559484019460019091019084016200496d565b5085821015620049ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620049d057600080fd5b815162003d078162003ff7565b805162003fd28162004081565b600060808284031215620049fd57600080fd5b62004a07620040d0565b9050815162004a168162004081565b815260208281015190820152604082015162004a3281620042e6565b806040830152506060820151606082015292915050565b60008060a0838503121562004a5d57600080fd5b8251915062004a708460208501620049ea565b90509250929050565b600060a0820190506001600160601b038416825260ff83511660208301526020830151604083015264ffffffffff6040840151166060830152606083015160808301529392505050565b60006020828403121562004ad657600080fd5b81516001600160401b038116811462003d0757600080fd5b60006020828403121562004b0157600080fd5b815162003d0781620042e6565b805162003fd28162003ff7565b600082601f83011262004b2d57600080fd5b815162004b3e620041a08262004153565b81815284602083860101111562004b5457600080fd5b620023cd82602083016020870162003ed5565b60006020828403121562004b7a57600080fd5b81516001600160401b038082111562004b9257600080fd5b9083019060e0828603121562004ba757600080fd5b62004bb1620040fb565b62004bbc8362004809565b815262004bcc6020840162004809565b602082015262004bdf60408401620049dd565b604082015262004bf26060840162004872565b606082015262004c056080840162004b0e565b608082015262004c1860a0840162004b0e565b60a082015260c08301518281111562004c3057600080fd5b62004c3e8782860162004b1b565b60c08301525095945050505050565b60008060a0838503121562004c6157600080fd5b825162004c6e81620042e6565b915062004a708460208501620049ea565b6001600160a01b0394851681529284166020840152921660408201526001600160601b03909116606082015260800190565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6000806040838503121562004ce757600080fd5b825162004cf48162003faf565b60208401519092506200443d8162003faf565b60006020828403121562004d1a57600080fd5b5051919050565b6000806000806080858703121562004d3857600080fd5b845162004d458162003ff7565b602086015190945062004d588162003ff7565b604086015190935062004d6b8162003ff7565b606086015190925062004d7e8162003ff7565b939692955090935050565b6000825162004d9d81846020870162003ed5565b919091019291505056fe608060405234801561001057600080fd5b5060405161056638038061056683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6104d3806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806321df0da7146100465780638d7271c314610065578063c661667d1461007a575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f35b61007861007336600461039c565b61008d565b005b6100786100883660046103f0565b61011f565b60405163046e44af60e11b81526001600160601b03821660048201526101199085908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e906024015b602060405180830381865af41580156100f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101149190610433565b610179565b50505050565b60005460405163046e44af60e11b81526001600160601b0383166004820152610174916001600160a01b0316908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e906024016100d3565b505050565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b179052610119918691906000906101df90841683610232565b90508051600014158015610204575080806020019051810190610202919061044c565b155b1561017457604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b606061024083836000610247565b9392505050565b60608147101561026c5760405163cd78605960e01b8152306004820152602401610229565b600080856001600160a01b03168486604051610288919061046e565b60006040518083038185875af1925050503d80600081146102c5576040519150601f19603f3d011682016040523d82523d6000602084013e6102ca565b606091505b50915091506102da8683836102e4565b9695505050505050565b6060826102f9576102f482610340565b610240565b815115801561031057506001600160a01b0384163b155b1561033957604051639996b31560e01b81526001600160a01b0385166004820152602401610229565b5080610240565b8051156103505780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461038057600080fd5b919050565b80356001600160601b038116811461038057600080fd5b600080600080608085870312156103b257600080fd5b6103bb85610369565b93506103c960208601610369565b92506103d760408601610369565b91506103e560608601610385565b905092959194509250565b60008060006060848603121561040557600080fd5b61040e84610369565b925061041c60208501610369565b915061042a60408501610385565b90509250925092565b60006020828403121561044557600080fd5b5051919050565b60006020828403121561045e57600080fd5b8151801515811461024057600080fd5b6000825160005b8181101561048f5760208186018101518583015201610475565b50600092019182525091905056fea2646970667358221220cef169e5ebf6594361114297bdf3c5c071054018e8f028c23ba2f8f1536ea8ae64736f6c6343000814003307ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00ffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f4fe81f23a566bb4b520bc498a721d39adbeb5e8f1d85f77ad9bd8da6534c1da64736f6c63430008140033",
1795
- "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620004095760003560e01c80636291423a116200021d5780639a7263641162000131578063deaa59df11620000bb578063e904ec661162000086578063e904ec66146200095f578063ea15869f1462000976578063f7c34ee0146200098d578063f8bf0d9f14620009a457600080fd5b8063deaa59df146200091a578063e3a817cd1462000931578063e7f7fb861462000948578063e8ce883d14620008cd57600080fd5b8063bf7e214f11620000fc578063bf7e214f14620008a3578063caed989714620008c3578063de0eb85f14620008cd578063dea4ccf214620008e257600080fd5b80639a726364146200085a578063ada9652e146200086b578063b423086c1462000882578063bb1e0e59146200088c57600080fd5b80637a9e5e4b11620001b3578063893d20e8116200017e578063893d20e814620007fc5780638fb36037146200080657806390edbd35146200082a578063958697a0146200084357600080fd5b80637a9e5e4b14620007ad5780637b21556114620007c4578063806b5ece14620007db57806386c7575414620007f257600080fd5b806369acf11e11620001f457806369acf11e146200075157806369aff9af14620007685780636c1e9dff146200077f578063719f761a146200079657600080fd5b80636291423a1462000710578063644c45e0146200071a578063675393bf146200073a57600080fd5b80632a80f673116200032157806351d3417e11620002ab5780635ecf260f11620002765780635ecf260f14620006a45780635fd1efec14620006bb578063614d08f814620006d2578063628937d214620006f957600080fd5b806351d3417e146200065a578063562119ee14620006715780635741e5e914620006885780635ab1bd53146200069257600080fd5b8063412ba9fb11620002ec578063412ba9fb146200060957806343d752d3146200062057806349bb9e4b146200062a5780634dd84ff7146200064157600080fd5b80632a80f67314620005ba578063329d6e7414620005d157806336644da614620005e857806336fc697e14620005ff57600080fd5b8063160e4b1f11620003a357806321df0da7116200036e57806321df0da7146200058f57806322366844146200059957806327415b7e146200052157806327bb7a3314620005a357600080fd5b8063160e4b1f146200052157806317d7de7c14620005375780631eff4b221462000550578063214cdb80146200057857600080fd5b80630fec111c11620003e45780630fec111c14620004a957806310a0638a14620004c25780631329960414620004db578063138461e014620004fe57600080fd5b806301ffc9a7146200040e578063062c9cdf14620004535780630d8e6e2c146200048a575b600080fd5b6200043e6200041f36600462003ea9565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6200047b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b6040519081526020016200044a565b62000494620009bb565b60405162ffffff90911681526020016200044a565b620004b362000a48565b6040516200044a919062003f29565b620004d9620004d336600462003fd7565b62000c19565b005b620004e562000cfd565b6040516001600160a01b0390911681526020016200044a565b6200050862000d12565b6040516001600160601b0390911681526020016200044a565b620004d9620005323660046200401a565b505050565b6200054162000d1f565b6040516200044a91906200406c565b6200047b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b620004d96200058936600462003ea9565b62000d31565b620004e562000d60565b6200043e62000d75565b620004d9620005b4366004620041d9565b62000e77565b620004d9620005cb3660046200427f565b62000f22565b620004d9620005e2366004620042ae565b620011a3565b620004d9620005f9366004620042fa565b620012fb565b620004d96200133a565b620004d96200061a36600462004380565b62001382565b620004e5620014c6565b620004d96200063b366004620043b5565b620014db565b62000508620006523660046200440a565b600092915050565b620005086200066b36600462004448565b620015e3565b620004d9620006823660046200447b565b6200162b565b6200043e62001794565b6001546001600160a01b0316620004e5565b620004d9620006b53660046200440a565b62001853565b620004d9620006cc366004620044dd565b62001ada565b62000541604051806040016040528060078152602001665374616b696e6760c81b81525081565b620004d96200070a366004620044fd565b62001c51565b620004e562001d2d565b6000805160206200530e833981519152546001600160601b031662000508565b620004d96200074b366004620044dd565b62001d4b565b620004d96200076236600462003fd7565b62001e62565b620004d96200077936600462004530565b62001ff3565b620004d9620007903660046200454a565b62002047565b62000508620007a736600462003fd7565b620021e0565b620004d9620007be366004620044dd565b620023d5565b6200047b620007d53660046200456b565b62002477565b62000508620007ec36600462003fd7565b620024ad565b620004e5620024df565b620004e5620024fd565b620008106200263c565b6040516001600160e01b031990911681526020016200044a565b6200083462002677565b6040516200044a919062004593565b620004d9620008543660046200401a565b620026a5565b620004d9620008543660046200461a565b6200047b6000805160206200530e83398151915281565b62000834620026e4565b620004d96200089d36600462004655565b620026f8565b6000805160206200534e833981519152546001600160a01b0316620004e5565b620004e56200279c565b620004d9620008de3660046200454a565b5050565b620008f9620008f336600462003fd7565b620027ba565b604080516001600160601b039384168152929091166020830152016200044a565b620004d96200092b366004620044dd565b62002a2c565b620004d962000942366004620044fd565b62002cca565b620004d96200095936600462004676565b62002da6565b620004d96200097036600462004655565b62002e4a565b6200047b6000805160206200532e83398151915281565b620004d96200099e366004620046ab565b62002f9b565b620004d9620009b5366004620046cc565b6200301a565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af415801562000a1d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a439190620047e2565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915260007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801562000afd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b23919062004816565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a00162000b6d620024fd565b6001600160a01b0316815260200182600101805462000b8c9062004836565b80601f016020809104026020016040519081016040528092919081815260200182805462000bba9062004836565b801562000c0b5780601f1062000bdf5761010080835404028352916020019162000c0b565b820191906000526020600020905b81548152906001019060200180831162000bed57829003601f168201915b505050505081525091505090565b8062000c246200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa15801562000c77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c9d91906200487f565b62000ccb57604051632ab4595b60e11b81526001600160601b03821660048201526024015b60405180910390fd5b600062000cd76200313a565b6003810154600282015491925062000532916001600160a01b039182169116856200315e565b600062000d0962002677565b60800151905090565b600062000a433062003221565b606062000d2b62002677565b51919050565b62000d3b62003430565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b600062000d6c62002677565b60400151905090565b600062000d8a6001546001600160a01b031690565b604051636939560f60e11b81523060048201526001600160a01b03919091169063d272ac1e90602401602060405180830381865afa15801562000dd1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000df7919062004816565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562000e51573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a4391906200487f565b62000e8162003430565b62000e8d828762002f9b565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30162000f188382620048f1565b5050505050505050565b8162000f2d6200313a565b60020160009054906101000a90046001600160a01b03166001600160a01b03166363fe327a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000f82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa89190620049bd565b604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa15801562000ff8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101e91906200487f565b62001048576040516396cff01560e01b81526001600160601b038216600482015260240162000cc2565b604051633a39e8ad60e21b81523060048201526001600160601b038416602482015260448101839052600090819073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063e8e7a2b49060640160a060405180830381865af4158015620010b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010d9919062004a49565b91509150620010e76200313a565b60020154604051630300f49160e31b81526001600160a01b0390911690631807a488906200111c908890859060040162004a79565b600060405180830381600087803b1580156200113757600080fd5b505af11580156200114c573d6000803e3d6000fd5b5050604080516001600160601b0389168152602081018690529081018790527f3e76c26439d1ec3386e26dfeebf955ea11f5f5f30459052b70e061ade8c9554f925060600190505b60405180910390a15050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c620011c7620009bb565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af415801562001208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200122e919062004ac3565b6000805160206200536e8339815191528054600160401b900460ff168062001263575080546001600160401b03808416911610155b15620012825760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155620012ae836200346b565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b62001305620024fd565b6001600160a01b0316336001600160a01b031614620008de5760405163086391f760e31b815233600482015260240162000cc2565b6200134462003430565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600073__$dbe4bf03c942dc0574f54ee579c90d56ef$__6380877e9e620013a86200313a565b6003015460405160e083901b6001600160e01b03191681526001600160a01b0390911660048201526001600160601b03808716602483015285166044820152606401602060405180830381865af415801562001408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142e919062004aee565b90506200143a6200313a565b600201546040805160208101825264ffffffffff84811682529151633cacf20b60e01b81526001600160601b03808916600483015291519092166024830152841660448201526001600160a01b0390911690633cacf20b906064015b600060405180830381600087803b158015620014b157600080fd5b505af115801562000f18573d6000803e3d6000fd5b6000620014d262002677565b60600151905090565b6000805160206200536e8339815191528054600160401b810460ff1615906001600160401b0316600081158015620015105750825b90506000826001600160401b031660011480156200152d5750303b155b9050811580156200153c575080155b156200155b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200158657845460ff60401b1916600160401b1785555b62001592878762003475565b8315620015da57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b6000620015ef6200313a565b6001600160601b038085166000908152600692909201602090815260408084206001600160a01b03871685529091529091205416905092915050565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__639ed616cd620016586001546001600160a01b031690565b620016626200313a565b6003015460405160e084901b6001600160e01b03191681526001600160a01b039283166004820152911660248201526001600160601b038816604482015260ff8716606482015264ffffffffff8516608482015260a4810184905260c40160006040518083038186803b158015620016d957600080fd5b505af4158015620016ee573d6000803e3d6000fd5b50505050620016fc6200313a565b600201546040805160808101825260ff871681526020810186905264ffffffffff851681830152606081018490529051632df8be9b60e01b81526001600160a01b0390921691632df8be9b91620017599189919060040162004a79565b600060405180830381600087803b1580156200177457600080fd5b505af115801562001789573d6000803e3d6000fd5b505050505050505050565b6000620017a062000d75565b1562001823576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f090602401600060405180830381865afa158015620017f9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620014d2919081019062004b67565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0354600160a01b900460ff1690565b816200185e6200313a565b60020160009054906101000a90046001600160a01b03166001600160a01b03166363fe327a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018b3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018d99190620049bd565b604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa15801562001929573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200194f91906200487f565b62001979576040516396cff01560e01b81526001600160601b038216600482015260240162000cc2565b604051635f9c0df360e11b81523060048201526001600160601b038416602482015264ffffffffff83166044820152600090819073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063bf381be69060640160a060405180830381865af4158015620019ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a10919062004c4d565b9150915062001a1e6200313a565b60020154604051630300f49160e31b81526001600160a01b0390911690631807a4889062001a53908890859060040162004a79565b600060405180830381600087803b15801562001a6e57600080fd5b505af115801562001a83573d6000803e3d6000fd5b5050604080516001600160601b038916815264ffffffffff80871660208301528816918101919091527fb847665302c1d8b6f507e07b17145514cea04af84e1665d629d82246992311e79250606001905062001194565b62001ae4620024fd565b6001600160a01b0316336001600160a01b03161462001b195760405163086391f760e31b815233600482015260240162000cc2565b306001600160a01b0316816001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001b62573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b889190620049bd565b6001600160a01b03161462001c2257806001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001bd6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bfc9190620049bd565b604051631641c88f60e11b81526001600160a01b03909116600482015260240162000cc2565b8062001c2d6200313a565b60030180546001600160a01b0319166001600160a01b039290921691909117905550565b600062001c5d620014c6565b9050600062001c6b62000cfd565b905073__$dbe4bf03c942dc0574f54ee579c90d56ef$__6382aaf2e762001c9162000d60565b8385876040518563ffffffff1660e01b815260040162001cb5949392919062004c7f565b60006040518083038186803b15801562001cce57600080fd5b505af415801562001ce3573d6000803e3d6000fd5b505060405163c661667d60e01b81526001600160a01b03848116600483015287811660248301526001600160601b03871660448301528516925063c661667d915060640162001496565b600062001d396200313a565b600301546001600160a01b0316919050565b62001d5562003430565b806001600160a01b03163b60000362001d8d5760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000cc2565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263e607072160e01b60048201526301ffc9a790602401602060405180830381865afa92505050801562001e0a575060408051601f3d908101601f1916820190925262001e07918101906200487f565b60015b62001e345760405163fdeac91f60e01b81526001600160a01b038216600482015260240162000cc2565b80620008de5760405163fdeac91f60e01b81526001600160a01b038316600482015260240162000cc2565b50565b8062001e6d6200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa15801562001ec0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ee691906200487f565b62001f1057604051632ab4595b60e11b81526001600160601b038216600482015260240162000cc2565b600062001f1c6200313a565b6003810154604051633d9be4cd60e11b815291925060009173__$dbe4bf03c942dc0574f54ee579c90d56ef$__91637b37c99a9162001f6a916001600160a01b031690889060040162004cb1565b602060405180830381865af415801562001f88573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fae919062004816565b60028301546040516387fe5abb60e01b81526001600160601b038088166004830152831660248201529192506001600160a01b0316906387fe5abb9060440162001496565b62001ffd620024fd565b6001600160a01b0316336001600160a01b031614620020325760405163086391f760e31b815233600482015260240162000cc2565b62001e5f6200204062000d60565b8262002e4a565b81620020526200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015620020a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020cb91906200487f565b620020f557604051632ab4595b60e11b81526001600160601b038216600482015260240162000cc2565b6000620021016200313a565b6003810154604051633d9be4cd60e11b815291925060009173__$dbe4bf03c942dc0574f54ee579c90d56ef$__91637b37c99a916200214f916001600160a01b031690899060040162004cb1565b602060405180830381865af41580156200216d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002193919062004816565b600283015460405163faaf715560e01b81526001600160601b0380891660048301528088166024830152831660448201529192506001600160a01b03169063faaf71559060640162001759565b600081620021ed6200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa15801562002240573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200226691906200487f565b6200229057604051632ab4595b60e11b81526001600160601b038216600482015260240162000cc2565b60006200229c6200313a565b60038101546002820154919250620022c2916001600160a01b039182169116866200315e565b8060020160009054906101000a90046001600160a01b03166001600160a01b0316637eb71df48573__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801562002333573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002359919062004816565b6040516001600160e01b031960e085901b1681526001600160601b039283166004820152911660248201526044016020604051808303816000875af1158015620023a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023cd919062004816565b949350505050565b33620023f76000805160206200534e833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b031614620024345760405162d1953b60e31b81526001600160a01b038216600482015260240162000cc2565b816001600160a01b03163b6000036200246c576040516361798f2f60e11b81526001600160a01b038316600482015260240162000cc2565b620008de826200389f565b6000620024836200313a565b6000938452600401602090815260408085206001600160a01b039490941685529290525090205490565b6000620024b96200313a565b6001600160601b0392831660009081526005919091016020526040902054909116919050565b6000620024eb6200313a565b600201546001600160a01b0316919050565b6000806000805160206200530e83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af41580156200256f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200259591906200487f565b1562002626576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015620025fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620026209190620049bd565b91505090565b54600160601b90046001600160a01b0316919050565b6000805160206200534e833981519152805460009190600160a01b900460ff166200266957600062002620565b638fb3603760e01b91505090565b6200268162003e41565b6200268b62000d75565b156200269b5762000a43620038fb565b62000a43620026e4565b620026af620024fd565b6001600160a01b0316336001600160a01b031614620005325760405163086391f760e31b815233600482015260240162000cc2565b620026ee62003e41565b62000a43620038fb565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002742573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620027689190620049bd565b6001600160a01b0316336001600160a01b031614620008de5760405162f0630960e01b815233600482015260240162000cc2565b6000620027a86200313a565b600101546001600160a01b0316919050565b60008082620027c86200313a565b60020154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa1580156200281b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200284191906200487f565b6200286b57604051632ab4595b60e11b81526001600160601b038216600482015260240162000cc2565b6000620028776200313a565b600381015460028201549192506200289d916001600160a01b039182169116876200315e565b8060020160009054906101000a90046001600160a01b03166001600160a01b031663e4b23d6b8673__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156200290e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002934919062004816565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af41580156200297e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029a4919062004816565b60405160e085901b6001600160e01b03191681526001600160601b0393841660048201529183166024830152909116604482015260640160408051808303816000875af1158015620029fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002a20919062004cd3565b90969095509350505050565b62002a36620024fd565b6001600160a01b0316336001600160a01b03161462002a6b5760405163086391f760e31b815233600482015260240162000cc2565b600062002a7762000cfd565b9050600062002a8562000d60565b6040516370a0823160e01b81526001600160a01b0384811660048301529192506000918316906370a0823190602401602060405180830381865afa15801562002ad2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002af8919062004d07565b9050801562002bd1576001600160a01b038316301462002bd157604051636eb1769f60e11b81526001600160a01b0384811660048301523060248301526000919084169063dd62ed3e90604401602060405180830381865afa15801562002b63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002b89919062004d07565b90508181101562002bcf576040516372c963b360e11b81526001600160a01b03808616600483015286166024820152604481018290526064810183905260840162000cc2565b505b62002bdc8462003a7c565b801562002cc457306001600160a01b0384160362002c6a5760405163095ea7b360e01b8152306004820152602481018290526001600160a01b0383169063095ea7b3906044016020604051808303816000875af115801562002c42573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002c6891906200487f565b505b62002c788284868462003b69565b604080516001600160a01b038086168252861660208201529081018290527f8f925ed35e36754081a3353f30c5686c405280f94d1cfe322ee5707833d898679060600160405180910390a15b50505050565b600062002cd6620014c6565b9050600062002ce462000cfd565b905073__$dbe4bf03c942dc0574f54ee579c90d56ef$__6382aaf2e762002d0a62000d60565b8685876040518563ffffffff1660e01b815260040162002d2e949392919062004c7f565b60006040518083038186803b15801562002d4757600080fd5b505af415801562002d5c573d6000803e3d6000fd5b505060405163c661667d60e01b81526001600160a01b03878116600483015284811660248301526001600160601b03871660448301528516925063c661667d915060640162001496565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002df0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002e169190620049bd565b6001600160a01b0316336001600160a01b031614620005325760405162f0630960e01b815233600482015260240162000cc2565b62002e54620024fd565b6001600160a01b0316336001600160a01b03161462002e895760405163086391f760e31b815233600482015260240162000cc2565b3062002e9462000cfd565b6001600160a01b03161462002ebc5760405163b6d7537f60e01b815260040160405180910390fd5b816001600160a01b031663095ea7b362002ed5620014c6565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af115801562002f23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f4991906200487f565b507f2384a42fdaabc7c18091b047d32d817d2ead07cae899963c6bcf9ab42aff85d462002f75620014c6565b604080516001600160a01b03909216825260208201849052015b60405180910390a15050565b62002fa562003430565b62002fb08162001d4b565b62002fba6200133a565b6001600160a01b03821662002fe25760405163f17ef42d60e01b815260040160405180910390fd5b506000805160206200530e83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6200302462003430565b6200303489898787878762000e77565b6200303f8a62003bc5565b6001600160a01b03861662003067576040516327eab2e360e11b815260040160405180910390fd5b86516000036200308a5760405163591eebf360e11b815260040160405180910390fd5b6000805160206200532e83398151915280620030a78982620048f1565b506001810180546001600160a01b03199081166001600160a01b038a161790915560028201805490911690556003810180546001600160a81b0319163060ff60a01b191617600160a01b8715150217905560048101620031088382620048f1565b506200311b634a531f3360e01b62000d31565b6200312d63100951f160e31b62000d31565b5050505050505050505050565b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0090565b604051633d9be4cd60e11b815260009073__$dbe4bf03c942dc0574f54ee579c90d56ef$__90637b37c99a906200319c908790869060040162004cb1565b602060405180830381865af4158015620031ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620031e0919062004816565b6040516365d467a960e01b81526001600160601b038085166004830152821660248201529091506001600160a01b038416906365d467a99060440162001496565b6000806000805160206200530e83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801562003293573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032b991906200487f565b15620032e75780546040516301ab8b6760e21b81526001600160601b03909116600482015260240162000cc2565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa1580156200333c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200336291906200487f565b6200338c5760405163b9304b0d60e01b81526001600160a01b038416600482015260240162000cc2565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038581166004830152919091169063d272ac1e90602401602060405180830381865afa158015620033e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003407919062004816565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6000805160206200536e83398151915254600160401b900460ff166200346957604051631afcd79f60e31b815260040160405180910390fd5b565b6200040962003430565b6000805160206200536e8339815191528054600160401b810460ff1615906001600160401b0316600081158015620034aa5750825b90506000826001600160401b03166001148015620034c75750303b155b905081158015620034d6575080155b15620034f55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200352057845460ff60401b1916600160401b1785555b600080600080898060200190518101906200353c919062004d21565b935093509350935060008490506000816001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200358a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620035b09190620049bd565b905060008590506000816001600160a01b031663b201f7096040518163ffffffff1660e01b8152600401602060405180830381865afa158015620035f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200361e9190620049bd565b9050620036d58389866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562003665573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200368b919062004816565b6040805180820190915260078152665374616b696e6760c81b602082015285602d60008c60405180602001604052806000815250604051806020016040528060008152506200301a565b620036df62003bda565b6000620036eb6200313a565b9050620037006001546001600160a01b031690565b6001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200373e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003764919062004816565b6007820180546bffffffffffffffffffffffff19166001600160601b03929092169190911790556002810180546001600160a01b0319166001600160a01b03891690811790915560408051633148a11d60e11b81529051636291423a916004808201926020929091908290030181865afa158015620037e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200380d9190620049bd565b6003820180546001600160a01b03199081166001600160a01b0393841617909155600183018054909116918a169190911790556200385263299098bd60e11b62000d31565b5050505050505050508315620015da57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001620015d1565b6000805160206200534e83398151915280546001600160a01b0319166001600160a01b03831690811782556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200162002f8f565b6200390562003e41565b60006000805160206200532e83398151915290506040518060c00160405280826000018054620039359062004836565b80601f0160208091040260200160405190810160405280929190818152602001828054620039639062004836565b8015620039b45780601f106200398857610100808354040283529160200191620039b4565b820191906000526020600020905b8154815290600101906020018083116200399657829003601f168201915b5050505050815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af415801562003a08573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003a2e919062004816565b6001600160601b0316815260018301546001600160a01b039081166020830152600284015481166040830152600384015416606082015260048301805460809092019162000b8c9062004836565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f03546000805160206200532e833981519152906001600160a01b0390811690831662003adb5760405163185a690f60e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b03160362003b0e5760405163ade4578160e01b815260040160405180910390fd5b6003820180546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f610ad1290dceadae2c5ce18bae2eb495be595083a257fac7414e50686f7c26509101620012ee565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b17905262002cc490859062003c78565b62003bcf62003430565b62001e5f8162003ce2565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f01546040516000805160206200532e833981519152916001600160a01b03169062003c259062003e9b565b6001600160a01b039091168152602001604051809103906000f08015801562003c52573d6000803e3d6000fd5b5060029190910180546001600160a01b0319166001600160a01b03909216919091179055565b600062003c8f6001600160a01b0384168362003cf7565b9050805160001415801562003cb757508080602001905181019062003cb591906200487f565b155b156200053257604051635274afe760e01b81526001600160a01b038416600482015260240162000cc2565b62003cec62003430565b62001e5f816200389f565b606062003d078383600062003d0e565b9392505050565b60608147101562003d355760405163cd78605960e01b815230600482015260240162000cc2565b600080856001600160a01b0316848660405162003d53919062004d89565b60006040518083038185875af1925050503d806000811462003d92576040519150601f19603f3d011682016040523d82523d6000602084013e62003d97565b606091505b509150915062003da986838362003db3565b9695505050505050565b60608262003dcc5762003dc68262003e17565b62003d07565b815115801562003de457506001600160a01b0384163b155b1562003e0f57604051639996b31560e01b81526001600160a01b038516600482015260240162000cc2565b508062003d07565b80511562003e285780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6040518060c001604052806060815260200160006001600160601b0316815260200160006001600160a01b0316815260200160006001600160a01b0316815260200160006001600160a01b03168152602001606081525090565b6105668062004da883390190565b60006020828403121562003ebc57600080fd5b81356001600160e01b03198116811462003d0757600080fd5b60005b8381101562003ef257818101518382015260200162003ed8565b50506000910152565b6000815180845262003f1581602086016020860162003ed5565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015162003f9360c08401826001600160a01b03169052565b5060c083015160e080840152620023cd61010084018262003efb565b6001600160601b038116811462001e5f57600080fd5b803562003fd28162003faf565b919050565b60006020828403121562003fea57600080fd5b813562003d078162003faf565b6001600160a01b038116811462001e5f57600080fd5b803562003fd28162003ff7565b6000806000606084860312156200403057600080fd5b83356200403d8162003faf565b925060208401356200404f8162003ff7565b91506040840135620040618162003faf565b809150509250925092565b60208152600062003d07602083018462003efb565b60ff8116811462001e5f57600080fd5b803562003fd28162004081565b801515811462001e5f57600080fd5b803562003fd2816200409e565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620040f557620040f5620040ba565b60405290565b60405160e081016001600160401b0381118282101715620040f557620040f5620040ba565b604051601f8201601f191681016001600160401b03811182821017156200414b576200414b620040ba565b604052919050565b60006001600160401b038211156200416f576200416f620040ba565b50601f01601f191660200190565b600082601f8301126200418f57600080fd5b8135620041a6620041a08262004153565b62004120565b818152846020838601011115620041bc57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215620041f357600080fd5b8635620042008162003ff7565b95506020870135620042128162003faf565b94506040870135620042248162004081565b9350606087013562004236816200409e565b92506080870135620042488162003ff7565b915060a08701356001600160401b038111156200426457600080fd5b6200427289828a016200417d565b9150509295509295509295565b600080604083850312156200429357600080fd5b8235620042a08162003faf565b946020939093013593505050565b600060208284031215620042c157600080fd5b81356001600160401b03811115620042d857600080fd5b620023cd848285016200417d565b64ffffffffff8116811462001e5f57600080fd5b60008082840360a08112156200430f57600080fd5b83356200431c8162003faf565b92506080601f19820112156200433157600080fd5b506200433c620040d0565b60208401356200434c8162004081565b81526040840135602082015260608401356200436881620042e6565b60408201526080939093013560608401525092909150565b6000806000606084860312156200439657600080fd5b8335620043a38162003faf565b925060208401356200404f8162003faf565b60008060408385031215620043c957600080fd5b8235620043d68162003ff7565b915060208301356001600160401b03811115620043f257600080fd5b62004400858286016200417d565b9150509250929050565b600080604083850312156200441e57600080fd5b82356200442b8162003faf565b915060208301356200443d81620042e6565b809150509250929050565b600080604083850312156200445c57600080fd5b8235620044698162003faf565b915060208301356200443d8162003ff7565b600080600080600060a086880312156200449457600080fd5b8535620044a18162003faf565b94506020860135620044b38162004081565b9350604086013592506060860135620044cc81620042e6565b949793965091946080013592915050565b600060208284031215620044f057600080fd5b813562003d078162003ff7565b600080604083850312156200451157600080fd5b82356200451e8162003ff7565b915060208301356200443d8162003faf565b6000602082840312156200454357600080fd5b5035919050565b600080604083850312156200455e57600080fd5b82356200451e8162003faf565b600080604083850312156200457f57600080fd5b8235915060208301356200443d8162003ff7565b602081526000825160c06020840152620045b160e084018262003efb565b90506001600160601b036020850151166040840152604084015160018060a01b0380821660608601528060608701511660808601528060808701511660a0860152505060a0840151601f198483030160c085015262004611828262003efb565b95945050505050565b6000806000606084860312156200463057600080fd5b833592506020840135620046448162003ff7565b929592945050506040919091013590565b600080604083850312156200466957600080fd5b8235620042a08162003ff7565b6000806000606084860312156200468c57600080fd5b8335620046998162003ff7565b92506020840135620046448162003ff7565b60008060408385031215620046bf57600080fd5b8235620044698162003ff7565b6000806000806000806000806000806101408b8d031215620046ed57600080fd5b620046f88b6200400d565b99506200470860208c016200400d565b98506200471860408c0162003fc5565b975060608b01356001600160401b03808211156200473557600080fd5b620047438e838f016200417d565b98506200475360808e016200400d565b97506200476360a08e0162004091565b96506200477360c08e01620040ad565b95506200478360e08e016200400d565b94506101008d01359150808211156200479b57600080fd5b620047a98e838f016200417d565b93506101208d0135915080821115620047c157600080fd5b50620047d08d828e016200417d565b9150509295989b9194979a5092959850565b600060208284031215620047f557600080fd5b815162ffffff8116811462003d0757600080fd5b805162003fd28162003faf565b6000602082840312156200482957600080fd5b815162003d078162003faf565b600181811c908216806200484b57607f821691505b6020821081036200486c57634e487b7160e01b600052602260045260246000fd5b50919050565b805162003fd2816200409e565b6000602082840312156200489257600080fd5b815162003d07816200409e565b601f8211156200053257600081815260208120601f850160051c81016020861015620048c85750805b601f850160051c820191505b81811015620048e957828155600101620048d4565b505050505050565b81516001600160401b038111156200490d576200490d620040ba565b62004925816200491e845462004836565b846200489f565b602080601f8311600181146200495d5760008415620049445750858301515b600019600386901b1c1916600185901b178555620048e9565b600085815260208120601f198616915b828110156200498e578886015182559484019460019091019084016200496d565b5085821015620049ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620049d057600080fd5b815162003d078162003ff7565b805162003fd28162004081565b600060808284031215620049fd57600080fd5b62004a07620040d0565b9050815162004a168162004081565b815260208281015190820152604082015162004a3281620042e6565b806040830152506060820151606082015292915050565b60008060a0838503121562004a5d57600080fd5b8251915062004a708460208501620049ea565b90509250929050565b600060a0820190506001600160601b038416825260ff83511660208301526020830151604083015264ffffffffff6040840151166060830152606083015160808301529392505050565b60006020828403121562004ad657600080fd5b81516001600160401b038116811462003d0757600080fd5b60006020828403121562004b0157600080fd5b815162003d0781620042e6565b805162003fd28162003ff7565b600082601f83011262004b2d57600080fd5b815162004b3e620041a08262004153565b81815284602083860101111562004b5457600080fd5b620023cd82602083016020870162003ed5565b60006020828403121562004b7a57600080fd5b81516001600160401b038082111562004b9257600080fd5b9083019060e0828603121562004ba757600080fd5b62004bb1620040fb565b62004bbc8362004809565b815262004bcc6020840162004809565b602082015262004bdf60408401620049dd565b604082015262004bf26060840162004872565b606082015262004c056080840162004b0e565b608082015262004c1860a0840162004b0e565b60a082015260c08301518281111562004c3057600080fd5b62004c3e8782860162004b1b565b60c08301525095945050505050565b60008060a0838503121562004c6157600080fd5b825162004c6e81620042e6565b915062004a708460208501620049ea565b6001600160a01b0394851681529284166020840152921660408201526001600160601b03909116606082015260800190565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6000806040838503121562004ce757600080fd5b825162004cf48162003faf565b60208401519092506200443d8162003faf565b60006020828403121562004d1a57600080fd5b5051919050565b6000806000806080858703121562004d3857600080fd5b845162004d458162003ff7565b602086015190945062004d588162003ff7565b604086015190935062004d6b8162003ff7565b606086015190925062004d7e8162003ff7565b939692955090935050565b6000825162004d9d81846020870162003ed5565b919091019291505056fe608060405234801561001057600080fd5b5060405161056638038061056683398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6104d3806100936000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806321df0da7146100465780638d7271c314610065578063c661667d1461007a575b600080fd5b600054604080516001600160a01b039092168252519081900360200190f35b61007861007336600461039c565b61008d565b005b6100786100883660046103f0565b61011f565b60405163046e44af60e11b81526001600160601b03821660048201526101199085908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e906024015b602060405180830381865af41580156100f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101149190610433565b610179565b50505050565b60005460405163046e44af60e11b81526001600160601b0383166004820152610174916001600160a01b0316908590859073__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e906024016100d3565b505050565b604080516001600160a01b038581166024830152848116604483015260648083018590528351808403909101815260849092019092526020810180516001600160e01b03166323b872dd60e01b179052610119918691906000906101df90841683610232565b90508051600014158015610204575080806020019051810190610202919061044c565b155b1561017457604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b606061024083836000610247565b9392505050565b60608147101561026c5760405163cd78605960e01b8152306004820152602401610229565b600080856001600160a01b03168486604051610288919061046e565b60006040518083038185875af1925050503d80600081146102c5576040519150601f19603f3d011682016040523d82523d6000602084013e6102ca565b606091505b50915091506102da8683836102e4565b9695505050505050565b6060826102f9576102f482610340565b610240565b815115801561031057506001600160a01b0384163b155b1561033957604051639996b31560e01b81526001600160a01b0385166004820152602401610229565b5080610240565b8051156103505780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461038057600080fd5b919050565b80356001600160601b038116811461038057600080fd5b600080600080608085870312156103b257600080fd5b6103bb85610369565b93506103c960208601610369565b92506103d760408601610369565b91506103e560608601610385565b905092959194509250565b60008060006060848603121561040557600080fd5b61040e84610369565b925061041c60208501610369565b915061042a60408501610385565b90509250925092565b60006020828403121561044557600080fd5b5051919050565b60006020828403121561045e57600080fd5b8151801515811461024057600080fd5b6000825160005b8181101561048f5760208186018101518583015201610475565b50600092019182525091905056fea2646970667358221220cef169e5ebf6594361114297bdf3c5c071054018e8f028c23ba2f8f1536ea8ae64736f6c6343000814003307ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00ffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f4fe81f23a566bb4b520bc498a721d39adbeb5e8f1d85f77ad9bd8da6534c1da64736f6c63430008140033",
1606
+ "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b614da2806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106102ff575f3560e01c80636291423a11610195578063bae99c99116100e4578063dea4ccf21161009e578063e7f7fb8611610079578063e7f7fb86146106fe578063e8ce883d14610711578063ea15869f14610724578063ea48ce9b14610738575f80fd5b8063dea4ccf2146106a5578063deaa59df146106d8578063e3a817cd146106eb575f80fd5b8063bae99c9914610649578063bb1e0e591461065c578063bf7e214f1461066f578063caed989714610677578063d44f8a4b1461067f578063de0eb85f14610692575f80fd5b8063893d20e81161014f578063958697a01161012a578063958697a0146106075780639a7263641461061a578063ada9652e1461062d578063b423086c14610641575f80fd5b8063893d20e8146105c95780638fb36037146105d157806390edbd35146105f2575f80fd5b80636291423a14610563578063644c45e01461056b5780636c1e9dff14610588578063719f761a1461059b5780637a9e5e4b146105ae57806386c75754146105c1575f80fd5b8063329d6e74116102515780635741e5e91161020b5780635ecf260f116101e65780635ecf260f146105045780635fd1efec14610517578063614d08f81461052a578063628937d214610550575f80fd5b80635741e5e9146104d85780635ab1bd53146104e05780635cbb7d85146104f1575f80fd5b8063329d6e741461047157806336644da614610484578063419197fe1461049757806343d752d3146104aa57806349bb9e4b146104b2578063562119ee146104c5575f80fd5b8063138461e0116102bc57806321df0da71161029757806321df0da71461043b57806322366844146104435780632a80f6731461044b57806331ecc5cc1461045e575f80fd5b8063138461e0146103df57806317d7de7c146103ff5780631eff4b2214610414575f80fd5b806301ffc9a714610303578063062c9cdf146103445780630d8e6e2c146103795780630fec111c1461039557806310a0638a146103aa57806313299604146103bf575b5f80fd5b61032f610311366004614075565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61036b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b60405190815260200161033b565b61038161074b565b60405162ffffff909116815260200161033b565b61039d6107d2565b60405161033b91906140d1565b6103bd6103b8366004614171565b610990565b005b6103c7610a79565b6040516001600160a01b03909116815260200161033b565b6103e7610a8b565b6040516001600160601b03909116815260200161033b565b610407610a95565b60405161033b919061418c565b61036b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b6103c7610aa5565b61032f610ab7565b6103bd61045936600461419e565b610bad565b6103bd61046c3660046141c8565b610e17565b6103bd61047f366004614316565b610fc5565b6103bd610492366004614367565b611110565b6103bd6104a53660046143f4565b611158565b6103c7611317565b6103bd6104c036600461442b565b611332565b6103bd6104d3366004614477565b61142e565b61032f61155e565b6001546001600160a01b03166103c7565b6103e76104ff3660046144ce565b61161b565b6103bd6105123660046144ea565b6116dd565b6103bd610525366004614516565b61194c565b610407604051806040016040528060078152602001665374616b696e6760c81b81525081565b6103bd61055e3660046143f4565b611ab1565b6103c7611b29565b5f80516020614ced833981519152546001600160601b03166103e7565b6103e76105963660046144ce565b611b44565b6103e76105a9366004614171565b611cce565b6103bd6105bc366004614516565b611f3f565b6103c7611fc1565b6103c7611fdc565b6105d961210d565b6040516001600160e01b0319909116815260200161033b565b6105fa612142565b60405161033b9190614531565b6103bd6106153660046145bb565b612167565b6103bd6106283660046145e8565b6121ab565b61036b5f80516020614ced83398151915281565b6105fa6123c4565b6103bd610657366004614171565b6123d4565b6103bd61066a36600461461d565b612423565b6103c76124c0565b6103c76124db565b6103e761068d3660046145bb565b6124f6565b6103e76106a03660046144ce565b612684565b6106b86106b3366004614171565b61271f565b604080516001600160601b0393841681529290911660208301520161033b565b6103bd6106e6366004614516565b612a99565b6103bd6106f93660046143f4565b612ce6565b6103bd61070c366004614639565b612d2d565b6103e761071f3660046144ce565b612dca565b61036b5f80516020614d0d83398151915281565b6103e76107463660046145bb565b612e21565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af41580156107a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cd9190614666565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610882573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a69190614698565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016108ee611fdc565b6001600160a01b0316815260200182600101805461090b906146b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610937906146b3565b80156109825780601f1061095957610100808354040283529160200191610982565b820191905f5260205f20905b81548152906001019060200180831161096557829003601f168201915b505050505081525091505090565b61099c335b5f36612f64565b806109a561305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa1580156109f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1991906146fa565b610a4657604051632ab4595b60e11b81526001600160601b03821660048201526024015b60405180910390fd5b5f610a4f61305a565b60048101546003820154919250610a73916001600160a01b0391821691168561307e565b50505050565b5f610a82612142565b60800151905090565b5f6107cd30613200565b6060610a9f612142565b51919050565b5f610aae612142565b60400151905090565b5f610aca6001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610b0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b329190614698565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610b89573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cd91906146fa565b610bb633610995565b81610bbf61305a565b6003015f9054906101000a90046001600160a01b03166001600160a01b0316635cce3fa16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c349190614713565b604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa158015610c81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca591906146fa565b610ccd576040516396cff01560e01b81526001600160601b0382166004820152602401610a3d565b604051633a39e8ad60e21b81523060048201526001600160601b0384166024820152604481018390525f90819073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063e8e7a2b49060640160a060405180830381865af4158015610d34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d58919061478f565b91509150610d6461305a565b60030154604051630300f49160e31b81526001600160a01b0390911690631807a48890610d9790889085906004016147ba565b5f604051808303815f87803b158015610dae575f80fd5b505af1158015610dc0573d5f803e3d5ffd5b5050604080516001600160601b0389168152602081018690529081018790527f3e76c26439d1ec3386e26dfeebf955ea11f5f5f30459052b70e061ade8c9554f925060600190505b60405180910390a15050505050565b610e2033610995565b5f610e2961305a565b600481810154604051630e8d845760e31b81526001600160a01b03909116918101919091526001600160601b038086166024830152841660448201529091505f9073__$dbe4bf03c942dc0574f54ee579c90d56ef$__9063746c22b890606401602060405180830381865af4158015610ea4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec89190614803565b60038301546040805160208101825264ffffffffff848116825291516331420df160e11b81526001600160601b038a166004820152905190911660248201529192506001600160a01b0316906362841be2906044015f604051808303815f87803b158015610f34575f80fd5b505af1158015610f46573d5f803e3d5ffd5b505050506003820154604051633861317f60e01b81526001600160601b0380881660048301528087166024830152851660448201526001600160a01b0390911690633861317f906064015b5f604051808303815f87803b158015610fa8575f80fd5b505af1158015610fba573d5f803e3d5ffd5b505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610fe761074b565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611025573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611049919061481e565b5f80516020614d4d8339815191528054600160401b900460ff168061107b575080546001600160401b03808416911610155b156110995760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556110c3836133f9565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b61111933610995565b611121611fdc565b6001600160a01b0316336001600160a01b0316146111545760405163086391f760e31b8152336004820152602401610a3d565b5050565b611160611fdc565b6001600160a01b0316336001600160a01b0316146111935760405163086391f760e31b8152336004820152602401610a3d565b3061119c610a79565b6001600160a01b0316146111c35760405163b6d7537f60e01b815260040160405180910390fd5b7ff1220014fdb8b69aee438722b1fe13ee4a807811a472467cee162f7b866e704e6111ec611317565b604080516001600160a01b0390921682526001600160601b03841660208301520160405180910390a1816001600160a01b031663095ea7b361122c611317565b60405163046e44af60e11b81526001600160601b038516600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af4158015611282573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a69190614844565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156112ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131291906146fa565b505050565b5f61132061305a565b600201546001600160a01b0316919050565b5f80516020614d4d8339815191528054600160401b810460ff1615906001600160401b03165f811580156113635750825b90505f826001600160401b0316600114801561137e5750303b155b90508115801561138c575080155b156113aa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156113d457845460ff60401b1916600160401b1785555b6113de8787613401565b831561142557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b61143733610995565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__639ed616cd6114636001546001600160a01b031690565b61146b61305a565b60049081015460405160e085901b6001600160e01b03191681526001600160a01b03938416928101929092529190911660248201526001600160601b038816604482015260ff8716606482015264ffffffffff8516608482015260a4810184905260c4015f6040518083038186803b1580156114e5575f80fd5b505af41580156114f7573d5f803e3d5ffd5b5050505061150361305a565b600301546040805160808101825260ff871681526020810186905264ffffffffff851681830152606081018490529051632df8be9b60e01b81526001600160a01b0390921691632df8be9b91610f91918991906004016147ba565b5f611567610ab7565b156115eb576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f0906024015f60405180830381865afa1580156115bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115e291908101906148b3565b60600151905090565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0254600160a01b900460ff1690565b5f61162533610995565b8261162e61305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa15801561167e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a291906146fa565b6116ca57604051632ab4595b60e11b81526001600160601b0382166004820152602401610a3d565b5f6116d361305a565b9050505092915050565b6116e633610995565b816116ef61305a565b6003015f9054906101000a90046001600160a01b03166001600160a01b0316635cce3fa16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611740573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117649190614713565b604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa1580156117b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d591906146fa565b6117fd576040516396cff01560e01b81526001600160601b0382166004820152602401610a3d565b604051635f9c0df360e11b81523060048201526001600160601b038416602482015264ffffffffff831660448201525f90819073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063bf381be69060640160a060405180830381865af415801561186a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188e9190614983565b9150915061189a61305a565b60030154604051630300f49160e31b81526001600160a01b0390911690631807a488906118cd90889085906004016147ba565b5f604051808303815f87803b1580156118e4575f80fd5b505af11580156118f6573d5f803e3d5ffd5b5050604080516001600160601b038916815264ffffffffff80871660208301528816918101919091527fb847665302c1d8b6f507e07b17145514cea04af84e1665d629d82246992311e792506060019050610e08565b611954611fdc565b6001600160a01b0316336001600160a01b0316146119875760405163086391f760e31b8152336004820152602401610a3d565b306001600160a01b0316816001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f19190614713565b6001600160a01b031614611a8457806001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a5f9190614713565b604051631641c88f60e11b81526001600160a01b039091166004820152602401610a3d565b80611a8d61305a565b60040180546001600160a01b0319166001600160a01b039290921691909117905550565b611aba33610995565b611ac2611317565b6001600160a01b03166354f0d84c611ad8610a79565b84846040518463ffffffff1660e01b8152600401611af8939291906149ae565b5f604051808303815f87803b158015611b0f575f80fd5b505af1158015611b21573d5f803e3d5ffd5b505050505050565b5f611b3261305a565b600401546001600160a01b0316919050565b5f611b4e33610995565b82611b5761305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015611ba7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bcb91906146fa565b611bf357604051632ab4595b60e11b81526001600160601b0382166004820152602401610a3d565b5f611bfc61305a565b905073__$dbe4bf03c942dc0574f54ee579c90d56ef$__630fcf5d08611c2a6001546001600160a01b031690565b600484810154600386015460405160e086901b6001600160e01b03191681526001600160a01b039485169381019390935290831660248301529190911660448201526001600160601b0380891660648301528716608482015260a401602060405180830381865af4158015611ca1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc59190614698565b95945050505050565b5f611cd833610995565b81611ce161305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015611d31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5591906146fa565b611d7d57604051632ab4595b60e11b81526001600160601b0382166004820152602401610a3d565b5f611d8661305a565b600481015460038201549192505f91611dac916001600160a01b0390811691168761307e565b9050816003015f9054906101000a90046001600160a01b03166001600160a01b0316633fbdfe32868373__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e409190614698565b60405160e085901b6001600160e01b03191681526001600160601b039384166004820152918316602483015290911660448201526064016020604051808303815f875af1158015611e93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb79190614698565b600383015460405163136cfef760e01b81526001600160601b038085166004830152831660248201529195506001600160a01b03169063136cfef7906044016020604051808303815f875af1158015611f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f369190614698565b50505050919050565b33611f486124c0565b6001600160a01b0316816001600160a01b031614611f835760405162d1953b60e31b81526001600160a01b0382166004820152602401610a3d565b816001600160a01b03163b5f03611fb8576040516361798f2f60e11b81526001600160a01b0383166004820152602401610a3d565b6111548261387e565b5f611fca61305a565b600301546001600160a01b0316919050565b5f805f80516020614ced83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612048573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061206c91906146fa565b156120f7576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156120cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f19190614713565b91505090565b54600160601b90046001600160a01b0316919050565b5f80516020614d2d83398151915280545f9190600160a01b900460ff16612134575f6120f1565b638fb3603760e01b91505090565b61214a61401f565b612152610ab7565b1561215f576107cd6138de565b6107cd6123c4565b61217033610995565b612178611fdc565b6001600160a01b0316336001600160a01b0316146113125760405163086391f760e31b8152336004820152602401610a3d565b6121b3611fdc565b6001600160a01b0316336001600160a01b0316146121e65760405163086391f760e31b8152336004820152602401610a3d565b5f6121ef61305a565b6001810154604051631703edc360e31b8152600481018790526001600160a01b03868116602483015292935091169063b81f6e1890604401602060405180830381865afa158015612242573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226691906146fa565b612295576040516374ddbd6960e01b8152600481018590526001600160a01b0384166024820152604401610a3d565b6003810154604051637b21556160e01b8152600481018690526001600160a01b0385811660248301525f921690637b21556190604401602060405180830381865afa1580156122e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230a9190614844565b600383015460405163269c98d960e21b8152600481018890526001600160a01b03878116602483015260448201879052929350911690639a726364906064015f604051808303815f87803b158015612360575f80fd5b505af1158015612372573d5f803e3d5ffd5b5050604080518881526001600160a01b0388166020820152908101849052606081018690527f8075f599388073d04550222731e9c7e00c284a4f858d8a0ffc0657164981c76e92506080019050610e08565b6123cc61401f565b6107cd6138de565b6123dc611fdc565b6001600160a01b0316336001600160a01b03161461240f5760405163086391f760e31b8152336004820152602401610a3d565b61242061241a610aa5565b82611158565b50565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561246a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248e9190614713565b6001600160a01b0316336001600160a01b0316146111545760405162f0630960e01b8152336004820152602401610a3d565b5f80516020614d2d833981519152546001600160a01b031690565b5f6124e461305a565b600101546001600160a01b0316919050565b5f61250033610995565b5f61250961305a565b60048181015460405163153d412560e31b81526001600160601b038916928101929092529192505f916001600160a01b03169063a9ea092890602401608060405180830381865afa158015612560573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258491906149da565b60200151600483810154604051637b21556160e01b81529182018390526001600160a01b0388811660248401529293505f921690637b21556190604401602060405180830381865afa1580156125dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126009190614844565b6003840154604051633ece552760e21b81529192506001600160a01b03169063fb39549c90612639908a9085908b908b906004016149f4565b6020604051808303815f875af1158015612655573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126799190614698565b979650505050505050565b5f61268e33610995565b5f61269761305a565b600381015460405163d7537c3760e01b81526001600160601b038088166004830152861660248201529192506001600160a01b03169063d7537c37906044015b6020604051808303815f875af11580156126f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127179190614698565b949350505050565b5f8061272a33610995565b8261273361305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015612783573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a791906146fa565b6127cf57604051632ab4595b60e11b81526001600160601b0382166004820152602401610a3d565b5f6127d861305a565b60048181015460405163b3eff9e160e01b81526001600160a01b03909116918101919091526001600160601b038716602482015290915073__$dbe4bf03c942dc0574f54ee579c90d56ef$__9063b3eff9e1906044016040805180830381865af4158015612848573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061286c9190614a28565b5050600481015460038201545f91612891916001600160a01b0391821691168861307e565b9050816003015f9054906101000a90046001600160a01b03166001600160a01b031663eb98e8a0878373__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015612901573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129259190614698565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561296c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129909190614698565b60405160e086901b6001600160e01b03191681526001600160601b03948516600482015292841660248401529083166044830152909116606482015260840160408051808303815f875af11580156129ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0e9190614a4c565b600384015460405163136cfef760e01b81526001600160601b038086166004830152831660248201529297509095506001600160a01b03169063136cfef7906044016020604051808303815f875af1158015612a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a909190614698565b50505050915091565b612aa1611fdc565b6001600160a01b0316336001600160a01b031614612ad45760405163086391f760e31b8152336004820152602401610a3d565b5f612add610a79565b90505f612ae8610aa5565b6040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa158015612b2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b529190614844565b9050612b5d83613a42565b801561131257604080516001600160a01b038085168252851660208201529081018290527f8f925ed35e36754081a3353f30c5686c405280f94d1cfe322ee5707833d898679060600160405180910390a1306001600160a01b03831603612c9557612bc6611317565b6001600160a01b03166354f0d84c838573__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866040518263ffffffff1660e01b8152600401612c0f91815260200190565b602060405180830381865af4158015612c2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c4e9190614698565b6040518463ffffffff1660e01b8152600401612c6c939291906149ae565b5f604051808303815f87803b158015612c83575f80fd5b505af1158015611425573d5f803e3d5ffd5b612c9d611317565b6001600160a01b031663c7d63d57838573__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866040518263ffffffff1660e01b8152600401612c0f91815260200190565b612cef33610995565b612cf7611317565b6001600160a01b031663c7d63d5783612d0e610a79565b846040518463ffffffff1660e01b8152600401611af8939291906149ae565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d989190614713565b6001600160a01b0316336001600160a01b0316146113125760405162f0630960e01b8152336004820152602401610a3d565b5f612dd433610995565b5f612ddd61305a565b600381015460405163136cfef760e01b81526001600160601b038088166004830152861660248201529192506001600160a01b03169063136cfef7906044016126d7565b5f612e2b33610995565b5f612e3461305a565b60048181015460405163153d412560e31b81526001600160601b038916928101929092529192505f916001600160a01b03169063a9ea092890602401608060405180830381865afa158015612e8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eaf91906149da565b60200151600483810154604051637b21556160e01b81529182018390526001600160a01b0388811660248401529293505f921690637b21556190604401602060405180830381865afa158015612f07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2b9190614844565b60038401546040516377f9185160e01b81529192506001600160a01b0316906377f9185190612639908a9085908b908b906004016149f4565b5f80516020614d2d8339815191525f80612f9c612f7f6124c0565b8730612f8e60045f8a8c614a79565b612f9791614aa0565b613b2a565b9150915081611b215763ffffffff81161561303757825460ff60a01b1916600160a01b178355612fca6124c0565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401612ff993929190614ad8565b5f604051808303815f87803b158015613010575f80fd5b505af1158015613022573d5f803e3d5ffd5b5050845460ff60a01b1916855550611b219050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610a3d565b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0090565b6040516312b9a5c960e01b81526001600160601b03821660048201525f9081906001600160a01b038616906312b9a5c9906024016040805180830381865afa1580156130cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f09190614b17565b60405163e048754d60e01b81526001600160a01b03881660048201526001600160601b03861660248201526044810182905291935091505f9073__$dbe4bf03c942dc0574f54ee579c90d56ef$__9063e048754d906064016040805180830381865af4158015613162573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131869190614a4c565b50604051634a2101d160e01b81526001600160601b0380871660048301528086166024830152821660448201529091506001600160a01b03861690634a2101d1906064015f604051808303815f87803b1580156131e1575f80fd5b505af11580156131f3573d5f803e3d5ffd5b5050505050509392505050565b5f805f80516020614ced83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561326c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329091906146fa565b156132bc5780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610a3d565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa15801561330e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333291906146fa565b61335a5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610a3d565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa1580156133ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d09190614698565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6102ff613c32565b5f80516020614d4d8339815191528054600160401b810460ff1615906001600160401b03165f811580156134325750825b90505f826001600160401b0316600114801561344d5750303b155b90508115801561345b575080155b156134795760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156134a357845460ff60401b1916600160401b1785555b5f805f80898060200190518101906134bb9190614b43565b93509350935093505f8490505f816001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613504573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135289190614713565b90505f8590505f816001600160a01b031663b201f7096040518163ffffffff1660e01b8152600401602060405180830381865afa15801561356b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061358f9190614713565b905061363c8389866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135f69190614698565b6040805180820190915260078152665374616b696e6760c81b60208201528560035f8c60405180602001604052805f81525060405180602001604052805f815250613c6a565b5f61364561305a565b90506136596001546001600160a01b031690565b6001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136b89190614698565b600480830180546001600160601b0393909316600160a01b026001600160a01b03938416179055600383018054928a166001600160a01b0319939093168317905560408051633148a11d60e11b81529051636291423a928281019260209291908290030181865afa15801561372f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137539190614713565b600482810180546001600160a01b03199081166001600160a01b03948516179091556001840180549091168b841617905560405163825e727960e01b815284831691810191909152908516602482015273__$51089c37ca0df1177a910c640c8c5f8165$__9063825e727990604401602060405180830381865af41580156137dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138019190614713565b6002820180546001600160a01b0319166001600160a01b039290921691909117905561383363fef8804160e01b613d69565b505050505050505050831561142557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161141c565b5f80516020614d2d83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6138e661401f565b5f5f80516020614d0d83398151915290506040518060c00160405280825f018054613910906146b3565b80601f016020809104026020016040519081016040528092919081815260200182805461393c906146b3565b80156139875780601f1061395e57610100808354040283529160200191613987565b820191905f5260205f20905b81548152906001019060200180831161396a57829003601f168201915b5050505050815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156139d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139fc9190614698565b6001600160601b0316815260018301546001600160a01b0390811660208301525f6040830152600284015416606082015260038301805460809092019161090b906146b3565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f02545f80516020614d0d833981519152906001600160a01b03908116908316613a9e5760405163185a690f60e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b031603613ad05760405163ade4578160e01b815260040160405180910390fd5b6002820180546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f610ad1290dceadae2c5ce18bae2eb495be595083a257fac7414e50686f7c26509101611103565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251613b989190614b9f565b5f60405180830381855afa9150503d805f8114613bd0576040519150601f19603f3d011682016040523d82523d5f602084013e613bd5565b606091505b50915091508115613c27576040815110613c075780806020019051810190613bfd9190614bb5565b9094509250613c27565b6020815110613c275780806020019051810190613c2491906146fa565b93505b505094509492505050565b5f80516020614d4d83398151915254600160401b900460ff16613c6857604051631afcd79f60e31b815260040160405180910390fd5b565b613c72613c32565b613c80898987878787613d95565b613c898a613e3a565b6001600160a01b038616613cb0576040516327eab2e360e11b815260040160405180910390fd5b86515f03613cd15760405163591eebf360e11b815260040160405180910390fd5b5f80516020614d0d83398151915280613cea8982614c32565b506001810180546001600160a01b0319166001600160a01b0389161790556002810180546001600160a81b0319163060ff60a01b191617600160a01b8715150217905560038101613d3b8382614c32565b50613d4c634a531f3360e01b613d69565b613d5c632986755f60e11b613d69565b5050505050505050505050565b613d71613c32565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b613d9d613c32565b613da78287613e4b565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301613e308382614c32565b5050505050505050565b613e42613c32565b61242081613ec1565b613e53613c32565b613e5c81613ed2565b613e64613fda565b6001600160a01b038216613e8b5760405163f17ef42d60e01b815260040160405180910390fd5b505f80516020614ced83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b613ec9613c32565b6124208161387e565b613eda613c32565b806001600160a01b03163b5f03613f0f5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610a3d565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632f6da6f960e01b60048201526301ffc9a790602401602060405180830381865afa925050508015613f89575060408051601f3d908101601f19168201909252613f86918101906146fa565b60015b613fb15760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610a3d565b806111545760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610a3d565b613fe2613c32565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6040518060c00160405280606081526020015f6001600160601b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b5f60208284031215614085575f80fd5b81356001600160e01b03198116811461409c575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614119608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e0808401526127176101008401826140a3565b6001600160601b0381168114612420575f80fd5b5f60208284031215614181575f80fd5b813561409c8161415d565b602081525f61409c60208301846140a3565b5f80604083850312156141af575f80fd5b82356141ba8161415d565b946020939093013593505050565b5f805f606084860312156141da575f80fd5b83356141e58161415d565b925060208401356141f58161415d565b915060408401356142058161415d565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561424657614246614210565b60405290565b60405160e081016001600160401b038111828210171561424657614246614210565b604051601f8201601f191681016001600160401b038111828210171561429657614296614210565b604052919050565b5f6001600160401b038211156142b6576142b6614210565b50601f01601f191660200190565b5f82601f8301126142d3575f80fd5b81356142e66142e18261429e565b61426e565b8181528460208386010111156142fa575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614326575f80fd5b81356001600160401b0381111561433b575f80fd5b612717848285016142c4565b60ff81168114612420575f80fd5b64ffffffffff81168114612420575f80fd5b5f8082840360a0811215614379575f80fd5b83356143848161415d565b92506080601f1982011215614397575f80fd5b506143a0614224565b60208401356143ae81614347565b81526040840135602082015260608401356143c881614355565b60408201526080939093013560608401525092909150565b6001600160a01b0381168114612420575f80fd5b5f8060408385031215614405575f80fd5b8235614410816143e0565b915060208301356144208161415d565b809150509250929050565b5f806040838503121561443c575f80fd5b8235614447816143e0565b915060208301356001600160401b03811115614461575f80fd5b61446d858286016142c4565b9150509250929050565b5f805f805f60a0868803121561448b575f80fd5b85356144968161415d565b945060208601356144a681614347565b93506040860135925060608601356144bd81614355565b949793965091946080013592915050565b5f80604083850312156144df575f80fd5b82356144108161415d565b5f80604083850312156144fb575f80fd5b82356145068161415d565b9150602083013561442081614355565b5f60208284031215614526575f80fd5b813561409c816143e0565b602081525f825160c0602084015261454c60e08401826140a3565b90506001600160601b03602085015116604084015260018060a01b03604085015116606084015260018060a01b036060850151166080840152608084015161459f60a08501826001600160a01b03169052565b5060a0840151838203601f190160c0850152611cc582826140a3565b5f805f606084860312156145cd575f80fd5b83356145d88161415d565b925060208401356141f5816143e0565b5f805f606084860312156145fa575f80fd5b83359250602084013561460c816143e0565b929592945050506040919091013590565b5f806040838503121561462e575f80fd5b82356141ba816143e0565b5f805f6060848603121561464b575f80fd5b8335614656816143e0565b9250602084013561460c816143e0565b5f60208284031215614676575f80fd5b815162ffffff8116811461409c575f80fd5b80516146938161415d565b919050565b5f602082840312156146a8575f80fd5b815161409c8161415d565b600181811c908216806146c757607f821691505b6020821081036146e557634e487b7160e01b5f52602260045260245ffd5b50919050565b80518015158114614693575f80fd5b5f6020828403121561470a575f80fd5b61409c826146eb565b5f60208284031215614723575f80fd5b815161409c816143e0565b805161469381614347565b5f60808284031215614749575f80fd5b614751614224565b9050815161475e81614347565b815260208281015190820152604082015161477881614355565b604082015260609182015191810191909152919050565b5f8060a083850312156147a0575f80fd5b825191506147b18460208501614739565b90509250929050565b5f60a0820190506001600160601b038416825260ff83511660208301526020830151604083015264ffffffffff6040840151166060830152606083015160808301529392505050565b5f60208284031215614813575f80fd5b815161409c81614355565b5f6020828403121561482e575f80fd5b81516001600160401b038116811461409c575f80fd5b5f60208284031215614854575f80fd5b5051919050565b8051614693816143e0565b5f82601f830112614875575f80fd5b81516148836142e18261429e565b818152846020838601011115614897575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156148c3575f80fd5b81516001600160401b038111156148d8575f80fd5b820160e081850312156148e9575f80fd5b6148f161424c565b6148fa82614688565b815261490860208301614688565b60208201526149196040830161472e565b604082015261492a606083016146eb565b606082015261493b6080830161485b565b608082015261494c60a0830161485b565b60a082015260c08201516001600160401b03811115614969575f80fd5b61497586828501614866565b60c083015250949350505050565b5f8060a08385031215614994575f80fd5b825161499f81614355565b91506147b18460208501614739565b6001600160a01b0393841681529190921660208201526001600160601b03909116604082015260600190565b5f608082840312156149ea575f80fd5b61409c8383614739565b6001600160601b03948516815260208101939093526001600160a01b03919091166040830152909116606082015260800190565b5f8060408385031215614a39575f80fd5b8251602084015190925061442081614355565b5f8060408385031215614a5d575f80fd5b8251614a688161415d565b60208401519092506144208161415d565b5f8085851115614a87575f80fd5b83861115614a93575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015614ad1576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215614b28575f80fd5b8251614b338161415d565b6020939093015192949293505050565b5f805f8060808587031215614b56575f80fd5b8451614b61816143e0565b6020860151909450614b72816143e0565b6040860151909350614b83816143e0565b6060860151909250614b94816143e0565b939692955090935050565b5f82518060208501845e5f920191825250919050565b5f8060408385031215614bc6575f80fd5b614bcf836146eb565b9150602083015163ffffffff81168114614420575f80fd5b601f82111561131257805f5260205f20601f840160051c81016020851015614c0c5750805b601f840160051c820191505b81811015614c2b575f8155600101614c18565b5050505050565b81516001600160401b03811115614c4b57614c4b614210565b614c5f81614c5984546146b3565b84614be7565b6020601f821160018114614c91575f8315614c7a5750848201515b5f19600385901b1c1916600184901b178455614c2b565b5f84815260208120601f198516915b82811015614cc05787850151825560209485019460019092019101614ca0565b5084821015614cdd57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00ffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220ea770ac303d53ab505e67df47039a45f68dca63414277ffd47250667c72fb72f64736f6c634300081a0033",
1607
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106102ff575f3560e01c80636291423a11610195578063bae99c99116100e4578063dea4ccf21161009e578063e7f7fb8611610079578063e7f7fb86146106fe578063e8ce883d14610711578063ea15869f14610724578063ea48ce9b14610738575f80fd5b8063dea4ccf2146106a5578063deaa59df146106d8578063e3a817cd146106eb575f80fd5b8063bae99c9914610649578063bb1e0e591461065c578063bf7e214f1461066f578063caed989714610677578063d44f8a4b1461067f578063de0eb85f14610692575f80fd5b8063893d20e81161014f578063958697a01161012a578063958697a0146106075780639a7263641461061a578063ada9652e1461062d578063b423086c14610641575f80fd5b8063893d20e8146105c95780638fb36037146105d157806390edbd35146105f2575f80fd5b80636291423a14610563578063644c45e01461056b5780636c1e9dff14610588578063719f761a1461059b5780637a9e5e4b146105ae57806386c75754146105c1575f80fd5b8063329d6e74116102515780635741e5e91161020b5780635ecf260f116101e65780635ecf260f146105045780635fd1efec14610517578063614d08f81461052a578063628937d214610550575f80fd5b80635741e5e9146104d85780635ab1bd53146104e05780635cbb7d85146104f1575f80fd5b8063329d6e741461047157806336644da614610484578063419197fe1461049757806343d752d3146104aa57806349bb9e4b146104b2578063562119ee146104c5575f80fd5b8063138461e0116102bc57806321df0da71161029757806321df0da71461043b57806322366844146104435780632a80f6731461044b57806331ecc5cc1461045e575f80fd5b8063138461e0146103df57806317d7de7c146103ff5780631eff4b2214610414575f80fd5b806301ffc9a714610303578063062c9cdf146103445780630d8e6e2c146103795780630fec111c1461039557806310a0638a146103aa57806313299604146103bf575b5f80fd5b61032f610311366004614075565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61036b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0081565b60405190815260200161033b565b61038161074b565b60405162ffffff909116815260200161033b565b61039d6107d2565b60405161033b91906140d1565b6103bd6103b8366004614171565b610990565b005b6103c7610a79565b6040516001600160a01b03909116815260200161033b565b6103e7610a8b565b6040516001600160601b03909116815260200161033b565b610407610a95565b60405161033b919061418c565b61036b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b6103c7610aa5565b61032f610ab7565b6103bd61045936600461419e565b610bad565b6103bd61046c3660046141c8565b610e17565b6103bd61047f366004614316565b610fc5565b6103bd610492366004614367565b611110565b6103bd6104a53660046143f4565b611158565b6103c7611317565b6103bd6104c036600461442b565b611332565b6103bd6104d3366004614477565b61142e565b61032f61155e565b6001546001600160a01b03166103c7565b6103e76104ff3660046144ce565b61161b565b6103bd6105123660046144ea565b6116dd565b6103bd610525366004614516565b61194c565b610407604051806040016040528060078152602001665374616b696e6760c81b81525081565b6103bd61055e3660046143f4565b611ab1565b6103c7611b29565b5f80516020614ced833981519152546001600160601b03166103e7565b6103e76105963660046144ce565b611b44565b6103e76105a9366004614171565b611cce565b6103bd6105bc366004614516565b611f3f565b6103c7611fc1565b6103c7611fdc565b6105d961210d565b6040516001600160e01b0319909116815260200161033b565b6105fa612142565b60405161033b9190614531565b6103bd6106153660046145bb565b612167565b6103bd6106283660046145e8565b6121ab565b61036b5f80516020614ced83398151915281565b6105fa6123c4565b6103bd610657366004614171565b6123d4565b6103bd61066a36600461461d565b612423565b6103c76124c0565b6103c76124db565b6103e761068d3660046145bb565b6124f6565b6103e76106a03660046144ce565b612684565b6106b86106b3366004614171565b61271f565b604080516001600160601b0393841681529290911660208301520161033b565b6103bd6106e6366004614516565b612a99565b6103bd6106f93660046143f4565b612ce6565b6103bd61070c366004614639565b612d2d565b6103e761071f3660046144ce565b612dca565b61036b5f80516020614d0d83398151915281565b6103e76107463660046145bb565b612e21565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af41580156107a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cd9190614666565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af4158015610882573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a69190614698565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016108ee611fdc565b6001600160a01b0316815260200182600101805461090b906146b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610937906146b3565b80156109825780601f1061095957610100808354040283529160200191610982565b820191905f5260205f20905b81548152906001019060200180831161096557829003601f168201915b505050505081525091505090565b61099c335b5f36612f64565b806109a561305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa1580156109f5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1991906146fa565b610a4657604051632ab4595b60e11b81526001600160601b03821660048201526024015b60405180910390fd5b5f610a4f61305a565b60048101546003820154919250610a73916001600160a01b0391821691168561307e565b50505050565b5f610a82612142565b60800151905090565b5f6107cd30613200565b6060610a9f612142565b51919050565b5f610aae612142565b60400151905090565b5f610aca6001546001600160a01b031690565b604051632f2a35f760e11b81523060048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610b0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b329190614698565b6040516330b8415f60e01b81526001600160601b03909116600482015273__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015610b89573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cd91906146fa565b610bb633610995565b81610bbf61305a565b6003015f9054906101000a90046001600160a01b03166001600160a01b0316635cce3fa16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c349190614713565b604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa158015610c81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca591906146fa565b610ccd576040516396cff01560e01b81526001600160601b0382166004820152602401610a3d565b604051633a39e8ad60e21b81523060048201526001600160601b0384166024820152604481018390525f90819073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063e8e7a2b49060640160a060405180830381865af4158015610d34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d58919061478f565b91509150610d6461305a565b60030154604051630300f49160e31b81526001600160a01b0390911690631807a48890610d9790889085906004016147ba565b5f604051808303815f87803b158015610dae575f80fd5b505af1158015610dc0573d5f803e3d5ffd5b5050604080516001600160601b0389168152602081018690529081018790527f3e76c26439d1ec3386e26dfeebf955ea11f5f5f30459052b70e061ade8c9554f925060600190505b60405180910390a15050505050565b610e2033610995565b5f610e2961305a565b600481810154604051630e8d845760e31b81526001600160a01b03909116918101919091526001600160601b038086166024830152841660448201529091505f9073__$dbe4bf03c942dc0574f54ee579c90d56ef$__9063746c22b890606401602060405180830381865af4158015610ea4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ec89190614803565b60038301546040805160208101825264ffffffffff848116825291516331420df160e11b81526001600160601b038a166004820152905190911660248201529192506001600160a01b0316906362841be2906044015f604051808303815f87803b158015610f34575f80fd5b505af1158015610f46573d5f803e3d5ffd5b505050506003820154604051633861317f60e01b81526001600160601b0380881660048301528087166024830152851660448201526001600160a01b0390911690633861317f906064015b5f604051808303815f87803b158015610fa8575f80fd5b505af1158015610fba573d5f803e3d5ffd5b505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610fe761074b565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611025573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611049919061481e565b5f80516020614d4d8339815191528054600160401b900460ff168061107b575080546001600160401b03808416911610155b156110995760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556110c3836133f9565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a1505050565b61111933610995565b611121611fdc565b6001600160a01b0316336001600160a01b0316146111545760405163086391f760e31b8152336004820152602401610a3d565b5050565b611160611fdc565b6001600160a01b0316336001600160a01b0316146111935760405163086391f760e31b8152336004820152602401610a3d565b3061119c610a79565b6001600160a01b0316146111c35760405163b6d7537f60e01b815260040160405180910390fd5b7ff1220014fdb8b69aee438722b1fe13ee4a807811a472467cee162f7b866e704e6111ec611317565b604080516001600160a01b0390921682526001600160601b03841660208301520160405180910390a1816001600160a01b031663095ea7b361122c611317565b60405163046e44af60e11b81526001600160601b038516600482015273__$3bac17678db7ae928afa209f2f44deec9c$__906308dc895e90602401602060405180830381865af4158015611282573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a69190614844565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156112ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061131291906146fa565b505050565b5f61132061305a565b600201546001600160a01b0316919050565b5f80516020614d4d8339815191528054600160401b810460ff1615906001600160401b03165f811580156113635750825b90505f826001600160401b0316600114801561137e5750303b155b90508115801561138c575080155b156113aa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156113d457845460ff60401b1916600160401b1785555b6113de8787613401565b831561142557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b61143733610995565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__639ed616cd6114636001546001600160a01b031690565b61146b61305a565b60049081015460405160e085901b6001600160e01b03191681526001600160a01b03938416928101929092529190911660248201526001600160601b038816604482015260ff8716606482015264ffffffffff8516608482015260a4810184905260c4015f6040518083038186803b1580156114e5575f80fd5b505af41580156114f7573d5f803e3d5ffd5b5050505061150361305a565b600301546040805160808101825260ff871681526020810186905264ffffffffff851681830152606081018490529051632df8be9b60e01b81526001600160a01b0390921691632df8be9b91610f91918991906004016147ba565b5f611567610ab7565b156115eb576001546001600160a01b03166040516308b09a5f60e41b81523060048201526001600160a01b039190911690638b09a5f0906024015f60405180830381865afa1580156115bb573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115e291908101906148b3565b60600151905090565b507fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f0254600160a01b900460ff1690565b5f61162533610995565b8261162e61305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa15801561167e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116a291906146fa565b6116ca57604051632ab4595b60e11b81526001600160601b0382166004820152602401610a3d565b5f6116d361305a565b9050505092915050565b6116e633610995565b816116ef61305a565b6003015f9054906101000a90046001600160a01b03166001600160a01b0316635cce3fa16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611740573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117649190614713565b604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b039190911690634f9c1c0990602401602060405180830381865afa1580156117b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d591906146fa565b6117fd576040516396cff01560e01b81526001600160601b0382166004820152602401610a3d565b604051635f9c0df360e11b81523060048201526001600160601b038416602482015264ffffffffff831660448201525f90819073__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__9063bf381be69060640160a060405180830381865af415801561186a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188e9190614983565b9150915061189a61305a565b60030154604051630300f49160e31b81526001600160a01b0390911690631807a488906118cd90889085906004016147ba565b5f604051808303815f87803b1580156118e4575f80fd5b505af11580156118f6573d5f803e3d5ffd5b5050604080516001600160601b038916815264ffffffffff80871660208301528816918101919091527fb847665302c1d8b6f507e07b17145514cea04af84e1665d629d82246992311e792506060019050610e08565b611954611fdc565b6001600160a01b0316336001600160a01b0316146119875760405163086391f760e31b8152336004820152602401610a3d565b306001600160a01b0316816001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f19190614713565b6001600160a01b031614611a8457806001600160a01b0316637b1391a66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a5f9190614713565b604051631641c88f60e11b81526001600160a01b039091166004820152602401610a3d565b80611a8d61305a565b60040180546001600160a01b0319166001600160a01b039290921691909117905550565b611aba33610995565b611ac2611317565b6001600160a01b03166354f0d84c611ad8610a79565b84846040518463ffffffff1660e01b8152600401611af8939291906149ae565b5f604051808303815f87803b158015611b0f575f80fd5b505af1158015611b21573d5f803e3d5ffd5b505050505050565b5f611b3261305a565b600401546001600160a01b0316919050565b5f611b4e33610995565b82611b5761305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015611ba7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bcb91906146fa565b611bf357604051632ab4595b60e11b81526001600160601b0382166004820152602401610a3d565b5f611bfc61305a565b905073__$dbe4bf03c942dc0574f54ee579c90d56ef$__630fcf5d08611c2a6001546001600160a01b031690565b600484810154600386015460405160e086901b6001600160e01b03191681526001600160a01b039485169381019390935290831660248301529190911660448201526001600160601b0380891660648301528716608482015260a401602060405180830381865af4158015611ca1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc59190614698565b95945050505050565b5f611cd833610995565b81611ce161305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015611d31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d5591906146fa565b611d7d57604051632ab4595b60e11b81526001600160601b0382166004820152602401610a3d565b5f611d8661305a565b600481015460038201549192505f91611dac916001600160a01b0390811691168761307e565b9050816003015f9054906101000a90046001600160a01b03166001600160a01b0316633fbdfe32868373__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e1c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e409190614698565b60405160e085901b6001600160e01b03191681526001600160601b039384166004820152918316602483015290911660448201526064016020604051808303815f875af1158015611e93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb79190614698565b600383015460405163136cfef760e01b81526001600160601b038085166004830152831660248201529195506001600160a01b03169063136cfef7906044016020604051808303815f875af1158015611f12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f369190614698565b50505050919050565b33611f486124c0565b6001600160a01b0316816001600160a01b031614611f835760405162d1953b60e31b81526001600160a01b0382166004820152602401610a3d565b816001600160a01b03163b5f03611fb8576040516361798f2f60e11b81526001600160a01b0383166004820152602401610a3d565b6111548261387e565b5f611fca61305a565b600301546001600160a01b0316919050565b5f805f80516020614ced83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612048573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061206c91906146fa565b156120f7576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156120cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f19190614713565b91505090565b54600160601b90046001600160a01b0316919050565b5f80516020614d2d83398151915280545f9190600160a01b900460ff16612134575f6120f1565b638fb3603760e01b91505090565b61214a61401f565b612152610ab7565b1561215f576107cd6138de565b6107cd6123c4565b61217033610995565b612178611fdc565b6001600160a01b0316336001600160a01b0316146113125760405163086391f760e31b8152336004820152602401610a3d565b6121b3611fdc565b6001600160a01b0316336001600160a01b0316146121e65760405163086391f760e31b8152336004820152602401610a3d565b5f6121ef61305a565b6001810154604051631703edc360e31b8152600481018790526001600160a01b03868116602483015292935091169063b81f6e1890604401602060405180830381865afa158015612242573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226691906146fa565b612295576040516374ddbd6960e01b8152600481018590526001600160a01b0384166024820152604401610a3d565b6003810154604051637b21556160e01b8152600481018690526001600160a01b0385811660248301525f921690637b21556190604401602060405180830381865afa1580156122e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230a9190614844565b600383015460405163269c98d960e21b8152600481018890526001600160a01b03878116602483015260448201879052929350911690639a726364906064015f604051808303815f87803b158015612360575f80fd5b505af1158015612372573d5f803e3d5ffd5b5050604080518881526001600160a01b0388166020820152908101849052606081018690527f8075f599388073d04550222731e9c7e00c284a4f858d8a0ffc0657164981c76e92506080019050610e08565b6123cc61401f565b6107cd6138de565b6123dc611fdc565b6001600160a01b0316336001600160a01b03161461240f5760405163086391f760e31b8152336004820152602401610a3d565b61242061241a610aa5565b82611158565b50565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561246a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248e9190614713565b6001600160a01b0316336001600160a01b0316146111545760405162f0630960e01b8152336004820152602401610a3d565b5f80516020614d2d833981519152546001600160a01b031690565b5f6124e461305a565b600101546001600160a01b0316919050565b5f61250033610995565b5f61250961305a565b60048181015460405163153d412560e31b81526001600160601b038916928101929092529192505f916001600160a01b03169063a9ea092890602401608060405180830381865afa158015612560573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061258491906149da565b60200151600483810154604051637b21556160e01b81529182018390526001600160a01b0388811660248401529293505f921690637b21556190604401602060405180830381865afa1580156125dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126009190614844565b6003840154604051633ece552760e21b81529192506001600160a01b03169063fb39549c90612639908a9085908b908b906004016149f4565b6020604051808303815f875af1158015612655573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126799190614698565b979650505050505050565b5f61268e33610995565b5f61269761305a565b600381015460405163d7537c3760e01b81526001600160601b038088166004830152861660248201529192506001600160a01b03169063d7537c37906044015b6020604051808303815f875af11580156126f3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127179190614698565b949350505050565b5f8061272a33610995565b8261273361305a565b60030154604051634f9c1c0960e01b81526001600160601b03831660048201526001600160a01b0390911690634f9c1c0990602401602060405180830381865afa158015612783573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127a791906146fa565b6127cf57604051632ab4595b60e11b81526001600160601b0382166004820152602401610a3d565b5f6127d861305a565b60048181015460405163b3eff9e160e01b81526001600160a01b03909116918101919091526001600160601b038716602482015290915073__$dbe4bf03c942dc0574f54ee579c90d56ef$__9063b3eff9e1906044016040805180830381865af4158015612848573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061286c9190614a28565b5050600481015460038201545f91612891916001600160a01b0391821691168861307e565b9050816003015f9054906101000a90046001600160a01b03166001600160a01b031663eb98e8a0878373__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af4158015612901573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129259190614698565b73__$3bac17678db7ae928afa209f2f44deec9c$__636ac5db196040518163ffffffff1660e01b8152600401602060405180830381865af415801561296c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129909190614698565b60405160e086901b6001600160e01b03191681526001600160601b03948516600482015292841660248401529083166044830152909116606482015260840160408051808303815f875af11580156129ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0e9190614a4c565b600384015460405163136cfef760e01b81526001600160601b038086166004830152831660248201529297509095506001600160a01b03169063136cfef7906044016020604051808303815f875af1158015612a6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a909190614698565b50505050915091565b612aa1611fdc565b6001600160a01b0316336001600160a01b031614612ad45760405163086391f760e31b8152336004820152602401610a3d565b5f612add610a79565b90505f612ae8610aa5565b6040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa158015612b2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b529190614844565b9050612b5d83613a42565b801561131257604080516001600160a01b038085168252851660208201529081018290527f8f925ed35e36754081a3353f30c5686c405280f94d1cfe322ee5707833d898679060600160405180910390a1306001600160a01b03831603612c9557612bc6611317565b6001600160a01b03166354f0d84c838573__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866040518263ffffffff1660e01b8152600401612c0f91815260200190565b602060405180830381865af4158015612c2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c4e9190614698565b6040518463ffffffff1660e01b8152600401612c6c939291906149ae565b5f604051808303815f87803b158015612c83575f80fd5b505af1158015611425573d5f803e3d5ffd5b612c9d611317565b6001600160a01b031663c7d63d57838573__$3bac17678db7ae928afa209f2f44deec9c$__634c41dd96866040518263ffffffff1660e01b8152600401612c0f91815260200190565b612cef33610995565b612cf7611317565b6001600160a01b031663c7d63d5783612d0e610a79565b846040518463ffffffff1660e01b8152600401611af8939291906149ae565b6001546001600160a01b03166001600160a01b031663120726c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d74573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d989190614713565b6001600160a01b0316336001600160a01b0316146113125760405162f0630960e01b8152336004820152602401610a3d565b5f612dd433610995565b5f612ddd61305a565b600381015460405163136cfef760e01b81526001600160601b038088166004830152861660248201529192506001600160a01b03169063136cfef7906044016126d7565b5f612e2b33610995565b5f612e3461305a565b60048181015460405163153d412560e31b81526001600160601b038916928101929092529192505f916001600160a01b03169063a9ea092890602401608060405180830381865afa158015612e8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eaf91906149da565b60200151600483810154604051637b21556160e01b81529182018390526001600160a01b0388811660248401529293505f921690637b21556190604401602060405180830381865afa158015612f07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f2b9190614844565b60038401546040516377f9185160e01b81529192506001600160a01b0316906377f9185190612639908a9085908b908b906004016149f4565b5f80516020614d2d8339815191525f80612f9c612f7f6124c0565b8730612f8e60045f8a8c614a79565b612f9791614aa0565b613b2a565b9150915081611b215763ffffffff81161561303757825460ff60a01b1916600160a01b178355612fca6124c0565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401612ff993929190614ad8565b5f604051808303815f87803b158015613010575f80fd5b505af1158015613022573d5f803e3d5ffd5b5050845460ff60a01b1916855550611b219050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610a3d565b7fafe8d4462b2ed26a47154f4b8f6d1497d2f772496965791d25bd456e342b7f0090565b6040516312b9a5c960e01b81526001600160601b03821660048201525f9081906001600160a01b038616906312b9a5c9906024016040805180830381865afa1580156130cc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130f09190614b17565b60405163e048754d60e01b81526001600160a01b03881660048201526001600160601b03861660248201526044810182905291935091505f9073__$dbe4bf03c942dc0574f54ee579c90d56ef$__9063e048754d906064016040805180830381865af4158015613162573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131869190614a4c565b50604051634a2101d160e01b81526001600160601b0380871660048301528086166024830152821660448201529091506001600160a01b03861690634a2101d1906064015f604051808303815f87803b1580156131e1575f80fd5b505af11580156131f3573d5f803e3d5ffd5b5050505050509392505050565b5f805f80516020614ced83398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af415801561326c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329091906146fa565b156132bc5780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610a3d565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa15801561330e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061333291906146fa565b61335a5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610a3d565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa1580156133ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133d09190614698565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6102ff613c32565b5f80516020614d4d8339815191528054600160401b810460ff1615906001600160401b03165f811580156134325750825b90505f826001600160401b0316600114801561344d5750303b155b90508115801561345b575080155b156134795760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156134a357845460ff60401b1916600160401b1785555b5f805f80898060200190518101906134bb9190614b43565b93509350935093505f8490505f816001600160a01b031663e2b178a06040518163ffffffff1660e01b8152600401602060405180830381865afa158015613504573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135289190614713565b90505f8590505f816001600160a01b031663b201f7096040518163ffffffff1660e01b8152600401602060405180830381865afa15801561356b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061358f9190614713565b905061363c8389866001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135f69190614698565b6040805180820190915260078152665374616b696e6760c81b60208201528560035f8c60405180602001604052805f81525060405180602001604052805f815250613c6a565b5f61364561305a565b90506136596001546001600160a01b031690565b6001600160a01b031663fff74f6c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613694573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136b89190614698565b600480830180546001600160601b0393909316600160a01b026001600160a01b03938416179055600383018054928a166001600160a01b0319939093168317905560408051633148a11d60e11b81529051636291423a928281019260209291908290030181865afa15801561372f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137539190614713565b600482810180546001600160a01b03199081166001600160a01b03948516179091556001840180549091168b841617905560405163825e727960e01b815284831691810191909152908516602482015273__$51089c37ca0df1177a910c640c8c5f8165$__9063825e727990604401602060405180830381865af41580156137dd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138019190614713565b6002820180546001600160a01b0319166001600160a01b039290921691909117905561383363fef8804160e01b613d69565b505050505050505050831561142557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161141c565b5f80516020614d2d83398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6138e661401f565b5f5f80516020614d0d83398151915290506040518060c00160405280825f018054613910906146b3565b80601f016020809104026020016040519081016040528092919081815260200182805461393c906146b3565b80156139875780601f1061395e57610100808354040283529160200191613987565b820191905f5260205f20905b81548152906001019060200180831161396a57829003601f168201915b5050505050815260200173__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156139d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139fc9190614698565b6001600160601b0316815260018301546001600160a01b0390811660208301525f6040830152600284015416606082015260038301805460809092019161090b906146b3565b7fffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f02545f80516020614d0d833981519152906001600160a01b03908116908316613a9e5760405163185a690f60e11b815260040160405180910390fd5b806001600160a01b0316836001600160a01b031603613ad05760405163ade4578160e01b815260040160405180910390fd5b6002820180546001600160a01b0319166001600160a01b0385811691821790925560408051928416835260208301919091527f610ad1290dceadae2c5ce18bae2eb495be595083a257fac7414e50686f7c26509101611103565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251613b989190614b9f565b5f60405180830381855afa9150503d805f8114613bd0576040519150601f19603f3d011682016040523d82523d5f602084013e613bd5565b606091505b50915091508115613c27576040815110613c075780806020019051810190613bfd9190614bb5565b9094509250613c27565b6020815110613c275780806020019051810190613c2491906146fa565b93505b505094509492505050565b5f80516020614d4d83398151915254600160401b900460ff16613c6857604051631afcd79f60e31b815260040160405180910390fd5b565b613c72613c32565b613c80898987878787613d95565b613c898a613e3a565b6001600160a01b038616613cb0576040516327eab2e360e11b815260040160405180910390fd5b86515f03613cd15760405163591eebf360e11b815260040160405180910390fd5b5f80516020614d0d83398151915280613cea8982614c32565b506001810180546001600160a01b0319166001600160a01b0389161790556002810180546001600160a81b0319163060ff60a01b191617600160a01b8715150217905560038101613d3b8382614c32565b50613d4c634a531f3360e01b613d69565b613d5c632986755f60e11b613d69565b5050505050505050505050565b613d71613c32565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b613d9d613c32565b613da78287613e4b565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301613e308382614c32565b5050505050505050565b613e42613c32565b61242081613ec1565b613e53613c32565b613e5c81613ed2565b613e64613fda565b6001600160a01b038216613e8b5760405163f17ef42d60e01b815260040160405180910390fd5b505f80516020614ced83398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b613ec9613c32565b6124208161387e565b613eda613c32565b806001600160a01b03163b5f03613f0f5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610a3d565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632f6da6f960e01b60048201526301ffc9a790602401602060405180830381865afa925050508015613f89575060408051601f3d908101601f19168201909252613f86918101906146fa565b60015b613fb15760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610a3d565b806111545760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610a3d565b613fe2613c32565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b6040518060c00160405280606081526020015f6001600160601b031681526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f6001600160a01b03168152602001606081525090565b5f60208284031215614085575f80fd5b81356001600160e01b03198116811461409c575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151614119608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e0808401526127176101008401826140a3565b6001600160601b0381168114612420575f80fd5b5f60208284031215614181575f80fd5b813561409c8161415d565b602081525f61409c60208301846140a3565b5f80604083850312156141af575f80fd5b82356141ba8161415d565b946020939093013593505050565b5f805f606084860312156141da575f80fd5b83356141e58161415d565b925060208401356141f58161415d565b915060408401356142058161415d565b809150509250925092565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561424657614246614210565b60405290565b60405160e081016001600160401b038111828210171561424657614246614210565b604051601f8201601f191681016001600160401b038111828210171561429657614296614210565b604052919050565b5f6001600160401b038211156142b6576142b6614210565b50601f01601f191660200190565b5f82601f8301126142d3575f80fd5b81356142e66142e18261429e565b61426e565b8181528460208386010111156142fa575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215614326575f80fd5b81356001600160401b0381111561433b575f80fd5b612717848285016142c4565b60ff81168114612420575f80fd5b64ffffffffff81168114612420575f80fd5b5f8082840360a0811215614379575f80fd5b83356143848161415d565b92506080601f1982011215614397575f80fd5b506143a0614224565b60208401356143ae81614347565b81526040840135602082015260608401356143c881614355565b60408201526080939093013560608401525092909150565b6001600160a01b0381168114612420575f80fd5b5f8060408385031215614405575f80fd5b8235614410816143e0565b915060208301356144208161415d565b809150509250929050565b5f806040838503121561443c575f80fd5b8235614447816143e0565b915060208301356001600160401b03811115614461575f80fd5b61446d858286016142c4565b9150509250929050565b5f805f805f60a0868803121561448b575f80fd5b85356144968161415d565b945060208601356144a681614347565b93506040860135925060608601356144bd81614355565b949793965091946080013592915050565b5f80604083850312156144df575f80fd5b82356144108161415d565b5f80604083850312156144fb575f80fd5b82356145068161415d565b9150602083013561442081614355565b5f60208284031215614526575f80fd5b813561409c816143e0565b602081525f825160c0602084015261454c60e08401826140a3565b90506001600160601b03602085015116604084015260018060a01b03604085015116606084015260018060a01b036060850151166080840152608084015161459f60a08501826001600160a01b03169052565b5060a0840151838203601f190160c0850152611cc582826140a3565b5f805f606084860312156145cd575f80fd5b83356145d88161415d565b925060208401356141f5816143e0565b5f805f606084860312156145fa575f80fd5b83359250602084013561460c816143e0565b929592945050506040919091013590565b5f806040838503121561462e575f80fd5b82356141ba816143e0565b5f805f6060848603121561464b575f80fd5b8335614656816143e0565b9250602084013561460c816143e0565b5f60208284031215614676575f80fd5b815162ffffff8116811461409c575f80fd5b80516146938161415d565b919050565b5f602082840312156146a8575f80fd5b815161409c8161415d565b600181811c908216806146c757607f821691505b6020821081036146e557634e487b7160e01b5f52602260045260245ffd5b50919050565b80518015158114614693575f80fd5b5f6020828403121561470a575f80fd5b61409c826146eb565b5f60208284031215614723575f80fd5b815161409c816143e0565b805161469381614347565b5f60808284031215614749575f80fd5b614751614224565b9050815161475e81614347565b815260208281015190820152604082015161477881614355565b604082015260609182015191810191909152919050565b5f8060a083850312156147a0575f80fd5b825191506147b18460208501614739565b90509250929050565b5f60a0820190506001600160601b038416825260ff83511660208301526020830151604083015264ffffffffff6040840151166060830152606083015160808301529392505050565b5f60208284031215614813575f80fd5b815161409c81614355565b5f6020828403121561482e575f80fd5b81516001600160401b038116811461409c575f80fd5b5f60208284031215614854575f80fd5b5051919050565b8051614693816143e0565b5f82601f830112614875575f80fd5b81516148836142e18261429e565b818152846020838601011115614897575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f602082840312156148c3575f80fd5b81516001600160401b038111156148d8575f80fd5b820160e081850312156148e9575f80fd5b6148f161424c565b6148fa82614688565b815261490860208301614688565b60208201526149196040830161472e565b604082015261492a606083016146eb565b606082015261493b6080830161485b565b608082015261494c60a0830161485b565b60a082015260c08201516001600160401b03811115614969575f80fd5b61497586828501614866565b60c083015250949350505050565b5f8060a08385031215614994575f80fd5b825161499f81614355565b91506147b18460208501614739565b6001600160a01b0393841681529190921660208201526001600160601b03909116604082015260600190565b5f608082840312156149ea575f80fd5b61409c8383614739565b6001600160601b03948516815260208101939093526001600160a01b03919091166040830152909116606082015260800190565b5f8060408385031215614a39575f80fd5b8251602084015190925061442081614355565b5f8060408385031215614a5d575f80fd5b8251614a688161415d565b60208401519092506144208161415d565b5f8085851115614a87575f80fd5b83861115614a93575f80fd5b5050820193919092039150565b80356001600160e01b03198116906004841015614ad1576001600160e01b0319600485900360031b81901b82161691505b5092915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b5f8060408385031215614b28575f80fd5b8251614b338161415d565b6020939093015192949293505050565b5f805f8060808587031215614b56575f80fd5b8451614b61816143e0565b6020860151909450614b72816143e0565b6040860151909350614b83816143e0565b6060860151909250614b94816143e0565b939692955090935050565b5f82518060208501845e5f920191825250919050565b5f8060408385031215614bc6575f80fd5b614bcf836146eb565b9150602083015163ffffffff81168114614420575f80fd5b601f82111561131257805f5260205f20601f840160051c81016020851015614c0c5750805b601f840160051c820191505b81811015614c2b575f8155600101614c18565b5050505050565b81516001600160401b03811115614c4b57614c4b614210565b614c5f81614c5984546146b3565b84614be7565b6020601f821160018114614c91575f8315614c7a5750848201515b5f19600385901b1c1916600184901b178455614c2b565b5f84815260208120601f198516915b82811015614cc05787850151825560209485019460019092019101614ca0565b5084821015614cdd57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00ffe8d4462baed26a47154f4b8f6db497d2f772496965791d25bd456e342b7f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220ea770ac303d53ab505e67df47039a45f68dca63414277ffd47250667c72fb72f64736f6c634300081a0033",
1796
1608
  "linkReferences": {
1797
- "contracts/staking/StakeManagerLib.sol": {
1798
- "StakeManagerLib": [
1609
+ "contracts/shared/TokenHandlerDeployerLib.sol": {
1610
+ "TokenHandlerDeployerLib": [
1799
1611
  {
1800
1612
  "length": 20,
1801
- "start": 5228
1802
- },
1803
- {
1804
- "length": 20,
1805
- "start": 7509
1806
- },
1613
+ "start": 14459
1614
+ }
1615
+ ]
1616
+ },
1617
+ "contracts/staking/StakeManagerLib.sol": {
1618
+ "StakeManagerLib": [
1807
1619
  {
1808
1620
  "length": 20,
1809
- "start": 8220
1621
+ "start": 3906
1810
1622
  },
1811
1623
  {
1812
1624
  "length": 20,
1813
- "start": 8705
1625
+ "start": 7382
1814
1626
  },
1815
1627
  {
1816
1628
  "length": 20,
1817
- "start": 11726
1629
+ "start": 10471
1818
1630
  },
1819
1631
  {
1820
1632
  "length": 20,
1821
- "start": 12886
1633
+ "start": 12801
1822
1634
  }
1823
1635
  ]
1824
1636
  },
@@ -1826,15 +1638,15 @@
1826
1638
  "TargetManagerLib": [
1827
1639
  {
1828
1640
  "length": 20,
1829
- "start": 4446
1641
+ "start": 3538
1830
1642
  },
1831
1643
  {
1832
1644
  "length": 20,
1833
- "start": 5907
1645
+ "start": 5391
1834
1646
  },
1835
1647
  {
1836
1648
  "length": 20,
1837
- "start": 6805
1649
+ "start": 6408
1838
1650
  }
1839
1651
  ]
1840
1652
  },
@@ -1842,23 +1654,27 @@
1842
1654
  "AmountLib": [
1843
1655
  {
1844
1656
  "length": 20,
1845
- "start": 9169
1657
+ "start": 4896
1658
+ },
1659
+ {
1660
+ "length": 20,
1661
+ "start": 7853
1846
1662
  },
1847
1663
  {
1848
1664
  "length": 20,
1849
- "start": 10668
1665
+ "start": 10642
1850
1666
  },
1851
1667
  {
1852
1668
  "length": 20,
1853
- "start": 10780
1669
+ "start": 10749
1854
1670
  },
1855
1671
  {
1856
1672
  "length": 20,
1857
- "start": 20438
1673
+ "start": 11438
1858
1674
  },
1859
1675
  {
1860
1676
  "length": 20,
1861
- "start": 20595
1677
+ "start": 11653
1862
1678
  }
1863
1679
  ]
1864
1680
  },
@@ -1866,23 +1682,23 @@
1866
1682
  "NftIdLib": [
1867
1683
  {
1868
1684
  "length": 20,
1869
- "start": 2971
1685
+ "start": 2323
1870
1686
  },
1871
1687
  {
1872
1688
  "length": 20,
1873
- "start": 3836
1689
+ "start": 3111
1874
1690
  },
1875
1691
  {
1876
1692
  "length": 20,
1877
- "start": 9754
1693
+ "start": 8422
1878
1694
  },
1879
1695
  {
1880
1696
  "length": 20,
1881
- "start": 13118
1697
+ "start": 13066
1882
1698
  },
1883
1699
  {
1884
1700
  "length": 20,
1885
- "start": 15014
1701
+ "start": 14953
1886
1702
  }
1887
1703
  ]
1888
1704
  },
@@ -1890,41 +1706,41 @@
1890
1706
  "VersionLib": [
1891
1707
  {
1892
1708
  "length": 20,
1893
- "start": 2760
1709
+ "start": 2119
1894
1710
  },
1895
1711
  {
1896
1712
  "length": 20,
1897
- "start": 4747
1713
+ "start": 4253
1898
1714
  }
1899
1715
  ]
1900
1716
  }
1901
1717
  },
1902
1718
  "deployedLinkReferences": {
1903
- "contracts/staking/StakeManagerLib.sol": {
1904
- "StakeManagerLib": [
1719
+ "contracts/shared/TokenHandlerDeployerLib.sol": {
1720
+ "TokenHandlerDeployerLib": [
1905
1721
  {
1906
1722
  "length": 20,
1907
- "start": 4998
1908
- },
1909
- {
1910
- "length": 20,
1911
- "start": 7279
1912
- },
1723
+ "start": 14245
1724
+ }
1725
+ ]
1726
+ },
1727
+ "contracts/staking/StakeManagerLib.sol": {
1728
+ "StakeManagerLib": [
1913
1729
  {
1914
1730
  "length": 20,
1915
- "start": 7990
1731
+ "start": 3692
1916
1732
  },
1917
1733
  {
1918
1734
  "length": 20,
1919
- "start": 8475
1735
+ "start": 7168
1920
1736
  },
1921
1737
  {
1922
1738
  "length": 20,
1923
- "start": 11496
1739
+ "start": 10257
1924
1740
  },
1925
1741
  {
1926
1742
  "length": 20,
1927
- "start": 12656
1743
+ "start": 12587
1928
1744
  }
1929
1745
  ]
1930
1746
  },
@@ -1932,15 +1748,15 @@
1932
1748
  "TargetManagerLib": [
1933
1749
  {
1934
1750
  "length": 20,
1935
- "start": 4216
1751
+ "start": 3324
1936
1752
  },
1937
1753
  {
1938
1754
  "length": 20,
1939
- "start": 5677
1755
+ "start": 5177
1940
1756
  },
1941
1757
  {
1942
1758
  "length": 20,
1943
- "start": 6575
1759
+ "start": 6194
1944
1760
  }
1945
1761
  ]
1946
1762
  },
@@ -1948,23 +1764,27 @@
1948
1764
  "AmountLib": [
1949
1765
  {
1950
1766
  "length": 20,
1951
- "start": 8939
1767
+ "start": 4682
1768
+ },
1769
+ {
1770
+ "length": 20,
1771
+ "start": 7639
1952
1772
  },
1953
1773
  {
1954
1774
  "length": 20,
1955
- "start": 10438
1775
+ "start": 10428
1956
1776
  },
1957
1777
  {
1958
1778
  "length": 20,
1959
- "start": 10550
1779
+ "start": 10535
1960
1780
  },
1961
1781
  {
1962
1782
  "length": 20,
1963
- "start": 20208
1783
+ "start": 11224
1964
1784
  },
1965
1785
  {
1966
1786
  "length": 20,
1967
- "start": 20365
1787
+ "start": 11439
1968
1788
  }
1969
1789
  ]
1970
1790
  },
@@ -1972,23 +1792,23 @@
1972
1792
  "NftIdLib": [
1973
1793
  {
1974
1794
  "length": 20,
1975
- "start": 2741
1795
+ "start": 2109
1976
1796
  },
1977
1797
  {
1978
1798
  "length": 20,
1979
- "start": 3606
1799
+ "start": 2897
1980
1800
  },
1981
1801
  {
1982
1802
  "length": 20,
1983
- "start": 9524
1803
+ "start": 8208
1984
1804
  },
1985
1805
  {
1986
1806
  "length": 20,
1987
- "start": 12888
1807
+ "start": 12852
1988
1808
  },
1989
1809
  {
1990
1810
  "length": 20,
1991
- "start": 14784
1811
+ "start": 14739
1992
1812
  }
1993
1813
  ]
1994
1814
  },
@@ -1996,11 +1816,11 @@
1996
1816
  "VersionLib": [
1997
1817
  {
1998
1818
  "length": 20,
1999
- "start": 2530
1819
+ "start": 1905
2000
1820
  },
2001
1821
  {
2002
1822
  "length": 20,
2003
- "start": 4517
1823
+ "start": 4039
2004
1824
  }
2005
1825
  ]
2006
1826
  }