@etherisc/gif-next 0.0.2-bca36d7-613 → 0.0.2-bdb6804-509

Sign up to get free protection for your applications and to get access to all the features.
Files changed (397) hide show
  1. package/README.md +75 -14
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +842 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +948 -229
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +848 -31
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +864 -49
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +682 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +849 -247
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +637 -224
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → Cloneable.sol/Cloneable.json} +79 -3
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +468 -246
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +342 -168
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +397 -3056
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +597 -179
  32. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  34. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  35. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +227 -221
  36. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  37. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +507 -198
  38. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  39. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +316 -75
  40. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2677 -0
  42. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  43. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  44. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +639 -0
  46. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  47. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  49. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +40 -10
  50. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  51. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
  52. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  53. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  54. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  55. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  57. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  58. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  59. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  60. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +860 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +641 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1263 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +721 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +849 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +641 -0
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1539 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +769 -0
  78. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → service/IApplicationService.sol/IApplicationService.json} +183 -189
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +659 -0
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IClaimService.sol/IClaimService.json} +217 -208
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +585 -160
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +606 -0
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +437 -154
  90. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  91. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/service/IPricingService.sol/IPricingService.json} +248 -172
  92. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +90 -391
  94. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1124 -0
  96. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +697 -0
  98. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1269 -0
  100. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +661 -0
  102. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
  104. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
  106. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +872 -0
  108. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +373 -61
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +223 -229
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  118. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.json +333 -188
  120. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +227 -330
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +304 -138
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  128. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  129. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  130. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  132. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  133. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  134. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  135. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  136. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  137. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  139. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  140. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  141. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  142. package/artifacts/contracts/shared/IService.sol/IService.json +86 -172
  143. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  145. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  146. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  147. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  148. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  149. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  150. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  151. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  153. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  155. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  156. package/artifacts/contracts/shared/Service.sol/Service.json +191 -163
  157. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  158. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +2 -2
  159. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  160. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  161. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  162. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  163. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
  165. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  167. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
  169. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  170. package/artifacts/contracts/test/TestService.sol/TestService.json +210 -214
  171. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  172. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  173. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  174. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  175. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  176. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  177. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  178. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/Amount.sol/AmountLib.json +161 -0
  180. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  182. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  185. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +40 -9
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +17 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  195. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  198. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  200. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
  202. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  204. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  206. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  208. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  210. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  212. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
  214. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  215. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
  216. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  217. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  218. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  220. package/contracts/components/Component.sol +253 -0
  221. package/contracts/components/Distribution.sol +200 -86
  222. package/contracts/components/IComponent.sol +76 -0
  223. package/contracts/components/IDistributionComponent.sol +44 -16
  224. package/contracts/components/IPoolComponent.sol +88 -37
  225. package/contracts/components/IProductComponent.sol +10 -5
  226. package/contracts/components/Pool.sol +225 -181
  227. package/contracts/components/Product.sol +136 -137
  228. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  229. package/contracts/instance/BundleManager.sol +127 -0
  230. package/contracts/instance/Cloneable.sol +51 -0
  231. package/contracts/instance/IInstance.sol +45 -13
  232. package/contracts/instance/IInstanceService.sol +59 -5
  233. package/contracts/instance/Instance.sol +128 -371
  234. package/contracts/instance/InstanceAccessManager.sol +428 -176
  235. package/contracts/instance/InstanceAuthorizationsLib.sol +299 -0
  236. package/contracts/instance/InstanceReader.sol +38 -35
  237. package/contracts/instance/InstanceService.sol +265 -83
  238. package/contracts/instance/InstanceServiceManager.sol +11 -13
  239. package/contracts/instance/InstanceStore.sol +219 -0
  240. package/contracts/instance/ObjectManager.sol +82 -0
  241. package/contracts/instance/base/ComponentService.sol +147 -0
  242. package/contracts/instance/base/KeyValueStore.sol +13 -5
  243. package/contracts/instance/base/Lifecycle.sol +11 -2
  244. package/contracts/instance/module/IAccess.sol +36 -20
  245. package/contracts/instance/module/IBundle.sol +8 -4
  246. package/contracts/instance/module/IComponents.sol +41 -0
  247. package/contracts/instance/module/IDistribution.sol +2 -0
  248. package/contracts/instance/module/IPolicy.sol +30 -3
  249. package/contracts/instance/module/ISetup.sol +9 -19
  250. package/contracts/instance/service/ApplicationService.sol +183 -0
  251. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  252. package/contracts/instance/service/BundleService.sol +431 -0
  253. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  254. package/contracts/instance/service/ClaimService.sol +145 -0
  255. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  256. package/contracts/instance/service/DistributionService.sol +346 -0
  257. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  258. package/contracts/instance/service/IApplicationService.sol +64 -0
  259. package/contracts/instance/service/IBundleService.sol +93 -0
  260. package/contracts/instance/service/IClaimService.sol +61 -0
  261. package/contracts/instance/service/IDistributionService.sol +73 -0
  262. package/contracts/instance/service/IPolicyService.sol +72 -0
  263. package/contracts/instance/service/IPoolService.sol +79 -17
  264. package/contracts/instance/service/IPricingService.sol +36 -0
  265. package/contracts/instance/service/IProductService.sol +6 -73
  266. package/contracts/instance/service/PolicyService.sol +366 -0
  267. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  268. package/contracts/instance/service/PoolService.sol +303 -0
  269. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  270. package/contracts/instance/service/PricingService.sol +275 -0
  271. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  272. package/contracts/instance/service/ProductService.sol +210 -0
  273. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  274. package/contracts/registry/ChainNft.sol +9 -1
  275. package/contracts/registry/IRegistry.sol +51 -8
  276. package/contracts/registry/IRegistryService.sol +47 -14
  277. package/contracts/registry/ITransferInterceptor.sol +1 -0
  278. package/contracts/registry/Registry.sol +270 -226
  279. package/contracts/registry/RegistryAccessManager.sol +216 -0
  280. package/contracts/registry/RegistryService.sol +117 -275
  281. package/contracts/registry/RegistryServiceManager.sol +24 -26
  282. package/contracts/registry/ReleaseManager.sol +324 -0
  283. package/contracts/registry/TokenRegistry.sol +116 -0
  284. package/contracts/shared/ERC165.sol +14 -8
  285. package/contracts/shared/INftOwnable.sol +11 -10
  286. package/contracts/shared/IPolicyHolder.sol +26 -0
  287. package/contracts/shared/IRegisterable.sol +4 -6
  288. package/contracts/shared/IRegistryLinked.sol +12 -0
  289. package/contracts/shared/IService.sol +5 -4
  290. package/contracts/shared/IVersionable.sol +4 -47
  291. package/contracts/shared/NftOwnable.sol +67 -83
  292. package/contracts/shared/PolicyHolder.sol +81 -0
  293. package/contracts/shared/ProxyManager.sol +100 -25
  294. package/contracts/shared/Registerable.sol +16 -31
  295. package/contracts/shared/RegistryLinked.sol +48 -0
  296. package/contracts/shared/Service.sol +42 -24
  297. package/contracts/shared/TokenHandler.sol +11 -5
  298. package/contracts/shared/Versionable.sol +4 -92
  299. package/contracts/test/TestRegisterable.sol +1 -1
  300. package/contracts/test/TestService.sol +4 -3
  301. package/contracts/types/Amount.sol +60 -0
  302. package/contracts/types/Blocknumber.sol +1 -0
  303. package/contracts/types/ClaimId.sol +52 -0
  304. package/contracts/types/DistributorType.sol +2 -2
  305. package/contracts/types/Fee.sol +13 -5
  306. package/contracts/types/NftId.sol +8 -0
  307. package/contracts/types/NftIdSet.sol +26 -24
  308. package/contracts/types/ObjectType.sol +14 -5
  309. package/contracts/types/PayoutId.sol +54 -0
  310. package/contracts/types/Referral.sol +4 -0
  311. package/contracts/types/RoleId.sol +26 -11
  312. package/contracts/types/Seconds.sol +54 -0
  313. package/contracts/types/StateId.sol +5 -0
  314. package/contracts/types/Timestamp.sol +13 -13
  315. package/contracts/types/UFixed.sol +1 -0
  316. package/contracts/types/Version.sol +5 -1
  317. package/package.json +3 -3
  318. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  319. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
  320. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  322. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  323. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  324. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  325. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  326. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  327. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  328. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  330. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  332. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  334. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  336. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  338. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  340. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  342. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  343. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  344. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  345. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  347. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  349. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  351. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  353. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  355. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  357. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  359. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  361. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  362. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  363. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  364. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  365. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  366. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  367. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  368. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  369. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  370. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  371. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  372. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  373. package/contracts/components/BaseComponent.sol +0 -86
  374. package/contracts/components/IBaseComponent.sol +0 -24
  375. package/contracts/experiment/cloning/Cloner.sol +0 -47
  376. package/contracts/experiment/errors/Require.sol +0 -38
  377. package/contracts/experiment/errors/Revert.sol +0 -44
  378. package/contracts/experiment/inheritance/A.sol +0 -53
  379. package/contracts/experiment/inheritance/B.sol +0 -28
  380. package/contracts/experiment/inheritance/C.sol +0 -34
  381. package/contracts/experiment/inheritance/IA.sol +0 -13
  382. package/contracts/experiment/inheritance/IB.sol +0 -10
  383. package/contracts/experiment/inheritance/IC.sol +0 -12
  384. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  385. package/contracts/experiment/statemachine/ISM.sol +0 -25
  386. package/contracts/experiment/statemachine/SM.sol +0 -57
  387. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  388. package/contracts/experiment/types/TypeA.sol +0 -47
  389. package/contracts/experiment/types/TypeB.sol +0 -29
  390. package/contracts/instance/AccessManagedSimple.sol +0 -122
  391. package/contracts/instance/AccessManagerSimple.sol +0 -692
  392. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  393. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  394. package/contracts/instance/base/IInstanceBase.sol +0 -23
  395. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  396. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  397. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -3,90 +3,277 @@
3
3
  "contractName": "InstanceService",
4
4
  "sourceName": "contracts/instance/InstanceService.sol",
5
5
  "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "authority",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "name": "AccessManagedInvalidAuthority",
15
+ "type": "error"
16
+ },
17
+ {
18
+ "inputs": [
19
+ {
20
+ "internalType": "address",
21
+ "name": "caller",
22
+ "type": "address"
23
+ },
24
+ {
25
+ "internalType": "uint32",
26
+ "name": "delay",
27
+ "type": "uint32"
28
+ }
29
+ ],
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
+ },
6
44
  {
7
45
  "inputs": [],
8
46
  "name": "ERC1167FailedCreateClone",
9
47
  "type": "error"
10
48
  },
49
+ {
50
+ "inputs": [],
51
+ "name": "ErrorInstanceServiceBundleManagerAuthorityMismatch",
52
+ "type": "error"
53
+ },
54
+ {
55
+ "inputs": [],
56
+ "name": "ErrorInstanceServiceBundleManagerZero",
57
+ "type": "error"
58
+ },
59
+ {
60
+ "inputs": [],
61
+ "name": "ErrorInstanceServiceBundleMangerInstanceMismatch",
62
+ "type": "error"
63
+ },
11
64
  {
12
65
  "inputs": [
13
66
  {
14
67
  "internalType": "address",
15
- "name": "registry",
68
+ "name": "componentAddress",
16
69
  "type": "address"
70
+ }
71
+ ],
72
+ "name": "ErrorInstanceServiceComponentNotRegistered",
73
+ "type": "error"
74
+ },
75
+ {
76
+ "inputs": [],
77
+ "name": "ErrorInstanceServiceInstanceAccessManagerZero",
78
+ "type": "error"
79
+ },
80
+ {
81
+ "inputs": [],
82
+ "name": "ErrorInstanceServiceInstanceAddressZero",
83
+ "type": "error"
84
+ },
85
+ {
86
+ "inputs": [],
87
+ "name": "ErrorInstanceServiceInstanceAuthorityMismatch",
88
+ "type": "error"
89
+ },
90
+ {
91
+ "inputs": [
92
+ {
93
+ "internalType": "NftId",
94
+ "name": "instanceNftId",
95
+ "type": "uint96"
17
96
  },
18
97
  {
19
98
  "internalType": "NftId",
20
- "name": "nftId",
99
+ "name": "componentNftId",
21
100
  "type": "uint96"
22
101
  }
23
102
  ],
24
- "name": "ErrorAlreadyLinked",
103
+ "name": "ErrorInstanceServiceInstanceComponentMismatch",
104
+ "type": "error"
105
+ },
106
+ {
107
+ "inputs": [],
108
+ "name": "ErrorInstanceServiceInstanceReaderAddressZero",
109
+ "type": "error"
110
+ },
111
+ {
112
+ "inputs": [],
113
+ "name": "ErrorInstanceServiceInstanceReaderInstanceMismatch",
114
+ "type": "error"
115
+ },
116
+ {
117
+ "inputs": [],
118
+ "name": "ErrorInstanceServiceInstanceReaderInstanceMismatch2",
119
+ "type": "error"
120
+ },
121
+ {
122
+ "inputs": [],
123
+ "name": "ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader",
124
+ "type": "error"
125
+ },
126
+ {
127
+ "inputs": [],
128
+ "name": "ErrorInstanceServiceInstanceReaderZero",
129
+ "type": "error"
130
+ },
131
+ {
132
+ "inputs": [],
133
+ "name": "ErrorInstanceServiceInstanceStoreAuthorityMismatch",
134
+ "type": "error"
135
+ },
136
+ {
137
+ "inputs": [],
138
+ "name": "ErrorInstanceServiceInstanceStoreZero",
25
139
  "type": "error"
26
140
  },
