@etherisc/gif-next 0.0.2-e37834a-021 → 0.0.2-e3f4f82-063

Sign up to get free protection for your applications and to get access to all the features.
Files changed (366) hide show
  1. package/README.md +108 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +116 -2
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +204 -31
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +106 -3
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -25
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +2 -61
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -50
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +253 -68
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +272 -45
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1132 -0
  48. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +732 -1219
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +480 -0
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +2327 -1324
  56. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +931 -0
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +508 -0
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +149 -2
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  69. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  72. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  74. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  76. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  78. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  80. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  82. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  84. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  86. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  88. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +178 -41
  90. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +212 -22
  92. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +444 -0
  94. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +81 -4
  96. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +80 -3
  98. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +188 -3
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +120 -34
  102. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +346 -24
  104. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +460 -0
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +269 -86
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +488 -0
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +199 -112
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +297 -18
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  118. package/artifacts/contracts/registry/Registry.sol/Registry.json +167 -166
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +447 -39
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +105 -48
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  124. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +410 -0
  125. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  128. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/module/component/ComponentModule.sol/ComponentModule.json → shared/INftOwnable.sol/INftOwnable.json} +67 -57
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +80 -3
  132. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/IService.sol/IService.json} +76 -35
  134. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +32 -6
  137. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  138. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +21 -16
  139. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +120 -6
  141. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  142. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +137 -39
  143. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  144. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/Service.sol/Service.json} +106 -94
  145. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  146. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  147. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  148. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  149. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  151. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  152. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  153. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +120 -6
  154. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  156. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  157. package/artifacts/contracts/test/TestService.sol/TestService.json +142 -14
  158. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  159. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  160. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  162. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +18 -2
  164. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  165. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  166. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  167. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  168. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  170. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  171. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  172. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  173. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  174. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  175. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  176. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  177. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  179. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  180. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  181. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  183. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  185. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  187. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  189. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  191. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  193. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  194. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  195. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  197. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  198. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  199. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  201. package/contracts/components/BaseComponent.sol +16 -4
  202. package/contracts/components/Distribution.sol +23 -15
  203. package/contracts/components/IBaseComponent.sol +9 -3
  204. package/contracts/components/IDistributionComponent.sol +2 -4
  205. package/contracts/components/IPoolComponent.sol +1 -3
  206. package/contracts/components/IProductComponent.sol +2 -4
  207. package/contracts/components/Pool.sol +33 -32
  208. package/contracts/components/Product.sol +52 -62
  209. package/contracts/experiment/cloning/Cloner.sol +47 -0
  210. package/contracts/instance/AccessManagedSimple.sol +115 -0
  211. package/contracts/instance/AccessManagerSimple.sol +692 -0
  212. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  213. package/contracts/instance/IInstance.sol +47 -47
  214. package/contracts/instance/IInstanceService.sol +30 -0
  215. package/contracts/instance/Instance.sol +423 -65
  216. package/contracts/instance/InstanceAccessManager.sol +288 -0
  217. package/contracts/instance/InstanceReader.sol +315 -0
  218. package/contracts/instance/InstanceService.sol +198 -0
  219. package/contracts/instance/InstanceServiceManager.sol +57 -0
  220. package/contracts/instance/base/ComponentServiceBase.sol +93 -8
  221. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  222. package/contracts/instance/base/ILifecycle.sol +3 -3
  223. package/contracts/instance/base/KeyValueStore.sol +49 -38
  224. package/contracts/instance/base/Lifecycle.sol +1 -1
  225. package/contracts/instance/module/IAccess.sol +38 -0
  226. package/contracts/instance/module/IBundle.sol +20 -0
  227. package/contracts/instance/module/IDistribution.sol +39 -0
  228. package/contracts/instance/module/IPolicy.sol +45 -0
  229. package/contracts/instance/module/IRisk.sol +11 -0
  230. package/contracts/instance/module/ISetup.sol +47 -0
  231. package/contracts/instance/module/ITreasury.sol +23 -0
  232. package/contracts/instance/service/ComponentOwnerService.sol +145 -100
  233. package/contracts/instance/service/DistributionService.sol +49 -15
  234. package/contracts/instance/service/DistributionServiceManager.sol +54 -0
  235. package/contracts/instance/service/IComponentOwnerService.sol +1 -1
  236. package/contracts/instance/service/IDistributionService.sol +1 -1
  237. package/contracts/instance/service/IPoolService.sol +7 -1
  238. package/contracts/instance/service/IProductService.sol +9 -6
  239. package/contracts/instance/service/PoolService.sol +101 -46
  240. package/contracts/instance/service/PoolServiceManager.sol +54 -0
  241. package/contracts/instance/service/ProductService.sol +170 -118
  242. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  243. package/contracts/registry/ChainNft.sol +40 -25
  244. package/contracts/registry/IRegistry.sol +35 -27
  245. package/contracts/registry/IRegistryService.sol +36 -15
  246. package/contracts/registry/Registry.sol +137 -179
  247. package/contracts/registry/RegistryService.sol +149 -166
  248. package/contracts/registry/RegistryServiceManager.sol +38 -10
  249. package/contracts/registry/TokenRegistry.sol +111 -0
  250. package/contracts/shared/ERC165.sol +7 -3
  251. package/contracts/shared/INftOwnable.sol +22 -0
  252. package/contracts/shared/IRegisterable.sol +3 -8
  253. package/contracts/{instance/base → shared}/IService.sol +3 -3
  254. package/contracts/shared/NftOwnable.sol +85 -38
  255. package/contracts/shared/ProxyManager.sol +3 -12
  256. package/contracts/shared/Registerable.sol +15 -42
  257. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  258. package/contracts/shared/Service.sol +55 -0
  259. package/contracts/shared/TokenHandler.sol +27 -0
  260. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  261. package/contracts/shared/Versionable.sol +3 -3
  262. package/contracts/test/TestFee.sol +2 -2
  263. package/contracts/test/TestRoleId.sol +1 -1
  264. package/contracts/test/TestService.sol +3 -5
  265. package/contracts/types/DistributorType.sol +55 -0
  266. package/contracts/types/Fee.sol +3 -3
  267. package/contracts/types/Key32.sol +8 -3
  268. package/contracts/types/NumberId.sol +52 -0
  269. package/contracts/types/ObjectType.sol +35 -14
  270. package/contracts/types/Referral.sol +85 -0
  271. package/contracts/types/RoleId.sol +61 -9
  272. package/contracts/types/StateId.sol +5 -1
  273. package/contracts/types/Timestamp.sol +7 -3
  274. package/contracts/types/UFixed.sol +128 -12
  275. package/contracts/types/Version.sol +4 -1
  276. package/package.json +4 -3
  277. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  278. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  279. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  280. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  281. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  282. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  283. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  284. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  285. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  286. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  287. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  288. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  289. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  290. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  291. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  292. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  293. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  294. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  295. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  296. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  297. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  298. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -117
  299. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  300. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  301. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  302. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  303. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  304. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  305. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -284
  307. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  308. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -284
  309. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  310. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  311. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  312. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  313. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  314. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  315. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  316. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  317. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  318. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  319. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  320. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  321. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  322. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  323. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  324. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  325. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  326. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  327. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  328. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  329. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  330. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  331. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  332. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -445
  333. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  334. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -602
  335. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  336. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -632
  337. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  338. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  339. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  340. package/contracts/instance/IInstanceLinked.sol +0 -8
  341. package/contracts/instance/base/InstanceBase.sol +0 -89
  342. package/contracts/instance/base/ModuleBase.sol +0 -57
  343. package/contracts/instance/base/ServiceBase.sol +0 -43
  344. package/contracts/instance/module/access/Access.sol +0 -149
  345. package/contracts/instance/module/access/IAccess.sol +0 -53
  346. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  347. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  348. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  349. package/contracts/instance/module/component/IComponent.sol +0 -28
  350. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  351. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  352. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  353. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  354. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  355. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  356. package/contracts/instance/module/risk/IRisk.sol +0 -26
  357. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  358. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  359. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  360. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  361. package/contracts/registry/IChainNft.sol +0 -22
  362. package/contracts/shared/IOwnable.sol +0 -6
  363. package/contracts/test/TestDistribution.sol +0 -22
  364. package/contracts/test/TestPool.sol +0 -27
  365. package/contracts/test/TestProduct.sol +0 -74
  366. package/contracts/types/ReferralId.sol +0 -48
@@ -7,48 +7,151 @@
7
7
  "inputs": [
8
8
  {
9
9
  "internalType": "address",
10
- "name": "registerableAddress",
10
+ "name": "authority",
11
11
  "type": "address"
12
12
  }
13
13
  ],
14
- "name": "InvalidAddress",
14
+ "name": "AccessManagedInvalidAuthority",
15
15
  "type": "error"
16
16
  },
17
17
  {
18
18
  "inputs": [
19
19
  {
20
20
  "internalType": "address",
21
- "name": "initialOwner",
21
+ "name": "caller",
22
22
  "type": "address"
23
+ },
24
+ {
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
23
28
  }
24
29
  ],
25
- "name": "InvalidInitialOwner",
30
+ "name": "AccessManagedRequiredDelay",
31
+ "type": "error"
32
+ },
33
+ {
34
+ "inputs": [
35
+ {
36
+ "internalType": "address",
37
+ "name": "caller",
38
+ "type": "address"
39
+ }
40
+ ],
41
+ "name": "AccessManagedUnauthorized",
42
+ "type": "error"
43
+ },
44
+ {
45
+ "inputs": [
46
+ {
47
+ "internalType": "address",
48
+ "name": "registry",
49
+ "type": "address"
50
+ },
51
+ {
52
+ "internalType": "NftId",
53
+ "name": "nftId",
54
+ "type": "uint96"
55
+ }
56
+ ],
57
+ "name": "ErrorAlreadyLinked",
58
+ "type": "error"
59
+ },
60
+ {
61
+ "inputs": [
62
+ {
63
+ "internalType": "address",
64
+ "name": "contractAddress",
65
+ "type": "address"
66
+ }
67
+ ],
68
+ "name": "ErrorContractNotRegistered",
69
+ "type": "error"
70
+ },
71
+ {
72
+ "inputs": [
73
+ {
74
+ "internalType": "address",
75
+ "name": "account",
76
+ "type": "address"
77
+ }
78
+ ],
79
+ "name": "ErrorNotOwner",
80
+ "type": "error"
81
+ },
82
+ {
83
+ "inputs": [
84
+ {
85
+ "internalType": "address",
86
+ "name": "registryAddress",
87
+ "type": "address"
88
+ }
89
+ ],
90
+ "name": "ErrorNotRegistry",
91
+ "type": "error"
92
+ },
93
+ {
94
+ "inputs": [
95
+ {
96
+ "internalType": "address",
97
+ "name": "registryAddress",
98
+ "type": "address"
99
+ }
100
+ ],
101
+ "name": "ErrorRegisterableNotRegistry",
26
102
  "type": "error"
27
103
  },
28
104
  {
29
105
  "inputs": [],
30
- "name": "InvalidInitialization",
106
+ "name": "ErrorRegistryAddressZero",
31
107
  "type": "error"
32
108
  },
33
109
  {
34
110
  "inputs": [
35
111
  {
36
- "internalType": "ObjectType",
37
- "name": "objectType",
38
- "type": "uint8"
112
+ "internalType": "address",
113
+ "name": "registry",
114
+ "type": "address"
39
115
  }
40
116
  ],
41
- "name": "InvalidType",
117
+ "name": "ErrorRegistryAlreadyInitialized",
42
118
  "type": "error"
43
119
  },
44
120
  {
45
121
  "inputs": [],
46
- "name": "MissingAllowance",
122
+ "name": "ErrorRegistryNotInitialized",
123
+ "type": "error"
124
+ },
125
+ {
126
+ "inputs": [
127
+ {
128
+ "internalType": "address",
129
+ "name": "registerableAddress",
130
+ "type": "address"
131
+ }
132
+ ],
133
+ "name": "InvalidAddress",
134
+ "type": "error"
135
+ },
136
+ {
137
+ "inputs": [
138
+ {
139
+ "internalType": "address",
140
+ "name": "initialOwner",
141
+ "type": "address"
142
+ }
143
+ ],
144
+ "name": "InvalidInitialOwner",
47
145
  "type": "error"
48
146
  },
49
147
  {
50
148
  "inputs": [],
51
- "name": "NotComponent",
149
+ "name": "InvalidInitialization",
150
+ "type": "error"
151
+ },
152
+ {
153
+ "inputs": [],
154
+ "name": "NotDistribution",
52
155
  "type": "error"
53
156
  },
54
157
  {
@@ -61,6 +164,27 @@
61
164
  "name": "NotInstance",
62
165
  "type": "error"
63
166
  },
167
+ {
168
+ "inputs": [],
169
+ "name": "NotPool",
170
+ "type": "error"
171
+ },
172
+ {
173
+ "inputs": [],
174
+ "name": "NotProduct",
175
+ "type": "error"
176
+ },
177
+ {
178
+ "inputs": [
179
+ {
180
+ "internalType": "address",
181
+ "name": "expectedOwner",
182
+ "type": "address"
183
+ }
184
+ ],
185
+ "name": "NotRegisterableOwner",
186
+ "type": "error"
187
+ },
64
188
  {
65
189
  "inputs": [],
66
190
  "name": "NotRegistryOwner",
@@ -73,7 +197,12 @@
73
197
  },
74
198
  {
75
199
  "inputs": [],
76
- "name": "NotToken",
200
+ "name": "RegisterableOwnerIsRegistered",
201
+ "type": "error"
202
+ },
203
+ {
204
+ "inputs": [],
205
+ "name": "RegisterableOwnerIsZero",
77
206
  "type": "error"
78
207
  },
79
208
  {
@@ -81,6 +210,35 @@
81
210
  "name": "SelfRegistration",
82
211
  "type": "error"
83
212
  },