27
141
  {
28
142
  "inputs": [
29
143
  {
30
144
  "internalType": "address",
31
- "name": "contractAddress",
145
+ "name": "componentAddress",
32
146
  "type": "address"
147
+ },
148
+ {
149
+ "internalType": "ObjectType",
150
+ "name": "expectedType",
151
+ "type": "uint8"
152
+ },
153
+ {
154
+ "internalType": "ObjectType",
155
+ "name": "componentType",
156
+ "type": "uint8"
33
157
  }
34
158
  ],
35
- "name": "ErrorContractNotRegistered",
159
+ "name": "ErrorInstanceServiceInvalidComponentType",
160
+ "type": "error"
161
+ },
162
+ {
163
+ "inputs": [],
164
+ "name": "ErrorInstanceServiceMasterBundleManagerAlreadySet",
165
+ "type": "error"
166
+ },
167
+ {
168
+ "inputs": [],
169
+ "name": "ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet",
170
+ "type": "error"
171
+ },
172
+ {
173
+ "inputs": [],
174
+ "name": "ErrorInstanceServiceMasterInstanceAlreadySet",
175
+ "type": "error"
176
+ },
177
+ {
178
+ "inputs": [],
179
+ "name": "ErrorInstanceServiceMasterInstanceReaderNotSet",
180
+ "type": "error"
181
+ },
182
+ {
183
+ "inputs": [],
184
+ "name": "ErrorInstanceServiceMasterOzAccessManagerAlreadySet",
185
+ "type": "error"
186
+ },
187
+ {
188
+ "inputs": [
189
+ {
190
+ "internalType": "NftId",
191
+ "name": "nftId",
192
+ "type": "uint96"
193
+ }
194
+ ],
195
+ "name": "ErrorInstanceServiceNotInstance",
36
196
  "type": "error"
37
197
  },
38
198
  {
39
199
  "inputs": [
40
200
  {
41
201
  "internalType": "address",
42
- "name": "account",
202
+ "name": "caller",
43
203
  "type": "address"
204
+ },
205
+ {
206
+ "internalType": "NftId",
207
+ "name": "instanceNftId",
208
+ "type": "uint96"
44
209
  }
45
210
  ],
46
- "name": "ErrorNotOwner",
211
+ "name": "ErrorInstanceServiceNotInstanceOwner",
212
+ "type": "error"
213
+ },
214
+ {
215
+ "inputs": [],
216
+ "name": "ErrorInstanceServiceOzAccessManagerZero",
47
217
  "type": "error"
48
218
  },
49
219
  {
50
220
  "inputs": [
51
221
  {
52
222
  "internalType": "address",
53
- "name": "registryAddress",
223
+ "name": "caller",
54
224
  "type": "address"
55
225
  }
56
226
  ],
57
- "name": "ErrorNotRegistry",
227
+ "name": "ErrorInstanceServiceRequestUnauhorized",
228
+ "type": "error"
229
+ },
230
+ {
231
+ "inputs": [
232
+ {
233
+ "internalType": "NftId",
234
+ "name": "nftId",
235
+ "type": "uint96"
236
+ }
237
+ ],
238
+ "name": "ErrorNftOwnableAlreadyLinked",
58
239
  "type": "error"
59
240
  },
60
241
  {
61
242
  "inputs": [
62
243
  {
63
244
  "internalType": "address",
64
- "name": "registryAddress",
245
+ "name": "contractAddress",
65
246
  "type": "address"
66
247
  }
67
248
  ],
68
- "name": "ErrorRegisterableNotRegistry",
249
+ "name": "ErrorNftOwnableContractNotRegistered",
69
250
  "type": "error"
70
251
  },
71
252
  {
72
253
  "inputs": [],
73
- "name": "ErrorRegistryAddressZero",
254
+ "name": "ErrorNftOwnableInitialOwnerZero",
74
255
  "type": "error"
75
256
  },
76
257
  {
77
258
  "inputs": [
78
259
  {
79
260
  "internalType": "address",
80
- "name": "registry",
261
+ "name": "account",
81
262
  "type": "address"
82
263
  }
83
264
  ],
84
- "name": "ErrorRegistryAlreadyInitialized",
265
+ "name": "ErrorNftOwnableNotOwner",
85
266
  "type": "error"
86
267
  },
87
268
  {
88
- "inputs": [],
89
- "name": "ErrorRegistryNotInitialized",
269
+ "inputs": [
270
+ {
271
+ "internalType": "address",
272
+ "name": "registryAddress",
273
+ "type": "address"
274
+ }
275
+ ],
276
+ "name": "ErrorNotRegistry",
90
277
  "type": "error"
91
278
  },
92
279
  {
@@ -99,6 +286,19 @@
99
286
  "name": "NotInitializing",
100
287
  "type": "error"
101
288
  },
289
+ {
290
+ "anonymous": false,
291
+ "inputs": [
292
+ {
293
+ "indexed": false,
294
+ "internalType": "address",
295
+ "name": "authority",
296
+ "type": "address"
297
+ }
298
+ ],
299
+ "name": "AuthorityUpdated",
300
+ "type": "event"
301
+ },
102
302
  {
103
303
  "anonymous": false,
104
304
  "inputs": [
@@ -118,54 +318,47 @@
118
318
  {
119
319
  "indexed": false,
120
320
  "internalType": "address",
121
- "name": "clonedAccessManagerAddress",
321
+ "name": "clonedOzAccessManager",
122
322
  "type": "address"
123
323
  },
124
324
  {
125
325
  "indexed": false,
126
326
  "internalType": "address",
127
- "name": "clonedInstanceAddress",
327
+ "name": "clonedInstanceAccessManager",
128
328
  "type": "address"
129
329
  },
130
330
  {
131
331
  "indexed": false,
132
332
  "internalType": "address",
133
- "name": "clonedInstanceReaderAddress",
333
+ "name": "clonedInstance",
134
334
  "type": "address"
135
335
  },
136
336
  {
137
337
  "indexed": false,
138
- "internalType": "NftId",
139
- "name": "clonedInstanceNftId",
140
- "type": "uint96"
141
- }
142
- ],
143
- "name": "LogInstanceCloned",
144
- "type": "event"
145
- },
146
- {
147
- "anonymous": false,
148
- "inputs": [
149
- {
150
- "indexed": false,
151
- "internalType": "Version",
152
- "name": "version",
153
- "type": "uint24"
338
+ "internalType": "address",
339
+ "name": "clonedInstanceStore",
340
+ "type": "address"
154
341
  },
155
342
  {
156
343
  "indexed": false,
157
344
  "internalType": "address",
158
- "name": "implementation",
345
+ "name": "clonedBundleManager",
159
346
  "type": "address"
160
347
  },
161
348
  {
162
349
  "indexed": false,
163
350
  "internalType": "address",
164
- "name": "activatedBy",
351
+ "name": "clonedInstanceReader",
165
352
  "type": "address"
353
+ },
354
+ {
355
+ "indexed": false,
356
+ "internalType": "NftId",
357
+ "name": "clonedInstanceNftId",
358
+ "type": "uint96"
166
359
  }
167
360
  ],
168
- "name": "LogVersionableInitialized",
361
+ "name": "LogInstanceCloned",
169
362
  "type": "event"
170
363
  },
171
364
  {
@@ -183,12 +376,12 @@
183
376
  },
184
377
  {
185
378
  "inputs": [],
186
- "name": "NAME",
379
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
187
380
  "outputs": [
188
381
  {
189
- "internalType": "string",
382
+ "internalType": "bytes32",
190
383
  "name": "",
191
- "type": "string"
384
+ "type": "bytes32"
192
385
  }
193
386
  ],
194
387
  "stateMutability": "view",
@@ -207,13 +400,64 @@
207
400
  "stateMutability": "view",
208
401
  "type": "function"
209
402
  },
403
+ {
404
+ "inputs": [],
405
+ "name": "authority",
406
+ "outputs": [
407
+ {
408
+ "internalType": "address",
409
+ "name": "",
410
+ "type": "address"
411
+ }
412
+ ],
413
+ "stateMutability": "view",
414
+ "type": "function"
415
+ },
416
+ {
417
+ "inputs": [
418
+ {
419
+ "internalType": "NftId",
420
+ "name": "instanceNftId",
421
+ "type": "uint96"
422
+ },
423
+ {
424
+ "internalType": "address",
425
+ "name": "targetAddress",
426
+ "type": "address"
427
+ },
428
+ {
429
+ "internalType": "string",
430
+ "name": "targetName",
431
+ "type": "string"
432
+ },
433
+ {
434
+ "internalType": "bytes4[][]",
435
+ "name": "selectors",
436
+ "type": "bytes4[][]"
437
+ },
438
+ {
439
+ "internalType": "RoleId[]",
440
+ "name": "roles",
441
+ "type": "uint64[]"
442
+ }
443
+ ],
444
+ "name": "createGifTarget",
445
+ "outputs": [],
446
+ "stateMutability": "nonpayable",
447
+ "type": "function"
448
+ },
210
449
  {
211
450
  "inputs": [],
212
451
  "name": "createInstanceClone",
213
452
  "outputs": [
214
453
  {
215
- "internalType": "contract AccessManagerSimple",
216
- "name": "clonedAccessManager",
454
+ "internalType": "contract AccessManagerUpgradeableInitializeable",
455
+ "name": "clonedOzAccessManager",
456
+ "type": "address"
457
+ },
458
+ {
459
+ "internalType": "contract InstanceAccessManager",
460
+ "name": "clonedInstanceAccessManager",
217
461
  "type": "address"
218
462
  },
219
463
  {
@@ -223,13 +467,23 @@
223
467
  },
224
468
  {
225
469
  "internalType": "NftId",
226
- "name": "instanceNftId",
470
+ "name": "clonedInstanceNftId",
227
471
  "type": "uint96"
228
472
  },
229
473
  {
230
474
  "internalType": "contract InstanceReader",
231
475
  "name": "clonedInstanceReader",
232
476
  "type": "address"
477
+ },
478
+ {
479
+ "internalType": "contract BundleManager",
480
+ "name": "clonedBundleManager",
481
+ "type": "address"
482
+ },
483
+ {
484
+ "internalType": "contract InstanceStore",
485
+ "name": "clonedInstanceStore",
486
+ "type": "address"
233
487
  }
234
488
  ],
235
489
  "stateMutability": "nonpayable",
@@ -237,15 +491,15 @@
237
491
  },
238
492
  {
239
493
  "inputs": [],
240
- "name": "getAccessManagerMaster",
494
+ "name": "getDomain",
241
495
  "outputs": [
242
496
  {
243
- "internalType": "address",
497
+ "internalType": "ObjectType",
244
498
  "name": "",
245
- "type": "address"
499
+ "type": "uint8"
246
500
  }
247
501
  ],
248
- "stateMutability": "view",
502
+ "stateMutability": "pure",
249
503
  "type": "function"
250
504
  },
251
505
  {
@@ -291,13 +545,8 @@
291
545
  }
292
546
  ],
293
547
  "internalType": "struct IRegistry.ObjectInfo",
294
- "name": "",
548
+ "name": "info",
295
549
  "type": "tuple"
296
- },
297
- {
298
- "internalType": "bytes",
299
- "name": "data",
300
- "type": "bytes"
301
550
  }
302
551
  ],
303
552
  "stateMutability": "view",
@@ -305,12 +554,12 @@
305
554
  },
306
555
  {
307
556
  "inputs": [],
308
- "name": "getInitializedVersion",
557
+ "name": "getMasterInstance",
309
558
  "outputs": [
310
559
  {
311
- "internalType": "uint64",
560
+ "internalType": "address",
312
561
  "name": "",
313
- "type": "uint64"
562
+ "type": "address"
314
563
  }
315
564
  ],
316
565
  "stateMutability": "view",
@@ -318,10 +567,10 @@
318
567
  },
319
568
  {
320
569
  "inputs": [],
321
- "name": "getInstance",
570
+ "name": "getMasterInstanceAccessManager",
322
571
  "outputs": [
323
572
  {
324
- "internalType": "contract Instance",
573
+ "internalType": "address",
325
574
  "name": "",
326
575
  "type": "address"
327
576
  }
@@ -331,7 +580,7 @@
331
580
  },
332
581
  {
333
582
  "inputs": [],
334
- "name": "getInstanceMaster",
583
+ "name": "getMasterInstanceBundleManager",
335
584
  "outputs": [
336
585
  {
337
586
  "internalType": "address",
@@ -344,7 +593,7 @@
344
593
  },
345
594
  {
346
595
  "inputs": [],
347
- "name": "getInstanceReaderMaster",
596
+ "name": "getMasterInstanceReader",
348
597
  "outputs": [
349
598
  {
350
599
  "internalType": "address",
@@ -355,32 +604,6 @@
355
604
  "stateMutability": "view",
356
605
  "type": "function"
357
606
  },
358
- {
359
- "inputs": [],
360
- "name": "getMajorVersion",
361
- "outputs": [
362
- {
363
- "internalType": "VersionPart",
364
- "name": "majorVersion",
365
- "type": "uint8"
366
- }
367
- ],
368
- "stateMutability": "view",
369
- "type": "function"
370
- },
371
- {
372
- "inputs": [],
373
- "name": "getName",
374
- "outputs": [
375
- {
376
- "internalType": "string",
377
- "name": "",
378
- "type": "string"
379
- }
380
- ],
381
- "stateMutability": "pure",
382
- "type": "function"
383
- },
384
607
  {
385
608
  "inputs": [],
386
609
  "name": "getNftId",
@@ -422,25 +645,19 @@
422
645
  },
423
646
  {
424
647
  "inputs": [],
425
- "name": "getVersion",
648
+ "name": "getRegistryAddress",
426
649
  "outputs": [
427
650
  {
428
- "internalType": "Version",
651
+ "internalType": "address",
429
652
  "name": "",
430
- "type": "uint24"
653
+ "type": "address"
431
654
  }
432
655
  ],
433
- "stateMutability": "pure",
656
+ "stateMutability": "view",
434
657
  "type": "function"
435
658
  },
436
659
  {
437
- "inputs": [
438
- {
439
- "internalType": "uint256",
440
- "name": "idx",
441
- "type": "uint256"
442
- }
443
- ],
660
+ "inputs": [],
444
661
  "name": "getVersion",
445
662
  "outputs": [
446
663
  {
@@ -449,87 +666,104 @@
449
666
  "type": "uint24"
450
667
  }
451
668
  ],
452
- "stateMutability": "view",
669
+ "stateMutability": "pure",
453
670
  "type": "function"
454
671
  },
455
672
  {
456
673
  "inputs": [],
457
- "name": "getVersionCount",
458
- "outputs": [
674
+ "name": "initializeERC165",
675
+ "outputs": [],
676
+ "stateMutability": "nonpayable",
677
+ "type": "function"
678
+ },
679
+ {
680
+ "inputs": [
459
681
  {
460
- "internalType": "uint256",
461
- "name": "",
462
- "type": "uint256"
682
+ "internalType": "address",
683
+ "name": "initialOwner",
684
+ "type": "address"
685
+ },
686
+ {
687
+ "internalType": "address",
688
+ "name": "registryAddress",
689
+ "type": "address"
463
690
  }
464
691
  ],
465
- "stateMutability": "view",
692
+ "name": "initializeNftOwnable",
693
+ "outputs": [],
694
+ "stateMutability": "nonpayable",
466
695
  "type": "function"
467
696
  },
468
697
  {
469
698
  "inputs": [
470
699
  {
471
- "internalType": "Version",
472
- "name": "_version",
473
- "type": "uint24"
700
+ "internalType": "address",
701
+ "name": "registryAddress",
702
+ "type": "address"
703
+ },
704
+ {
705
+ "internalType": "NftId",
706
+ "name": "parentNftId",
707
+ "type": "uint96"
708
+ },
709
+ {
710
+ "internalType": "ObjectType",
711
+ "name": "objectType",
712
+ "type": "uint8"
713
+ },
714
+ {
715
+ "internalType": "bool",
716
+ "name": "isInterceptor",
717
+ "type": "bool"
718
+ },
719
+ {
720
+ "internalType": "address",
721
+ "name": "initialOwner",
722
+ "type": "address"
723
+ },
724
+ {
725
+ "internalType": "bytes",
726
+ "name": "registryData",
727
+ "type": "bytes"
474
728
  }
475
729
  ],
476
- "name": "getVersionInfo",
477
- "outputs": [
730
+ "name": "initializeRegisterable",
731
+ "outputs": [],
732
+ "stateMutability": "nonpayable",
733
+ "type": "function"
734
+ },
735
+ {
736
+ "inputs": [
478
737
  {
479
- "components": [
480
- {
481
- "internalType": "Version",
482
- "name": "version",
483
- "type": "uint24"
484
- },
485
- {
486
- "internalType": "address",
487
- "name": "implementation",
488
- "type": "address"
489
- },
490
- {
491
- "internalType": "address",
492
- "name": "activatedBy",
493
- "type": "address"
494
- },
495
- {
496
- "internalType": "Timestamp",
497
- "name": "activatedAt",
498
- "type": "uint40"
499
- },
500
- {
501
- "internalType": "Blocknumber",
502
- "name": "activatedIn",
503
- "type": "uint32"
504
- }
505
- ],
506
- "internalType": "struct IVersionable.VersionInfo",
507
- "name": "",
508
- "type": "tuple"
738
+ "internalType": "address",
739
+ "name": "registryAddress",
740
+ "type": "address"
509
741
  }
510
742
  ],
511
- "stateMutability": "view",
743
+ "name": "initializeRegistryLinked",
744
+ "outputs": [],
745
+ "stateMutability": "nonpayable",
512
746
  "type": "function"
513
747
  },
514
748
  {
515
749
  "inputs": [
516
750
  {
517
751
  "internalType": "address",
518
- "name": "implementation",
752
+ "name": "registry",
519
753
  "type": "address"
520
754
  },
521
755
  {
522
756
  "internalType": "address",
523
- "name": "activatedBy",
757
+ "name": "authority",
524
758
  "type": "address"
525
759
  },
526
760
  {
527
- "internalType": "bytes",
528
- "name": "data",
529
- "type": "bytes"
761
+ "internalType": "address",
762
+ "name": "initialOwner",
763
+ "type": "address"
530
764
  }
531
765
  ],
532
- "name": "initialize",
766
+ "name": "initializeService",
533
767
  "outputs": [],
534
768
  "stateMutability": "nonpayable",
535
769
  "type": "function"
@@ -537,17 +771,29 @@
537
771
  {
538
772
  "inputs": [
539
773
  {
540
- "internalType": "Version",
541
- "name": "_version",
542
- "type": "uint24"
774
+ "internalType": "address",
775
+ "name": "activatedBy",
776
+ "type": "address"
777
+ },
778
+ {
779
+ "internalType": "bytes",
780
+ "name": "data",
781
+ "type": "bytes"
543
782
  }
544
783
  ],
545
- "name": "isInitialized",
784
+ "name": "initializeVersionable",
785
+ "outputs": [],
786
+ "stateMutability": "nonpayable",
787
+ "type": "function"
788
+ },
789
+ {
790
+ "inputs": [],
791
+ "name": "isConsumingScheduledOp",
546
792
  "outputs": [
547
793
  {
548
- "internalType": "bool",
794
+ "internalType": "bytes4",
549
795
  "name": "",
550
- "type": "bool"
796
+ "type": "bytes4"
551
797
  }
552
798
  ],
553
799
  "stateMutability": "view",
@@ -560,16 +806,35 @@
560
806
  "stateMutability": "nonpayable",
561
807
  "type": "function"
562
808
  },
809
+ {
810
+ "inputs": [
811
+ {
812
+ "internalType": "bytes4",
813
+ "name": "interfaceId",
814
+ "type": "bytes4"
815
+ }
816
+ ],
817
+ "name": "registerInterface",
818
+ "outputs": [],
819
+ "stateMutability": "nonpayable",
820
+ "type": "function"
821
+ },
563
822
  {
564
823
  "inputs": [
565
824
  {
566
825
  "internalType": "address",
567
- "name": "accessManagerMaster",
826
+ "name": "instanceAddress",
568
827
  "type": "address"
569
828
  }
570
829
  ],
571
- "name": "setAccessManagerMaster",
572
- "outputs": [],
830
+ "name": "setAndRegisterMasterInstance",
831
+ "outputs": [
832
+ {
833
+ "internalType": "NftId",
834
+ "name": "masterInstanceNftId",
835
+ "type": "uint96"
836
+ }
837
+ ],
573
838
  "stateMutability": "nonpayable",
574
839
  "type": "function"
575
840
  },
@@ -577,11 +842,24 @@
577
842
  "inputs": [
578
843
  {
579
844
  "internalType": "address",
580
- "name": "instanceMaster",
845
+ "name": "newAuthority",
581
846
  "type": "address"
582
847
  }
583
848
  ],
584
- "name": "setInstanceMaster",
849
+ "name": "setAuthority",
850
+ "outputs": [],
851
+ "stateMutability": "nonpayable",
852
+ "type": "function"
853
+ },
854
+ {
855
+ "inputs": [
856
+ {
857
+ "internalType": "bool",
858
+ "name": "locked",
859
+ "type": "bool"
860
+ }
861
+ ],
862
+ "name": "setComponentLocked",
585
863
  "outputs": [],
586
864
  "stateMutability": "nonpayable",
587
865
  "type": "function"
@@ -590,11 +868,11 @@
590
868
  "inputs": [
591
869
  {
592
870
  "internalType": "address",
593
- "name": "instanceReaderMaster",
871
+ "name": "instanceReaderAddress",
594
872
  "type": "address"
595
873
  }
596
874
  ],
597
- "name": "setInstanceReaderMaster",
875
+ "name": "setMasterInstanceReader",
598
876
  "outputs": [],
599
877
  "stateMutability": "nonpayable",
600
878
  "type": "function"
@@ -621,35 +899,38 @@
621
899
  {
622
900
  "inputs": [
623
901
  {
624
- "internalType": "address",
625
- "name": "implementation",
626
- "type": "address"
627
- },
628
- {
629
- "internalType": "address",
630
- "name": "activatedBy",
631
- "type": "address"
632
- },
902
+ "internalType": "NftId",
903
+ "name": "instanceNftId",
904
+ "type": "uint96"
905
+ }
906
+ ],
907
+ "name": "upgradeInstanceReader",
908
+ "outputs": [],
909
+ "stateMutability": "nonpayable",
910
+ "type": "function"
911
+ },
912
+ {
913
+ "inputs": [
633
914
  {
634
915
  "internalType": "bytes",
635
916
  "name": "data",
636
917
  "type": "bytes"
637
918
  }
638
919
  ],
639
- "name": "upgrade",
920
+ "name": "upgradeVersionable",
640
921
  "outputs": [],
641
922
  "stateMutability": "nonpayable",
642
923
  "type": "function"
643
924
  }
644
925
  ],
645
- "bytecode": "0x60806040523480156200001157600080fd5b506301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055600280546001600160a01b031916331790556200006a62000070565b62000124565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000c15760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001215780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61251f80620001346000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063656bc9ef116100f9578063b3c6501511610097578063cf7a1d7711610071578063cf7a1d771461052f578063d6277f9914610542578063de7b5d1414610555578063eeff428e1461055b57600080fd5b8063b3c65015146104e2578063b88da75914610502578063cde749f41461051557600080fd5b806393c48054116100d357806393c4805414610469578063946dfcfe1461047a578063a3f4df7e146104a1578063a745e3df146104cf57600080fd5b8063656bc9ef14610446578063872309c714610459578063893d20e81461046157600080fd5b80631eff4b22116101665780634f421333116101405780634f421333146103e457806355ad7436146103f75780635ab1bd531461040a578063644c45e01461041b57600080fd5b80631eff4b22146102855780633a0b4b31146102ba5780634d459c90146102cb57600080fd5b806301ffc9a7146101ae5780630d8e6e2c146101f05780630fec111c1461020c578063138461e01461022257806317d7de7c1461022c5780631a77e50c14610260575b600080fd5b6101db6101bc366004611d44565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101f8610573565b60405162ffffff90911681526020016101e7565b6102146105fd565b6040516101e7929190611dc5565b61022a61077f565b005b60408051808201909152600f81526e496e7374616e63655365727669636560881b60208201525b6040516101e79190611e6c565b6004546001600160a01b03165b6040516001600160a01b0390911681526020016101e7565b6102ac7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b6040519081526020016101e7565b6005546001600160a01b031661026d565b6103876102d9366004611e90565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526000805160206124ca83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016101e7565b6101db6103f2366004611e90565b6109a1565b61022a610405366004611ec2565b610a54565b6001546001600160a01b031661026d565b600154600160a01b90046001600160601b03166040516001600160601b0390911681526020016101e7565b61022a610454366004611ec2565b610ae1565b6102ac600081565b61026d610b74565b6006546001600160a01b031661026d565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546102ac565b6102536040518060400160405280600f81526020016e496e7374616e63655365727669636560881b81525081565b61022a6104dd366004611f74565b610c8d565b6104ea610de7565b6040516001600160401b0390911681526020016101e7565b6101f8610510366004612018565b610e08565b61051d610e59565b60405160ff90911681526020016101e7565b61022a61053d366004611f74565b610edc565b61022a610550366004611ec2565b610fe5565b3061026d565b610563611079565b6040516101e79493929190612031565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156105d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f89190612065565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806106806001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016106c8610b74565b6001600160a01b031681526020018260010180546106e590612082565b80601f016020809104026020016040519081016040528092919081815260200182805461071190612082565b801561075e5780601f106107335761010080835404028352916020019161075e565b820191906000526020600020905b81548152906001019060200180831161074157829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156107e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080591906120cc565b1561084c576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b03166108755760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e291906120cc565b61090a576040516372657a5160e01b81526001600160a01b0382166004820152602401610843565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610954573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097891906120fe565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b6000806000805160206124ca83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d9190612119565b1192915050565b6005546001600160a01b031615610abf5760405162461bcd60e51b815260206004820152602960248201527f4552524f523a4352442d3030323a494e5354414e43455f4d41535445525f414c604482015268149150511657d4d15560ba1b6064820152608401610843565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031615610b525760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a4352442d3030313a4143434553535f4d414e414745525f4d415360448201526e15115497d053149150511657d4d155608a1b6064820152608401610843565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd91906120cc565b15610c7d57600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f8919061213d565b506002546001600160a01b031690565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610caf610573565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d13919061215a565b6000805160206124aa8339815191528054600160401b900460ff1680610d46575080546001600160401b03808416911610155b15610d645760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610d8f85856114ed565b610d988361178c565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006105f86000805160206124aa833981519152546001600160401b031690565b60006000805160206124ca8339815191526001018281548110610e2d57610e2d612183565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b6000610e63610573565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f891906121b3565b6000805160206124aa8339815191528054600160401b810460ff1615906001600160401b0316600081158015610f0f5750825b90506000826001600160401b03166001148015610f2b5750303b155b905081158015610f39575080155b15610f575760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f8157845460ff60401b1916600160401b1785555b610f8b88886114ed565b610f958787611794565b8315610fdb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6006546001600160a01b0316156110575760405162461bcd60e51b815260206004820152603060248201527f4552524f523a4352442d3030333a494e5354414e43455f5245414445525f4d4160448201526f14d5115497d053149150511657d4d15560821b6064820152608401610843565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600354604051636939560f60e11b81526001600160a01b0390911660048201819052600091829182918291908290829063d272ac1e90602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906120fe565b604051632efe011360e01b815260036004820152600060248201819052604482018190529192506001600160a01b0384169063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612065565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156111e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120491906121b3565b604080516001600160e01b031960e085901b1681526004810191909152600f60448201526e52656769737472795365727669636560881b606482015260ff9091166024820152608401602060405180830381865afa15801561126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128e919061213d565b60045490915081906112a8906001600160a01b031661195f565b60405163189acdbd60e31b81523360048201529098506001600160a01b0389169063c4d66de890602401600060405180830381600087803b1580156112ec57600080fd5b505af1158015611300573d6000803e3d6000fd5b505060055461131a92506001600160a01b0316905061195f565b60035460405163976b0a7760e01b81529198506001600160a01b03808a169263976b0a7792611354928d9291169088903390600401612031565b600060405180830381600087803b15801561136e57600080fd5b505af1158015611382573d6000803e3d6000fd5b505060405163834af15360e01b81526001600160a01b038a81166004830152600093508416915063834af153906024016000604051808303816000875af11580156113d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113f9919081019061221d565b508051600654909850909150611417906001600160a01b031661195f565b600354604051633ca904dd60e21b81526001600160a01b0391821660048201526001600160601b038a16602482015291975087169063f2a4137490604401600060405180830381600087803b15801561146f57600080fd5b505af1158015611483573d6000803e3d6000fd5b5050604080516001600160a01b038d811682528c811660208301528a16818301526001600160601b038b16606082015290517f89f53d1fc9d655ac6863fb19d55f6cc8a7649a51ec36a0d13ec77d2bd2e970f39350908190036080019150a1505050505090919293565b6114f56119d1565b6000805160206124ca83398151915260006115256000805160206124aa833981519152546001600160401b031690565b90506000611531610573565b9050816001600160401b031660010361155e5760028301805462ffffff191662ffffff83161790556115ac565b600283015462ffffff908116908216116115ac5760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610843565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190612315565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610dd89083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101a96119d1565b6000805160206124aa8339815191528054600160401b810460ff1615906001600160401b03166000811580156117c75750825b90506000826001600160401b031660011480156117e35750303b155b9050811580156117f1575080155b1561180f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561183957845460ff60401b1916600160401b1785555b60008680602001905181019061184f919061233c565b600380546001600160a01b0319166001600160a01b03939093169283179055604051636939560f60e11b815260048101839052909250600090829063d272ac1e90602401602060405180830381865afa1580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d491906120fe565b6003549091506118ed906001600160a01b031684611a0a565b6118fd631b4612f160e31b611a97565b61190d63777fa14760e11b611a97565b505050831561195657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166119cc576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6000805160206124aa83398151915254600160401b900460ff16611a0857604051631afcd79f60e31b815260040160405180910390fd5b565b6000611a3860408051808201909152600f81526e496e7374616e63655365727669636560881b602082015290565b611a40610e59565b604051602001611a51929190612376565b60405160208183030381529060405290506000611a6d84611abc565b90506000611a808583603c848888611b2d565b611a90631b4612f160e31b611a97565b5050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015611b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2791906120fe565b92915050565b611b378287611bb8565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101611ba783826123ea565b506119566303fb044760e21b611a97565b600280546001600160a01b0319166001600160a01b038416179055611bdc81611be0565b5050565b6001546001600160a01b031615611c195760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610843565b6001600160a01b038116611c405760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003611c765760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610843565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263350fb35160e11b60048201526301ffc9a790602401602060405180830381865afa925050508015611cf0575060408051601f3d908101601f19168201909252611ced918101906120cc565b60015b611d185760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610843565b80611bdc5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610843565b50565b600060208284031215611d5657600080fd5b81356001600160e01b031981168114611d6e57600080fd5b9392505050565b60005b83811015611d90578181015183820152602001611d78565b50506000910152565b60008151808452611db1816020860160208601611d75565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff60408501511660808301526060840151611e0960a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e0610100840152611e4f610120840182611d99565b90508281036020840152611e638185611d99565b95945050505050565b602081526000611d6e6020830184611d99565b62ffffff81168114611d4157600080fd5b600060208284031215611ea257600080fd5b8135611d6e81611e7f565b6001600160a01b0381168114611d4157600080fd5b600060208284031215611ed457600080fd5b8135611d6e81611ead565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715611f1757611f17611edf565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f4557611f45611edf565b604052919050565b60006001600160401b03821115611f6657611f66611edf565b50601f01601f191660200190565b600080600060608486031215611f8957600080fd5b8335611f9481611ead565b92506020840135611fa481611ead565b915060408401356001600160401b03811115611fbf57600080fd5b8401601f81018613611fd057600080fd5b8035611fe3611fde82611f4d565b611f1d565b818152876020838501011115611ff857600080fd5b816020840160208301376000602083830101528093505050509250925092565b60006020828403121561202a57600080fd5b5035919050565b6001600160a01b03948516815292841660208401526001600160601b03919091166040830152909116606082015260800190565b60006020828403121561207757600080fd5b8151611d6e81611e7f565b600181811c9082168061209657607f821691505b6020821081036120b657634e487b7160e01b600052602260045260246000fd5b50919050565b805180151581146119cc57600080fd5b6000602082840312156120de57600080fd5b611d6e826120bc565b80516001600160601b03811681146119cc57600080fd5b60006020828403121561211057600080fd5b611d6e826120e7565b60006020828403121561212b57600080fd5b5051919050565b80516119cc81611ead565b60006020828403121561214f57600080fd5b8151611d6e81611ead565b60006020828403121561216c57600080fd5b81516001600160401b0381168114611d6e57600080fd5b634e487b7160e01b600052603260045260246000fd5b60ff81168114611d4157600080fd5b80516119cc81612199565b6000602082840312156121c557600080fd5b8151611d6e81612199565b600082601f8301126121e157600080fd5b81516121ef611fde82611f4d565b81815284602083860101111561220457600080fd5b612215826020830160208701611d75565b949350505050565b6000806040838503121561223057600080fd5b82516001600160401b038082111561224757600080fd5b9084019060e0828703121561225b57600080fd5b612263611ef5565b61226c836120e7565b815261227a602084016120e7565b602082015261228b604084016121a8565b604082015261229c606084016120bc565b60608201526122ad60808401612132565b60808201526122be60a08401612132565b60a082015260c0830151828111156122d557600080fd5b6122e1888286016121d0565b60c08301525060208601519094509150808211156122fe57600080fd5b5061230b858286016121d0565b9150509250929050565b60006020828403121561232757600080fd5b815164ffffffffff81168114611d6e57600080fd5b6000806040838503121561234f57600080fd5b825161235a81611ead565b602084015190925061236b81611ead565b809150509250929050565b6040815260006123896040830185611d99565b905060ff831660208301529392505050565b601f8211156123e557600081815260208120601f850160051c810160208610156123c25750805b601f850160051c820191505b818110156123e1578281556001016123ce565b5050505b505050565b81516001600160401b0381111561240357612403611edf565b612417816124118454612082565b8461239b565b602080601f83116001811461244c57600084156124345750858301515b600019600386901b1c1916600185901b1785556123e1565b600085815260208120601f198616915b8281101561247b5788860151825594840194600190910190840161245c565b50858210156124995787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a264697066735822122059641835e5b7abf583d72ef299a93017da36bccc14a4c837d873a4f1777fb92964736f6c63430008140033",
646
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c8063656bc9ef116100f9578063b3c6501511610097578063cf7a1d7711610071578063cf7a1d771461052f578063d6277f9914610542578063de7b5d1414610555578063eeff428e1461055b57600080fd5b8063b3c65015146104e2578063b88da75914610502578063cde749f41461051557600080fd5b806393c48054116100d357806393c4805414610469578063946dfcfe1461047a578063a3f4df7e146104a1578063a745e3df146104cf57600080fd5b8063656bc9ef14610446578063872309c714610459578063893d20e81461046157600080fd5b80631eff4b22116101665780634f421333116101405780634f421333146103e457806355ad7436146103f75780635ab1bd531461040a578063644c45e01461041b57600080fd5b80631eff4b22146102855780633a0b4b31146102ba5780634d459c90146102cb57600080fd5b806301ffc9a7146101ae5780630d8e6e2c146101f05780630fec111c1461020c578063138461e01461022257806317d7de7c1461022c5780631a77e50c14610260575b600080fd5b6101db6101bc366004611d44565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6101f8610573565b60405162ffffff90911681526020016101e7565b6102146105fd565b6040516101e7929190611dc5565b61022a61077f565b005b60408051808201909152600f81526e496e7374616e63655365727669636560881b60208201525b6040516101e79190611e6c565b6004546001600160a01b03165b6040516001600160a01b0390911681526020016101e7565b6102ac7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b6040519081526020016101e7565b6005546001600160a01b031661026d565b6103876102d9366004611e90565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526000805160206124ca83398151915262ffffff92831660009081526020918252604090819020815160a0810183528154958616815263010000009095046001600160a01b03908116938601939093526001015491821690840152600160a01b810464ffffffffff166060840152600160c81b900463ffffffff1660808301525090565b60408051825162ffffff1681526020808401516001600160a01b039081169183019190915283830151169181019190915260608083015164ffffffffff169082015260809182015163ffffffff169181019190915260a0016101e7565b6101db6103f2366004611e90565b6109a1565b61022a610405366004611ec2565b610a54565b6001546001600160a01b031661026d565b600154600160a01b90046001600160601b03166040516001600160601b0390911681526020016101e7565b61022a610454366004611ec2565b610ae1565b6102ac600081565b61026d610b74565b6006546001600160a01b031661026d565b7f4f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed901546102ac565b6102536040518060400160405280600f81526020016e496e7374616e63655365727669636560881b81525081565b61022a6104dd366004611f74565b610c8d565b6104ea610de7565b6040516001600160401b0390911681526020016101e7565b6101f8610510366004612018565b610e08565b61051d610e59565b60405160ff90911681526020016101e7565b61022a61053d366004611f74565b610edc565b61022a610550366004611ec2565b610fe5565b3061026d565b610563611079565b6040516101e79493929190612031565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af41580156105d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f89190612065565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e001604052806106806001546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016106c8610b74565b6001600160a01b031681526020018260010180546106e590612082565b80601f016020809104026020016040519081016040528092919081815260200182805461071190612082565b801561075e5780601f106107335761010080835404028352916020019161075e565b820191906000526020600020905b81548152906001019060200180831161074157829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156107e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080591906120cc565b1561084c576001546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6001546001600160a01b03166108755760405163cf29926160e01b815260040160405180910390fd5b60015460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa1580156108be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e291906120cc565b61090a576040516372657a5160e01b81526001600160a01b0382166004820152602401610843565b600154604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610954573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097891906120fe565b600160146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b6000806000805160206124ca83398151915262ffffff84166000908152602091909152604090819020600101549051631bbffab160e21b8152600160c81b90910463ffffffff16600482015273__$5f476116ae21c5294e0c0761c07efa7e1c$__90636effeac490602401602060405180830381865af4158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d9190612119565b1192915050565b6005546001600160a01b031615610abf5760405162461bcd60e51b815260206004820152602960248201527f4552524f523a4352442d3030323a494e5354414e43455f4d41535445525f414c604482015268149150511657d4d15560ba1b6064820152608401610843565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b031615610b525760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a4352442d3030313a4143434553535f4d414e414745525f4d415360448201526e15115497d053149150511657d4d155608a1b6064820152608401610843565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfd91906120cc565b15610c7d57600154604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a90602401602060405180830381865afa158015610c59573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f8919061213d565b506002546001600160a01b031690565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610caf610573565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d13919061215a565b6000805160206124aa8339815191528054600160401b900460ff1680610d46575080546001600160401b03808416911610155b15610d645760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610d8f85856114ed565b610d988361178c565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15050505050565b60006105f86000805160206124aa833981519152546001600160401b031690565b60006000805160206124ca8339815191526001018281548110610e2d57610e2d612183565b90600052602060002090600a91828204019190066003029054906101000a900462ffffff169050919050565b6000610e63610573565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015610eb8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f891906121b3565b6000805160206124aa8339815191528054600160401b810460ff1615906001600160401b0316600081158015610f0f5750825b90506000826001600160401b03166001148015610f2b5750303b155b905081158015610f39575080155b15610f575760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f8157845460ff60401b1916600160401b1785555b610f8b88886114ed565b610f958787611794565b8315610fdb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6006546001600160a01b0316156110575760405162461bcd60e51b815260206004820152603060248201527f4552524f523a4352442d3030333a494e5354414e43455f5245414445525f4d4160448201526f14d5115497d053149150511657d4d15560821b6064820152608401610843565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600354604051636939560f60e11b81526001600160a01b0390911660048201819052600091829182918291908290829063d272ac1e90602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906120fe565b604051632efe011360e01b815260036004820152600060248201819052604482018190529192506001600160a01b0384169063a3bcd81d9073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af4158015611167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118b9190612065565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af41580156111e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120491906121b3565b604080516001600160e01b031960e085901b1681526004810191909152600f60448201526e52656769737472795365727669636560881b606482015260ff9091166024820152608401602060405180830381865afa15801561126a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128e919061213d565b60045490915081906112a8906001600160a01b031661195f565b60405163189acdbd60e31b81523360048201529098506001600160a01b0389169063c4d66de890602401600060405180830381600087803b1580156112ec57600080fd5b505af1158015611300573d6000803e3d6000fd5b505060055461131a92506001600160a01b0316905061195f565b60035460405163976b0a7760e01b81529198506001600160a01b03808a169263976b0a7792611354928d9291169088903390600401612031565b600060405180830381600087803b15801561136e57600080fd5b505af1158015611382573d6000803e3d6000fd5b505060405163834af15360e01b81526001600160a01b038a81166004830152600093508416915063834af153906024016000604051808303816000875af11580156113d1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113f9919081019061221d565b508051600654909850909150611417906001600160a01b031661195f565b600354604051633ca904dd60e21b81526001600160a01b0391821660048201526001600160601b038a16602482015291975087169063f2a4137490604401600060405180830381600087803b15801561146f57600080fd5b505af1158015611483573d6000803e3d6000fd5b5050604080516001600160a01b038d811682528c811660208301528a16818301526001600160601b038b16606082015290517f89f53d1fc9d655ac6863fb19d55f6cc8a7649a51ec36a0d13ec77d2bd2e970f39350908190036080019150a1505050505090919293565b6114f56119d1565b6000805160206124ca83398151915260006115256000805160206124aa833981519152546001600160401b031690565b90506000611531610573565b9050816001600160401b031660010361155e5760028301805462ffffff191662ffffff83161790556115ac565b600283015462ffffff908116908216116115ac5760405162461bcd60e51b815260206004820152600f60248201526e24a72b20a624a2102b22a929a4a7a760891b6044820152606401610843565b6001808401805491820181556000908152602090819020600a808404909101805462ffffff808716600394909606939093026101000a858102930219169190911790556040805160a0810182529283526001600160a01b038089168484015287168382015280516356db0c1960e11b81529051606084019273__$d53880c81dc91c20799140d711e5ab8718$__9263adb6183292600480830193928290030181865af4158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190612315565b64ffffffffff1681526020014363ffffffff90811690915262ffffff8084166000908152602087815260409182902085518154928701516001600160a01b039081166301000000026001600160b81b0319909416919095161791909117815584820151600190910180546060870151608090970151909516600160c81b0263ffffffff60c81b1964ffffffffff909716600160a01b026001600160c81b031990961692909416919091179390931793909316179055517fad0a0fc10465a8dd9da3ad5f43e1a7fff4b4578551c76f0ae8deb844f0d0bf6890610dd89083908890889062ffffff9390931683526001600160a01b03918216602084015216604082015260600190565b6101a96119d1565b6000805160206124aa8339815191528054600160401b810460ff1615906001600160401b03166000811580156117c75750825b90506000826001600160401b031660011480156117e35750303b155b9050811580156117f1575080155b1561180f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561183957845460ff60401b1916600160401b1785555b60008680602001905181019061184f919061233c565b600380546001600160a01b0319166001600160a01b03939093169283179055604051636939560f60e11b815260048101839052909250600090829063d272ac1e90602401602060405180830381865afa1580156118b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d491906120fe565b6003549091506118ed906001600160a01b031684611a0a565b6118fd631b4612f160e31b611a97565b61190d63777fa14760e11b611a97565b505050831561195657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166119cc576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6000805160206124aa83398151915254600160401b900460ff16611a0857604051631afcd79f60e31b815260040160405180910390fd5b565b6000611a3860408051808201909152600f81526e496e7374616e63655365727669636560881b602082015290565b611a40610e59565b604051602001611a51929190612376565b60405160208183030381529060405290506000611a6d84611abc565b90506000611a808583603c848888611b2d565b611a90631b4612f160e31b611a97565b5050505050565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b604051636939560f60e11b81526001600160a01b0382166004820181905260009163d272ac1e90602401602060405180830381865afa158015611b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2791906120fe565b92915050565b611b378287611bb8565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101611ba783826123ea565b506119566303fb044760e21b611a97565b600280546001600160a01b0319166001600160a01b038416179055611bdc81611be0565b5050565b6001546001600160a01b031615611c195760015460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610843565b6001600160a01b038116611c405760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003611c765760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610843565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263350fb35160e11b60048201526301ffc9a790602401602060405180830381865afa925050508015611cf0575060408051601f3d908101601f19168201909252611ced918101906120cc565b60015b611d185760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610843565b80611bdc5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610843565b50565b600060208284031215611d5657600080fd5b81356001600160e01b031981168114611d6e57600080fd5b9392505050565b60005b83811015611d90578181015183820152602001611d78565b50506000910152565b60008151808452611db1816020860160208601611d75565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff60408501511660808301526060840151611e0960a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e0610100840152611e4f610120840182611d99565b90508281036020840152611e638185611d99565b95945050505050565b602081526000611d6e6020830184611d99565b62ffffff81168114611d4157600080fd5b600060208284031215611ea257600080fd5b8135611d6e81611e7f565b6001600160a01b0381168114611d4157600080fd5b600060208284031215611ed457600080fd5b8135611d6e81611ead565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715611f1757611f17611edf565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611f4557611f45611edf565b604052919050565b60006001600160401b03821115611f6657611f66611edf565b50601f01601f191660200190565b600080600060608486031215611f8957600080fd5b8335611f9481611ead565b92506020840135611fa481611ead565b915060408401356001600160401b03811115611fbf57600080fd5b8401601f81018613611fd057600080fd5b8035611fe3611fde82611f4d565b611f1d565b818152876020838501011115611ff857600080fd5b816020840160208301376000602083830101528093505050509250925092565b60006020828403121561202a57600080fd5b5035919050565b6001600160a01b03948516815292841660208401526001600160601b03919091166040830152909116606082015260800190565b60006020828403121561207757600080fd5b8151611d6e81611e7f565b600181811c9082168061209657607f821691505b6020821081036120b657634e487b7160e01b600052602260045260246000fd5b50919050565b805180151581146119cc57600080fd5b6000602082840312156120de57600080fd5b611d6e826120bc565b80516001600160601b03811681146119cc57600080fd5b60006020828403121561211057600080fd5b611d6e826120e7565b60006020828403121561212b57600080fd5b5051919050565b80516119cc81611ead565b60006020828403121561214f57600080fd5b8151611d6e81611ead565b60006020828403121561216c57600080fd5b81516001600160401b0381168114611d6e57600080fd5b634e487b7160e01b600052603260045260246000fd5b60ff81168114611d4157600080fd5b80516119cc81612199565b6000602082840312156121c557600080fd5b8151611d6e81612199565b600082601f8301126121e157600080fd5b81516121ef611fde82611f4d565b81815284602083860101111561220457600080fd5b612215826020830160208701611d75565b949350505050565b6000806040838503121561223057600080fd5b82516001600160401b038082111561224757600080fd5b9084019060e0828703121561225b57600080fd5b612263611ef5565b61226c836120e7565b815261227a602084016120e7565b602082015261228b604084016121a8565b604082015261229c606084016120bc565b60608201526122ad60808401612132565b60808201526122be60a08401612132565b60a082015260c0830151828111156122d557600080fd5b6122e1888286016121d0565b60c08301525060208601519094509150808211156122fe57600080fd5b5061230b858286016121d0565b9150509250929050565b60006020828403121561232757600080fd5b815164ffffffffff81168114611d6e57600080fd5b6000806040838503121561234f57600080fd5b825161235a81611ead565b602084015190925061236b81611ead565b809150509250929050565b6040815260006123896040830185611d99565b905060ff831660208301529392505050565b601f8211156123e557600081815260208120601f850160051c810160208610156123c25750805b601f850160051c820191505b818110156123e1578281556001016123ce565b5050505b505050565b81516001600160401b0381111561240357612403611edf565b612417816124118454612082565b8461239b565b602080601f83116001811461244c57600084156124345750858301515b600019600386901b1c1916600185901b1785556123e1565b600085815260208120601f198616915b8281101561247b5788860151825594840194600190910190840161245c565b50858210156124995787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fef0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a004f61291a8ac3d020d0a7d919a76b8592aa88385744dee3f8b4f3873b969ed900a264697066735822122059641835e5b7abf583d72ef299a93017da36bccc14a4c837d873a4f1777fb92964736f6c63430008140033",
926
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000d6565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000735760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d35780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613f2880620000e66000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80637a9e5e4b1161011a578063bf7e214f116100ad578063edabac031161007c578063edabac0314610488578063eeff428e14610499578063f21de1e81461032b578063f7c34ee0146104f3578063feec11901461050657600080fd5b8063bf7e214f14610435578063c22f980d14610453578063e338e27b14610466578063eb59c6b11461047757600080fd5b80638fb36037116100e95780638fb36037146103dd578063ada9652e146103fe578063b03d2a8e14610413578063b68d18091461042657600080fd5b80637a9e5e4b146103a7578063872309c7146103ba578063893d20e8146103c25780638e32e979146103ca57600080fd5b8063329d6e7411610192578063644c45e011610161578063644c45e01461033c578063675393bf1461036e5780636a778e73146103815780636c6fbb281461039457600080fd5b8063329d6e74146102fd57806336fc697e1461031057806349bb9e4b146103185780635ab1bd531461032b57600080fd5b80631eff4b22116101ce5780631eff4b221461027d578063214cdb80146102b257806327bb7a33146102c55780632b440bc9146102d857600080fd5b806301ffc9a7146102005780630d8e6e2c146102425780630fec111c1461025e578063138461e014610273575b600080fd5b61022d61020e3660046133d0565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61024a610519565b60405162ffffff9091168152602001610239565b6102666105a3565b6040516102399190613442565b61027b610752565b005b6102a47f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610239565b61027b6102c03660046133d0565b610959565b61027b6102d3366004613607565b610986565b6003546001600160a01b03165b6040516001600160a01b039091168152602001610239565b61027b61030b36600461369f565b610a12565b61027b610b5f565b61027b6103263660046136d3565b610ba5565b6001546001600160a01b03166102e5565b600080516020613e93833981519152546001600160601b03165b6040516001600160601b039091168152602001610239565b61027b61037c366004613722565b610ca4565b61035661038f366004613722565b610db2565b61027b6103a23660046138cd565b611849565b61027b6103b5366004613722565b611a74565b6102a4600081565b6102e5611b0e565b61027b6103d8366004613991565b611c45565b6103e5611e7e565b6040516001600160e01b03199091168152602001610239565b6102a4600080516020613e9383398151915281565b61027b6104213660046139dc565b611eb6565b60405160468152602001610239565b600080516020613eb3833981519152546001600160a01b03166102e5565b61027b6104613660046139f9565b61211c565b6004546001600160a01b03166102e5565b6006546001600160a01b03166102e5565b6005546001600160a01b03166102e5565b6104a1612347565b604080516001600160a01b0398891681529688166020880152948716948601949094526001600160601b03909216606085015284166080840152831660a08301529190911660c082015260e001610239565b61027b610501366004613a16565b612d51565b61027b610514366004613722565b612dc8565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190613a4f565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b9091041615159181019190915260018201805491929160608401919061064e90613a74565b80601f016020809104026020016040519081016040528092919081815260200182805461067a90613a74565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b50505050508152505090506040518060e001604052806106e5600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610736611b0e565b6001600160a01b03168152602001826060015181525091505090565b6000600080516020613e9383398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e59190613ab9565b156108165780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b306108296001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613ab9565b6108bd5760405163b9304b0d60e01b81526001600160a01b038216600482015260240161080d565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190613ae1565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b610961612f3b565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61098e612f3b565b6109988287612d51565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101610a088382613b4c565b5050505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610a34610519565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190613c0b565b600080516020613ed38339815191528054600160401b900460ff1680610acb575080546001600160401b03808416911610155b15610ae95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610b1383612f74565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610b67612f3b565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600080516020613ed38339815191528054600160401b810460ff1615906001600160401b0316600081158015610bd85750825b90506000826001600160401b03166001148015610bf45750303b155b905081158015610c02575080155b15610c205760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4a57845460ff60401b1916600160401b1785555b610c548787612f7c565b8315610c9b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b610cac612f3b565b806001600160a01b03163b600003610ce25760405163fdeac91f60e01b81526001600160a01b038216600482015260240161080d565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630a3888e560e31b60048201526301ffc9a790602401602060405180830381865afa925050508015610d5c575060408051601f3d908101601f19168201909252610d5991810190613ab9565b60015b610d845760405163fdeac91f60e01b81526001600160a01b038216600482015260240161080d565b80610dad5760405163fdeac91f60e01b81526001600160a01b038316600482015260240161080d565b505b50565b6000610dbc611b0e565b6001600160a01b0316336001600160a01b031614610def5760405163086391f760e31b815233600482015260240161080d565b6004546001600160a01b031615610e1957604051632c237de760e11b815260040160405180910390fd5b6002546001600160a01b031615610e4357604051636519f6b960e01b815260040160405180910390fd5b6003546001600160a01b031615610e6d57604051630157f74960e01b815260040160405180910390fd5b6006546001600160a01b031615610e9757604051637f405a2960e01b815260040160405180910390fd5b6001600160a01b038216610ebe576040516309353e4560e11b815260040160405180910390fd5b60008290506000816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190613c33565b905060008190506000836001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f929190613c33565b905060008190506000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffd9190613c33565b905060008190506000876001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110689190613c33565b905060008190506000896001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d39190613c33565b9050806001600160a01b0389166110fd5760405163078ddb7760e51b815260040160405180910390fd5b6001600160a01b0387166111245760405163459e9b9760e01b815260040160405180910390fd5b6001600160a01b03851661114b5760405163e267254160e01b815260040160405180910390fd5b6001600160a01b03831661117257604051630ddeaef560e11b815260040160405180910390fd5b6001600160a01b038116611199576040516301fa2a2b60e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb9190613c33565b6001600160a01b03168b6001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611242573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112669190613c33565b6001600160a01b03161461128d576040516334ddf1a760e21b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ef9190613c33565b6001600160a01b0316846001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a9190613c33565b6001600160a01b031614611381576040516326c89a4160e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190613c33565b6001600160a01b0316826001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190613c33565b6001600160a01b03161461147557604051631129422760e31b815260040160405180910390fd5b8a6001600160a01b0316866001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e19190613c33565b6001600160a01b031614611508576040516331783c7160e11b815260040160405180910390fd5b8a6001600160a01b0316846001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115749190613c33565b6001600160a01b03161461159b57604051631b25e96d60e31b815260040160405180910390fd5b88600260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082600660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600760006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060006116996001546001600160a01b031690565b6001600160a01b031663d39e604360286116b1610519565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190613c5b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190613c33565b6004549091506001600160a01b0390811690600090831663026bc43b836117b8611b0e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016000604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261182d9190810190613cbd565b905080600001519e505050505050505050505050505050919050565b6001546001600160a01b0316604051632b91e0a960e01b81523360048201526001600160a01b039190911690632b91e0a990602401602060405180830381865afa15801561189b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bf9190613ab9565b6118de576040516302613e9f60e51b815233600482015260240161080d565b6000806118eb878761309c565b915091506000826001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa15801561192f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119539190613c33565b60405163044ec4c360e41b81529091506001600160a01b038216906344ec4c3090611984908a908a90600401613d8f565b600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050505060005b8451811015611a6957816001600160a01b0316630c8ae53e888884815181106119e4576119e4613db3565b60200260200101518885815181106119fe576119fe613db3565b60200260200101516040518463ffffffff1660e01b8152600401611a2493929190613dc9565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505050508080611a6190613e3c565b9150506119b9565b505050505050505050565b33611a94600080516020613eb3833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b031614611acf5760405162d1953b60e31b81526001600160a01b038216600482015260240161080d565b816001600160a01b03163b600003611b05576040516361798f2f60e11b81526001600160a01b038316600482015260240161080d565b610dad8261324c565b600080600080516020613e9383398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba29190613ab9565b15611c2f576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c299190613c33565b91505090565b54600160601b90046001600160a01b0316919050565b611c4d612f3b565b611ccd83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190613ae1565b603c60008560405180602001604052806000815250610986565b6001600160a01b03821615611cea57611ce5826132ad565b611e59565b6000611cfe6001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d829190613c5b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611deb9190613c33565b9050611e57816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e529190613c33565b6132ad565b505b611e69634a531f3360e01b610959565b611e7963b68d180960e01b610959565b505050565b600080516020613eb3833981519152805460009190600160a01b900460ff16611ea8576000611c29565b638fb3603760e01b91505090565b6001546001600160a01b0316604051630bee2f1560e11b81523360048201526001600160a01b0391909116906317dc5e2a90602401602060405180830381865afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c9190613ab9565b611f4b576040516302613e9f60e51b815233600482015260240161080d565b336000611f606001546001600160a01b031690565b6040516308b09a5f60e41b81526001600160a01b038481166004830152919250600091831690638b09a5f090602401600060405180830381865afa158015611fac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fd49190810190613cbd565b602001516040516305247a1760e51b81526001600160601b03821660048201529091506000906001600160a01b0384169063a48f42e090602401600060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120539190810190613cbd565b608001519050806001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015612097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bb9190613c33565b6040516313bfaf6360e31b81526001600160a01b03868116600483015287151560248301529190911690639dfd7b1890604401600060405180830381600087803b15801561210857600080fd5b505af1158015611a69573d6000803e3d6000fd5b8061212f6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03831660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561217e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a29190613c33565b6001600160a01b0316336001600160a01b0316146121d5576040516302613e9f60e51b815233600482015260240161080d565b60006121e96001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122649190810190613cbd565b608081015160055491925090600090612285906001600160a01b03166132be565b60405163189acdbd60e31b81526001600160a01b0384811660048301529192509082169063c4d66de890602401600060405180830381600087803b1580156122cc57600080fd5b505af11580156122e0573d6000803e3d6000fd5b5050604051633def10c760e21b81526001600160a01b0384811660048301528516925063f7bc431c9150602401600060405180830381600087803b15801561232757600080fd5b505af115801561233b573d6000803e3d6000fd5b50505050505050505050565b600080808080808033816123636001546001600160a01b031690565b604051636939560f60e11b81526001600160a01b038216600482018190529192506000919063d272ac1e90602401602060405180830381865afa1580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d29190613ae1565b905060006001600160a01b03831663d39e604360286123ef610519565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015612444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124689190613c5b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa1580156124ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d19190613c33565b6002549091506124e9906001600160a01b03166132be565b60405163189acdbd60e31b8152306004820152909b506001600160a01b038c169063c4d66de890602401600060405180830381600087803b15801561252d57600080fd5b505af1158015612541573d6000803e3d6000fd5b505060045461255b92506001600160a01b031690506132be565b60405163c0c53b8b60e01b81526001600160a01b038d8116600483015285811660248301528681166044830152919a50908a169063c0c53b8b90606401600060405180830381600087803b1580156125b257600080fd5b505af11580156125c6573d6000803e3d6000fd5b50506007546125e092506001600160a01b031690506132be565b60405163189acdbd60e31b81526001600160a01b038b811660048301529196509086169063c4d66de890602401600060405180830381600087803b15801561262757600080fd5b505af115801561263b573d6000803e3d6000fd5b505060405163048935d560e31b81526001600160a01b0388811660048301528c169250632449aea89150602401600060405180830381600087803b15801561268257600080fd5b505af1158015612696573d6000803e3d6000fd5b50506005546126b092506001600160a01b031690506132be565b60405163189acdbd60e31b81526001600160a01b038b811660048301529198509088169063c4d66de890602401600060405180830381600087803b1580156126f757600080fd5b505af115801561270b573d6000803e3d6000fd5b5050604051633def10c760e21b81526001600160a01b038a811660048301528c16925063f7bc431c9150602401600060405180830381600087803b15801561275257600080fd5b505af1158015612766573d6000803e3d6000fd5b505060065461278092506001600160a01b031690506132be565b60405163189acdbd60e31b81526001600160a01b038b811660048301529197509087169063c4d66de890602401600060405180830381600087803b1580156127c757600080fd5b505af11580156127db573d6000803e3d6000fd5b505060405162422c9d60e81b81526001600160a01b0389811660048301528c16925063422c9d009150602401600060405180830381600087803b15801561282157600080fd5b505af1158015612835573d6000803e3d6000fd5b505060035461284f92506001600160a01b031690506132be565b99508a6001600160a01b03166325c471a0612868613330565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156128c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e59190613c0b565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038d16602482015260006044820152606401600060405180830381600087803b15801561293c57600080fd5b505af1158015612950573d6000803e3d6000fd5b505060405163189acdbd60e31b81526001600160a01b038c811660048301528d16925063c4d66de89150602401600060405180830381600087803b15801561299757600080fd5b505af11580156129ab573d6000803e3d6000fd5b5050604051630f749a8960e01b81526001600160a01b038d811660048301528c169250630f749a899150602401600060405180830381600087803b1580156129f257600080fd5b505af1158015612a06573d6000803e3d6000fd5b5050505073__$2a34b1f180a6bf22a62a9bc53ba8adfaf5$__63a1b61ad48b8b898989612a3b6001546001600160a01b031690565b612a43610519565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015612a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abc9190613c5b565b60405160e089901b6001600160e01b03191681526001600160a01b0397881660048201529587166024870152938616604486015291851660648501528416608484015290921660a482015260ff90911660c482015260e40160006040518083038186803b158015612b2c57600080fd5b505af4158015612b40573d6000803e3d6000fd5b505050508a6001600160a01b031663fe0776f5612b5b613330565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd89190613c0b565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152306024820152604401600060405180830381600087803b158015612c1f57600080fd5b505af1158015612c33573d6000803e3d6000fd5b505060405163026bc43b60e01b81526001600160a01b038c811660048301528781166024830152600093508416915063026bc43b906044016000604051808303816000875af1158015612c8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cb29190810190613cbd565b9050806000015198507eccc9e339dab7298ad32b43864beb3b1c0cf136971be26f1e67d90bf43ebd3d8c8c8c898b8d8f604051612d3b97969594939291906001600160a01b0397881681529587166020870152938616604086015291851660608501528416608084015290921660a08201526001600160601b039190911660c082015260e00190565b60405180910390a1505050505090919293949596565b612d59612f3b565b612d6281610ca4565b612d6a610b5f565b6001600160a01b038216612d915760405163f17ef42d60e01b815260040160405180910390fd5b50600080516020613e9383398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b612dd0611b0e565b6001600160a01b0316336001600160a01b031614612e035760405163086391f760e31b815233600482015260240161080d565b6005546001600160a01b0316612e2c576040516358e5a4af60e01b815260040160405180910390fd5b6001600160a01b038116612e5357604051631aa1808560e31b815260040160405180910390fd5b6005546001600160a01b0390811690821603612e8257604051630666e2a560e01b815260040160405180910390fd5b600480546040805163379ed74560e21b8152905184936001600160a01b039384169385169263de7b5d1492818301926020928290030181865afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef19190613c33565b6001600160a01b031614612f185760405163f026367160e01b815260040160405180910390fd5b50600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080516020613ed383398151915254600160401b900460ff16612f7257604051631afcd79f60e31b815260040160405180910390fd5b565b6101fb612f3b565b600080516020613ed38339815191528054600160401b810460ff1615906001600160401b0316600081158015612faf5750825b90506000826001600160401b03166001148015612fcb5750303b155b905081158015612fd9575080155b15612ff75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561302157845460ff60401b1916600160401b1785555b600080878060200190518101906130389190613e63565b925090506130488160008b611c45565b613058630655ba6560e31b610959565b50508315610c9b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610c92565b60008060006130b36001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa158015613106573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261312e9190810190613cbd565b905061314c8160400151613140604690565b60ff9081169116141590565b156131755760405163e3c2794960e01b81526001600160601b038716600482015260240161080d565b6040516308b09a5f60e41b81526001600160a01b03868116600483015260009190841690638b09a5f090602401600060405180830381865afa1580156131bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131e79190810190613cbd565b90506132048160200151886001600160601b039081169116141590565b1561323857805160405163a811346560e01b81526001600160601b03808a166004830152909116602482015260440161080d565b608090910151905190969095509350505050565b600080516020613eb383398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6132b5612f3b565b610daf816133a7565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661332b576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6040516368aebf7b60e01b81526000600482018190529073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015613383573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190613c0b565b6133af612f3b565b610daf8161324c565b80356001600160e01b03198116811461332b57600080fd5b6000602082840312156133e257600080fd5b6133eb826133b8565b9392505050565b60005b8381101561340d5781810151838201526020016133f5565b50506000910152565b6000815180845261342e8160208601602086016133f2565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a08301516134ab60c08401826001600160a01b03169052565b5060c083015160e0808401526134c5610100840182613416565b949350505050565b6001600160a01b0381168114610daf57600080fd5b6001600160601b0381168114610daf57600080fd5b60ff81168114610daf57600080fd5b8015158114610daf57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561354c5761354c613514565b60405290565b604051601f8201601f191681016001600160401b038111828210171561357a5761357a613514565b604052919050565b60006001600160401b0382111561359b5761359b613514565b50601f01601f191660200190565b60006135bc6135b784613582565b613552565b90508281528383830111156135d057600080fd5b828260208301376000602084830101529392505050565b600082601f8301126135f857600080fd5b6133eb838335602085016135a9565b60008060008060008060c0878903121561362057600080fd5b863561362b816134cd565b9550602087013561363b816134e2565b9450604087013561364b816134f7565b9350606087013561365b81613506565b9250608087013561366b816134cd565b915060a08701356001600160401b0381111561368657600080fd5b61369289828a016135e7565b9150509295509295509295565b6000602082840312156136b157600080fd5b81356001600160401b038111156136c757600080fd5b6134c5848285016135e7565b600080604083850312156136e657600080fd5b82356136f1816134cd565b915060208301356001600160401b0381111561370c57600080fd5b613718858286016135e7565b9150509250929050565b60006020828403121561373457600080fd5b81356133eb816134cd565b60006001600160401b0382111561375857613758613514565b5060051b60200190565b600082601f83011261377357600080fd5b813560206137836135b78361373f565b828152600592831b85018201928282019190878511156137a257600080fd5b8387015b8581101561383c5780356001600160401b038111156137c55760008081fd5b8801603f81018a136137d75760008081fd5b8581013560406137e96135b78361373f565b82815291851b8301810191888101908d8411156138065760008081fd5b938201935b8385101561382b5761381c856133b8565b8252938901939089019061380b565b8852505050938501935084016137a6565b5090979650505050505050565b6001600160401b0381168114610daf57600080fd5b600082601f83011261386f57600080fd5b8135602061387f6135b78361373f565b82815260059290921b8401810191818101908684111561389e57600080fd5b8286015b848110156138c25780356138b581613849565b83529183019183016138a2565b509695505050505050565b600080600080600060a086880312156138e557600080fd5b85356138f0816134e2565b94506020860135613900816134cd565b935060408601356001600160401b038082111561391c57600080fd5b818801915088601f83011261393057600080fd5b61393f898335602085016135a9565b9450606088013591508082111561395557600080fd5b61396189838a01613762565b9350608088013591508082111561397757600080fd5b506139848882890161385e565b9150509295509295909350565b6000806000606084860312156139a657600080fd5b83356139b1816134cd565b925060208401356139c1816134cd565b915060408401356139d1816134cd565b809150509250925092565b6000602082840312156139ee57600080fd5b81356133eb81613506565b600060208284031215613a0b57600080fd5b81356133eb816134e2565b60008060408385031215613a2957600080fd5b8235613a34816134cd565b91506020830135613a44816134cd565b809150509250929050565b600060208284031215613a6157600080fd5b815162ffffff811681146133eb57600080fd5b600181811c90821680613a8857607f821691505b602082108103613aa857634e487b7160e01b600052602260045260246000fd5b50919050565b805161332b81613506565b600060208284031215613acb57600080fd5b81516133eb81613506565b805161332b816134e2565b600060208284031215613af357600080fd5b81516133eb816134e2565b601f821115611e7957600081815260208120601f850160051c81016020861015613b255750805b601f850160051c820191505b81811015613b4457828155600101613b31565b505050505050565b81516001600160401b03811115613b6557613b65613514565b613b7981613b738454613a74565b84613afe565b602080601f831160018114613bae5760008415613b965750858301515b600019600386901b1c1916600185901b178555613b44565b600085815260208120601f198616915b82811015613bdd57888601518255948401946001909101908401613bbe565b5085821015613bfb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613c1d57600080fd5b81516133eb81613849565b805161332b816134cd565b600060208284031215613c4557600080fd5b81516133eb816134cd565b805161332b816134f7565b600060208284031215613c6d57600080fd5b81516133eb816134f7565b600082601f830112613c8957600080fd5b8151613c976135b782613582565b818152846020838601011115613cac57600080fd5b6134c58260208301602087016133f2565b600060208284031215613ccf57600080fd5b81516001600160401b0380821115613ce657600080fd5b9083019060e08286031215613cfa57600080fd5b613d0261352a565b613d0b83613ad6565b8152613d1960208401613ad6565b6020820152613d2a60408401613c50565b6040820152613d3b60608401613aae565b6060820152613d4c60808401613c28565b6080820152613d5d60a08401613c28565b60a082015260c083015182811115613d7457600080fd5b613d8087828601613c78565b60c08301525095945050505050565b6001600160a01b03831681526040602082018190526000906134c590830184613416565b634e487b7160e01b600052603260045260246000fd5b606081526000613ddc6060830186613416565b82810360208481019190915285518083528682019282019060005b81811015613e1d5784516001600160e01b03191683529383019391830191600101613df7565b50508093505050506001600160401b0383166040830152949350505050565b600060018201613e5c57634e487b7160e01b600052601160045260246000fd5b5060010190565b60008060408385031215613e7657600080fd5b8251613e81816134cd565b6020840151909250613a44816134cd56fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b2d753dac94f1ed1cd70b0835bdac7dbaf3408620488152fd6067674f412219864736f6c63430008140033",
927
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101fb5760003560e01c80637a9e5e4b1161011a578063bf7e214f116100ad578063edabac031161007c578063edabac0314610488578063eeff428e14610499578063f21de1e81461032b578063f7c34ee0146104f3578063feec11901461050657600080fd5b8063bf7e214f14610435578063c22f980d14610453578063e338e27b14610466578063eb59c6b11461047757600080fd5b80638fb36037116100e95780638fb36037146103dd578063ada9652e146103fe578063b03d2a8e14610413578063b68d18091461042657600080fd5b80637a9e5e4b146103a7578063872309c7146103ba578063893d20e8146103c25780638e32e979146103ca57600080fd5b8063329d6e7411610192578063644c45e011610161578063644c45e01461033c578063675393bf1461036e5780636a778e73146103815780636c6fbb281461039457600080fd5b8063329d6e74146102fd57806336fc697e1461031057806349bb9e4b146103185780635ab1bd531461032b57600080fd5b80631eff4b22116101ce5780631eff4b221461027d578063214cdb80146102b257806327bb7a33146102c55780632b440bc9146102d857600080fd5b806301ffc9a7146102005780630d8e6e2c146102425780630fec111c1461025e578063138461e014610273575b600080fd5b61022d61020e3660046133d0565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b61024a610519565b60405162ffffff9091168152602001610239565b6102666105a3565b6040516102399190613442565b61027b610752565b005b6102a47f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610239565b61027b6102c03660046133d0565b610959565b61027b6102d3366004613607565b610986565b6003546001600160a01b03165b6040516001600160a01b039091168152602001610239565b61027b61030b36600461369f565b610a12565b61027b610b5f565b61027b6103263660046136d3565b610ba5565b6001546001600160a01b03166102e5565b600080516020613e93833981519152546001600160601b03165b6040516001600160601b039091168152602001610239565b61027b61037c366004613722565b610ca4565b61035661038f366004613722565b610db2565b61027b6103a23660046138cd565b611849565b61027b6103b5366004613722565b611a74565b6102a4600081565b6102e5611b0e565b61027b6103d8366004613991565b611c45565b6103e5611e7e565b6040516001600160e01b03199091168152602001610239565b6102a4600080516020613e9383398151915281565b61027b6104213660046139dc565b611eb6565b60405160468152602001610239565b600080516020613eb3833981519152546001600160a01b03166102e5565b61027b6104613660046139f9565b61211c565b6004546001600160a01b03166102e5565b6006546001600160a01b03166102e5565b6005546001600160a01b03166102e5565b6104a1612347565b604080516001600160a01b0398891681529688166020880152948716948601949094526001600160601b03909216606085015284166080840152831660a08301529190911660c082015260e001610239565b61027b610501366004613a16565b612d51565b61027b610514366004613722565b612dc8565b604051632efe011360e01b815260036004820152600060248201819052604482018190529073__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__90632efe011390606401602060405180830381865af415801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190613a4f565b905090565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b9091041615159181019190915260018201805491929160608401919061064e90613a74565b80601f016020809104026020016040519081016040528092919081815260200182805461067a90613a74565b80156106c75780601f1061069c576101008083540402835291602001916106c7565b820191906000526020600020905b8154815290600101906020018083116106aa57829003601f168201915b50505050508152505090506040518060e001604052806106e5600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610736611b0e565b6001600160a01b03168152602001826060015181525091505090565b6000600080516020613e9383398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e59190613ab9565b156108165780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b306108296001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613ab9565b6108bd5760405163b9304b0d60e01b81526001600160a01b038216600482015260240161080d565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190613ae1565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b610961612f3b565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61098e612f3b565b6109988287612d51565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101610a088382613b4c565b5050505050505050565b73__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__63a123b37c610a34610519565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190613c0b565b600080516020613ed38339815191528054600160401b900460ff1680610acb575080546001600160401b03808416911610155b15610ae95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610b1383612f74565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b610b67612f3b565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600080516020613ed38339815191528054600160401b810460ff1615906001600160401b0316600081158015610bd85750825b90506000826001600160401b03166001148015610bf45750303b155b905081158015610c02575080155b15610c205760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4a57845460ff60401b1916600160401b1785555b610c548787612f7c565b8315610c9b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b610cac612f3b565b806001600160a01b03163b600003610ce25760405163fdeac91f60e01b81526001600160a01b038216600482015260240161080d565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152630a3888e560e31b60048201526301ffc9a790602401602060405180830381865afa925050508015610d5c575060408051601f3d908101601f19168201909252610d5991810190613ab9565b60015b610d845760405163fdeac91f60e01b81526001600160a01b038216600482015260240161080d565b80610dad5760405163fdeac91f60e01b81526001600160a01b038316600482015260240161080d565b505b50565b6000610dbc611b0e565b6001600160a01b0316336001600160a01b031614610def5760405163086391f760e31b815233600482015260240161080d565b6004546001600160a01b031615610e1957604051632c237de760e11b815260040160405180910390fd5b6002546001600160a01b031615610e4357604051636519f6b960e01b815260040160405180910390fd5b6003546001600160a01b031615610e6d57604051630157f74960e01b815260040160405180910390fd5b6006546001600160a01b031615610e9757604051637f405a2960e01b815260040160405180910390fd5b6001600160a01b038216610ebe576040516309353e4560e11b815260040160405180910390fd5b60008290506000816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190613c33565b905060008190506000836001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f929190613c33565b905060008190506000856001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffd9190613c33565b905060008190506000876001600160a01b03166361f5f4206040518163ffffffff1660e01b8152600401602060405180830381865afa158015611044573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110689190613c33565b905060008190506000896001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d39190613c33565b9050806001600160a01b0389166110fd5760405163078ddb7760e51b815260040160405180910390fd5b6001600160a01b0387166111245760405163459e9b9760e01b815260040160405180910390fd5b6001600160a01b03851661114b5760405163e267254160e01b815260040160405180910390fd5b6001600160a01b03831661117257604051630ddeaef560e11b815260040160405180910390fd5b6001600160a01b038116611199576040516301fa2a2b60e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fb9190613c33565b6001600160a01b03168b6001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611242573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112669190613c33565b6001600160a01b03161461128d576040516334ddf1a760e21b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ef9190613c33565b6001600160a01b0316846001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a9190613c33565b6001600160a01b031614611381576040516326c89a4160e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e39190613c33565b6001600160a01b0316826001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144e9190613c33565b6001600160a01b03161461147557604051631129422760e31b815260040160405180910390fd5b8a6001600160a01b0316866001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e19190613c33565b6001600160a01b031614611508576040516331783c7160e11b815260040160405180910390fd5b8a6001600160a01b0316846001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115749190613c33565b6001600160a01b03161461159b57604051631b25e96d60e31b815260040160405180910390fd5b88600260006101000a8154816001600160a01b0302191690836001600160a01b0316021790555086600360006101000a8154816001600160a01b0302191690836001600160a01b031602179055508c600460006101000a8154816001600160a01b0302191690836001600160a01b0316021790555084600560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082600660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600760006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060006116996001546001600160a01b031690565b6001600160a01b031663d39e604360286116b1610519565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015611706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172a9190613c5b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801561176f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117939190613c33565b6004549091506001600160a01b0390811690600090831663026bc43b836117b8611b0e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016000604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261182d9190810190613cbd565b905080600001519e505050505050505050505050505050919050565b6001546001600160a01b0316604051632b91e0a960e01b81523360048201526001600160a01b039190911690632b91e0a990602401602060405180830381865afa15801561189b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118bf9190613ab9565b6118de576040516302613e9f60e51b815233600482015260240161080d565b6000806118eb878761309c565b915091506000826001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa15801561192f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119539190613c33565b60405163044ec4c360e41b81529091506001600160a01b038216906344ec4c3090611984908a908a90600401613d8f565b600060405180830381600087803b15801561199e57600080fd5b505af11580156119b2573d6000803e3d6000fd5b5050505060005b8451811015611a6957816001600160a01b0316630c8ae53e888884815181106119e4576119e4613db3565b60200260200101518885815181106119fe576119fe613db3565b60200260200101516040518463ffffffff1660e01b8152600401611a2493929190613dc9565b600060405180830381600087803b158015611a3e57600080fd5b505af1158015611a52573d6000803e3d6000fd5b505050508080611a6190613e3c565b9150506119b9565b505050505050505050565b33611a94600080516020613eb3833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b031614611acf5760405162d1953b60e31b81526001600160a01b038216600482015260240161080d565b816001600160a01b03163b600003611b05576040516361798f2f60e11b81526001600160a01b038316600482015260240161080d565b610dad8261324c565b600080600080516020613e9383398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba29190613ab9565b15611c2f576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c299190613c33565b91505090565b54600160601b90046001600160a01b0316919050565b611c4d612f3b565b611ccd83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb39190613ae1565b603c60008560405180602001604052806000815250610986565b6001600160a01b03821615611cea57611ce5826132ad565b611e59565b6000611cfe6001546001600160a01b031690565b6001600160a01b031663d39e60436028604051632392b61b60e21b81526003600482015273__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015611d5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d829190613c5b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa158015611dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611deb9190613c33565b9050611e57816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e529190613c33565b6132ad565b505b611e69634a531f3360e01b610959565b611e7963b68d180960e01b610959565b505050565b600080516020613eb3833981519152805460009190600160a01b900460ff16611ea8576000611c29565b638fb3603760e01b91505090565b6001546001600160a01b0316604051630bee2f1560e11b81523360048201526001600160a01b0391909116906317dc5e2a90602401602060405180830381865afa158015611f08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2c9190613ab9565b611f4b576040516302613e9f60e51b815233600482015260240161080d565b336000611f606001546001600160a01b031690565b6040516308b09a5f60e41b81526001600160a01b038481166004830152919250600091831690638b09a5f090602401600060405180830381865afa158015611fac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611fd49190810190613cbd565b602001516040516305247a1760e51b81526001600160601b03821660048201529091506000906001600160a01b0384169063a48f42e090602401600060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120539190810190613cbd565b608001519050806001600160a01b031663e5f6cd276040518163ffffffff1660e01b8152600401602060405180830381865afa158015612097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bb9190613c33565b6040516313bfaf6360e31b81526001600160a01b03868116600483015287151560248301529190911690639dfd7b1890604401600060405180830381600087803b15801561210857600080fd5b505af1158015611a69573d6000803e3d6000fd5b8061212f6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03831660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561217e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a29190613c33565b6001600160a01b0316336001600160a01b0316146121d5576040516302613e9f60e51b815233600482015260240161080d565b60006121e96001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03851660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122649190810190613cbd565b608081015160055491925090600090612285906001600160a01b03166132be565b60405163189acdbd60e31b81526001600160a01b0384811660048301529192509082169063c4d66de890602401600060405180830381600087803b1580156122cc57600080fd5b505af11580156122e0573d6000803e3d6000fd5b5050604051633def10c760e21b81526001600160a01b0384811660048301528516925063f7bc431c9150602401600060405180830381600087803b15801561232757600080fd5b505af115801561233b573d6000803e3d6000fd5b50505050505050505050565b600080808080808033816123636001546001600160a01b031690565b604051636939560f60e11b81526001600160a01b038216600482018190529192506000919063d272ac1e90602401602060405180830381865afa1580156123ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d29190613ae1565b905060006001600160a01b03831663d39e604360286123ef610519565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015612444573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124689190613c5b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa1580156124ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d19190613c33565b6002549091506124e9906001600160a01b03166132be565b60405163189acdbd60e31b8152306004820152909b506001600160a01b038c169063c4d66de890602401600060405180830381600087803b15801561252d57600080fd5b505af1158015612541573d6000803e3d6000fd5b505060045461255b92506001600160a01b031690506132be565b60405163c0c53b8b60e01b81526001600160a01b038d8116600483015285811660248301528681166044830152919a50908a169063c0c53b8b90606401600060405180830381600087803b1580156125b257600080fd5b505af11580156125c6573d6000803e3d6000fd5b50506007546125e092506001600160a01b031690506132be565b60405163189acdbd60e31b81526001600160a01b038b811660048301529196509086169063c4d66de890602401600060405180830381600087803b15801561262757600080fd5b505af115801561263b573d6000803e3d6000fd5b505060405163048935d560e31b81526001600160a01b0388811660048301528c169250632449aea89150602401600060405180830381600087803b15801561268257600080fd5b505af1158015612696573d6000803e3d6000fd5b50506005546126b092506001600160a01b031690506132be565b60405163189acdbd60e31b81526001600160a01b038b811660048301529198509088169063c4d66de890602401600060405180830381600087803b1580156126f757600080fd5b505af115801561270b573d6000803e3d6000fd5b5050604051633def10c760e21b81526001600160a01b038a811660048301528c16925063f7bc431c9150602401600060405180830381600087803b15801561275257600080fd5b505af1158015612766573d6000803e3d6000fd5b505060065461278092506001600160a01b031690506132be565b60405163189acdbd60e31b81526001600160a01b038b811660048301529197509087169063c4d66de890602401600060405180830381600087803b1580156127c757600080fd5b505af11580156127db573d6000803e3d6000fd5b505060405162422c9d60e81b81526001600160a01b0389811660048301528c16925063422c9d009150602401600060405180830381600087803b15801561282157600080fd5b505af1158015612835573d6000803e3d6000fd5b505060035461284f92506001600160a01b031690506132be565b99508a6001600160a01b03166325c471a0612868613330565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af41580156128c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128e59190613c0b565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038d16602482015260006044820152606401600060405180830381600087803b15801561293c57600080fd5b505af1158015612950573d6000803e3d6000fd5b505060405163189acdbd60e31b81526001600160a01b038c811660048301528d16925063c4d66de89150602401600060405180830381600087803b15801561299757600080fd5b505af11580156129ab573d6000803e3d6000fd5b5050604051630f749a8960e01b81526001600160a01b038d811660048301528c169250630f749a899150602401600060405180830381600087803b1580156129f257600080fd5b505af1158015612a06573d6000803e3d6000fd5b5050505073__$2a34b1f180a6bf22a62a9bc53ba8adfaf5$__63a1b61ad48b8b898989612a3b6001546001600160a01b031690565b612a43610519565b60405163c9e66e2960e01b815262ffffff909116600482015273__$c0fcb9c1c2e971ebe3d8745a7e2c5cc364$__9063c9e66e2990602401602060405180830381865af4158015612a98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612abc9190613c5b565b60405160e089901b6001600160e01b03191681526001600160a01b0397881660048201529587166024870152938616604486015291851660648501528416608484015290921660a482015260ff90911660c482015260e40160006040518083038186803b158015612b2c57600080fd5b505af4158015612b40573d6000803e3d6000fd5b505050508a6001600160a01b031663fe0776f5612b5b613330565b604051631517388760e21b81526001600160401b03909116600482015273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd89190613c0b565b6040516001600160e01b031960e084901b1681526001600160401b039091166004820152306024820152604401600060405180830381600087803b158015612c1f57600080fd5b505af1158015612c33573d6000803e3d6000fd5b505060405163026bc43b60e01b81526001600160a01b038c811660048301528781166024830152600093508416915063026bc43b906044016000604051808303816000875af1158015612c8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cb29190810190613cbd565b9050806000015198507eccc9e339dab7298ad32b43864beb3b1c0cf136971be26f1e67d90bf43ebd3d8c8c8c898b8d8f604051612d3b97969594939291906001600160a01b0397881681529587166020870152938616604086015291851660608501528416608084015290921660a08201526001600160601b039190911660c082015260e00190565b60405180910390a1505050505090919293949596565b612d59612f3b565b612d6281610ca4565b612d6a610b5f565b6001600160a01b038216612d915760405163f17ef42d60e01b815260040160405180910390fd5b50600080516020613e9383398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b612dd0611b0e565b6001600160a01b0316336001600160a01b031614612e035760405163086391f760e31b815233600482015260240161080d565b6005546001600160a01b0316612e2c576040516358e5a4af60e01b815260040160405180910390fd5b6001600160a01b038116612e5357604051631aa1808560e31b815260040160405180910390fd5b6005546001600160a01b0390811690821603612e8257604051630666e2a560e01b815260040160405180910390fd5b600480546040805163379ed74560e21b8152905184936001600160a01b039384169385169263de7b5d1492818301926020928290030181865afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef19190613c33565b6001600160a01b031614612f185760405163f026367160e01b815260040160405180910390fd5b50600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080516020613ed383398151915254600160401b900460ff16612f7257604051631afcd79f60e31b815260040160405180910390fd5b565b6101fb612f3b565b600080516020613ed38339815191528054600160401b810460ff1615906001600160401b0316600081158015612faf5750825b90506000826001600160401b03166001148015612fcb5750303b155b905081158015612fd9575080155b15612ff75760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561302157845460ff60401b1916600160401b1785555b600080878060200190518101906130389190613e63565b925090506130488160008b611c45565b613058630655ba6560e31b610959565b50508315610c9b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610c92565b60008060006130b36001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091506000906001600160a01b0383169063a48f42e090602401600060405180830381865afa158015613106573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261312e9190810190613cbd565b905061314c8160400151613140604690565b60ff9081169116141590565b156131755760405163e3c2794960e01b81526001600160601b038716600482015260240161080d565b6040516308b09a5f60e41b81526001600160a01b03868116600483015260009190841690638b09a5f090602401600060405180830381865afa1580156131bf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131e79190810190613cbd565b90506132048160200151886001600160601b039081169116141590565b1561323857805160405163a811346560e01b81526001600160601b03808a166004830152909116602482015260440161080d565b608090910151905190969095509350505050565b600080516020613eb383398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6132b5612f3b565b610daf816133a7565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b03811661332b576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6040516368aebf7b60e01b81526000600482018190529073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015613383573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e9190613c0b565b6133af612f3b565b610daf8161324c565b80356001600160e01b03198116811461332b57600080fd5b6000602082840312156133e257600080fd5b6133eb826133b8565b9392505050565b60005b8381101561340d5781810151838201526020016133f5565b50506000910152565b6000815180845261342e8160208601602086016133f2565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a08301516134ab60c08401826001600160a01b03169052565b5060c083015160e0808401526134c5610100840182613416565b949350505050565b6001600160a01b0381168114610daf57600080fd5b6001600160601b0381168114610daf57600080fd5b60ff81168114610daf57600080fd5b8015158114610daf57600080fd5b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b038111828210171561354c5761354c613514565b60405290565b604051601f8201601f191681016001600160401b038111828210171561357a5761357a613514565b604052919050565b60006001600160401b0382111561359b5761359b613514565b50601f01601f191660200190565b60006135bc6135b784613582565b613552565b90508281528383830111156135d057600080fd5b828260208301376000602084830101529392505050565b600082601f8301126135f857600080fd5b6133eb838335602085016135a9565b60008060008060008060c0878903121561362057600080fd5b863561362b816134cd565b9550602087013561363b816134e2565b9450604087013561364b816134f7565b9350606087013561365b81613506565b9250608087013561366b816134cd565b915060a08701356001600160401b0381111561368657600080fd5b61369289828a016135e7565b9150509295509295509295565b6000602082840312156136b157600080fd5b81356001600160401b038111156136c757600080fd5b6134c5848285016135e7565b600080604083850312156136e657600080fd5b82356136f1816134cd565b915060208301356001600160401b0381111561370c57600080fd5b613718858286016135e7565b9150509250929050565b60006020828403121561373457600080fd5b81356133eb816134cd565b60006001600160401b0382111561375857613758613514565b5060051b60200190565b600082601f83011261377357600080fd5b813560206137836135b78361373f565b828152600592831b85018201928282019190878511156137a257600080fd5b8387015b8581101561383c5780356001600160401b038111156137c55760008081fd5b8801603f81018a136137d75760008081fd5b8581013560406137e96135b78361373f565b82815291851b8301810191888101908d8411156138065760008081fd5b938201935b8385101561382b5761381c856133b8565b8252938901939089019061380b565b8852505050938501935084016137a6565b5090979650505050505050565b6001600160401b0381168114610daf57600080fd5b600082601f83011261386f57600080fd5b8135602061387f6135b78361373f565b82815260059290921b8401810191818101908684111561389e57600080fd5b8286015b848110156138c25780356138b581613849565b83529183019183016138a2565b509695505050505050565b600080600080600060a086880312156138e557600080fd5b85356138f0816134e2565b94506020860135613900816134cd565b935060408601356001600160401b038082111561391c57600080fd5b818801915088601f83011261393057600080fd5b61393f898335602085016135a9565b9450606088013591508082111561395557600080fd5b61396189838a01613762565b9350608088013591508082111561397757600080fd5b506139848882890161385e565b9150509295509295909350565b6000806000606084860312156139a657600080fd5b83356139b1816134cd565b925060208401356139c1816134cd565b915060408401356139d1816134cd565b809150509250925092565b6000602082840312156139ee57600080fd5b81356133eb81613506565b600060208284031215613a0b57600080fd5b81356133eb816134e2565b60008060408385031215613a2957600080fd5b8235613a34816134cd565b91506020830135613a44816134cd565b809150509250929050565b600060208284031215613a6157600080fd5b815162ffffff811681146133eb57600080fd5b600181811c90821680613a8857607f821691505b602082108103613aa857634e487b7160e01b600052602260045260246000fd5b50919050565b805161332b81613506565b600060208284031215613acb57600080fd5b81516133eb81613506565b805161332b816134e2565b600060208284031215613af357600080fd5b81516133eb816134e2565b601f821115611e7957600081815260208120601f850160051c81016020861015613b255750805b601f850160051c820191505b81811015613b4457828155600101613b31565b505050505050565b81516001600160401b03811115613b6557613b65613514565b613b7981613b738454613a74565b84613afe565b602080601f831160018114613bae5760008415613b965750858301515b600019600386901b1c1916600185901b178555613b44565b600085815260208120601f198616915b82811015613bdd57888601518255948401946001909101908401613bbe565b5085821015613bfb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613c1d57600080fd5b81516133eb81613849565b805161332b816134cd565b600060208284031215613c4557600080fd5b81516133eb816134cd565b805161332b816134f7565b600060208284031215613c6d57600080fd5b81516133eb816134f7565b600082601f830112613c8957600080fd5b8151613c976135b782613582565b818152846020838601011115613cac57600080fd5b6134c58260208301602087016133f2565b600060208284031215613ccf57600080fd5b81516001600160401b0380821115613ce657600080fd5b9083019060e08286031215613cfa57600080fd5b613d0261352a565b613d0b83613ad6565b8152613d1960208401613ad6565b6020820152613d2a60408401613c50565b6040820152613d3b60608401613aae565b6060820152613d4c60808401613c28565b6080820152613d5d60a08401613c28565b60a082015260c083015182811115613d7457600080fd5b613d8087828601613c78565b60c08301525095945050505050565b6001600160a01b03831681526040602082018190526000906134c590830184613416565b634e487b7160e01b600052603260045260246000fd5b606081526000613ddc6060830186613416565b82810360208481019190915285518083528682019282019060005b81811015613e1d5784516001600160e01b03191683529383019391830191600101613df7565b50508093505050506001600160401b0383166040830152949350505050565b600060018201613e5c57634e487b7160e01b600052601160045260246000fd5b5060010190565b60008060408385031215613e7657600080fd5b8251613e81816134cd565b6020840151909250613a44816134cd56fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220b2d753dac94f1ed1cd70b0835bdac7dbaf3408620488152fd6067674f412219864736f6c63430008140033",
647
928
  "linkReferences": {
648
- "contracts/types/Blocknumber.sol": {
649
- "BlocknumberLib": [
929
+ "contracts/instance/InstanceAuthorizationsLib.sol": {
930
+ "InstanceAuthorizationsLib": [
650
931
  {
651
932
  "length": 20,
652
- "start": 2851
933
+ "start": 10994
653
934
  }
654
935
  ]
655
936
  },
@@ -657,19 +938,27 @@
657
938
  "NftIdLib": [
658
939
  {
659
940
  "length": 20,
660
- "start": 2267
941
+ "start": 2157
661
942
  },
662
943
  {
663
944
  "length": 20,
664
- "start": 3283
945
+ "start": 7210
665
946
  }
666
947
  ]
667
948
  },
668
- "contracts/types/Timestamp.sol": {
669
- "TimestampLib": [
949
+ "contracts/types/RoleId.sol": {
950
+ "RoleIdLib": [
951
+ {
952
+ "length": 20,
953
+ "start": 10605
954
+ },
955
+ {
956
+ "length": 20,
957
+ "start": 11360
958
+ },
670
959
  {
671
960
  "length": 20,
672
- "start": 5978
961
+ "start": 13359
673
962
  }
674
963
  ]
675
964
  },
@@ -677,33 +966,39 @@
677
966
  "VersionLib": [
678
967
  {
679
968
  "length": 20,
680
- "start": 1742
969
+ "start": 1574
681
970
  },
682
971
  {
683
972
  "length": 20,
684
- "start": 3523
973
+ "start": 2810
685
974
  },
686
975
  {
687
976
  "length": 20,
688
- "start": 4018
977
+ "start": 6066
689
978
  },
690
979
  {
691
980
  "length": 20,
692
- "start": 4705
981
+ "start": 9456
693
982
  },
694
983
  {
695
984
  "length": 20,
696
- "start": 4826
985
+ "start": 11076
986
+ }
987
+ ],
988
+ "VersionPartLib": [
989
+ {
990
+ "length": 20,
991
+ "start": 7690
697
992
  }
698
993
  ]
699
994
  }
700
995
  },
701
996
  "deployedLinkReferences": {
702
- "contracts/types/Blocknumber.sol": {
703
- "BlocknumberLib": [
997
+ "contracts/instance/InstanceAuthorizationsLib.sol": {
998
+ "InstanceAuthorizationsLib": [
704
999
  {
705
1000
  "length": 20,
706
- "start": 2543
1001
+ "start": 10764
707
1002
  }
708
1003
  ]
709
1004
  },
@@ -711,19 +1006,27 @@
711
1006
  "NftIdLib": [
712
1007
  {
713
1008
  "length": 20,
714
- "start": 1959
1009
+ "start": 1927
715
1010
  },
716
1011
  {
717
1012
  "length": 20,
718
- "start": 2975
1013
+ "start": 6980
719
1014
  }
720
1015
  ]
721
1016
  },
722
- "contracts/types/Timestamp.sol": {
723
- "TimestampLib": [
1017
+ "contracts/types/RoleId.sol": {
1018
+ "RoleIdLib": [
1019
+ {
1020
+ "length": 20,
1021
+ "start": 10375
1022
+ },
724
1023
  {
725
1024
  "length": 20,
726
- "start": 5670
1025
+ "start": 11130
1026
+ },
1027
+ {
1028
+ "length": 20,
1029
+ "start": 13129
727
1030
  }
728
1031
  ]
729
1032
  },
@@ -731,23 +1034,29 @@
731
1034
  "VersionLib": [
732
1035
  {
733
1036
  "length": 20,
734
- "start": 1434
1037
+ "start": 1344
735
1038
  },
736
1039
  {
737
1040
  "length": 20,
738
- "start": 3215
1041
+ "start": 2580
739
1042
  },
740
1043
  {
741
1044
  "length": 20,
742
- "start": 3710
1045
+ "start": 5836
743
1046
  },
744
1047
  {
745
1048
  "length": 20,
746
- "start": 4397
1049
+ "start": 9226
747
1050
  },
748
1051
  {
749
1052
  "length": 20,
750
- "start": 4518
1053
+ "start": 10846
1054
+ }
1055
+ ],
1056
+ "VersionPartLib": [
1057
+ {
1058
+ "length": 20,
1059
+ "start": 7460
751
1060
  }
752
1061
  ]
753
1062
  }