213
+ {
214
+ "inputs": [
215
+ {
216
+ "internalType": "ObjectType",
217
+ "name": "expected",
218
+ "type": "uint8"
219
+ },
220
+ {
221
+ "internalType": "ObjectType",
222
+ "name": "found",
223
+ "type": "uint8"
224
+ }
225
+ ],
226
+ "name": "UnexpectedRegisterableType",
227
+ "type": "error"
228
+ },
229
+ {
230
+ "anonymous": false,
231
+ "inputs": [
232
+ {
233
+ "indexed": false,
234
+ "internalType": "address",
235
+ "name": "authority",
236
+ "type": "address"
237
+ }
238
+ ],
239
+ "name": "AuthorityUpdated",
240
+ "type": "event"
241
+ },
84
242
  {
85
243
  "anonymous": false,
86
244
  "inputs": [
@@ -171,6 +329,19 @@
171
329
  "stateMutability": "view",
172
330
  "type": "function"
173
331
  },
332
+ {
333
+ "inputs": [],
334
+ "name": "authority",
335
+ "outputs": [
336
+ {
337
+ "internalType": "address",
338
+ "name": "",
339
+ "type": "address"
340
+ }
341
+ ],
342
+ "stateMutability": "view",
343
+ "type": "function"
344
+ },
174
345
  {
175
346
  "inputs": [],
176
347
  "name": "getInitialInfo",
@@ -271,7 +442,7 @@
271
442
  "outputs": [
272
443
  {
273
444
  "internalType": "NftId",
274
- "name": "nftId",
445
+ "name": "",
275
446
  "type": "uint96"
276
447
  }
277
448
  ],
@@ -297,7 +468,7 @@
297
468
  "outputs": [
298
469
  {
299
470
  "internalType": "contract IRegistry",
300
- "name": "registry",
471
+ "name": "",
301
472
  "type": "address"
302
473
  }
303
474
  ],
@@ -418,6 +589,19 @@
418
589
  "stateMutability": "nonpayable",
419
590
  "type": "function"
420
591
  },
592
+ {
593
+ "inputs": [],
594
+ "name": "isConsumingScheduledOp",
595
+ "outputs": [
596
+ {
597
+ "internalType": "bytes4",
598
+ "name": "",
599
+ "type": "bytes4"
600
+ }
601
+ ],
602
+ "stateMutability": "view",
603
+ "type": "function"
604
+ },
421
605
  {
422
606
  "inputs": [
423
607
  {
@@ -437,6 +621,13 @@
437
621
  "stateMutability": "view",
438
622
  "type": "function"
439
623
  },
624
+ {
625
+ "inputs": [],
626
+ "name": "linkToRegisteredNftId",
627
+ "outputs": [],
628
+ "stateMutability": "nonpayable",
629
+ "type": "function"
630
+ },
440
631
  {
441
632
  "inputs": [
442
633
  {
@@ -497,21 +688,16 @@
497
688
  "inputs": [
498
689
  {
499
690
  "internalType": "contract IBaseComponent",
500
- "name": "component",
691
+ "name": "distribution",
501
692
  "type": "address"
502
693
  },
503
- {
504
- "internalType": "ObjectType",
505
- "name": "componentType",
506
- "type": "uint8"
507
- },
508
694
  {
509
695
  "internalType": "address",
510
696
  "name": "owner",
511
697
  "type": "address"
512
698
  }
513
699
  ],
514
- "name": "registerComponent",
700
+ "name": "registerDistribution",
515
701
  "outputs": [
516
702
  {
517
703
  "components": [
@@ -681,6 +867,138 @@
681
867
  "stateMutability": "nonpayable",
682
868
  "type": "function"
683
869
  },
870
+ {
871
+ "inputs": [
872
+ {
873
+ "internalType": "contract IBaseComponent",
874
+ "name": "pool",
875
+ "type": "address"
876
+ },
877
+ {
878
+ "internalType": "address",
879
+ "name": "owner",
880
+ "type": "address"
881
+ }
882
+ ],
883
+ "name": "registerPool",
884
+ "outputs": [
885
+ {
886
+ "components": [
887
+ {
888
+ "internalType": "NftId",
889
+ "name": "nftId",
890
+ "type": "uint96"
891
+ },
892
+ {
893
+ "internalType": "NftId",
894
+ "name": "parentNftId",
895
+ "type": "uint96"
896
+ },
897
+ {
898
+ "internalType": "ObjectType",
899
+ "name": "objectType",
900
+ "type": "uint8"
901
+ },
902
+ {
903
+ "internalType": "bool",
904
+ "name": "isInterceptor",
905
+ "type": "bool"
906
+ },
907
+ {
908
+ "internalType": "address",
909
+ "name": "objectAddress",
910
+ "type": "address"
911
+ },
912
+ {
913
+ "internalType": "address",
914
+ "name": "initialOwner",
915
+ "type": "address"
916
+ },
917
+ {
918
+ "internalType": "bytes",
919
+ "name": "data",
920
+ "type": "bytes"
921
+ }
922
+ ],
923
+ "internalType": "struct IRegistry.ObjectInfo",
924
+ "name": "info",
925
+ "type": "tuple"
926
+ },
927
+ {
928
+ "internalType": "bytes",
929
+ "name": "data",
930
+ "type": "bytes"
931
+ }
932
+ ],
933
+ "stateMutability": "nonpayable",
934
+ "type": "function"
935
+ },
936
+ {
937
+ "inputs": [
938
+ {
939
+ "internalType": "contract IBaseComponent",
940
+ "name": "product",
941
+ "type": "address"
942
+ },
943
+ {
944
+ "internalType": "address",
945
+ "name": "owner",
946
+ "type": "address"
947
+ }
948
+ ],
949
+ "name": "registerProduct",
950
+ "outputs": [
951
+ {
952
+ "components": [
953
+ {
954
+ "internalType": "NftId",
955
+ "name": "nftId",
956
+ "type": "uint96"
957
+ },
958
+ {
959
+ "internalType": "NftId",
960
+ "name": "parentNftId",
961
+ "type": "uint96"
962
+ },
963
+ {
964
+ "internalType": "ObjectType",
965
+ "name": "objectType",
966
+ "type": "uint8"
967
+ },
968
+ {
969
+ "internalType": "bool",
970
+ "name": "isInterceptor",
971
+ "type": "bool"
972
+ },
973
+ {
974
+ "internalType": "address",
975
+ "name": "objectAddress",
976
+ "type": "address"
977
+ },
978
+ {
979
+ "internalType": "address",
980
+ "name": "initialOwner",
981
+ "type": "address"
982
+ },
983
+ {
984
+ "internalType": "bytes",
985
+ "name": "data",
986
+ "type": "bytes"
987
+ }
988
+ ],
989
+ "internalType": "struct IRegistry.ObjectInfo",
990
+ "name": "info",
991
+ "type": "tuple"
992
+ },
993
+ {
994
+ "internalType": "bytes",
995
+ "name": "data",
996
+ "type": "bytes"
997
+ }
998
+ ],
999
+ "stateMutability": "nonpayable",
1000
+ "type": "function"
1001
+ },
684
1002
  {
685
1003
  "inputs": [
686
1004
  {
@@ -745,12 +1063,49 @@
745
1063
  {
746
1064
  "inputs": [
747
1065
  {
748
- "internalType": "address",
749
- "name": "tokenAddress",
750
- "type": "address"
1066
+ "components": [
1067
+ {
1068
+ "internalType": "NftId",
1069
+ "name": "nftId",
1070
+ "type": "uint96"
1071
+ },
1072
+ {
1073
+ "internalType": "NftId",
1074
+ "name": "parentNftId",
1075
+ "type": "uint96"
1076
+ },
1077
+ {
1078
+ "internalType": "ObjectType",
1079
+ "name": "objectType",
1080
+ "type": "uint8"
1081
+ },
1082
+ {
1083
+ "internalType": "bool",
1084
+ "name": "isInterceptor",
1085
+ "type": "bool"
1086
+ },
1087
+ {
1088
+ "internalType": "address",
1089
+ "name": "objectAddress",
1090
+ "type": "address"
1091
+ },
1092
+ {
1093
+ "internalType": "address",
1094
+ "name": "initialOwner",
1095
+ "type": "address"
1096
+ },
1097
+ {
1098
+ "internalType": "bytes",
1099
+ "name": "data",
1100
+ "type": "bytes"
1101
+ }
1102
+ ],
1103
+ "internalType": "struct IRegistry.ObjectInfo",
1104
+ "name": "info",
1105
+ "type": "tuple"
751
1106
  }
752
1107
  ],
753
- "name": "registerToken",
1108
+ "name": "registerStake",
754
1109
  "outputs": [
755
1110
  {
756
1111
  "internalType": "NftId",
@@ -761,6 +1116,19 @@
761
1116
  "stateMutability": "nonpayable",
762
1117
  "type": "function"
763
1118
  },
1119
+ {
1120
+ "inputs": [
1121
+ {
1122
+ "internalType": "address",
1123
+ "name": "newAuthority",
1124
+ "type": "address"
1125
+ }
1126
+ ],
1127
+ "name": "setAuthority",
1128
+ "outputs": [],
1129
+ "stateMutability": "nonpayable",
1130
+ "type": "function"
1131
+ },
764
1132
  {
765
1133
  "inputs": [
766
1134
  {
@@ -804,18 +1172,18 @@
804
1172
  "type": "function"
805
1173
  }
806
1174
  ],
807
- "bytecode": "0x60806040523480156200001157600080fd5b506301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055620000586200005e565b62000112565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000af5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146200010f5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612ace80620001226000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c8063893d20e8116100de578063c2bf08c811610097578063d943342d11610071578063d943342d146104cd578063e285c9c4146104e0578063ed841d0c146104e8578063fdd9ec7d146104f057600080fd5b8063c2bf08c81461048d578063cde749f4146104a0578063cf7a1d77146104ba57600080fd5b8063893d20e8146103e8578063946dfcfe146103f0578063a3f4df7e14610417578063a745e3df14610445578063b3c650151461045a578063b88da7591461047a57600080fd5b80634d459c90116101305780634d459c901461026e5780634f421333146103875780635ab1bd531461039a5780635c992fed146103ba578063644c45e0146103cd578063834af153146103d557600080fd5b806301ffc9a71461017857806309824a80146101ba5780630d8e6e2c146101e55780630fec111c1461020157806317d7de7c146102175780631eff4b221461024b575b600080fd5b6101a561018636600461216d565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101cd6101c83660046121c6565b610503565b6040516001600160601b0390911681526020016101b1565b6101ed610795565b60405162ffffff90911681526020016101b1565b61020961081f565b6040516101b19291906122a4565b60408051808201909152600f81526e52656769737472795365727669636560881b60208201525b6040516101b191906122d2565b610260600080516020612a3983398151915281565b6040519081526020016101b1565b61032a61027c3660046122f6565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600080516020612a7983398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016101b1565b6101a56103953660046122f6565b610953565b6103a2610a06565b6040516001600160a01b0390911681526020016101b1565b6101cd6103c8366004612451565b610a22565b6101cd610bc3565b6102096103e33660046121c6565b610c3e565b6103a2610d80565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed90154610260565b61023e6040518060400160405280600f81526020016e52656769737472795365727669636560881b81525081565b610458610453366004612523565b610dfb565b005b610462610f55565b6040516001600160401b0390911681526020016101b1565b6101ed610488366004612584565b610f76565b6101cd61049b366004612451565b610fc7565b6104a86110f1565b60405160ff90911681526020016101b1565b6104586104c8366004612523565b611174565b6102096104db36600461259d565b61127d565b6103a2600181565b610260600081565b6102096104fe3660046121c6565b6114ca565b6040516301ffc9a760e01b8152600090829082906001600160a01b038316906301ffc9a79061053d90633111e9af60e01b906004016125e8565b602060405180830381865afa925050508015610576575060408051601f3d908101601f1916820190925261057391810190612608565b60015b61058257506000610585565b90505b80156105a45760405163087cada760e21b815260040160405180910390fd5b60006105ae610a06565b604051630a57ebcf60e11b81526001600160a01b038216600482018190529192506314afd79e90602401602060405180830381865afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190612630565b6001600160a01b0316336001600160a01b03161461064a5760405163778d468d60e11b815260040160405180910390fd5b60006040518060e0016040528061065f600090565b6001600160601b03168152604051636939560f60e11b81526001600160a01b038516600482018190526020909201919063d272ac1e90602401602060405180830381865afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612658565b6001600160601b03168152602001601e60ff168152600060208083018290526001600160a01b03808b166040808601919091526001606086015280519283018152928252608090930152516352efcf2760e11b815291925083169063a5df9e4e90610748908490600401612675565b6020604051808303816000875af1158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190612658565b9695505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612688565b905090565b61082761212f565b60606000600080516020612a3983398151915290506040518060e0016040528061084f600090565b6001600160601b0390811682528354600160a01b908190049091166020830152600184015490810460ff9081166040840152600160a81b820416151560608301523060808301526001600160a01b031660a082015260028301805460c0909201916108b9906126a5565b80601f01602080910402602001604051908101604052809291908181526020018280546108e5906126a5565b80156109325780601f1061090757610100808354040283529160200191610932565b820191906000526020600020905b81548152906001019060200180831161091557829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b600080600080516020612a7983398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff91906126df565b1192915050565b600080516020612a39833981519152546001600160a01b031690565b600080610a2d610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612658565b90506001600160a01b038216635f1561518260d26040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865afa158015610afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1f9190612608565b1515600003610b4157604051632bb46a5f60e01b815260040160405180910390fd5b610b4c8460d2611654565b6040516352efcf2760e11b81526001600160a01b0383169063a5df9e4e90610b78908790600401612675565b6020604051808303816000875af1158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190612658565b949350505050565b6000600080516020612a3983398151915254604051636939560f60e11b81523060048201526001600160a01b039091169063d272ac1e90602401602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612658565b610c4661212f565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a790610c7c90630de7806f60e41b906004016125e8565b602060405180830381865afa158015610c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbd9190612608565b1515600003610cdf57604051636795c76360e01b815260040160405180910390fd5b610cec8360325b3361178b565b90925090506000610cfb610a06565b6040516352efcf2760e11b81529091506001600160a01b0382169063a5df9e4e90610d2a908690600401612675565b6020604051808303816000875af1158015610d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6d9190612658565b6001600160601b03168352509092909150565b6000600080516020612a3983398151915254604051630a57ebcf60e11b81523060048201526001600160a01b03909116906314afd79e90602401602060405180830381865afa158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612630565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610e1d610795565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8191906126f8565b600080516020612a598339815191528054600160401b900460ff1680610eb4575080546001600160401b03808416911610155b15610ed25760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610efd8585611963565b610f0683611b9e565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b600061081a600080516020612a59833981519152546001600160401b031690565b6000600080516020612a798339815191526001018281548110610f9b57610f9b612721565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b600080610fd2610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa15801561101c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110409190612658565b90506001600160a01b038216635f1561518260dc6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c49190612608565b15156000036110e657604051632bb46a5f60e01b815260040160405180910390fd5b610b4c8460dc611654565b60006110fb610795565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612742565b600080516020612a598339815191528054600160401b810460ff1615906001600160401b03166000811580156111a75750825b90506000826001600160401b031660011480156111c35750303b155b9050811580156111d1575080155b156111ef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561121957845460ff60401b1916600160401b1785555b6112238888611963565b61122d8787611ba6565b831561127357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b61128561212f565b6040516301ffc9a760e01b81526060906001600160a01b038616906301ffc9a7906112bb90631b1599eb60e21b906004016125e8565b602060405180830381865afa1580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc9190612608565b151560000361131e57604051634138dc2760e11b815260040160405180910390fd5b61132985858561178b565b90925090506000611338610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a69190612658565b604051635f15615160e01b81526001600160601b038216600482015260ff881660248201529091506001600160a01b03831690635f15615190604401602060405180830381865afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190612608565b151560000361144557604051632bb46a5f60e01b815260040160405180910390fd5b6040516352efcf2760e11b81526001600160a01b0383169063a5df9e4e90611471908790600401612675565b6020604051808303816000875af1158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190612658565b6001600160601b0316845250505b935093915050565b6114d261212f565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a79061150890631b4612f160e31b906004016125e8565b602060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190612608565b151560000361156b57604051635458064d60e11b815260040160405180910390fd5b611576836028610ce6565b90925090506000611585610a06565b604051630a57ebcf60e11b81526001600160a01b038216600482018190529192506314afd79e90602401602060405180830381865afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190612630565b6001600160a01b0316336001600160a01b0316146116215760405163778d468d60e11b815260040160405180910390fd5b600160a08401526040516352efcf2760e11b81526001600160a01b0382169063a5df9e4e90610d2a908690600401612675565b60808201516001600160a01b031615611696576080820151604051634726455360e11b81526001600160a01b0390911660048201526024015b60405180910390fd5b61169e610a06565b60a083015160405163c3c5a54760e01b81526001600160a01b03918216600482015291169063c3c5a54790602401602060405180830381865afa1580156116e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170d9190612608565b80611723575060a08201516001600160a01b0316155b156117525760a082015160405163711c133360e01b81526001600160a01b03909116600482015260240161168d565b604082015160ff82811691161461178757604080830151905163f503452760e01b815260ff909116600482015260240161168d565b5050565b61179361212f565b6060846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156117d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117fb91908101906127a4565b608082015191935091506001600160a01b03868116911614611841576080820151604051634726455360e11b81526001600160a01b03909116600482015260240161168d565b611849610a06565b60405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015611891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b59190612608565b806118d65750826001600160a01b03168260a001516001600160a01b031614155b156119055760a082015160405163711c133360e01b81526001600160a01b03909116600482015260240161168d565b6001600160a01b038516330361192e576040516317faf4db60e11b815260040160405180910390fd5b604082015160ff8581169116146114c257604080830151905163f503452760e01b815260ff909116600482015260240161168d565b61196b611e68565b600080516020612a79833981519152600061199b600080516020612a59833981519152546001600160401b031690565b905060006119a7610795565b9050816001600160401b03166001036119d45760028301805462ffffff191662ffffff8316179055611a22565b600283015462ffffff90811690821611611a225760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b604482015260640161168d565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b03808916928401929092529086169082015260608101611a964290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610f469083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b610173611e68565b600080516020612a598339815191528054600160401b810460ff1615906001600160401b0316600081158015611bd95750825b90506000826001600160401b03166001148015611bf55750303b155b905081158015611c03575080155b15611c215760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c4b57845460ff60401b1916600160401b1785555b600087611c566110f1565b604080516001600160a01b03909316602084015260ff9091169082015260600160408051601f1981840301815290829052631585e94960e21b8252915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90635617a52490611cc2908b90869060040161289c565b600060405180830381865af4158015611cdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0791908101906128af565b60405163257b1f8160e11b815290915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90634af63f0290611d4690859085906004016128e3565b602060405180830381865af4158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190612630565b604051636939560f60e11b81526001600160a01b03821660048201819052919250829160009163d272ac1e90602401602060405180830381865afa158015611dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df79190612658565b9050611e0483828e611ea1565b611e1463183a225360e11b611f25565b50505050508315611e5f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600080516020612a5983398151915254600160401b900460ff16611e9f57604051631afcd79f60e31b815260040160405180910390fd5b565b6000611ecf60408051808201909152600f81526e52656769737472795365727669636560881b602082015290565b611ed76110f1565b604051602001611ee8929190612905565b6040516020818303038152906040529050611f0f8484611f06602890565b60008686611f4a565b611f1f631b4612f160e31b611f25565b50505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6001600160a01b038616611fa05760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a5247422d3031303a52454749535452595f5a45524f0000000000604482015260640161168d565b6040516301ffc9a760e01b815286906001600160a01b038216906301ffc9a790611fd590636882e63f60e11b906004016125e8565b602060405180830381865afa158015611ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120169190612608565b6120625760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a5247422d3031313a4e4f545f5245474953545259000000000000604482015260640161168d565b6001600160a01b03818116600160a01b6001600160601b038916810291909117600080516020612a398339815191529081557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30180546001600160a01b031961ffff60a01b1990911660ff8b1690940260ff60a81b191693909317600160a81b8915150217929092169286169290921790557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30261211e8482612979565b5061127363a6d3826560e01b611f25565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561217f57600080fd5b81356001600160e01b03198116811461219757600080fd5b9392505050565b6001600160a01b03811681146121b357600080fd5b50565b80356121c18161219e565b919050565b6000602082840312156121d857600080fd5b81356121978161219e565b60005b838110156121fe5781810151838201526020016121e6565b50506000910152565b6000815180845261221f8160208601602086016121e3565b601f01601f19169290920160200192915050565b60006001600160601b038083511684528060208401511660208501525060ff6040830151166040840152606082015115156060840152608082015160018060a01b0380821660808601528060a08501511660a0860152505060c082015160e060c0850152610bbb60e0850182612207565b6040815260006122b76040830185612233565b82810360208401526122c98185612207565b95945050505050565b6020815260006121976020830184612207565b62ffffff811681146121b357600080fd5b60006020828403121561230857600080fd5b8135612197816122e5565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561234b5761234b612313565b60405290565b604051601f8201601f191681016001600160401b038111828210171561237957612379612313565b604052919050565b6001600160601b03811681146121b357600080fd5b80356121c181612381565b60ff811681146121b357600080fd5b80356121c1816123a1565b80151581146121b357600080fd5b80356121c1816123bb565b60006001600160401b038211156123ed576123ed612313565b50601f01601f191660200190565b600082601f83011261240c57600080fd5b813561241f61241a826123d4565b612351565b81815284602083860101111561243457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561246357600080fd5b81356001600160401b038082111561247a57600080fd5b9083019060e0828603121561248e57600080fd5b612496612329565b61249f83612396565b81526124ad60208401612396565b60208201526124be604084016123b0565b60408201526124cf606084016123c9565b60608201526124e0608084016121b6565b60808201526124f160a084016121b6565b60a082015260c08301358281111561250857600080fd5b612514878286016123fb565b60c08301525095945050505050565b60008060006060848603121561253857600080fd5b83356125438161219e565b925060208401356125538161219e565b915060408401356001600160401b0381111561256e57600080fd5b61257a868287016123fb565b9150509250925092565b60006020828403121561259657600080fd5b5035919050565b6000806000606084860312156125b257600080fd5b83356125bd8161219e565b925060208401356125cd816123a1565b915060408401356125dd8161219e565b809150509250925092565b6001600160e01b031991909116815260200190565b80516121c1816123bb565b60006020828403121561261a57600080fd5b8151612197816123bb565b80516121c18161219e565b60006020828403121561264257600080fd5b81516121978161219e565b80516121c181612381565b60006020828403121561266a57600080fd5b815161219781612381565b6020815260006121976020830184612233565b60006020828403121561269a57600080fd5b8151612197816122e5565b600181811c908216806126b957607f821691505b6020821081036126d957634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156126f157600080fd5b5051919050565b60006020828403121561270a57600080fd5b81516001600160401b038116811461219757600080fd5b634e487b7160e01b600052603260045260246000fd5b80516121c1816123a1565b60006020828403121561275457600080fd5b8151612197816123a1565b600082601f83011261277057600080fd5b815161277e61241a826123d4565b81815284602083860101111561279357600080fd5b610bbb8260208301602087016121e3565b600080604083850312156127b757600080fd5b82516001600160401b03808211156127ce57600080fd5b9084019060e082870312156127e257600080fd5b6127ea612329565b6127f38361264d565b81526128016020840161264d565b602082015261281260408401612737565b6040820152612823606084016125fd565b606082015261283460808401612625565b608082015261284560a08401612625565b60a082015260c08301518281111561285c57600080fd5b6128688882860161275f565b60c083015250602086015190945091508082111561288557600080fd5b506128928582860161275f565b9150509250929050565b6040815260006122b76040830185612207565b6000602082840312156128c157600080fd5b81516001600160401b038111156128d757600080fd5b610bbb8482850161275f565b6040815260006128f66040830185612207565b90508260208301529392505050565b6040815260006129186040830185612207565b905060ff831660208301529392505050565b601f82111561297457600081815260208120601f850160051c810160208610156129515750805b601f850160051c820191505b818110156129705782815560010161295d565b5050505b505050565b81516001600160401b0381111561299257612992612313565b6129a6816129a084546126a5565b8461292a565b602080601f8311600181146129db57600084156129c35750858301515b600019600386901b1c1916600185901b178555612970565b600085815260208120601f198616915b82811015612a0a578886015182559484019460019091019084016129eb565b5085821015612a285787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a26469706673582212204a8fa0eba55f83835553358a2ffeba5593573f4d3a21080e5857243634768a1164736f6c63430008140033",
808
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c8063893d20e8116100de578063c2bf08c811610097578063d943342d11610071578063d943342d146104cd578063e285c9c4146104e0578063ed841d0c146104e8578063fdd9ec7d146104f057600080fd5b8063c2bf08c81461048d578063cde749f4146104a0578063cf7a1d77146104ba57600080fd5b8063893d20e8146103e8578063946dfcfe146103f0578063a3f4df7e14610417578063a745e3df14610445578063b3c650151461045a578063b88da7591461047a57600080fd5b80634d459c90116101305780634d459c901461026e5780634f421333146103875780635ab1bd531461039a5780635c992fed146103ba578063644c45e0146103cd578063834af153146103d557600080fd5b806301ffc9a71461017857806309824a80146101ba5780630d8e6e2c146101e55780630fec111c1461020157806317d7de7c146102175780631eff4b221461024b575b600080fd5b6101a561018636600461216d565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101cd6101c83660046121c6565b610503565b6040516001600160601b0390911681526020016101b1565b6101ed610795565b60405162ffffff90911681526020016101b1565b61020961081f565b6040516101b19291906122a4565b60408051808201909152600f81526e52656769737472795365727669636560881b60208201525b6040516101b191906122d2565b610260600080516020612a3983398151915281565b6040519081526020016101b1565b61032a61027c3660046122f6565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600080516020612a7983398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016101b1565b6101a56103953660046122f6565b610953565b6103a2610a06565b6040516001600160a01b0390911681526020016101b1565b6101cd6103c8366004612451565b610a22565b6101cd610bc3565b6102096103e33660046121c6565b610c3e565b6103a2610d80565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed90154610260565b61023e6040518060400160405280600f81526020016e52656769737472795365727669636560881b81525081565b610458610453366004612523565b610dfb565b005b610462610f55565b6040516001600160401b0390911681526020016101b1565b6101ed610488366004612584565b610f76565b6101cd61049b366004612451565b610fc7565b6104a86110f1565b60405160ff90911681526020016101b1565b6104586104c8366004612523565b611174565b6102096104db36600461259d565b61127d565b6103a2600181565b610260600081565b6102096104fe3660046121c6565b6114ca565b6040516301ffc9a760e01b8152600090829082906001600160a01b038316906301ffc9a79061053d90633111e9af60e01b906004016125e8565b602060405180830381865afa925050508015610576575060408051601f3d908101601f1916820190925261057391810190612608565b60015b61058257506000610585565b90505b80156105a45760405163087cada760e21b815260040160405180910390fd5b60006105ae610a06565b604051630a57ebcf60e11b81526001600160a01b038216600482018190529192506314afd79e90602401602060405180830381865afa1580156105f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106199190612630565b6001600160a01b0316336001600160a01b03161461064a5760405163778d468d60e11b815260040160405180910390fd5b60006040518060e0016040528061065f600090565b6001600160601b03168152604051636939560f60e11b81526001600160a01b038516600482018190526020909201919063d272ac1e90602401602060405180830381865afa1580156106b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d99190612658565b6001600160601b03168152602001601e60ff168152600060208083018290526001600160a01b03808b166040808601919091526001606086015280519283018152928252608090930152516352efcf2760e11b815291925083169063a5df9e4e90610748908490600401612675565b6020604051808303816000875af1158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190612658565b9695505050505050565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156107f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612688565b905090565b61082761212f565b60606000600080516020612a3983398151915290506040518060e0016040528061084f600090565b6001600160601b0390811682528354600160a01b908190049091166020830152600184015490810460ff9081166040840152600160a81b820416151560608301523060808301526001600160a01b031660a082015260028301805460c0909201916108b9906126a5565b80601f01602080910402602001604051908101604052809291908181526020018280546108e5906126a5565b80156109325780601f1061090757610100808354040283529160200191610932565b820191906000526020600020905b81548152906001019060200180831161091557829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b600080600080516020612a7983398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af41580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff91906126df565b1192915050565b600080516020612a39833981519152546001600160a01b031690565b600080610a2d610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa158015610a77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9b9190612658565b90506001600160a01b038216635f1561518260d26040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865afa158015610afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1f9190612608565b1515600003610b4157604051632bb46a5f60e01b815260040160405180910390fd5b610b4c8460d2611654565b6040516352efcf2760e11b81526001600160a01b0383169063a5df9e4e90610b78908790600401612675565b6020604051808303816000875af1158015610b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbb9190612658565b949350505050565b6000600080516020612a3983398151915254604051636939560f60e11b81523060048201526001600160a01b039091169063d272ac1e90602401602060405180830381865afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612658565b610c4661212f565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a790610c7c90630de7806f60e41b906004016125e8565b602060405180830381865afa158015610c99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbd9190612608565b1515600003610cdf57604051636795c76360e01b815260040160405180910390fd5b610cec8360325b3361178b565b90925090506000610cfb610a06565b6040516352efcf2760e11b81529091506001600160a01b0382169063a5df9e4e90610d2a908690600401612675565b6020604051808303816000875af1158015610d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6d9190612658565b6001600160601b03168352509092909150565b6000600080516020612a3983398151915254604051630a57ebcf60e11b81523060048201526001600160a01b03909116906314afd79e90602401602060405180830381865afa158015610dd7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612630565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610e1d610795565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610e5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8191906126f8565b600080516020612a598339815191528054600160401b900460ff1680610eb4575080546001600160401b03808416911610155b15610ed25760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610efd8585611963565b610f0683611b9e565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b600061081a600080516020612a59833981519152546001600160401b031690565b6000600080516020612a798339815191526001018281548110610f9b57610f9b612721565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b600080610fd2610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa15801561101c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110409190612658565b90506001600160a01b038216635f1561518260dc6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865afa1580156110a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c49190612608565b15156000036110e657604051632bb46a5f60e01b815260040160405180910390fd5b610b4c8460dc611654565b60006110fb610795565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611150573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081a9190612742565b600080516020612a598339815191528054600160401b810460ff1615906001600160401b03166000811580156111a75750825b90506000826001600160401b031660011480156111c35750303b155b9050811580156111d1575080155b156111ef5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561121957845460ff60401b1916600160401b1785555b6112238888611963565b61122d8787611ba6565b831561127357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b61128561212f565b6040516301ffc9a760e01b81526060906001600160a01b038616906301ffc9a7906112bb90631b1599eb60e21b906004016125e8565b602060405180830381865afa1580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc9190612608565b151560000361131e57604051634138dc2760e11b815260040160405180910390fd5b61132985858561178b565b90925090506000611338610a06565b604051636939560f60e11b81523360048201529091506000906001600160a01b0383169063d272ac1e90602401602060405180830381865afa158015611382573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a69190612658565b604051635f15615160e01b81526001600160601b038216600482015260ff881660248201529091506001600160a01b03831690635f15615190604401602060405180830381865afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190612608565b151560000361144557604051632bb46a5f60e01b815260040160405180910390fd5b6040516352efcf2760e11b81526001600160a01b0383169063a5df9e4e90611471908790600401612675565b6020604051808303816000875af1158015611490573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b49190612658565b6001600160601b0316845250505b935093915050565b6114d261212f565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a79061150890631b4612f160e31b906004016125e8565b602060405180830381865afa158015611525573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115499190612608565b151560000361156b57604051635458064d60e11b815260040160405180910390fd5b611576836028610ce6565b90925090506000611585610a06565b604051630a57ebcf60e11b81526001600160a01b038216600482018190529192506314afd79e90602401602060405180830381865afa1580156115cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f09190612630565b6001600160a01b0316336001600160a01b0316146116215760405163778d468d60e11b815260040160405180910390fd5b600160a08401526040516352efcf2760e11b81526001600160a01b0382169063a5df9e4e90610d2a908690600401612675565b60808201516001600160a01b031615611696576080820151604051634726455360e11b81526001600160a01b0390911660048201526024015b60405180910390fd5b61169e610a06565b60a083015160405163c3c5a54760e01b81526001600160a01b03918216600482015291169063c3c5a54790602401602060405180830381865afa1580156116e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170d9190612608565b80611723575060a08201516001600160a01b0316155b156117525760a082015160405163711c133360e01b81526001600160a01b03909116600482015260240161168d565b604082015160ff82811691161461178757604080830151905163f503452760e01b815260ff909116600482015260240161168d565b5050565b61179361212f565b6060846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156117d3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117fb91908101906127a4565b608082015191935091506001600160a01b03868116911614611841576080820151604051634726455360e11b81526001600160a01b03909116600482015260240161168d565b611849610a06565b60405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015611891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b59190612608565b806118d65750826001600160a01b03168260a001516001600160a01b031614155b156119055760a082015160405163711c133360e01b81526001600160a01b03909116600482015260240161168d565b6001600160a01b038516330361192e576040516317faf4db60e11b815260040160405180910390fd5b604082015160ff8581169116146114c257604080830151905163f503452760e01b815260ff909116600482015260240161168d565b61196b611e68565b600080516020612a79833981519152600061199b600080516020612a59833981519152546001600160401b031690565b905060006119a7610795565b9050816001600160401b03166001036119d45760028301805462ffffff191662ffffff8316179055611a22565b600283015462ffffff90811690821611611a225760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b604482015260640161168d565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b03808916928401929092529086169082015260608101611a964290565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610f469083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b610173611e68565b600080516020612a598339815191528054600160401b810460ff1615906001600160401b0316600081158015611bd95750825b90506000826001600160401b03166001148015611bf55750303b155b905081158015611c03575080155b15611c215760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611c4b57845460ff60401b1916600160401b1785555b600087611c566110f1565b604080516001600160a01b03909316602084015260ff9091169082015260600160408051601f1981840301815290829052631585e94960e21b8252915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90635617a52490611cc2908b90869060040161289c565b600060405180830381865af4158015611cdf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0791908101906128af565b60405163257b1f8160e11b815290915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90634af63f0290611d4690859085906004016128e3565b602060405180830381865af4158015611d63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d879190612630565b604051636939560f60e11b81526001600160a01b03821660048201819052919250829160009163d272ac1e90602401602060405180830381865afa158015611dd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df79190612658565b9050611e0483828e611ea1565b611e1463183a225360e11b611f25565b50505050508315611e5f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b600080516020612a5983398151915254600160401b900460ff16611e9f57604051631afcd79f60e31b815260040160405180910390fd5b565b6000611ecf60408051808201909152600f81526e52656769737472795365727669636560881b602082015290565b611ed76110f1565b604051602001611ee8929190612905565b6040516020818303038152906040529050611f0f8484611f06602890565b60008686611f4a565b611f1f631b4612f160e31b611f25565b50505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6001600160a01b038616611fa05760405162461bcd60e51b815260206004820152601b60248201527f4552524f523a5247422d3031303a52454749535452595f5a45524f0000000000604482015260640161168d565b6040516301ffc9a760e01b815286906001600160a01b038216906301ffc9a790611fd590636882e63f60e11b906004016125e8565b602060405180830381865afa158015611ff2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120169190612608565b6120625760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a5247422d3031313a4e4f545f5245474953545259000000000000604482015260640161168d565b6001600160a01b03818116600160a01b6001600160601b038916810291909117600080516020612a398339815191529081557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30180546001600160a01b031961ffff60a01b1990911660ff8b1690940260ff60a81b191693909317600160a81b8915150217929092169286169290921790557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30261211e8482612979565b5061127363a6d3826560e01b611f25565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561217f57600080fd5b81356001600160e01b03198116811461219757600080fd5b9392505050565b6001600160a01b03811681146121b357600080fd5b50565b80356121c18161219e565b919050565b6000602082840312156121d857600080fd5b81356121978161219e565b60005b838110156121fe5781810151838201526020016121e6565b50506000910152565b6000815180845261221f8160208601602086016121e3565b601f01601f19169290920160200192915050565b60006001600160601b038083511684528060208401511660208501525060ff6040830151166040840152606082015115156060840152608082015160018060a01b0380821660808601528060a08501511660a0860152505060c082015160e060c0850152610bbb60e0850182612207565b6040815260006122b76040830185612233565b82810360208401526122c98185612207565b95945050505050565b6020815260006121976020830184612207565b62ffffff811681146121b357600080fd5b60006020828403121561230857600080fd5b8135612197816122e5565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561234b5761234b612313565b60405290565b604051601f8201601f191681016001600160401b038111828210171561237957612379612313565b604052919050565b6001600160601b03811681146121b357600080fd5b80356121c181612381565b60ff811681146121b357600080fd5b80356121c1816123a1565b80151581146121b357600080fd5b80356121c1816123bb565b60006001600160401b038211156123ed576123ed612313565b50601f01601f191660200190565b600082601f83011261240c57600080fd5b813561241f61241a826123d4565b612351565b81815284602083860101111561243457600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561246357600080fd5b81356001600160401b038082111561247a57600080fd5b9083019060e0828603121561248e57600080fd5b612496612329565b61249f83612396565b81526124ad60208401612396565b60208201526124be604084016123b0565b60408201526124cf606084016123c9565b60608201526124e0608084016121b6565b60808201526124f160a084016121b6565b60a082015260c08301358281111561250857600080fd5b612514878286016123fb565b60c08301525095945050505050565b60008060006060848603121561253857600080fd5b83356125438161219e565b925060208401356125538161219e565b915060408401356001600160401b0381111561256e57600080fd5b61257a868287016123fb565b9150509250925092565b60006020828403121561259657600080fd5b5035919050565b6000806000606084860312156125b257600080fd5b83356125bd8161219e565b925060208401356125cd816123a1565b915060408401356125dd8161219e565b809150509250925092565b6001600160e01b031991909116815260200190565b80516121c1816123bb565b60006020828403121561261a57600080fd5b8151612197816123bb565b80516121c18161219e565b60006020828403121561264257600080fd5b81516121978161219e565b80516121c181612381565b60006020828403121561266a57600080fd5b815161219781612381565b6020815260006121976020830184612233565b60006020828403121561269a57600080fd5b8151612197816122e5565b600181811c908216806126b957607f821691505b6020821081036126d957634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156126f157600080fd5b5051919050565b60006020828403121561270a57600080fd5b81516001600160401b038116811461219757600080fd5b634e487b7160e01b600052603260045260246000fd5b80516121c1816123a1565b60006020828403121561275457600080fd5b8151612197816123a1565b600082601f83011261277057600080fd5b815161277e61241a826123d4565b81815284602083860101111561279357600080fd5b610bbb8260208301602087016121e3565b600080604083850312156127b757600080fd5b82516001600160401b03808211156127ce57600080fd5b9084019060e082870312156127e257600080fd5b6127ea612329565b6127f38361264d565b81526128016020840161264d565b602082015261281260408401612737565b6040820152612823606084016125fd565b606082015261283460808401612625565b608082015261284560a08401612625565b60a082015260c08301518281111561285c57600080fd5b6128688882860161275f565b60c083015250602086015190945091508082111561288557600080fd5b506128928582860161275f565b9150509250929050565b6040815260006122b76040830185612207565b6000602082840312156128c157600080fd5b81516001600160401b038111156128d757600080fd5b610bbb8482850161275f565b6040815260006128f66040830185612207565b90508260208301529392505050565b6040815260006129186040830185612207565b905060ff831660208301529392505050565b601f82111561297457600081815260208120601f850160051c810160208610156129515750805b601f850160051c820191505b818110156129705782815560010161295d565b5050505b505050565b81516001600160401b0381111561299257612992612313565b6129a6816129a084546126a5565b8461292a565b602080601f8311600181146129db57600084156129c35750858301515b600019600386901b1c1916600185901b178555612970565b600085815260208120601f198616915b82811015612a0a578886015182559484019460019091019084016129eb565b5085821015612a285787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a26469706673582212204a8fa0eba55f83835553358a2ffeba5593573f4d3a21080e5857243634768a1164736f6c63430008140033",
1175
+ "bytecode": "0x60806040523480156200001157600080fd5b50620000546301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600280546001600160a01b031916331790556200007062000076565b6200012a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000c75760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001275780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612fd9806200013a6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063834af1531161010f578063b88da759116100a2578063cf7a1d7711610071578063cf7a1d77146105c4578063e285c9c4146105d7578063ed841d0c146105df578063fdd9ec7d146105e757600080fd5b8063b88da7591461057c578063bf7e214f1461058f578063c2bf08c814610597578063cde749f4146105aa57600080fd5b8063946dfcfe116100de578063946dfcfe146104f4578063a3f4df7e1461051b578063a745e3df14610549578063b3c650151461055c57600080fd5b8063834af153146104b1578063893d20e8146104c45780638fb36037146104cc5780638fbc2d81146104e157600080fd5b80634f42133311610187578063644c45e011610156578063644c45e0146104605780637286e5e5146104785780637a9e5e4b1461048b5780638105cc7f1461049e57600080fd5b80634f421333146103ea5780635ab1bd53146103fd5780635c992fed146104225780635d9662891461044d57600080fd5b8063138461e0116101c3578063138461e01461025e57806317d7de7c146102685780631eff4b221461029c5780634d459c90146102d157600080fd5b806301ffc9a7146101ea5780630d8e6e2c1461022c5780630fec111c14610248575b600080fd5b6102176101f8366004612533565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102346105fa565b60405162ffffff9091168152602001610223565b610250610684565b60405161022392919061262d565b6102666107d7565b005b60408051808201909152600f81526e52656769737472795365727669636560881b60208201525b604051610223919061265b565b6102c37f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610223565b61038d6102df36600461267f565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600080516020612f8483398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610223565b6102176103f836600461267f565b6109f9565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610223565b6104356104303660046127ff565b610aac565b6040516001600160601b039091168152602001610223565b61025061045b3660046128d1565b610b3f565b600154600160a01b90046001600160601b0316610435565b6102506104863660046128d1565b610cd1565b61026661049936600461290a565b610d80565b6104356104ac3660046127ff565b610e07565b6102506104bf36600461290a565b610e1d565b61040a610fa5565b6104d46110be565b6040516102239190612927565b6102506104ef3660046128d1565b6110f7565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546102c3565b61028f6040518060400160405280600f81526020016e52656769737472795365727669636560881b81525081565b61026661055736600461293c565b6111a6565b610564611300565b6040516001600160401b039091168152602001610223565b61023461058a36600461299d565b611321565b61040a611372565b6104356105a53660046127ff565b61138e565b6105b26113a4565b60405160ff9091168152602001610223565b6102666105d236600461293c565b611427565b61040a600181565b6102c3600081565b6102506105f536600461290a565b611530565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801561065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f91906129b6565b905090565b61068c6124f5565b606060007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806106d86001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610720610fa5565b6001600160a01b0316815260200182600101805461073d906129d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610769906129d3565b80156107b65780601f1061078b576101008083540402835291602001916107b6565b820191906000526020600020905b81548152906001019060200180831161079957829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d9190612a18565b156108a4576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b03166108cd5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612a18565b610962576040516372657a5160e01b81526001600160a01b038216600482015260240161089b565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d09190612a40565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b600080600080516020612f8483398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190612a5d565b1192915050565b6000610abb335b6000366115df565b610ac68260d26116e5565b6001546040516352efcf2760e11b81526001600160a01b039091169063a5df9e4e90610af6908590600401612a76565b6020604051808303816000875af1158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b399190612a40565b92915050565b610b476124f5565b6060610b5233610ab3565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a790610b8590633ad74e8160e01b90600401612927565b602060405180830381865afa158015610ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc69190612a18565b610be357604051637a71998760e01b815260040160405180910390fd5b610bf084606e5b856117f0565b6001546040516352efcf2760e11b81529294509092506001600160a01b03169063a5df9e4e90610c24908590600401612a76565b6020604051808303816000875af1158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190612a40565b6001600160601b0316825260408051629c230f60e51b815290516001600160a01b0386169163138461e091600480830192600092919082900301818387803b158015610cb257600080fd5b505af1158015610cc6573d6000803e3d6000fd5b505050509250929050565b610cd96124f5565b6060610ce433610ab3565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a790610d1790630b3506e360e01b90600401612927565b602060405180830381865afa158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d589190612a18565b610d7557604051636f61f64160e01b815260040160405180910390fd5b610bf084608c610bea565b33610d89611372565b6001600160a01b0316816001600160a01b031614610dc45760405162d1953b60e31b81526001600160a01b038216600482015260240161089b565b816001600160a01b03163b600003610dfa576040516361798f2f60e11b81526001600160a01b038316600482015260240161089b565b610e03826119f6565b5050565b6000610e1233610ab3565b610ac68260506116e5565b610e256124f5565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a790610e5b9063aa67ed7b60e01b90600401612927565b602060405180830381865afa158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9c9190612a18565b610eb957604051636795c76360e01b815260040160405180910390fd5b610ec68360465b336117f0565b6001546040516352efcf2760e11b81529294509092506001600160a01b03169063a5df9e4e90610efa908590600401612a76565b6020604051808303816000875af1158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3d9190612a40565b6001600160601b0316825260408051629c230f60e51b815290516001600160a01b0385169163138461e091600480830192600092919082900301818387803b158015610f8857600080fd5b505af1158015610f9c573d6000803e3d6000fd5b50505050915091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e9190612a18565b156110ae57600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa15801561108a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f9190612a94565b506002546001600160a01b031690565b600080516020612f44833981519152805460009190600160a01b900460ff166110e85760006110f1565b638fb3603760e01b5b91505090565b6110ff6124f5565b606061110a33610ab3565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061113d9063c8ea96c560e01b90600401612927565b602060405180830381865afa15801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e9190612a18565b61119b576040516308707e3160e41b815260040160405180910390fd5b610bf0846078610bea565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6111c86105fa565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122c9190612ab1565b600080516020612f648339815191528054600160401b900460ff168061125f575080546001600160401b03808416911610155b1561127d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556112a88585611a57565b6112b183611cf6565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b600061067f600080516020612f64833981519152546001600160401b031690565b6000600080516020612f84833981519152600101828154811061134657611346612ada565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b600080516020612f44833981519152546001600160a01b031690565b600061139933610ab3565b610ac68260dc6116e5565b60006113ae6105fa565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f9190612afb565b600080516020612f648339815191528054600160401b810460ff1615906001600160401b031660008115801561145a5750825b90506000826001600160401b031660011480156114765750303b155b905081158015611484575080155b156114a25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156114cc57845460ff60401b1916600160401b1785555b6114d68888611a57565b6114e08787611cfe565b831561152657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6115386124f5565b606061154333610ab3565b6040516301ffc9a760e01b81526001600160a01b038416906301ffc9a79061157690631b4612f160e31b90600401612927565b602060405180830381865afa158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b79190612a18565b6115d457604051635458064d60e11b815260040160405180910390fd5b610ec683603c610ec0565b600080516020612f4483398151915260008061161a6115fc611372565b873061160c600460008a8c612b18565b61161591612b42565b611feb565b91509150816116dd5763ffffffff8116156116ba57825460ff60a01b1916600160a01b178355611648611372565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161167793929190612b72565b600060405180830381600087803b15801561169157600080fd5b505af11580156116a5573d6000803e3d6000fd5b5050845460ff60a01b19168555506116dd9050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161089b565b505050505050565b60006080830152604082015160ff828116911614611729576040808301519051632208245760e11b815260ff8084166004830152909116602482015260440161089b565b60a08201516001600160a01b03811661175557604051630fd187d360e01b815260040160405180910390fd5b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa1580156117a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cd9190612a18565b156117eb57604051637142ceb360e11b815260040160405180910390fd5b505050565b6117f86124f5565b6060846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611838573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118609190810190612bf7565b6001600160a01b03871660808301526040820151919350915060ff8581169116146118b1576040808301519051632208245760e11b815260ff8087166004830152909116602482015260440161089b565b60a082015160ff85166046146118fe57836001600160a01b0316816001600160a01b0316146118fe5760405163dfc430cb60e01b81526001600160a01b038516600482015260240161089b565b856001600160a01b0316816001600160a01b031603611930576040516317faf4db60e11b815260040160405180910390fd5b6001600160a01b03811661195757604051630fd187d360e01b815260040160405180910390fd5b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa1580156119ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cf9190612a18565b156119ed57604051637142ceb360e11b815260040160405180910390fd5b50935093915050565b600080516020612f4483398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b611a5f6120f7565b600080516020612f848339815191526000611a8f600080516020612f64833981519152546001600160401b031690565b90506000611a9b6105fa565b9050816001600160401b0316600103611ac85760028301805462ffffff191662ffffff8316179055611b16565b600283015462ffffff90811690821611611b165760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b604482015260640161089b565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee9190612cef565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf68906112f19083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101e56120f7565b600080516020612f648339815191528054600160401b810460ff1615906001600160401b0316600081158015611d315750825b90506000826001600160401b03166001148015611d4d5750303b155b905081158015611d5b575080155b15611d795760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611da357845460ff60401b1916600160401b1785555b60008087806020019051810190611dba9190612d16565b91509150611dc782612130565b600089611dd26113a4565b604080516001600160a01b03909316602084015260ff9091169082015260600160408051601f1981840301815290829052631585e94960e21b8252915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90635617a52490611e3e9086908690600401612d5c565b600060405180830381865af4158015611e5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e839190810190612d6f565b60405163257b1f8160e11b815290915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90634af63f0290611ec29085908590600401612da3565b602060405180830381865af4158015611edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f039190612a94565b604051636939560f60e11b81526001600160a01b038216600482018190529192506000919063d272ac1e90602401602060405180830381865afa158015611f4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f729190612a40565b9050611f7e828e612144565b611f866107d7565b611f9663200cc87360e11b6121d1565b5050505050508315611fe257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161205a9190612dc5565b600060405180830381855afa9150503d8060008114612095576040519150601f19603f3d011682016040523d82523d6000602084013e61209a565b606091505b509150915081156120ec5760408151106120cc57808060200190518101906120c29190612de1565b90945092506120ec565b60208151106120ec57808060200190518101906120e99190612a18565b93505b505094509492505050565b600080516020612f6483398151915254600160401b900460ff1661212e57604051631afcd79f60e31b815260040160405180910390fd5b565b6121386120f7565b612141816121f6565b50565b600061217260408051808201909152600f81526e52656769737472795365727669636560881b602082015290565b61217a6113a4565b60405160200161218b929190612e19565b604051602081830303815290604052905060006121a784612207565b905060006121ba8583603c84888861224e565b6121ca631b4612f160e31b6121d1565b5050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6121fe6120f7565b612141816119f6565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015610b15573d6000803e3d6000fd5b61228f6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b612299828761231a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016123098382612e84565b50611fe26303fb044760e21b6121d1565b6001600160a01b0382166123705760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e657220697320300000604482015260640161089b565b600280546001600160a01b0319166001600160a01b038416179055610e03816001546001600160a01b0316156123c85760015460405163fcdbf2d960e01b81526001600160a01b03909116600482015260240161089b565b6001600160a01b0381166123ef5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036124255760405163fdeac91f60e01b81526001600160a01b038216600482015260240161089b565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526301ffc9a79061246b90632eaf856d60e11b90600401612927565b602060405180830381865afa9250505080156124a4575060408051601f3d908101601f191682019092526124a191810190612a18565b60015b6124cc5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161089b565b80610e035760405163fdeac91f60e01b81526001600160a01b038316600482015260240161089b565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561254557600080fd5b81356001600160e01b03198116811461255d57600080fd5b9392505050565b60005b8381101561257f578181015183820152602001612567565b50506000910152565b600081518084526125a0816020860160208601612564565b601f01601f19169290920160200192915050565b60006001600160601b038083511684528060208401511660208501525060ff6040830151166040840152606082015115156060840152608082015160018060a01b0380821660808601528060a08501511660a0860152505060c082015160e060c085015261262560e0850182612588565b949350505050565b60408152600061264060408301856125b4565b82810360208401526126528185612588565b95945050505050565b60208152600061255d6020830184612588565b62ffffff8116811461214157600080fd5b60006020828403121561269157600080fd5b813561255d8161266e565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156126d4576126d461269c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156127025761270261269c565b604052919050565b6001600160601b038116811461214157600080fd5b803561272a8161270a565b919050565b60ff8116811461214157600080fd5b803561272a8161272f565b801515811461214157600080fd5b803561272a81612749565b6001600160a01b038116811461214157600080fd5b803561272a81612762565b60006001600160401b0382111561279b5761279b61269c565b50601f01601f191660200190565b600082601f8301126127ba57600080fd5b81356127cd6127c882612782565b6126da565b8181528460208386010111156127e257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561281157600080fd5b81356001600160401b038082111561282857600080fd5b9083019060e0828603121561283c57600080fd5b6128446126b2565b61284d8361271f565b815261285b6020840161271f565b602082015261286c6040840161273e565b604082015261287d60608401612757565b606082015261288e60808401612777565b608082015261289f60a08401612777565b60a082015260c0830135828111156128b657600080fd5b6128c2878286016127a9565b60c08301525095945050505050565b600080604083850312156128e457600080fd5b82356128ef81612762565b915060208301356128ff81612762565b809150509250929050565b60006020828403121561291c57600080fd5b813561255d81612762565b6001600160e01b031991909116815260200190565b60008060006060848603121561295157600080fd5b833561295c81612762565b9250602084013561296c81612762565b915060408401356001600160401b0381111561298757600080fd5b612993868287016127a9565b9150509250925092565b6000602082840312156129af57600080fd5b5035919050565b6000602082840312156129c857600080fd5b815161255d8161266e565b600181811c908216806129e757607f821691505b602082108103612a0757634e487b7160e01b600052602260045260246000fd5b50919050565b805161272a81612749565b600060208284031215612a2a57600080fd5b815161255d81612749565b805161272a8161270a565b600060208284031215612a5257600080fd5b815161255d8161270a565b600060208284031215612a6f57600080fd5b5051919050565b60208152600061255d60208301846125b4565b805161272a81612762565b600060208284031215612aa657600080fd5b815161255d81612762565b600060208284031215612ac357600080fd5b81516001600160401b038116811461255d57600080fd5b634e487b7160e01b600052603260045260246000fd5b805161272a8161272f565b600060208284031215612b0d57600080fd5b815161255d8161272f565b60008085851115612b2857600080fd5b83861115612b3557600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015612b6a5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082601f830112612bc357600080fd5b8151612bd16127c882612782565b818152846020838601011115612be657600080fd5b612625826020830160208701612564565b60008060408385031215612c0a57600080fd5b82516001600160401b0380821115612c2157600080fd5b9084019060e08287031215612c3557600080fd5b612c3d6126b2565b612c4683612a35565b8152612c5460208401612a35565b6020820152612c6560408401612af0565b6040820152612c7660608401612a0d565b6060820152612c8760808401612a89565b6080820152612c9860a08401612a89565b60a082015260c083015182811115612caf57600080fd5b612cbb88828601612bb2565b60c0830152506020860151909450915080821115612cd857600080fd5b50612ce585828601612bb2565b9150509250929050565b600060208284031215612d0157600080fd5b815164ffffffffff8116811461255d57600080fd5b60008060408385031215612d2957600080fd5b8251612d3481612762565b60208401519092506001600160401b03811115612d5057600080fd5b612ce585828601612bb2565b6040815260006126406040830185612588565b600060208284031215612d8157600080fd5b81516001600160401b03811115612d9757600080fd5b61262584828501612bb2565b604081526000612db66040830185612588565b90508260208301529392505050565b60008251612dd7818460208701612564565b9190910192915050565b60008060408385031215612df457600080fd5b8251612dff81612749565b602084015190925063ffffffff811681146128ff57600080fd5b604081526000612e2c6040830185612588565b905060ff831660208301529392505050565b601f8211156117eb57600081815260208120601f850160051c81016020861015612e655750805b601f850160051c820191505b818110156116dd57828155600101612e71565b81516001600160401b03811115612e9d57612e9d61269c565b612eb181612eab84546129d3565b84612e3e565b602080601f831160018114612ee65760008415612ece5750858301515b600019600386901b1c1916600185901b1785556116dd565b600085815260208120601f198616915b82811015612f1557888601518255948401946001909101908401612ef6565b5085821015612f335787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a2646970667358221220ca938c4f4772328ec5fcc658603dfcd0a647cff8166b1b5a6eac1f71d0a6f73464736f6c63430008140033",
1176
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c8063834af1531161010f578063b88da759116100a2578063cf7a1d7711610071578063cf7a1d77146105c4578063e285c9c4146105d7578063ed841d0c146105df578063fdd9ec7d146105e757600080fd5b8063b88da7591461057c578063bf7e214f1461058f578063c2bf08c814610597578063cde749f4146105aa57600080fd5b8063946dfcfe116100de578063946dfcfe146104f4578063a3f4df7e1461051b578063a745e3df14610549578063b3c650151461055c57600080fd5b8063834af153146104b1578063893d20e8146104c45780638fb36037146104cc5780638fbc2d81146104e157600080fd5b80634f42133311610187578063644c45e011610156578063644c45e0146104605780637286e5e5146104785780637a9e5e4b1461048b5780638105cc7f1461049e57600080fd5b80634f421333146103ea5780635ab1bd53146103fd5780635c992fed146104225780635d9662891461044d57600080fd5b8063138461e0116101c3578063138461e01461025e57806317d7de7c146102685780631eff4b221461029c5780634d459c90146102d157600080fd5b806301ffc9a7146101ea5780630d8e6e2c1461022c5780630fec111c14610248575b600080fd5b6102176101f8366004612533565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6102346105fa565b60405162ffffff9091168152602001610223565b610250610684565b60405161022392919061262d565b6102666107d7565b005b60408051808201909152600f81526e52656769737472795365727669636560881b60208201525b604051610223919061265b565b6102c37f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610223565b61038d6102df36600461267f565b6040805160a081018252600080825260208201819052918101829052606081018290526080810191909152600080516020612f8483398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a001610223565b6102176103f836600461267f565b6109f9565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610223565b6104356104303660046127ff565b610aac565b6040516001600160601b039091168152602001610223565b61025061045b3660046128d1565b610b3f565b600154600160a01b90046001600160601b0316610435565b6102506104863660046128d1565b610cd1565b61026661049936600461290a565b610d80565b6104356104ac3660046127ff565b610e07565b6102506104bf36600461290a565b610e1d565b61040a610fa5565b6104d46110be565b6040516102239190612927565b6102506104ef3660046128d1565b6110f7565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546102c3565b61028f6040518060400160405280600f81526020016e52656769737472795365727669636560881b81525081565b61026661055736600461293c565b6111a6565b610564611300565b6040516001600160401b039091168152602001610223565b61023461058a36600461299d565b611321565b61040a611372565b6104356105a53660046127ff565b61138e565b6105b26113a4565b60405160ff9091168152602001610223565b6102666105d236600461293c565b611427565b61040a600181565b6102c3600081565b6102506105f536600461290a565b611530565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801561065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f91906129b6565b905090565b61068c6124f5565b606060007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806106d86001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610720610fa5565b6001600160a01b0316815260200182600101805461073d906129d3565b80601f0160208091040260200160405190810160405280929190818152602001828054610769906129d3565b80156107b65780601f1061078b576101008083540402835291602001916107b6565b820191906000526020600020905b81548152906001019060200180831161079957829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d9190612a18565b156108a4576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b03166108cd5760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093a9190612a18565b610962576040516372657a5160e01b81526001600160a01b038216600482015260240161089b565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d09190612a40565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b600080600080516020612f8483398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190612a5d565b1192915050565b6000610abb335b6000366115df565b610ac68260d26116e5565b6001546040516352efcf2760e11b81526001600160a01b039091169063a5df9e4e90610af6908590600401612a76565b6020604051808303816000875af1158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b399190612a40565b92915050565b610b476124f5565b6060610b5233610ab3565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a790610b8590633ad74e8160e01b90600401612927565b602060405180830381865afa158015610ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc69190612a18565b610be357604051637a71998760e01b815260040160405180910390fd5b610bf084606e5b856117f0565b6001546040516352efcf2760e11b81529294509092506001600160a01b03169063a5df9e4e90610c24908590600401612a76565b6020604051808303816000875af1158015610c43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c679190612a40565b6001600160601b0316825260408051629c230f60e51b815290516001600160a01b0386169163138461e091600480830192600092919082900301818387803b158015610cb257600080fd5b505af1158015610cc6573d6000803e3d6000fd5b505050509250929050565b610cd96124f5565b6060610ce433610ab3565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a790610d1790630b3506e360e01b90600401612927565b602060405180830381865afa158015610d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d589190612a18565b610d7557604051636f61f64160e01b815260040160405180910390fd5b610bf084608c610bea565b33610d89611372565b6001600160a01b0316816001600160a01b031614610dc45760405162d1953b60e31b81526001600160a01b038216600482015260240161089b565b816001600160a01b03163b600003610dfa576040516361798f2f60e11b81526001600160a01b038316600482015260240161089b565b610e03826119f6565b5050565b6000610e1233610ab3565b610ac68260506116e5565b610e256124f5565b6040516301ffc9a760e01b81526060906001600160a01b038416906301ffc9a790610e5b9063aa67ed7b60e01b90600401612927565b602060405180830381865afa158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9c9190612a18565b610eb957604051636795c76360e01b815260040160405180910390fd5b610ec68360465b336117f0565b6001546040516352efcf2760e11b81529294509092506001600160a01b03169063a5df9e4e90610efa908590600401612a76565b6020604051808303816000875af1158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3d9190612a40565b6001600160601b0316825260408051629c230f60e51b815290516001600160a01b0385169163138461e091600480830192600092919082900301818387803b158015610f8857600080fd5b505af1158015610f9c573d6000803e3d6000fd5b50505050915091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af415801561100a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102e9190612a18565b156110ae57600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa15801561108a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f9190612a94565b506002546001600160a01b031690565b600080516020612f44833981519152805460009190600160a01b900460ff166110e85760006110f1565b638fb3603760e01b5b91505090565b6110ff6124f5565b606061110a33610ab3565b6040516301ffc9a760e01b81526001600160a01b038516906301ffc9a79061113d9063c8ea96c560e01b90600401612927565b602060405180830381865afa15801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e9190612a18565b61119b576040516308707e3160e41b815260040160405180910390fd5b610bf0846078610bea565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c6111c86105fa565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015611208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122c9190612ab1565b600080516020612f648339815191528054600160401b900460ff168061125f575080546001600160401b03808416911610155b1561127d5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556112a88585611a57565b6112b183611cf6565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b600061067f600080516020612f64833981519152546001600160401b031690565b6000600080516020612f84833981519152600101828154811061134657611346612ada565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b600080516020612f44833981519152546001600160a01b031690565b600061139933610ab3565b610ac68260dc6116e5565b60006113ae6105fa565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611403573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067f9190612afb565b600080516020612f648339815191528054600160401b810460ff1615906001600160401b031660008115801561145a5750825b90506000826001600160401b031660011480156114765750303b155b905081158015611484575080155b156114a25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156114cc57845460ff60401b1916600160401b1785555b6114d68888611a57565b6114e08787611cfe565b831561152657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6115386124f5565b606061154333610ab3565b6040516301ffc9a760e01b81526001600160a01b038416906301ffc9a79061157690631b4612f160e31b90600401612927565b602060405180830381865afa158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b79190612a18565b6115d457604051635458064d60e11b815260040160405180910390fd5b610ec683603c610ec0565b600080516020612f4483398151915260008061161a6115fc611372565b873061160c600460008a8c612b18565b61161591612b42565b611feb565b91509150816116dd5763ffffffff8116156116ba57825460ff60a01b1916600160a01b178355611648611372565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161167793929190612b72565b600060405180830381600087803b15801561169157600080fd5b505af11580156116a5573d6000803e3d6000fd5b5050845460ff60a01b19168555506116dd9050565b60405162d1953b60e31b81526001600160a01b038716600482015260240161089b565b505050505050565b60006080830152604082015160ff828116911614611729576040808301519051632208245760e11b815260ff8084166004830152909116602482015260440161089b565b60a08201516001600160a01b03811661175557604051630fd187d360e01b815260040160405180910390fd5b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa1580156117a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cd9190612a18565b156117eb57604051637142ceb360e11b815260040160405180910390fd5b505050565b6117f86124f5565b6060846001600160a01b0316630fec111c6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611838573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118609190810190612bf7565b6001600160a01b03871660808301526040820151919350915060ff8581169116146118b1576040808301519051632208245760e11b815260ff8087166004830152909116602482015260440161089b565b60a082015160ff85166046146118fe57836001600160a01b0316816001600160a01b0316146118fe5760405163dfc430cb60e01b81526001600160a01b038516600482015260240161089b565b856001600160a01b0316816001600160a01b031603611930576040516317faf4db60e11b815260040160405180910390fd5b6001600160a01b03811661195757604051630fd187d360e01b815260040160405180910390fd5b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa1580156119ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119cf9190612a18565b156119ed57604051637142ceb360e11b815260040160405180910390fd5b50935093915050565b600080516020612f4483398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b611a5f6120f7565b600080516020612f848339815191526000611a8f600080516020612f64833981519152546001600160401b031690565b90506000611a9b6105fa565b9050816001600160401b0316600103611ac85760028301805462ffffff191662ffffff8316179055611b16565b600283015462ffffff90811690821611611b165760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b604482015260640161089b565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee9190612cef565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf68906112f19083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101e56120f7565b600080516020612f648339815191528054600160401b810460ff1615906001600160401b0316600081158015611d315750825b90506000826001600160401b03166001148015611d4d5750303b155b905081158015611d5b575080155b15611d795760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611da357845460ff60401b1916600160401b1785555b60008087806020019051810190611dba9190612d16565b91509150611dc782612130565b600089611dd26113a4565b604080516001600160a01b03909316602084015260ff9091169082015260600160408051601f1981840301815290829052631585e94960e21b8252915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90635617a52490611e3e9086908690600401612d5c565b600060405180830381865af4158015611e5b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e839190810190612d6f565b60405163257b1f8160e11b815290915060009073__$b2e3f5fb9dc49bcf3e057142c7696ab68d$__90634af63f0290611ec29085908590600401612da3565b602060405180830381865af4158015611edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f039190612a94565b604051636939560f60e11b81526001600160a01b038216600482018190529192506000919063d272ac1e90602401602060405180830381865afa158015611f4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f729190612a40565b9050611f7e828e612144565b611f866107d7565b611f9663200cc87360e11b6121d1565b5050505050508315611fe257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161205a9190612dc5565b600060405180830381855afa9150503d8060008114612095576040519150601f19603f3d011682016040523d82523d6000602084013e61209a565b606091505b509150915081156120ec5760408151106120cc57808060200190518101906120c29190612de1565b90945092506120ec565b60208151106120ec57808060200190518101906120e99190612a18565b93505b505094509492505050565b600080516020612f6483398151915254600160401b900460ff1661212e57604051631afcd79f60e31b815260040160405180910390fd5b565b6121386120f7565b612141816121f6565b50565b600061217260408051808201909152600f81526e52656769737472795365727669636560881b602082015290565b61217a6113a4565b60405160200161218b929190612e19565b604051602081830303815290604052905060006121a784612207565b905060006121ba8583603c84888861224e565b6121ca631b4612f160e31b6121d1565b5050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6121fe6120f7565b612141816119f6565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015610b15573d6000803e3d6000fd5b61228f6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b612299828761231a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016123098382612e84565b50611fe26303fb044760e21b6121d1565b6001600160a01b0382166123705760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e657220697320300000604482015260640161089b565b600280546001600160a01b0319166001600160a01b038416179055610e03816001546001600160a01b0316156123c85760015460405163fcdbf2d960e01b81526001600160a01b03909116600482015260240161089b565b6001600160a01b0381166123ef5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036124255760405163fdeac91f60e01b81526001600160a01b038216600482015260240161089b565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526301ffc9a79061246b90632eaf856d60e11b90600401612927565b602060405180830381865afa9250505080156124a4575060408051601f3d908101601f191682019092526124a191810190612a18565b60015b6124cc5760405163fdeac91f60e01b81526001600160a01b038216600482015260240161089b565b80610e035760405163fdeac91f60e01b81526001600160a01b038316600482015260240161089b565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c081019190915290565b60006020828403121561254557600080fd5b81356001600160e01b03198116811461255d57600080fd5b9392505050565b60005b8381101561257f578181015183820152602001612567565b50506000910152565b600081518084526125a0816020860160208601612564565b601f01601f19169290920160200192915050565b60006001600160601b038083511684528060208401511660208501525060ff6040830151166040840152606082015115156060840152608082015160018060a01b0380821660808601528060a08501511660a0860152505060c082015160e060c085015261262560e0850182612588565b949350505050565b60408152600061264060408301856125b4565b82810360208401526126528185612588565b95945050505050565b60208152600061255d6020830184612588565b62ffffff8116811461214157600080fd5b60006020828403121561269157600080fd5b813561255d8161266e565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b03811182821017156126d4576126d461269c565b60405290565b604051601f8201601f191681016001600160401b03811182821017156127025761270261269c565b604052919050565b6001600160601b038116811461214157600080fd5b803561272a8161270a565b919050565b60ff8116811461214157600080fd5b803561272a8161272f565b801515811461214157600080fd5b803561272a81612749565b6001600160a01b038116811461214157600080fd5b803561272a81612762565b60006001600160401b0382111561279b5761279b61269c565b50601f01601f191660200190565b600082601f8301126127ba57600080fd5b81356127cd6127c882612782565b6126da565b8181528460208386010111156127e257600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561281157600080fd5b81356001600160401b038082111561282857600080fd5b9083019060e0828603121561283c57600080fd5b6128446126b2565b61284d8361271f565b815261285b6020840161271f565b602082015261286c6040840161273e565b604082015261287d60608401612757565b606082015261288e60808401612777565b608082015261289f60a08401612777565b60a082015260c0830135828111156128b657600080fd5b6128c2878286016127a9565b60c08301525095945050505050565b600080604083850312156128e457600080fd5b82356128ef81612762565b915060208301356128ff81612762565b809150509250929050565b60006020828403121561291c57600080fd5b813561255d81612762565b6001600160e01b031991909116815260200190565b60008060006060848603121561295157600080fd5b833561295c81612762565b9250602084013561296c81612762565b915060408401356001600160401b0381111561298757600080fd5b612993868287016127a9565b9150509250925092565b6000602082840312156129af57600080fd5b5035919050565b6000602082840312156129c857600080fd5b815161255d8161266e565b600181811c908216806129e757607f821691505b602082108103612a0757634e487b7160e01b600052602260045260246000fd5b50919050565b805161272a81612749565b600060208284031215612a2a57600080fd5b815161255d81612749565b805161272a8161270a565b600060208284031215612a5257600080fd5b815161255d8161270a565b600060208284031215612a6f57600080fd5b5051919050565b60208152600061255d60208301846125b4565b805161272a81612762565b600060208284031215612aa657600080fd5b815161255d81612762565b600060208284031215612ac357600080fd5b81516001600160401b038116811461255d57600080fd5b634e487b7160e01b600052603260045260246000fd5b805161272a8161272f565b600060208284031215612b0d57600080fd5b815161255d8161272f565b60008085851115612b2857600080fd5b83861115612b3557600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015612b6a5780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082601f830112612bc357600080fd5b8151612bd16127c882612782565b818152846020838601011115612be657600080fd5b612625826020830160208701612564565b60008060408385031215612c0a57600080fd5b82516001600160401b0380821115612c2157600080fd5b9084019060e08287031215612c3557600080fd5b612c3d6126b2565b612c4683612a35565b8152612c5460208401612a35565b6020820152612c6560408401612af0565b6040820152612c7660608401612a0d565b6060820152612c8760808401612a89565b6080820152612c9860a08401612a89565b60a082015260c083015182811115612caf57600080fd5b612cbb88828601612bb2565b60c0830152506020860151909450915080821115612cd857600080fd5b50612ce585828601612bb2565b9150509250929050565b600060208284031215612d0157600080fd5b815164ffffffffff8116811461255d57600080fd5b60008060408385031215612d2957600080fd5b8251612d3481612762565b60208401519092506001600160401b03811115612d5057600080fd5b612ce585828601612bb2565b6040815260006126406040830185612588565b600060208284031215612d8157600080fd5b81516001600160401b03811115612d9757600080fd5b61262584828501612bb2565b604081526000612db66040830185612588565b90508260208301529392505050565b60008251612dd7818460208701612564565b9190910192915050565b60008060408385031215612df457600080fd5b8251612dff81612749565b602084015190925063ffffffff811681146128ff57600080fd5b604081526000612e2c6040830185612588565b905060ff831660208301529392505050565b601f8211156117eb57600081815260208120601f850160051c81016020861015612e655750805b601f850160051c820191505b818110156116dd57828155600101612e71565b81516001600160401b03811115612e9d57612e9d61269c565b612eb181612eab84546129d3565b84612e3e565b602080601f831160018114612ee65760008415612ece5750858301515b600019600386901b1c1916600185901b1785556116dd565b600085815260208120601f198616915b82811015612f1557888601518255948401946001909101908401612ef6565b5085821015612f335787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a2646970667358221220ca938c4f4772328ec5fcc658603dfcd0a647cff8166b1b5a6eac1f71d0a6f73464736f6c63430008140033",
809
1177
  "linkReferences": {
810
1178
  "contracts/shared/ContractDeployerLib.sol": {
811
1179
  "ContractDeployerLib": [
812
1180
  {
813
1181
  "length": 20,
814
- "start": 7610
1182
+ "start": 8014
815
1183
  },
816
1184
  {
817
1185
  "length": 20,
818
- "start": 7742
1186
+ "start": 8146
819
1187
  }
820
1188
  ]
821
1189
  },
@@ -823,7 +1191,27 @@
823
1191
  "BlocknumberLib": [
824
1192
  {
825
1193
  "length": 20,
826
- "start": 2755
1194
+ "start": 2945
1195
+ }
1196
+ ]
1197
+ },
1198
+ "contracts/types/NftId.sol": {
1199
+ "NftIdLib": [
1200
+ {
1201
+ "length": 20,
1202
+ "start": 2361
1203
+ },
1204
+ {
1205
+ "length": 20,
1206
+ "start": 4362
1207
+ }
1208
+ ]
1209
+ },
1210
+ "contracts/types/Timestamp.sol": {
1211
+ "TimestampLib": [
1212
+ {
1213
+ "length": 20,
1214
+ "start": 7370
827
1215
  }
828
1216
  ]
829
1217
  },
@@ -831,15 +1219,15 @@
831
1219
  "VersionLib": [
832
1220
  {
833
1221
  "length": 20,
834
- "start": 2270
1222
+ "start": 1883
835
1223
  },
836
1224
  {
837
1225
  "length": 20,
838
- "start": 3871
1226
+ "start": 4834
839
1227
  },
840
1228
  {
841
1229
  "length": 20,
842
- "start": 4664
1230
+ "start": 5379
843
1231
  }
844
1232
  ]
845
1233
  }
@@ -849,11 +1237,11 @@
849
1237
  "ContractDeployerLib": [
850
1238
  {
851
1239
  "length": 20,
852
- "start": 7320
1240
+ "start": 7700
853
1241
  },
854
1242
  {
855
1243
  "length": 20,
856
- "start": 7452
1244
+ "start": 7832
857
1245
  }
858
1246
  ]
859
1247
  },
@@ -861,7 +1249,27 @@
861
1249
  "BlocknumberLib": [
862
1250
  {
863
1251
  "length": 20,
864
- "start": 2465
1252
+ "start": 2631
1253
+ }
1254
+ ]
1255
+ },
1256
+ "contracts/types/NftId.sol": {
1257
+ "NftIdLib": [
1258
+ {
1259
+ "length": 20,
1260
+ "start": 2047
1261
+ },
1262
+ {
1263
+ "length": 20,
1264
+ "start": 4048
1265
+ }
1266
+ ]
1267
+ },
1268
+ "contracts/types/Timestamp.sol": {
1269
+ "TimestampLib": [
1270
+ {
1271
+ "length": 20,
1272
+ "start": 7056
865
1273
  }
866
1274
  ]
867
1275
  },
@@ -869,15 +1277,15 @@
869
1277
  "VersionLib": [
870
1278
  {
871
1279
  "length": 20,
872
- "start": 1980
1280
+ "start": 1569
873
1281
  },
874
1282
  {
875
1283
  "length": 20,
876
- "start": 3581
1284
+ "start": 4520
877
1285
  },
878
1286
  {
879
1287
  "length": 20,
880
- "start": 4374
1288
+ "start": 5065
881
1289
  }
882
1290
  ]
883
1291
  }