@etherisc/gif-next 0.0.2-d7cec72-860 → 0.0.2-d81839a-779

Sign up to get free protection for your applications and to get access to all the features.
Files changed (613) hide show
  1. package/README.md +137 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +525 -342
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -606
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +754 -323
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +228 -124
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +145 -272
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +535 -78
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +580 -80
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +398 -75
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +589 -217
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1889 -313
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1677 -772
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +392 -274
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +141 -127
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +376 -1560
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  99. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  101. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  103. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  105. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  108. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  109. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  110. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  111. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  112. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  116. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  118. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +142 -129
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +140 -413
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +569 -265
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +216 -104
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +383 -53
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +147 -396
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +154 -694
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
  154. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
  164. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
  168. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  170. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +282 -261
  172. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  173. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  174. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
  176. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  178. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
  180. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.json +249 -329
  182. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
  184. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  185. package/artifacts/contracts/product/Product.sol/Product.json +284 -564
  186. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  188. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  190. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  192. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +384 -69
  194. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +97 -148
  196. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  198. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +617 -133
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +796 -537
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +523 -27
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +609 -569
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +197 -131
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -93
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +535 -240
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +131 -129
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +88 -9
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  243. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  252. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  253. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  255. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +125 -366
  257. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  258. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +98 -94
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  262. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  264. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  266. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  268. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  270. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  271. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  272. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  278. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  280. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1510 -191
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  282. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  283. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  284. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  286. package/artifacts/contracts/staking/Staking.sol/Staking.json +1635 -455
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  288. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +191 -105
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  294. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  296. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  298. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1637 -801
  299. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  300. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  302. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +184 -76
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  304. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  310. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  320. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  324. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +59 -4
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -91
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +93 -2
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  345. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  348. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +24 -5
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  350. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  351. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  352. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  354. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  356. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  358. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  360. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  361. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  362. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  363. package/contracts/accounting/AccountingService.sol +274 -0
  364. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  365. package/contracts/accounting/IAccountingService.sol +47 -0
  366. package/contracts/authorization/AccessAdmin.sol +780 -0
  367. package/contracts/authorization/AccessAdminLib.sol +396 -0
  368. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  369. package/contracts/authorization/Authorization.sol +169 -0
  370. package/contracts/authorization/IAccess.sol +67 -0
  371. package/contracts/authorization/IAccessAdmin.sol +144 -0
  372. package/contracts/authorization/IAuthorization.sol +26 -0
  373. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  374. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  375. package/contracts/distribution/BasicDistribution.sol +141 -0
  376. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  377. package/contracts/distribution/Distribution.sol +125 -139
  378. package/contracts/distribution/DistributionService.sol +284 -133
  379. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  380. package/contracts/distribution/IDistributionComponent.sol +21 -42
  381. package/contracts/distribution/IDistributionService.sol +60 -26
  382. package/contracts/examples/fire/DamageLevel.sol +59 -0
  383. package/contracts/examples/fire/FirePool.sol +86 -0
  384. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  385. package/contracts/examples/fire/FireProduct.sol +433 -0
  386. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  387. package/contracts/examples/fire/FireUSD.sol +26 -0
  388. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  389. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  391. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  392. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  393. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  394. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  395. package/contracts/instance/BaseStore.sol +93 -0
  396. package/contracts/instance/BundleSet.sol +130 -0
  397. package/contracts/instance/IBaseStore.sol +37 -0
  398. package/contracts/instance/IInstance.sol +118 -49
  399. package/contracts/instance/IInstanceService.sol +68 -46
  400. package/contracts/instance/Instance.sol +221 -133
  401. package/contracts/instance/InstanceAdmin.sol +297 -249
  402. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  403. package/contracts/instance/InstanceReader.sol +488 -254
  404. package/contracts/instance/InstanceService.sol +340 -265
  405. package/contracts/instance/InstanceServiceManager.sol +8 -13
  406. package/contracts/instance/InstanceStore.sol +19 -92
  407. package/contracts/instance/ProductStore.sol +303 -0
  408. package/contracts/instance/RiskSet.sol +126 -0
  409. package/contracts/instance/TargetNames.sol +10 -0
  410. package/contracts/instance/base/BalanceStore.sol +4 -6
  411. package/contracts/instance/base/ObjectCounter.sol +1 -2
  412. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  413. package/contracts/instance/base/ObjectSet.sol +77 -0
  414. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  415. package/contracts/instance/module/IBundle.sol +6 -5
  416. package/contracts/instance/module/IComponents.sol +30 -20
  417. package/contracts/instance/module/IDistribution.sol +21 -9
  418. package/contracts/instance/module/IPolicy.sol +50 -29
  419. package/contracts/instance/module/IRisk.sol +5 -0
  420. package/contracts/mock/Dip.sol +1 -1
  421. package/contracts/oracle/BasicOracle.sol +45 -0
  422. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  423. package/contracts/oracle/IOracle.sol +25 -4
  424. package/contracts/oracle/IOracleComponent.sol +2 -1
  425. package/contracts/oracle/IOracleService.sol +2 -1
  426. package/contracts/oracle/Oracle.sol +62 -53
  427. package/contracts/oracle/OracleService.sol +119 -87
  428. package/contracts/oracle/OracleServiceManager.sol +8 -11
  429. package/contracts/pool/BasicPool.sol +162 -0
  430. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  431. package/contracts/pool/BundleService.sol +222 -132
  432. package/contracts/pool/BundleServiceManager.sol +8 -11
  433. package/contracts/pool/IBundleService.sol +43 -33
  434. package/contracts/pool/IPoolComponent.sol +20 -70
  435. package/contracts/pool/IPoolService.sol +97 -77
  436. package/contracts/pool/Pool.sol +198 -164
  437. package/contracts/pool/PoolLib.sol +341 -0
  438. package/contracts/pool/PoolService.sol +419 -257
  439. package/contracts/pool/PoolServiceManager.sol +6 -9
  440. package/contracts/product/ApplicationService.sol +154 -81
  441. package/contracts/product/ApplicationServiceManager.sol +6 -6
  442. package/contracts/product/BasicProduct.sol +49 -0
  443. package/contracts/product/BasicProductAuthorization.sol +63 -0
  444. package/contracts/product/ClaimService.sol +391 -207
  445. package/contracts/product/ClaimServiceManager.sol +6 -6
  446. package/contracts/product/IApplicationService.sol +29 -3
  447. package/contracts/product/IClaimService.sol +48 -11
  448. package/contracts/product/IPolicyService.sol +61 -37
  449. package/contracts/product/IPricingService.sol +11 -10
  450. package/contracts/product/IProductComponent.sol +29 -9
  451. package/contracts/product/IRiskService.sol +48 -0
  452. package/contracts/product/PolicyService.sol +445 -275
  453. package/contracts/product/PolicyServiceLib.sol +139 -0
  454. package/contracts/product/PolicyServiceManager.sol +6 -9
  455. package/contracts/product/PricingService.sol +90 -84
  456. package/contracts/product/PricingServiceManager.sol +6 -9
  457. package/contracts/product/Product.sol +262 -146
  458. package/contracts/product/RiskService.sol +189 -0
  459. package/contracts/product/RiskServiceManager.sol +39 -0
  460. package/contracts/registry/ChainNft.sol +72 -40
  461. package/contracts/registry/IRegistry.sol +84 -36
  462. package/contracts/registry/IRegistryService.sol +3 -10
  463. package/contracts/registry/IRelease.sol +29 -0
  464. package/contracts/registry/ITransferInterceptor.sol +1 -2
  465. package/contracts/registry/Registry.sol +378 -224
  466. package/contracts/registry/RegistryAdmin.sol +119 -261
  467. package/contracts/registry/RegistryAuthorization.sol +336 -0
  468. package/contracts/registry/RegistryService.sol +42 -67
  469. package/contracts/registry/RegistryServiceManager.sol +5 -5
  470. package/contracts/registry/ReleaseAdmin.sol +195 -0
  471. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  472. package/contracts/registry/ReleaseRegistry.sol +525 -0
  473. package/contracts/registry/ServiceAuthorizationV3.sol +213 -71
  474. package/contracts/registry/TokenRegistry.sol +61 -59
  475. package/contracts/shared/Component.sol +70 -137
  476. package/contracts/shared/ComponentService.sol +459 -385
  477. package/contracts/shared/ComponentServiceManager.sol +10 -7
  478. package/contracts/shared/ContractLib.sol +312 -0
  479. package/contracts/shared/IComponent.sol +6 -18
  480. package/contracts/shared/IComponentService.sol +50 -41
  481. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  482. package/contracts/shared/IKeyValueStore.sol +10 -1
  483. package/contracts/shared/ILifecycle.sol +3 -2
  484. package/contracts/shared/INftOwnable.sol +4 -0
  485. package/contracts/shared/IPolicyHolder.sol +12 -22
  486. package/contracts/shared/IRegisterable.sol +22 -1
  487. package/contracts/shared/IService.sol +4 -6
  488. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  489. package/contracts/shared/InstanceLinkedComponent.sol +95 -45
  490. package/contracts/shared/KeyValueStore.sol +10 -6
  491. package/contracts/shared/Lifecycle.sol +30 -72
  492. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  493. package/contracts/shared/NftOwnable.sol +33 -11
  494. package/contracts/shared/PolicyHolder.sol +20 -59
  495. package/contracts/shared/Registerable.sol +52 -21
  496. package/contracts/shared/RegistryLinked.sol +9 -14
  497. package/contracts/shared/Service.sol +22 -38
  498. package/contracts/shared/TokenHandler.sol +310 -26
  499. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  500. package/contracts/staking/IStaking.sol +272 -73
  501. package/contracts/staking/IStakingService.sol +48 -74
  502. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  503. package/contracts/staking/Staking.sol +533 -248
  504. package/contracts/staking/StakingLib.sol +195 -0
  505. package/contracts/staking/StakingManager.sol +14 -15
  506. package/contracts/staking/StakingReader.sol +72 -88
  507. package/contracts/staking/StakingService.sol +62 -152
  508. package/contracts/staking/StakingServiceManager.sol +9 -7
  509. package/contracts/staking/StakingStore.sol +1096 -341
  510. package/contracts/staking/TargetHandler.sol +132 -0
  511. package/contracts/staking/TargetManagerLib.sol +73 -46
  512. package/contracts/type/Amount.sol +31 -5
  513. package/contracts/type/Blocknumber.sol +22 -16
  514. package/contracts/type/ChainId.sol +101 -0
  515. package/contracts/type/ClaimId.sol +6 -1
  516. package/contracts/type/Fee.sol +8 -8
  517. package/contracts/type/Key32.sol +2 -2
  518. package/contracts/type/Key32Set.sol +62 -0
  519. package/contracts/type/NftId.sol +7 -0
  520. package/contracts/type/ObjectType.sol +94 -28
  521. package/contracts/type/PayoutId.sol +10 -10
  522. package/contracts/type/Referral.sol +1 -0
  523. package/contracts/type/RiskId.sol +38 -6
  524. package/contracts/type/RoleId.sol +93 -114
  525. package/contracts/type/Seconds.sol +40 -1
  526. package/contracts/type/Selector.sol +5 -0
  527. package/contracts/type/StateId.sol +15 -1
  528. package/contracts/type/String.sol +12 -0
  529. package/contracts/type/Timestamp.sol +14 -7
  530. package/contracts/type/UFixed.sol +62 -125
  531. package/contracts/type/Version.sol +57 -6
  532. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  533. package/contracts/{shared → upgradeability}/ProxyManager.sol +96 -49
  534. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  535. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  536. package/package.json +10 -6
  537. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  538. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  539. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  540. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  541. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  542. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  543. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  545. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  546. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  547. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  548. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  549. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  550. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  551. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  552. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +0 -129
  553. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  554. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  555. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  556. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  557. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  558. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  559. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  560. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  561. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  562. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  563. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  564. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  565. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  566. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  567. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  568. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  569. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  570. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  571. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  572. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  573. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  574. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  575. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  576. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  577. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  578. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  579. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  580. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  581. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  582. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  583. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  584. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  585. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  586. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  587. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  588. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
  589. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  590. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  591. package/contracts/instance/BundleManager.sol +0 -126
  592. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  593. package/contracts/instance/base/ObjectManager.sol +0 -80
  594. package/contracts/instance/module/IAccess.sol +0 -46
  595. package/contracts/product/IProductService.sol +0 -33
  596. package/contracts/product/ProductService.sol +0 -124
  597. package/contracts/product/ProductServiceManager.sol +0 -42
  598. package/contracts/registry/IServiceAuthorization.sol +0 -35
  599. package/contracts/registry/ReleaseManager.sol +0 -527
  600. package/contracts/registry/ServiceAuthorization.sol +0 -86
  601. package/contracts/shared/AccessAdmin.sol +0 -759
  602. package/contracts/shared/AccessManagerCustom.sol +0 -741
  603. package/contracts/shared/AccessManagerExtended.sol +0 -481
  604. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  605. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  606. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  607. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  608. package/contracts/shared/IAccessAdmin.sol +0 -168
  609. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  610. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  611. package/contracts/shared/InitializableCustom.sol +0 -177
  612. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  613. package/contracts/staking/StakeManagerLib.sol +0 -231
@@ -65,6 +65,37 @@
65
65
  },
66
66
  {
67
67
  "inputs": [
68
+ {
69
+ "internalType": "address",
70
+ "name": "contractAddress",
71
+ "type": "address"
72
+ },
73
+ {
74
+ "internalType": "ObjectType",
75
+ "name": "objectType",
76
+ "type": "uint8"
77
+ },
78
+ {
79
+ "internalType": "StateId",
80
+ "name": "actual",
81
+ "type": "uint8"
82
+ },
83
+ {
84
+ "internalType": "StateId",
85
+ "name": "required",
86
+ "type": "uint8"
87
+ }
88
+ ],
89
+ "name": "ErrorFromStateMissmatch",
90
+ "type": "error"
91
+ },
92
+ {
93
+ "inputs": [
94
+ {
95
+ "internalType": "address",
96
+ "name": "contractAddress",
97
+ "type": "address"
98
+ },
68
99
  {
69
100
  "internalType": "ObjectType",
70
101
  "name": "objectType",
@@ -100,6 +131,17 @@
100
131
  "name": "ErrorKeyValueStoreAlreadyCreated",
101
132
  "type": "error"
102
133
  },
134
+ {
135
+ "inputs": [
136
+ {
137
+ "internalType": "ObjectType",
138
+ "name": "objectType",
139
+ "type": "uint8"
140
+ }
141
+ ],
142
+ "name": "ErrorKeyValueStoreNoLifecycle",
143
+ "type": "error"
144
+ },
103
145
  {
104
146
  "inputs": [
105
147
  {
@@ -136,9 +178,9 @@
136
178
  {
137
179
  "inputs": [
138
180
  {
139
- "internalType": "NftId",
140
- "name": "nftId",
141
- "type": "uint96"
181
+ "internalType": "address",
182
+ "name": "contractAddress",
183
+ "type": "address"
142
184
  },
143
185
  {
144
186
  "internalType": "ObjectType",
@@ -210,7 +252,7 @@
210
252
  "indexed": false,
211
253
  "internalType": "Blocknumber",
212
254
  "name": "lastUpdatedIn",
213
- "type": "uint32"
255
+ "type": "uint40"
214
256
  }
215
257
  ],
216
258
  "name": "LogBalanceStoreBalanceDecreased",
@@ -241,7 +283,7 @@
241
283
  "indexed": false,
242
284
  "internalType": "Blocknumber",
243
285
  "name": "lastUpdatedIn",
244
- "type": "uint32"
286
+ "type": "uint40"
245
287
  }
246
288
  ],
247
289
  "name": "LogBalanceStoreBalanceIncreased",
@@ -272,7 +314,7 @@
272
314
  "indexed": false,
273
315
  "internalType": "Blocknumber",
274
316
  "name": "lastUpdatedIn",
275
- "type": "uint32"
317
+ "type": "uint40"
276
318
  }
277
319
  ],
278
320
  "name": "LogBalanceStoreFeesDecreased",
@@ -303,7 +345,7 @@
303
345
  "indexed": false,
304
346
  "internalType": "Blocknumber",
305
347
  "name": "lastUpdatedIn",
306
- "type": "uint32"
348
+ "type": "uint40"
307
349
  }
308
350
  ],
309
351
  "name": "LogBalanceStoreFeesIncreased",
@@ -334,7 +376,7 @@
334
376
  "indexed": false,
335
377
  "internalType": "Blocknumber",
336
378
  "name": "lastUpdatedIn",
337
- "type": "uint32"
379
+ "type": "uint40"
338
380
  }
339
381
  ],
340
382
  "name": "LogBalanceStoreLockedDecreased",
@@ -365,7 +407,7 @@
365
407
  "indexed": false,
366
408
  "internalType": "Blocknumber",
367
409
  "name": "lastUpdatedIn",
368
- "type": "uint32"
410
+ "type": "uint40"
369
411
  }
370
412
  ],
371
413
  "name": "LogBalanceStoreLockedIncreased",
@@ -458,12 +500,49 @@
458
500
  "indexed": false,
459
501
  "internalType": "Blocknumber",
460
502
  "name": "lastUpdatedIn",
461
- "type": "uint32"
503
+ "type": "uint40"
462
504
  }
463
505
  ],
464
506
  "name": "LogInfoUpdated",
465
507
  "type": "event"
466
508
  },
509
+ {
510
+ "anonymous": false,
511
+ "inputs": [
512
+ {
513
+ "indexed": false,
514
+ "internalType": "ObjectType",
515
+ "name": "objectType",
516
+ "type": "uint8"
517
+ },
518
+ {
519
+ "indexed": false,
520
+ "internalType": "KeyId",
521
+ "name": "keyId",
522
+ "type": "bytes31"
523
+ },
524
+ {
525
+ "indexed": false,
526
+ "internalType": "StateId",
527
+ "name": "state",
528
+ "type": "uint8"
529
+ },
530
+ {
531
+ "indexed": false,
532
+ "internalType": "address",
533
+ "name": "createdBy",
534
+ "type": "address"
535
+ },
536
+ {
537
+ "indexed": false,
538
+ "internalType": "address",
539
+ "name": "txOrigin",
540
+ "type": "address"
541
+ }
542
+ ],
543
+ "name": "LogKeyValueStoreMetadataCreated",
544
+ "type": "event"
545
+ },
467
546
  {
468
547
  "anonymous": false,
469
548
  "inputs": [
@@ -507,7 +586,7 @@
507
586
  "indexed": false,
508
587
  "internalType": "Blocknumber",
509
588
  "name": "lastUpdatedIn",
510
- "type": "uint32"
589
+ "type": "uint40"
511
590
  }
512
591
  ],
513
592
  "name": "LogStateUpdated",
@@ -528,6 +607,11 @@
528
607
  },
529
608
  {
530
609
  "inputs": [
610
+ {
611
+ "internalType": "StateId",
612
+ "name": "stateId",
613
+ "type": "uint8"
614
+ },
531
615
  {
532
616
  "internalType": "ObjectType",
533
617
  "name": "objectType",
@@ -535,7 +619,7 @@
535
619
  },
536
620
  {
537
621
  "internalType": "StateId",
538
- "name": "fromId",
622
+ "name": "expectedFromId",
539
623
  "type": "uint8"
540
624
  },
541
625
  {
@@ -553,81 +637,11 @@
553
637
  "inputs": [
554
638
  {
555
639
  "internalType": "NftId",
556
- "name": "applicationNftId",
640
+ "name": "bundleNftId",
557
641
  "type": "uint96"
558
642
  },
559
643
  {
560
644
  "components": [
561
- {
562
- "internalType": "NftId",
563
- "name": "productNftId",
564
- "type": "uint96"
565
- },
566
- {
567
- "internalType": "NftId",
568
- "name": "bundleNftId",
569
- "type": "uint96"
570
- },
571
- {
572
- "internalType": "ReferralId",
573
- "name": "referralId",
574
- "type": "bytes8"
575
- },
576
- {
577
- "internalType": "RiskId",
578
- "name": "riskId",
579
- "type": "bytes8"
580
- },
581
- {
582
- "internalType": "Amount",
583
- "name": "sumInsuredAmount",
584
- "type": "uint96"
585
- },
586
- {
587
- "internalType": "Amount",
588
- "name": "premiumAmount",
589
- "type": "uint96"
590
- },
591
- {
592
- "internalType": "Amount",
593
- "name": "premiumPaidAmount",
594
- "type": "uint96"
595
- },
596
- {
597
- "internalType": "Seconds",
598
- "name": "lifetime",
599
- "type": "uint40"
600
- },
601
- {
602
- "internalType": "bytes",
603
- "name": "applicationData",
604
- "type": "bytes"
605
- },
606
- {
607
- "internalType": "bytes",
608
- "name": "processData",
609
- "type": "bytes"
610
- },
611
- {
612
- "internalType": "uint16",
613
- "name": "claimsCount",
614
- "type": "uint16"
615
- },
616
- {
617
- "internalType": "uint16",
618
- "name": "openClaimsCount",
619
- "type": "uint16"
620
- },
621
- {
622
- "internalType": "Amount",
623
- "name": "claimAmount",
624
- "type": "uint96"
625
- },
626
- {
627
- "internalType": "Amount",
628
- "name": "payoutAmount",
629
- "type": "uint96"
630
- },
631
645
  {
632
646
  "internalType": "Timestamp",
633
647
  "name": "activatedAt",
@@ -642,27 +656,7 @@
642
656
  "internalType": "Timestamp",
643
657
  "name": "closedAt",
644
658
  "type": "uint40"
645
- }
646
- ],
647
- "internalType": "struct IPolicy.PolicyInfo",
648
- "name": "policy",
649
- "type": "tuple"
650
- }
651
- ],
652
- "name": "createApplication",
653
- "outputs": [],
654
- "stateMutability": "nonpayable",
655
- "type": "function"
656
- },
657
- {
658
- "inputs": [
659
- {
660
- "internalType": "NftId",
661
- "name": "bundleNftId",
662
- "type": "uint96"
663
- },
664
- {
665
- "components": [
659
+ },
666
660
  {
667
661
  "internalType": "NftId",
668
662
  "name": "poolNftId",
@@ -673,12 +667,12 @@
673
667
  {
674
668
  "internalType": "UFixed",
675
669
  "name": "fractionalFee",
676
- "type": "uint256"
670
+ "type": "uint160"
677
671
  },
678
672
  {
679
- "internalType": "uint256",
673
+ "internalType": "Amount",
680
674
  "name": "fixedFee",
681
- "type": "uint256"
675
+ "type": "uint96"
682
676
  }
683
677
  ],
684
678
  "internalType": "struct Fee",
@@ -689,21 +683,6 @@
689
683
  "internalType": "bytes",
690
684
  "name": "filter",
691
685
  "type": "bytes"
692
- },
693
- {
694
- "internalType": "Seconds",
695
- "name": "lifetime",
696
- "type": "uint40"
697
- },
698
- {
699
- "internalType": "Timestamp",
700
- "name": "expiredAt",
701
- "type": "uint40"
702
- },
703
- {
704
- "internalType": "Timestamp",
705
- "name": "closedAt",
706
- "type": "uint40"
707
686
  }
708
687
  ],
709
688
  "internalType": "struct IBundle.BundleInfo",
@@ -716,66 +695,6 @@
716
695
  "stateMutability": "nonpayable",
717
696
  "type": "function"
718
697
  },
719
- {
720
- "inputs": [
721
- {
722
- "internalType": "NftId",
723
- "name": "policyNftId",
724
- "type": "uint96"
725
- },
726
- {
727
- "internalType": "ClaimId",
728
- "name": "claimId",
729
- "type": "uint16"
730
- },
731
- {
732
- "components": [
733
- {
734
- "internalType": "Amount",
735
- "name": "claimAmount",
736
- "type": "uint96"
737
- },
738
- {
739
- "internalType": "Amount",
740
- "name": "paidAmount",
741
- "type": "uint96"
742
- },
743
- {
744
- "internalType": "uint8",
745
- "name": "payoutsCount",
746
- "type": "uint8"
747
- },
748
- {
749
- "internalType": "uint8",
750
- "name": "openPayoutsCount",
751
- "type": "uint8"
752
- },
753
- {
754
- "internalType": "bytes",
755
- "name": "submissionData",
756
- "type": "bytes"
757
- },
758
- {
759
- "internalType": "bytes",
760
- "name": "processData",
761
- "type": "bytes"
762
- },
763
- {
764
- "internalType": "Timestamp",
765
- "name": "closedAt",
766
- "type": "uint40"
767
- }
768
- ],
769
- "internalType": "struct IPolicy.ClaimInfo",
770
- "name": "claim",
771
- "type": "tuple"
772
- }
773
- ],
774
- "name": "createClaim",
775
- "outputs": [],
776
- "stateMutability": "nonpayable",
777
- "type": "function"
778
- },
779
698
  {
780
699
  "inputs": [
781
700
  {
@@ -790,26 +709,11 @@
790
709
  "name": "name",
791
710
  "type": "string"
792
711
  },
793
- {
794
- "internalType": "NftId",
795
- "name": "productNftId",
796
- "type": "uint96"
797
- },
798
- {
799
- "internalType": "contract IERC20Metadata",
800
- "name": "token",
801
- "type": "address"
802
- },
803
712
  {
804
713
  "internalType": "contract TokenHandler",
805
714
  "name": "tokenHandler",
806
715
  "type": "address"
807
716
  },
808
- {
809
- "internalType": "address",
810
- "name": "wallet",
811
- "type": "address"
812
- },
813
717
  {
814
718
  "internalType": "bytes",
815
719
  "name": "data",
@@ -845,20 +749,15 @@
845
749
  "name": "active",
846
750
  "type": "bool"
847
751
  },
848
- {
849
- "internalType": "bytes",
850
- "name": "data",
851
- "type": "bytes"
852
- },
853
- {
854
- "internalType": "Amount",
855
- "name": "commissionAmount",
856
- "type": "uint96"
857
- },
858
752
  {
859
753
  "internalType": "uint32",
860
754
  "name": "numPoliciesSold",
861
755
  "type": "uint32"
756
+ },
757
+ {
758
+ "internalType": "bytes",
759
+ "name": "data",
760
+ "type": "bytes"
862
761
  }
863
762
  ],
864
763
  "internalType": "struct IDistribution.DistributorInfo",
@@ -880,25 +779,20 @@
880
779
  },
881
780
  {
882
781
  "components": [
883
- {
884
- "internalType": "string",
885
- "name": "name",
886
- "type": "string"
887
- },
888
782
  {
889
783
  "internalType": "UFixed",
890
784
  "name": "minDiscountPercentage",
891
- "type": "uint256"
785
+ "type": "uint160"
892
786
  },
893
787
  {
894
- "internalType": "UFixed",
895
- "name": "maxDiscountPercentage",
896
- "type": "uint256"
788
+ "internalType": "NftId",
789
+ "name": "distributionNftId",
790
+ "type": "uint96"
897
791
  },
898
792
  {
899
793
  "internalType": "UFixed",
900
- "name": "commissionPercentage",
901
- "type": "uint256"
794
+ "name": "maxDiscountPercentage",
795
+ "type": "uint160"
902
796
  },
903
797
  {
904
798
  "internalType": "uint32",
@@ -906,9 +800,9 @@
906
800
  "type": "uint32"
907
801
  },
908
802
  {
909
- "internalType": "uint32",
803
+ "internalType": "Seconds",
910
804
  "name": "maxReferralLifetime",
911
- "type": "uint32"
805
+ "type": "uint40"
912
806
  },
913
807
  {
914
808
  "internalType": "bool",
@@ -921,62 +815,27 @@
921
815
  "type": "bool"
922
816
  },
923
817
  {
924
- "internalType": "bytes",
925
- "name": "data",
926
- "type": "bytes"
927
- }
928
- ],
929
- "internalType": "struct IDistribution.DistributorTypeInfo",
930
- "name": "info",
931
- "type": "tuple"
932
- }
933
- ],
934
- "name": "createDistributorType",
935
- "outputs": [],
936
- "stateMutability": "nonpayable",
937
- "type": "function"
938
- },
939
- {
940
- "inputs": [
941
- {
942
- "internalType": "NftId",
943
- "name": "policyNftId",
944
- "type": "uint96"
945
- },
946
- {
947
- "internalType": "PayoutId",
948
- "name": "payoutId",
949
- "type": "uint24"
950
- },
951
- {
952
- "components": [
953
- {
954
- "internalType": "ClaimId",
955
- "name": "claimId",
956
- "type": "uint16"
818
+ "internalType": "UFixed",
819
+ "name": "commissionPercentage",
820
+ "type": "uint160"
957
821
  },
958
822
  {
959
- "internalType": "Amount",
960
- "name": "amount",
961
- "type": "uint96"
823
+ "internalType": "string",
824
+ "name": "name",
825
+ "type": "string"
962
826
  },
963
827
  {
964
828
  "internalType": "bytes",
965
829
  "name": "data",
966
830
  "type": "bytes"
967
- },
968
- {
969
- "internalType": "Timestamp",
970
- "name": "paidAt",
971
- "type": "uint40"
972
831
  }
973
832
  ],
974
- "internalType": "struct IPolicy.PayoutInfo",
975
- "name": "payout",
833
+ "internalType": "struct IDistribution.DistributorTypeInfo",
834
+ "name": "info",
976
835
  "type": "tuple"
977
836
  }
978
837
  ],
979
- "name": "createPayout",
838
+ "name": "createDistributorType",
980
839
  "outputs": [],
981
840
  "stateMutability": "nonpayable",
982
841
  "type": "function"
@@ -991,19 +850,19 @@
991
850
  {
992
851
  "components": [
993
852
  {
994
- "internalType": "NftId",
995
- "name": "productNftId",
853
+ "internalType": "Amount",
854
+ "name": "maxBalanceAmount",
996
855
  "type": "uint96"
997
856
  },
998
857
  {
999
- "internalType": "RoleId",
1000
- "name": "bundleOwnerRole",
1001
- "type": "uint64"
858
+ "internalType": "UFixed",
859
+ "name": "collateralizationLevel",
860
+ "type": "uint160"
1002
861
  },
1003
862
  {
1004
- "internalType": "Amount",
1005
- "name": "maxCapitalAmount",
1006
- "type": "uint96"
863
+ "internalType": "UFixed",
864
+ "name": "retentionLevel",
865
+ "type": "uint160"
1007
866
  },
1008
867
  {
1009
868
  "internalType": "bool",
@@ -1012,74 +871,18 @@
1012
871
  },
1013
872
  {
1014
873
  "internalType": "bool",
1015
- "name": "isExternallyManaged",
874
+ "name": "isProcessingConfirmedClaims",
1016
875
  "type": "bool"
1017
876
  },
1018
877
  {
1019
878
  "internalType": "bool",
1020
- "name": "isVerifyingApplications",
879
+ "name": "isExternallyManaged",
1021
880
  "type": "bool"
1022
881
  },
1023
882
  {
1024
- "internalType": "UFixed",
1025
- "name": "collateralizationLevel",
1026
- "type": "uint256"
1027
- },
1028
- {
1029
- "internalType": "UFixed",
1030
- "name": "retentionLevel",
1031
- "type": "uint256"
1032
- },
1033
- {
1034
- "components": [
1035
- {
1036
- "internalType": "UFixed",
1037
- "name": "fractionalFee",
1038
- "type": "uint256"
1039
- },
1040
- {
1041
- "internalType": "uint256",
1042
- "name": "fixedFee",
1043
- "type": "uint256"
1044
- }
1045
- ],
1046
- "internalType": "struct Fee",
1047
- "name": "poolFee",
1048
- "type": "tuple"
1049
- },
1050
- {
1051
- "components": [
1052
- {
1053
- "internalType": "UFixed",
1054
- "name": "fractionalFee",
1055
- "type": "uint256"
1056
- },
1057
- {
1058
- "internalType": "uint256",
1059
- "name": "fixedFee",
1060
- "type": "uint256"
1061
- }
1062
- ],
1063
- "internalType": "struct Fee",
1064
- "name": "stakingFee",
1065
- "type": "tuple"
1066
- },
1067
- {
1068
- "components": [
1069
- {
1070
- "internalType": "UFixed",
1071
- "name": "fractionalFee",
1072
- "type": "uint256"
1073
- },
1074
- {
1075
- "internalType": "uint256",
1076
- "name": "fixedFee",
1077
- "type": "uint256"
1078
- }
1079
- ],
1080
- "internalType": "struct Fee",
1081
- "name": "performanceFee",
1082
- "type": "tuple"
883
+ "internalType": "bool",
884
+ "name": "isVerifyingApplications",
885
+ "type": "bool"
1083
886
  }
1084
887
  ],
1085
888
  "internalType": "struct IComponents.PoolInfo",
@@ -1095,9 +898,9 @@
1095
898
  {
1096
899
  "inputs": [
1097
900
  {
1098
- "internalType": "NftId",
1099
- "name": "productNftId",
1100
- "type": "uint96"
901
+ "internalType": "ReferralId",
902
+ "name": "referralId",
903
+ "type": "bytes8"
1101
904
  },
1102
905
  {
1103
906
  "components": [
@@ -1106,165 +909,11 @@
1106
909
  "name": "distributionNftId",
1107
910
  "type": "uint96"
1108
911
  },
1109
- {
1110
- "internalType": "NftId",
1111
- "name": "poolNftId",
1112
- "type": "uint96"
1113
- },
1114
- {
1115
- "components": [
1116
- {
1117
- "internalType": "UFixed",
1118
- "name": "fractionalFee",
1119
- "type": "uint256"
1120
- },
1121
- {
1122
- "internalType": "uint256",
1123
- "name": "fixedFee",
1124
- "type": "uint256"
1125
- }
1126
- ],
1127
- "internalType": "struct Fee",
1128
- "name": "productFee",
1129
- "type": "tuple"
1130
- },
1131
- {
1132
- "components": [
1133
- {
1134
- "internalType": "UFixed",
1135
- "name": "fractionalFee",
1136
- "type": "uint256"
1137
- },
1138
- {
1139
- "internalType": "uint256",
1140
- "name": "fixedFee",
1141
- "type": "uint256"
1142
- }
1143
- ],
1144
- "internalType": "struct Fee",
1145
- "name": "processingFee",
1146
- "type": "tuple"
1147
- },
1148
- {
1149
- "components": [
1150
- {
1151
- "internalType": "UFixed",
1152
- "name": "fractionalFee",
1153
- "type": "uint256"
1154
- },
1155
- {
1156
- "internalType": "uint256",
1157
- "name": "fixedFee",
1158
- "type": "uint256"
1159
- }
1160
- ],
1161
- "internalType": "struct Fee",
1162
- "name": "distributionFee",
1163
- "type": "tuple"
1164
- },
1165
- {
1166
- "components": [
1167
- {
1168
- "internalType": "UFixed",
1169
- "name": "fractionalFee",
1170
- "type": "uint256"
1171
- },
1172
- {
1173
- "internalType": "uint256",
1174
- "name": "fixedFee",
1175
- "type": "uint256"
1176
- }
1177
- ],
1178
- "internalType": "struct Fee",
1179
- "name": "minDistributionOwnerFee",
1180
- "type": "tuple"
1181
- },
1182
- {
1183
- "components": [
1184
- {
1185
- "internalType": "UFixed",
1186
- "name": "fractionalFee",
1187
- "type": "uint256"
1188
- },
1189
- {
1190
- "internalType": "uint256",
1191
- "name": "fixedFee",
1192
- "type": "uint256"
1193
- }
1194
- ],
1195
- "internalType": "struct Fee",
1196
- "name": "poolFee",
1197
- "type": "tuple"
1198
- },
1199
- {
1200
- "components": [
1201
- {
1202
- "internalType": "UFixed",
1203
- "name": "fractionalFee",
1204
- "type": "uint256"
1205
- },
1206
- {
1207
- "internalType": "uint256",
1208
- "name": "fixedFee",
1209
- "type": "uint256"
1210
- }
1211
- ],
1212
- "internalType": "struct Fee",
1213
- "name": "stakingFee",
1214
- "type": "tuple"
1215
- },
1216
- {
1217
- "components": [
1218
- {
1219
- "internalType": "UFixed",
1220
- "name": "fractionalFee",
1221
- "type": "uint256"
1222
- },
1223
- {
1224
- "internalType": "uint256",
1225
- "name": "fixedFee",
1226
- "type": "uint256"
1227
- }
1228
- ],
1229
- "internalType": "struct Fee",
1230
- "name": "performanceFee",
1231
- "type": "tuple"
1232
- }
1233
- ],
1234
- "internalType": "struct IComponents.ProductInfo",
1235
- "name": "info",
1236
- "type": "tuple"
1237
- }
1238
- ],
1239
- "name": "createProduct",
1240
- "outputs": [],
1241
- "stateMutability": "nonpayable",
1242
- "type": "function"
1243
- },
1244
- {
1245
- "inputs": [
1246
- {
1247
- "internalType": "ReferralId",
1248
- "name": "referralId",
1249
- "type": "bytes8"
1250
- },
1251
- {
1252
- "components": [
1253
912
  {
1254
913
  "internalType": "NftId",
1255
914
  "name": "distributorNftId",
1256
915
  "type": "uint96"
1257
916
  },
1258
- {
1259
- "internalType": "string",
1260
- "name": "referralCode",
1261
- "type": "string"
1262
- },
1263
- {
1264
- "internalType": "UFixed",
1265
- "name": "discountPercentage",
1266
- "type": "uint256"
1267
- },
1268
917
  {
1269
918
  "internalType": "uint32",
1270
919
  "name": "maxReferrals",
@@ -1275,11 +924,21 @@
1275
924
  "name": "usedReferrals",
1276
925
  "type": "uint32"
1277
926
  },
927
+ {
928
+ "internalType": "UFixed",
929
+ "name": "discountPercentage",
930
+ "type": "uint160"
931
+ },
1278
932
  {
1279
933
  "internalType": "Timestamp",
1280
934
  "name": "expiryAt",
1281
935
  "type": "uint40"
1282
936
  },
937
+ {
938
+ "internalType": "string",
939
+ "name": "referralCode",
940
+ "type": "string"
941
+ },
1283
942
  {
1284
943
  "internalType": "bytes",
1285
944
  "name": "data",
@@ -1305,25 +964,15 @@
1305
964
  "name": "requesterNftId",
1306
965
  "type": "uint96"
1307
966
  },
1308
- {
1309
- "internalType": "string",
1310
- "name": "callbackMethodName",
1311
- "type": "string"
1312
- },
1313
967
  {
1314
968
  "internalType": "NftId",
1315
969
  "name": "oracleNftId",
1316
970
  "type": "uint96"
1317
971
  },
1318
972
  {
1319
- "internalType": "bytes",
1320
- "name": "requestData",
1321
- "type": "bytes"
1322
- },
1323
- {
1324
- "internalType": "bytes",
1325
- "name": "responseData",
1326
- "type": "bytes"
973
+ "internalType": "bool",
974
+ "name": "isCancelled",
975
+ "type": "bool"
1327
976
  },
1328
977
  {
1329
978
  "internalType": "Timestamp",
@@ -1336,9 +985,19 @@
1336
985
  "type": "uint40"
1337
986
  },
1338
987
  {
1339
- "internalType": "bool",
1340
- "name": "isCancelled",
1341
- "type": "bool"
988
+ "internalType": "string",
989
+ "name": "callbackMethodName",
990
+ "type": "string"
991
+ },
992
+ {
993
+ "internalType": "bytes",
994
+ "name": "requestData",
995
+ "type": "bytes"
996
+ },
997
+ {
998
+ "internalType": "bytes",
999
+ "name": "responseData",
1000
+ "type": "bytes"
1342
1001
  }
1343
1002
  ],
1344
1003
  "internalType": "struct IOracle.RequestInfo",
@@ -1357,36 +1016,6 @@
1357
1016
  "stateMutability": "nonpayable",
1358
1017
  "type": "function"
1359
1018
  },
1360
- {
1361
- "inputs": [
1362
- {
1363
- "internalType": "RiskId",
1364
- "name": "riskId",
1365
- "type": "bytes8"
1366
- },
1367
- {
1368
- "components": [
1369
- {
1370
- "internalType": "NftId",
1371
- "name": "productNftId",
1372
- "type": "uint96"
1373
- },
1374
- {
1375
- "internalType": "bytes",
1376
- "name": "data",
1377
- "type": "bytes"
1378
- }
1379
- ],
1380
- "internalType": "struct IRisk.RiskInfo",
1381
- "name": "risk",
1382
- "type": "tuple"
1383
- }
1384
- ],
1385
- "name": "createRisk",
1386
- "outputs": [],
1387
- "stateMutability": "nonpayable",
1388
- "type": "function"
1389
- },
1390
1019
  {
1391
1020
  "inputs": [
1392
1021
  {
@@ -1505,12 +1134,12 @@
1505
1134
  {
1506
1135
  "internalType": "Blocknumber",
1507
1136
  "name": "updatedIn",
1508
- "type": "uint32"
1137
+ "type": "uint40"
1509
1138
  },
1510
1139
  {
1511
1140
  "internalType": "Blocknumber",
1512
1141
  "name": "createdIn",
1513
- "type": "uint32"
1142
+ "type": "uint40"
1514
1143
  }
1515
1144
  ],
1516
1145
  "internalType": "struct IKeyValueStore.Metadata",
@@ -1680,12 +1309,12 @@
1680
1309
  {
1681
1310
  "internalType": "Blocknumber",
1682
1311
  "name": "updatedIn",
1683
- "type": "uint32"
1312
+ "type": "uint40"
1684
1313
  },
1685
1314
  {
1686
1315
  "internalType": "Blocknumber",
1687
1316
  "name": "createdIn",
1688
- "type": "uint32"
1317
+ "type": "uint40"
1689
1318
  }
1690
1319
  ],
1691
1320
  "internalType": "struct IKeyValueStore.Metadata",
@@ -1806,22 +1435,9 @@
1806
1435
  "stateMutability": "nonpayable",
1807
1436
  "type": "function"
1808
1437
  },
1809
- {
1810
- "inputs": [
1811
- {
1812
- "internalType": "address",
1813
- "name": "instance",
1814
- "type": "address"
1815
- }
1816
- ],
1817
- "name": "initialize",
1818
- "outputs": [],
1819
- "stateMutability": "nonpayable",
1820
- "type": "function"
1821
- },
1822
1438
  {
1823
1439
  "inputs": [],
1824
- "name": "initializeLifecycle",
1440
+ "name": "initialize",
1825
1441
  "outputs": [],
1826
1442
  "stateMutability": "nonpayable",
1827
1443
  "type": "function"
@@ -1909,81 +1525,11 @@
1909
1525
  "inputs": [
1910
1526
  {
1911
1527
  "internalType": "NftId",
1912
- "name": "applicationNftId",
1528
+ "name": "bundleNftId",
1913
1529
  "type": "uint96"
1914
1530
  },
1915
1531
  {
1916
1532
  "components": [
1917
- {
1918
- "internalType": "NftId",
1919
- "name": "productNftId",
1920
- "type": "uint96"
1921
- },
1922
- {
1923
- "internalType": "NftId",
1924
- "name": "bundleNftId",
1925
- "type": "uint96"
1926
- },
1927
- {
1928
- "internalType": "ReferralId",
1929
- "name": "referralId",
1930
- "type": "bytes8"
1931
- },
1932
- {
1933
- "internalType": "RiskId",
1934
- "name": "riskId",
1935
- "type": "bytes8"
1936
- },
1937
- {
1938
- "internalType": "Amount",
1939
- "name": "sumInsuredAmount",
1940
- "type": "uint96"
1941
- },
1942
- {
1943
- "internalType": "Amount",
1944
- "name": "premiumAmount",
1945
- "type": "uint96"
1946
- },
1947
- {
1948
- "internalType": "Amount",
1949
- "name": "premiumPaidAmount",
1950
- "type": "uint96"
1951
- },
1952
- {
1953
- "internalType": "Seconds",
1954
- "name": "lifetime",
1955
- "type": "uint40"
1956
- },
1957
- {
1958
- "internalType": "bytes",
1959
- "name": "applicationData",
1960
- "type": "bytes"
1961
- },
1962
- {
1963
- "internalType": "bytes",
1964
- "name": "processData",
1965
- "type": "bytes"
1966
- },
1967
- {
1968
- "internalType": "uint16",
1969
- "name": "claimsCount",
1970
- "type": "uint16"
1971
- },
1972
- {
1973
- "internalType": "uint16",
1974
- "name": "openClaimsCount",
1975
- "type": "uint16"
1976
- },
1977
- {
1978
- "internalType": "Amount",
1979
- "name": "claimAmount",
1980
- "type": "uint96"
1981
- },
1982
- {
1983
- "internalType": "Amount",
1984
- "name": "payoutAmount",
1985
- "type": "uint96"
1986
- },
1987
1533
  {
1988
1534
  "internalType": "Timestamp",
1989
1535
  "name": "activatedAt",
@@ -1998,50 +1544,7 @@
1998
1544
  "internalType": "Timestamp",
1999
1545
  "name": "closedAt",
2000
1546
  "type": "uint40"
2001
- }
2002
- ],
2003
- "internalType": "struct IPolicy.PolicyInfo",
2004
- "name": "policy",
2005
- "type": "tuple"
2006
- },
2007
- {
2008
- "internalType": "StateId",
2009
- "name": "newState",
2010
- "type": "uint8"
2011
- }
2012
- ],
2013
- "name": "updateApplication",
2014
- "outputs": [],
2015
- "stateMutability": "nonpayable",
2016
- "type": "function"
2017
- },
2018
- {
2019
- "inputs": [
2020
- {
2021
- "internalType": "NftId",
2022
- "name": "applicationNftId",
2023
- "type": "uint96"
2024
- },
2025
- {
2026
- "internalType": "StateId",
2027
- "name": "newState",
2028
- "type": "uint8"
2029
- }
2030
- ],
2031
- "name": "updateApplicationState",
2032
- "outputs": [],
2033
- "stateMutability": "nonpayable",
2034
- "type": "function"
2035
- },
2036
- {
2037
- "inputs": [
2038
- {
2039
- "internalType": "NftId",
2040
- "name": "bundleNftId",
2041
- "type": "uint96"
2042
- },
2043
- {
2044
- "components": [
1547
+ },
2045
1548
  {
2046
1549
  "internalType": "NftId",
2047
1550
  "name": "poolNftId",
@@ -2052,12 +1555,12 @@
2052
1555
  {
2053
1556
  "internalType": "UFixed",
2054
1557
  "name": "fractionalFee",
2055
- "type": "uint256"
1558
+ "type": "uint160"
2056
1559
  },
2057
1560
  {
2058
- "internalType": "uint256",
1561
+ "internalType": "Amount",
2059
1562
  "name": "fixedFee",
2060
- "type": "uint256"
1563
+ "type": "uint96"
2061
1564
  }
2062
1565
  ],
2063
1566
  "internalType": "struct Fee",
@@ -2068,21 +1571,6 @@
2068
1571
  "internalType": "bytes",
2069
1572
  "name": "filter",
2070
1573
  "type": "bytes"
2071
- },
2072
- {
2073
- "internalType": "Seconds",
2074
- "name": "lifetime",
2075
- "type": "uint40"
2076
- },
2077
- {
2078
- "internalType": "Timestamp",
2079
- "name": "expiredAt",
2080
- "type": "uint40"
2081
- },
2082
- {
2083
- "internalType": "Timestamp",
2084
- "name": "closedAt",
2085
- "type": "uint40"
2086
1574
  }
2087
1575
  ],
2088
1576
  "internalType": "struct IBundle.BundleInfo",
@@ -2118,94 +1606,6 @@
2118
1606
  "stateMutability": "nonpayable",
2119
1607
  "type": "function"
2120
1608
  },
2121
- {
2122
- "inputs": [
2123
- {
2124
- "internalType": "NftId",
2125
- "name": "policyNftId",
2126
- "type": "uint96"
2127
- },
2128
- {
2129
- "internalType": "ClaimId",
2130
- "name": "claimId",
2131
- "type": "uint16"
2132
- },
2133
- {
2134
- "components": [
2135
- {
2136
- "internalType": "Amount",
2137
- "name": "claimAmount",
2138
- "type": "uint96"
2139
- },
2140
- {
2141
- "internalType": "Amount",
2142
- "name": "paidAmount",
2143
- "type": "uint96"
2144
- },
2145
- {
2146
- "internalType": "uint8",
2147
- "name": "payoutsCount",
2148
- "type": "uint8"
2149
- },
2150
- {
2151
- "internalType": "uint8",
2152
- "name": "openPayoutsCount",
2153
- "type": "uint8"
2154
- },
2155
- {
2156
- "internalType": "bytes",
2157
- "name": "submissionData",
2158
- "type": "bytes"
2159
- },
2160
- {
2161
- "internalType": "bytes",
2162
- "name": "processData",
2163
- "type": "bytes"
2164
- },
2165
- {
2166
- "internalType": "Timestamp",
2167
- "name": "closedAt",
2168
- "type": "uint40"
2169
- }
2170
- ],
2171
- "internalType": "struct IPolicy.ClaimInfo",
2172
- "name": "claim",
2173
- "type": "tuple"
2174
- },
2175
- {
2176
- "internalType": "StateId",
2177
- "name": "newState",
2178
- "type": "uint8"
2179
- }
2180
- ],
2181
- "name": "updateClaim",
2182
- "outputs": [],
2183
- "stateMutability": "nonpayable",
2184
- "type": "function"
2185
- },
2186
- {
2187
- "inputs": [
2188
- {
2189
- "internalType": "NftId",
2190
- "name": "policyNftId",
2191
- "type": "uint96"
2192
- },
2193
- {
2194
- "internalType": "ClaimId",
2195
- "name": "claimId",
2196
- "type": "uint16"
2197
- },
2198
- {
2199
- "internalType": "StateId",
2200
- "name": "newState",
2201
- "type": "uint8"
2202
- }
2203
- ],
2204
- "name": "updateClaimState",
2205
- "outputs": [],
2206
- "stateMutability": "nonpayable",
2207
- "type": "function"
2208
- },
2209
1609
  {
2210
1610
  "inputs": [
2211
1611
  {
@@ -2220,26 +1620,11 @@
2220
1620
  "name": "name",
2221
1621
  "type": "string"
2222
1622
  },
2223
- {
2224
- "internalType": "NftId",
2225
- "name": "productNftId",
2226
- "type": "uint96"
2227
- },
2228
- {
2229
- "internalType": "contract IERC20Metadata",
2230
- "name": "token",
2231
- "type": "address"
2232
- },
2233
1623
  {
2234
1624
  "internalType": "contract TokenHandler",
2235
1625
  "name": "tokenHandler",
2236
1626
  "type": "address"
2237
1627
  },
2238
- {
2239
- "internalType": "address",
2240
- "name": "wallet",
2241
- "type": "address"
2242
- },
2243
1628
  {
2244
1629
  "internalType": "bytes",
2245
1630
  "name": "data",
@@ -2280,20 +1665,15 @@
2280
1665
  "name": "active",
2281
1666
  "type": "bool"
2282
1667
  },
2283
- {
2284
- "internalType": "bytes",
2285
- "name": "data",
2286
- "type": "bytes"
2287
- },
2288
- {
2289
- "internalType": "Amount",
2290
- "name": "commissionAmount",
2291
- "type": "uint96"
2292
- },
2293
1668
  {
2294
1669
  "internalType": "uint32",
2295
1670
  "name": "numPoliciesSold",
2296
1671
  "type": "uint32"
1672
+ },
1673
+ {
1674
+ "internalType": "bytes",
1675
+ "name": "data",
1676
+ "type": "bytes"
2297
1677
  }
2298
1678
  ],
2299
1679
  "internalType": "struct IDistribution.DistributorInfo",
@@ -2338,25 +1718,20 @@
2338
1718
  },
2339
1719
  {
2340
1720
  "components": [
2341
- {
2342
- "internalType": "string",
2343
- "name": "name",
2344
- "type": "string"
2345
- },
2346
1721
  {
2347
1722
  "internalType": "UFixed",
2348
1723
  "name": "minDiscountPercentage",
2349
- "type": "uint256"
1724
+ "type": "uint160"
2350
1725
  },
2351
1726
  {
2352
- "internalType": "UFixed",
2353
- "name": "maxDiscountPercentage",
2354
- "type": "uint256"
1727
+ "internalType": "NftId",
1728
+ "name": "distributionNftId",
1729
+ "type": "uint96"
2355
1730
  },
2356
1731
  {
2357
1732
  "internalType": "UFixed",
2358
- "name": "commissionPercentage",
2359
- "type": "uint256"
1733
+ "name": "maxDiscountPercentage",
1734
+ "type": "uint160"
2360
1735
  },
2361
1736
  {
2362
1737
  "internalType": "uint32",
@@ -2364,9 +1739,9 @@
2364
1739
  "type": "uint32"
2365
1740
  },
2366
1741
  {
2367
- "internalType": "uint32",
1742
+ "internalType": "Seconds",
2368
1743
  "name": "maxReferralLifetime",
2369
- "type": "uint32"
1744
+ "type": "uint40"
2370
1745
  },
2371
1746
  {
2372
1747
  "internalType": "bool",
@@ -2378,6 +1753,16 @@
2378
1753
  "name": "allowRenewals",
2379
1754
  "type": "bool"
2380
1755
  },
1756
+ {
1757
+ "internalType": "UFixed",
1758
+ "name": "commissionPercentage",
1759
+ "type": "uint160"
1760
+ },
1761
+ {
1762
+ "internalType": "string",
1763
+ "name": "name",
1764
+ "type": "string"
1765
+ },
2381
1766
  {
2382
1767
  "internalType": "bytes",
2383
1768
  "name": "data",
@@ -2417,317 +1802,6 @@
2417
1802
  "stateMutability": "nonpayable",
2418
1803
  "type": "function"
2419
1804
  },
2420
- {
2421
- "inputs": [
2422
- {
2423
- "internalType": "NftId",
2424
- "name": "policyNftId",
2425
- "type": "uint96"
2426
- },
2427
- {
2428
- "internalType": "PayoutId",
2429
- "name": "payoutId",
2430
- "type": "uint24"
2431
- },
2432
- {
2433
- "components": [
2434
- {
2435
- "internalType": "ClaimId",
2436
- "name": "claimId",
2437
- "type": "uint16"
2438
- },
2439
- {
2440
- "internalType": "Amount",
2441
- "name": "amount",
2442
- "type": "uint96"
2443
- },
2444
- {
2445
- "internalType": "bytes",
2446
- "name": "data",
2447
- "type": "bytes"
2448
- },
2449
- {
2450
- "internalType": "Timestamp",
2451
- "name": "paidAt",
2452
- "type": "uint40"
2453
- }
2454
- ],
2455
- "internalType": "struct IPolicy.PayoutInfo",
2456
- "name": "payout",
2457
- "type": "tuple"
2458
- },
2459
- {
2460
- "internalType": "StateId",
2461
- "name": "newState",
2462
- "type": "uint8"
2463
- }
2464
- ],
2465
- "name": "updatePayout",
2466
- "outputs": [],
2467
- "stateMutability": "nonpayable",
2468
- "type": "function"
2469
- },
2470
- {
2471
- "inputs": [
2472
- {
2473
- "internalType": "NftId",
2474
- "name": "policyNftId",
2475
- "type": "uint96"
2476
- },
2477
- {
2478
- "internalType": "PayoutId",
2479
- "name": "payoutId",
2480
- "type": "uint24"
2481
- },
2482
- {
2483
- "internalType": "StateId",
2484
- "name": "newState",
2485
- "type": "uint8"
2486
- }
2487
- ],
2488
- "name": "updatePayoutState",
2489
- "outputs": [],
2490
- "stateMutability": "nonpayable",
2491
- "type": "function"
2492
- },
2493
- {
2494
- "inputs": [
2495
- {
2496
- "internalType": "NftId",
2497
- "name": "policyNftId",
2498
- "type": "uint96"
2499
- },
2500
- {
2501
- "components": [
2502
- {
2503
- "internalType": "NftId",
2504
- "name": "productNftId",
2505
- "type": "uint96"
2506
- },
2507
- {
2508
- "internalType": "NftId",
2509
- "name": "bundleNftId",
2510
- "type": "uint96"
2511
- },
2512
- {
2513
- "internalType": "ReferralId",
2514
- "name": "referralId",
2515
- "type": "bytes8"
2516
- },
2517
- {
2518
- "internalType": "RiskId",
2519
- "name": "riskId",
2520
- "type": "bytes8"
2521
- },
2522
- {
2523
- "internalType": "Amount",
2524
- "name": "sumInsuredAmount",
2525
- "type": "uint96"
2526
- },
2527
- {
2528
- "internalType": "Amount",
2529
- "name": "premiumAmount",
2530
- "type": "uint96"
2531
- },
2532
- {
2533
- "internalType": "Amount",
2534
- "name": "premiumPaidAmount",
2535
- "type": "uint96"
2536
- },
2537
- {
2538
- "internalType": "Seconds",
2539
- "name": "lifetime",
2540
- "type": "uint40"
2541
- },
2542
- {
2543
- "internalType": "bytes",
2544
- "name": "applicationData",
2545
- "type": "bytes"
2546
- },
2547
- {
2548
- "internalType": "bytes",
2549
- "name": "processData",
2550
- "type": "bytes"
2551
- },
2552
- {
2553
- "internalType": "uint16",
2554
- "name": "claimsCount",
2555
- "type": "uint16"
2556
- },
2557
- {
2558
- "internalType": "uint16",
2559
- "name": "openClaimsCount",
2560
- "type": "uint16"
2561
- },
2562
- {
2563
- "internalType": "Amount",
2564
- "name": "claimAmount",
2565
- "type": "uint96"
2566
- },
2567
- {
2568
- "internalType": "Amount",
2569
- "name": "payoutAmount",
2570
- "type": "uint96"
2571
- },
2572
- {
2573
- "internalType": "Timestamp",
2574
- "name": "activatedAt",
2575
- "type": "uint40"
2576
- },
2577
- {
2578
- "internalType": "Timestamp",
2579
- "name": "expiredAt",
2580
- "type": "uint40"
2581
- },
2582
- {
2583
- "internalType": "Timestamp",
2584
- "name": "closedAt",
2585
- "type": "uint40"
2586
- }
2587
- ],
2588
- "internalType": "struct IPolicy.PolicyInfo",
2589
- "name": "policy",
2590
- "type": "tuple"
2591
- },
2592
- {
2593
- "internalType": "StateId",
2594
- "name": "newState",
2595
- "type": "uint8"
2596
- }
2597
- ],
2598
- "name": "updatePolicy",
2599
- "outputs": [],
2600
- "stateMutability": "nonpayable",
2601
- "type": "function"
2602
- },
2603
- {
2604
- "inputs": [
2605
- {
2606
- "internalType": "NftId",
2607
- "name": "policyNftId",
2608
- "type": "uint96"
2609
- },
2610
- {
2611
- "components": [
2612
- {
2613
- "internalType": "NftId",
2614
- "name": "productNftId",
2615
- "type": "uint96"
2616
- },
2617
- {
2618
- "internalType": "NftId",
2619
- "name": "bundleNftId",
2620
- "type": "uint96"
2621
- },
2622
- {
2623
- "internalType": "ReferralId",
2624
- "name": "referralId",
2625
- "type": "bytes8"
2626
- },
2627
- {
2628
- "internalType": "RiskId",
2629
- "name": "riskId",
2630
- "type": "bytes8"
2631
- },
2632
- {
2633
- "internalType": "Amount",
2634
- "name": "sumInsuredAmount",
2635
- "type": "uint96"
2636
- },
2637
- {
2638
- "internalType": "Amount",
2639
- "name": "premiumAmount",
2640
- "type": "uint96"
2641
- },
2642
- {
2643
- "internalType": "Amount",
2644
- "name": "premiumPaidAmount",
2645
- "type": "uint96"
2646
- },
2647
- {
2648
- "internalType": "Seconds",
2649
- "name": "lifetime",
2650
- "type": "uint40"
2651
- },
2652
- {
2653
- "internalType": "bytes",
2654
- "name": "applicationData",
2655
- "type": "bytes"
2656
- },
2657
- {
2658
- "internalType": "bytes",
2659
- "name": "processData",
2660
- "type": "bytes"
2661
- },
2662
- {
2663
- "internalType": "uint16",
2664
- "name": "claimsCount",
2665
- "type": "uint16"
2666
- },
2667
- {
2668
- "internalType": "uint16",
2669
- "name": "openClaimsCount",
2670
- "type": "uint16"
2671
- },
2672
- {
2673
- "internalType": "Amount",
2674
- "name": "claimAmount",
2675
- "type": "uint96"
2676
- },
2677
- {
2678
- "internalType": "Amount",
2679
- "name": "payoutAmount",
2680
- "type": "uint96"
2681
- },
2682
- {
2683
- "internalType": "Timestamp",
2684
- "name": "activatedAt",
2685
- "type": "uint40"
2686
- },
2687
- {
2688
- "internalType": "Timestamp",
2689
- "name": "expiredAt",
2690
- "type": "uint40"
2691
- },
2692
- {
2693
- "internalType": "Timestamp",
2694
- "name": "closedAt",
2695
- "type": "uint40"
2696
- }
2697
- ],
2698
- "internalType": "struct IPolicy.PolicyInfo",
2699
- "name": "policy",
2700
- "type": "tuple"
2701
- },
2702
- {
2703
- "internalType": "StateId",
2704
- "name": "newState",
2705
- "type": "uint8"
2706
- }
2707
- ],
2708
- "name": "updatePolicyClaims",
2709
- "outputs": [],
2710
- "stateMutability": "nonpayable",
2711
- "type": "function"
2712
- },
2713
- {
2714
- "inputs": [
2715
- {
2716
- "internalType": "NftId",
2717
- "name": "policyNftId",
2718
- "type": "uint96"
2719
- },
2720
- {
2721
- "internalType": "StateId",
2722
- "name": "newState",
2723
- "type": "uint8"
2724
- }
2725
- ],
2726
- "name": "updatePolicyState",
2727
- "outputs": [],
2728
- "stateMutability": "nonpayable",
2729
- "type": "function"
2730
- },
2731
1805
  {
2732
1806
  "inputs": [
2733
1807
  {
@@ -2737,253 +1811,43 @@
2737
1811
  },
2738
1812
  {
2739
1813
  "components": [
2740
- {
2741
- "internalType": "NftId",
2742
- "name": "productNftId",
2743
- "type": "uint96"
2744
- },
2745
- {
2746
- "internalType": "RoleId",
2747
- "name": "bundleOwnerRole",
2748
- "type": "uint64"
2749
- },
2750
- {
2751
- "internalType": "Amount",
2752
- "name": "maxCapitalAmount",
2753
- "type": "uint96"
2754
- },
2755
- {
2756
- "internalType": "bool",
2757
- "name": "isInterceptingBundleTransfers",
2758
- "type": "bool"
2759
- },
2760
- {
2761
- "internalType": "bool",
2762
- "name": "isExternallyManaged",
2763
- "type": "bool"
2764
- },
2765
- {
2766
- "internalType": "bool",
2767
- "name": "isVerifyingApplications",
2768
- "type": "bool"
2769
- },
2770
- {
2771
- "internalType": "UFixed",
2772
- "name": "collateralizationLevel",
2773
- "type": "uint256"
2774
- },
2775
- {
2776
- "internalType": "UFixed",
2777
- "name": "retentionLevel",
2778
- "type": "uint256"
2779
- },
2780
- {
2781
- "components": [
2782
- {
2783
- "internalType": "UFixed",
2784
- "name": "fractionalFee",
2785
- "type": "uint256"
2786
- },
2787
- {
2788
- "internalType": "uint256",
2789
- "name": "fixedFee",
2790
- "type": "uint256"
2791
- }
2792
- ],
2793
- "internalType": "struct Fee",
2794
- "name": "poolFee",
2795
- "type": "tuple"
2796
- },
2797
- {
2798
- "components": [
2799
- {
2800
- "internalType": "UFixed",
2801
- "name": "fractionalFee",
2802
- "type": "uint256"
2803
- },
2804
- {
2805
- "internalType": "uint256",
2806
- "name": "fixedFee",
2807
- "type": "uint256"
2808
- }
2809
- ],
2810
- "internalType": "struct Fee",
2811
- "name": "stakingFee",
2812
- "type": "tuple"
2813
- },
2814
- {
2815
- "components": [
2816
- {
2817
- "internalType": "UFixed",
2818
- "name": "fractionalFee",
2819
- "type": "uint256"
2820
- },
2821
- {
2822
- "internalType": "uint256",
2823
- "name": "fixedFee",
2824
- "type": "uint256"
2825
- }
2826
- ],
2827
- "internalType": "struct Fee",
2828
- "name": "performanceFee",
2829
- "type": "tuple"
2830
- }
2831
- ],
2832
- "internalType": "struct IComponents.PoolInfo",
2833
- "name": "info",
2834
- "type": "tuple"
2835
- },
2836
- {
2837
- "internalType": "StateId",
2838
- "name": "newState",
2839
- "type": "uint8"
2840
- }
2841
- ],
2842
- "name": "updatePool",
2843
- "outputs": [],
2844
- "stateMutability": "nonpayable",
2845
- "type": "function"
2846
- },
2847
- {
2848
- "inputs": [
2849
- {
2850
- "internalType": "NftId",
2851
- "name": "productNftId",
2852
- "type": "uint96"
2853
- },
2854
- {
2855
- "components": [
2856
- {
2857
- "internalType": "NftId",
2858
- "name": "distributionNftId",
2859
- "type": "uint96"
2860
- },
2861
- {
2862
- "internalType": "NftId",
2863
- "name": "poolNftId",
2864
- "type": "uint96"
2865
- },
2866
- {
2867
- "components": [
2868
- {
2869
- "internalType": "UFixed",
2870
- "name": "fractionalFee",
2871
- "type": "uint256"
2872
- },
2873
- {
2874
- "internalType": "uint256",
2875
- "name": "fixedFee",
2876
- "type": "uint256"
2877
- }
2878
- ],
2879
- "internalType": "struct Fee",
2880
- "name": "productFee",
2881
- "type": "tuple"
2882
- },
2883
- {
2884
- "components": [
2885
- {
2886
- "internalType": "UFixed",
2887
- "name": "fractionalFee",
2888
- "type": "uint256"
2889
- },
2890
- {
2891
- "internalType": "uint256",
2892
- "name": "fixedFee",
2893
- "type": "uint256"
2894
- }
2895
- ],
2896
- "internalType": "struct Fee",
2897
- "name": "processingFee",
2898
- "type": "tuple"
1814
+ {
1815
+ "internalType": "Amount",
1816
+ "name": "maxBalanceAmount",
1817
+ "type": "uint96"
2899
1818
  },
2900
1819
  {
2901
- "components": [
2902
- {
2903
- "internalType": "UFixed",
2904
- "name": "fractionalFee",
2905
- "type": "uint256"
2906
- },
2907
- {
2908
- "internalType": "uint256",
2909
- "name": "fixedFee",
2910
- "type": "uint256"
2911
- }
2912
- ],
2913
- "internalType": "struct Fee",
2914
- "name": "distributionFee",
2915
- "type": "tuple"
1820
+ "internalType": "UFixed",
1821
+ "name": "collateralizationLevel",
1822
+ "type": "uint160"
2916
1823
  },
2917
1824
  {
2918
- "components": [
2919
- {
2920
- "internalType": "UFixed",
2921
- "name": "fractionalFee",
2922
- "type": "uint256"
2923
- },
2924
- {
2925
- "internalType": "uint256",
2926
- "name": "fixedFee",
2927
- "type": "uint256"
2928
- }
2929
- ],
2930
- "internalType": "struct Fee",
2931
- "name": "minDistributionOwnerFee",
2932
- "type": "tuple"
1825
+ "internalType": "UFixed",
1826
+ "name": "retentionLevel",
1827
+ "type": "uint160"
2933
1828
  },
2934
1829
  {
2935
- "components": [
2936
- {
2937
- "internalType": "UFixed",
2938
- "name": "fractionalFee",
2939
- "type": "uint256"
2940
- },
2941
- {
2942
- "internalType": "uint256",
2943
- "name": "fixedFee",
2944
- "type": "uint256"
2945
- }
2946
- ],
2947
- "internalType": "struct Fee",
2948
- "name": "poolFee",
2949
- "type": "tuple"
1830
+ "internalType": "bool",
1831
+ "name": "isInterceptingBundleTransfers",
1832
+ "type": "bool"
2950
1833
  },
2951
1834
  {
2952
- "components": [
2953
- {
2954
- "internalType": "UFixed",
2955
- "name": "fractionalFee",
2956
- "type": "uint256"
2957
- },
2958
- {
2959
- "internalType": "uint256",
2960
- "name": "fixedFee",
2961
- "type": "uint256"
2962
- }
2963
- ],
2964
- "internalType": "struct Fee",
2965
- "name": "stakingFee",
2966
- "type": "tuple"
1835
+ "internalType": "bool",
1836
+ "name": "isProcessingConfirmedClaims",
1837
+ "type": "bool"
2967
1838
  },
2968
1839
  {
2969
- "components": [
2970
- {
2971
- "internalType": "UFixed",
2972
- "name": "fractionalFee",
2973
- "type": "uint256"
2974
- },
2975
- {
2976
- "internalType": "uint256",
2977
- "name": "fixedFee",
2978
- "type": "uint256"
2979
- }
2980
- ],
2981
- "internalType": "struct Fee",
2982
- "name": "performanceFee",
2983
- "type": "tuple"
1840
+ "internalType": "bool",
1841
+ "name": "isExternallyManaged",
1842
+ "type": "bool"
1843
+ },
1844
+ {
1845
+ "internalType": "bool",
1846
+ "name": "isVerifyingApplications",
1847
+ "type": "bool"
2984
1848
  }
2985
1849
  ],
2986
- "internalType": "struct IComponents.ProductInfo",
1850
+ "internalType": "struct IComponents.PoolInfo",
2987
1851
  "name": "info",
2988
1852
  "type": "tuple"
2989
1853
  },
@@ -2993,7 +1857,7 @@
2993
1857
  "type": "uint8"
2994
1858
  }
2995
1859
  ],
2996
- "name": "updateProduct",
1860
+ "name": "updatePool",
2997
1861
  "outputs": [],
2998
1862
  "stateMutability": "nonpayable",
2999
1863
  "type": "function"
@@ -3009,18 +1873,13 @@
3009
1873
  "components": [
3010
1874
  {
3011
1875
  "internalType": "NftId",
3012
- "name": "distributorNftId",
1876
+ "name": "distributionNftId",
3013
1877
  "type": "uint96"
3014
1878
  },
3015
1879
  {
3016
- "internalType": "string",
3017
- "name": "referralCode",
3018
- "type": "string"
3019
- },
3020
- {
3021
- "internalType": "UFixed",
3022
- "name": "discountPercentage",
3023
- "type": "uint256"
1880
+ "internalType": "NftId",
1881
+ "name": "distributorNftId",
1882
+ "type": "uint96"
3024
1883
  },
3025
1884
  {
3026
1885
  "internalType": "uint32",
@@ -3032,11 +1891,21 @@
3032
1891
  "name": "usedReferrals",
3033
1892
  "type": "uint32"
3034
1893
  },
1894
+ {
1895
+ "internalType": "UFixed",
1896
+ "name": "discountPercentage",
1897
+ "type": "uint160"
1898
+ },
3035
1899
  {
3036
1900
  "internalType": "Timestamp",
3037
1901
  "name": "expiryAt",
3038
1902
  "type": "uint40"
3039
1903
  },
1904
+ {
1905
+ "internalType": "string",
1906
+ "name": "referralCode",
1907
+ "type": "string"
1908
+ },
3040
1909
  {
3041
1910
  "internalType": "bytes",
3042
1911
  "name": "data",
@@ -3090,25 +1959,15 @@
3090
1959
  "name": "requesterNftId",
3091
1960
  "type": "uint96"
3092
1961
  },
3093
- {
3094
- "internalType": "string",
3095
- "name": "callbackMethodName",
3096
- "type": "string"
3097
- },
3098
1962
  {
3099
1963
  "internalType": "NftId",
3100
1964
  "name": "oracleNftId",
3101
1965
  "type": "uint96"
3102
1966
  },
3103
1967
  {
3104
- "internalType": "bytes",
3105
- "name": "requestData",
3106
- "type": "bytes"
3107
- },
3108
- {
3109
- "internalType": "bytes",
3110
- "name": "responseData",
3111
- "type": "bytes"
1968
+ "internalType": "bool",
1969
+ "name": "isCancelled",
1970
+ "type": "bool"
3112
1971
  },
3113
1972
  {
3114
1973
  "internalType": "Timestamp",
@@ -3121,9 +1980,19 @@
3121
1980
  "type": "uint40"
3122
1981
  },
3123
1982
  {
3124
- "internalType": "bool",
3125
- "name": "isCancelled",
3126
- "type": "bool"
1983
+ "internalType": "string",
1984
+ "name": "callbackMethodName",
1985
+ "type": "string"
1986
+ },
1987
+ {
1988
+ "internalType": "bytes",
1989
+ "name": "requestData",
1990
+ "type": "bytes"
1991
+ },
1992
+ {
1993
+ "internalType": "bytes",
1994
+ "name": "responseData",
1995
+ "type": "bytes"
3127
1996
  }
3128
1997
  ],
3129
1998
  "internalType": "struct IOracle.RequestInfo",
@@ -3158,73 +2027,20 @@
3158
2027
  "outputs": [],
3159
2028
  "stateMutability": "nonpayable",
3160
2029
  "type": "function"
3161
- },
3162
- {
3163
- "inputs": [
3164
- {
3165
- "internalType": "RiskId",
3166
- "name": "riskId",
3167
- "type": "bytes8"
3168
- },
3169
- {
3170
- "components": [
3171
- {
3172
- "internalType": "NftId",
3173
- "name": "productNftId",
3174
- "type": "uint96"
3175
- },
3176
- {
3177
- "internalType": "bytes",
3178
- "name": "data",
3179
- "type": "bytes"
3180
- }
3181
- ],
3182
- "internalType": "struct IRisk.RiskInfo",
3183
- "name": "risk",
3184
- "type": "tuple"
3185
- },
3186
- {
3187
- "internalType": "StateId",
3188
- "name": "newState",
3189
- "type": "uint8"
3190
- }
3191
- ],
3192
- "name": "updateRisk",
3193
- "outputs": [],
3194
- "stateMutability": "nonpayable",
3195
- "type": "function"
3196
- },
3197
- {
3198
- "inputs": [
3199
- {
3200
- "internalType": "RiskId",
3201
- "name": "riskId",
3202
- "type": "bytes8"
3203
- },
3204
- {
3205
- "internalType": "StateId",
3206
- "name": "newState",
3207
- "type": "uint8"
3208
- }
3209
- ],
3210
- "name": "updateRiskState",
3211
- "outputs": [],
3212
- "stateMutability": "nonpayable",
3213
- "type": "function"
3214
2030
  }
3215
2031
  ],
3216
- "bytecode": "0x608060405234801561001057600080fd5b506157ca80620000216000396000f3fe608060405234801561001057600080fd5b50600436106103af5760003560e01c80637a9e5e4b116101f4578063a89896751161011a578063c4d66de8116100ad578063f48016ce1161007c578063f48016ce146109c3578063f5884fc5146107a8578063fae5df9b146109e4578063fe1f18d6146109f757600080fd5b8063c4d66de81461094c578063ca0e7f081461095f578063e80c61ed14610972578063e9e96c701461098557600080fd5b8063b5b3d9f9116100e9578063b5b3d9f9146108f3578063b6d7cd6214610906578063bf1db3f914610919578063bf7e214f1461092c57600080fd5b8063a8989675146108a7578063af902500146108ba578063b0628dc3146108cd578063b4d7efe2146108e057600080fd5b8063985aeba711610192578063a46eb8dc11610161578063a46eb8dc146107e1578063a5961b4c146107f4578063a6a67b1f14610881578063a76ee0181461089457600080fd5b8063985aeba7146107a85780639f8151e5146107bb578063a1fc1004146107a8578063a2842229146107ce57600080fd5b806381c2b282116101ce57806381c2b282146107285780638eaa6ac01461073b5780638eb9000d1461075b5780638fb360371461078757600080fd5b80637a9e5e4b146106ef5780637cca1124146107025780637cef48421461071557600080fd5b80633870a770116102d957806353ebe129116102775780635eede174116102465780635eede1741461064457806361105e0e146106b6578063763bb754146106c957806378929823146106dc57600080fd5b806353ebe129146105fe57806354f6127f146106115780635a8416b0146106315780635d4345cc146104c357600080fd5b8063468bce06116102b3578063468bce06146105bd5780634846003a146105c557806351dd844b146105d8578063533086d4146105eb57600080fd5b80633870a7701461057457806338a699a41461058757806340529b0f146105aa57600080fd5b80630fad0eb111610351578063275c059511610320578063275c0595146105285780632a8ea7ac1461053b5780632f61088a1461054e57806330a130ba1461056157600080fd5b80630fad0eb1146104c35780631e40b363146104d6578063228e42ec146104e9578063248a77dd1461051557600080fd5b806309648a9d1161038d57806309648a9d1461043d5780630cfc3ba3146104775780630d3581811461048a5780630f6c29ef146104b057600080fd5b80630232ca49146103b457806303c099ac146103fd5780630632b17d14610412575b600080fd5b6103e06103c23660046135e5565b6001600160601b039081166000908152600260205260409020541690565b6040516001600160601b0390911681526020015b60405180910390f35b61041061040b36600461388f565b610a0a565b005b610425610420366004613a12565b610a50565b6040516001600160401b0390911681526020016103f4565b61046561044b366004613a4e565b600090815260076020526040902054610100900460ff1690565b60405160ff90911681526020016103f4565b610410610485366004613b45565b610b10565b610465610498366004613ba6565b60ff9081166000908152600560205260409020541690565b6104106104be366004613c79565b610b37565b6104106104d1366004613ceb565b610b64565b6104106104e4366004613e18565b610b81565b6103e06104f73660046135e5565b6001600160601b039081166000908152602081905260409020541690565b6103e0610523366004613e5f565b610ba9565b610410610536366004613ead565b610bc7565b61041061054936600461406e565b610c61565b61041061055c366004614117565b610c96565b61041061056f36600461422f565b610d36565b610410610582366004614274565b610dd6565b61059a610595366004613a4e565b610dec565b60405190151581526020016103f4565b6104106105b8366004613ceb565b610e77565b610410610e8e565b6104106105d33660046142b2565b610ec8565b6104106105e63660046143cc565b610ef9565b6103e06105f9366004613e5f565b610f21565b6103e061060c366004613e5f565b610f36565b61062461061f366004613a4e565b610f4b565b6040516103f49190614463565b61041061063f366004614476565b610ff0565b61068c6106523660046135e5565b6001600160601b03908116600090815260208181526040808320546001835281842054600290935292205491831693908316929190911690565b604080516001600160601b03948516815292841660208401529216918101919091526060016103f4565b6104106106c4366004614579565b611090565b6104106106d7366004614687565b611130565b6104106106ea3660046146c8565b611158565b6104106106fd3660046146ff565b611180565b61041061071036600461471c565b611208565b610410610723366004614761565b611230565b61041061073636600461477f565b6112bf565b61074e610749366004613a4e565b6112e6565b6040516103f491906147d4565b6103e06107693660046135e5565b6001600160601b039081166000908152600160205260409020541690565b61078f61140b565b6040516001600160e01b031990911681526020016103f4565b6104106107b6366004614833565b611444565b6103e06107c9366004613e5f565b61146c565b6104106107dc366004614761565b611481565b6104106107ef36600461487a565b6114cf565b610874610802366004613a4e565b604080516080808201835260008083526020808401829052838501829052606093840182905294815260078552839020835191820184525460ff80821683526101008204169482019490945263ffffffff620100008504811693820193909352600160301b9093049091169082015290565b6040516103f491906148bf565b61041061088f3660046149b7565b611500565b6104106108a23660046149e5565b611528565b6104106108b5366004614a2c565b6115c8565b6104106108c8366004614761565b6116b9565b6103e06108db366004613e5f565b611707565b6104106108ee366004614a5c565b61171c565b610410610901366004614a7a565b611769565b610410610914366004614abb565b611791565b61059a610927366004613ba6565b6117a7565b6109346117f4565b6040516001600160a01b0390911681526020016103f4565b61041061095a3660046146ff565b611810565b61041061096d366004614aeb565b61198e565b6103e0610980366004613e5f565b611a2e565b61059a610993366004614a2c565b60ff9283166000908152600660209081526040808320948616835293815283822092851682529190915220541690565b6109d66109d1366004614b40565b611a43565b6040519081526020016103f4565b6104106109f2366004614b6e565b611ac7565b610410610a05366004613ceb565b611aee565b610a17335b600036611b05565b610a4b610a2584600b611c03565b83604051602001610a369190614bc6565b60405160208183030381529060405283611c4f565b505050565b6000610a5b33610a0f565b610a63611dcb565b604051630f37f38f60e41b81526001600160401b0382166004820152909150610b0b9073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f090602401602060405180830381865af4158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190614c49565b83604051602001610af79190614c62565b604051602081830303815290604052611e5e565b919050565b610b1933610a0f565b610a4b610b268484612212565b82604051602001610af79190614d37565b610b4033610a0f565b610b5e610b4d858561225f565b83604051602001610a369190614dd7565b50505050565b610b6d33610a0f565b610a4b610b7b836015611c03565b826122ad565b610b8a33610a0f565b610a4b610b9884601c611c03565b83604051602001610a369190614e31565b6000610bb433610a0f565b610bbe83836125b2565b90505b92915050565b610bd033610a0f565b604051630f37f38f60e41b81526001600160401b0384166004820152610a4b9073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f090602401602060405180830381865af4158015610c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c509190614c49565b83604051602001610a369190614c62565b610c6a33610a0f565b610c73826126ae565b610c92610c81836015611c03565b82604051602001610af79190614e9e565b5050565b610c9f33610a0f565b6040516355ee627560e01b8152610c929073__$32e9ecefef68cb354d118e0496fdd3f4bc$__906355ee627590610ce4906001600160c01b031987169060040161504e565b602060405180830381865af4158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d259190614c49565b82604051602001610af79190615063565b610d3f33610a0f565b6040516355ee627560e01b8152610c929073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee627590610d84906001600160c01b031987169060040161504e565b602060405180830381865af4158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190614c49565b82604051602001610af79190615091565b610ddf33610a0f565b610b5e610b7b848461225f565b60008181526007602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc19190615141565b610e8033610a0f565b610a4b610b7b83601c611c03565b610e9661275e565b610e9e6127a7565b610ea66128ca565b610eae6129be565b610eb6612af5565b610ebe612c21565b610ec6612cdd565b565b610ed133610a0f565b610eda826126ae565b610c92610ee883600b611c03565b82604051602001610af79190614bc6565b610f0233610a0f565b610a4b610f1084601e611c03565b83604051602001610a36919061515e565b6000610f2c33610a0f565b610bbe8383612de1565b6000610f4133610a0f565b610bbe8383612ec5565b6000818152600760205260409020600101805460609190610f6b906151e4565b80601f0160208091040260200160405190810160405280929190818152602001828054610f97906151e4565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b50505050509050919050565b610ff933610a0f565b6040516355ee627560e01b8152610a4b9073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee62759061103e906001600160c01b031988169060040161504e565b602060405180830381865af415801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190614c49565b83604051602001610a369190615091565b61109933610a0f565b6040516355ee627560e01b8152610a4b9073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee6275906110de906001600160c01b031988169060040161504e565b602060405180830381865af41580156110fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f9190614c49565b83604051602001610a36919061521e565b61113933610a0f565b610a4b61114784600f611c03565b83604051602001610a3691906152b0565b61116133610a0f565b610c9261116f83600f611c03565b82604051602001610af791906152b0565b336111896117f4565b6001600160a01b0316816001600160a01b0316146111c95760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b6000036111ff576040516361798f2f60e11b81526001600160a01b03831660048201526024016111c0565b610c9282612fa9565b61121133610a0f565b610c9261121f83601c611c03565b82604051602001610af79190614e31565b61123933610a0f565b6040516355ee627560e01b8152610a4b9073__$32e9ecefef68cb354d118e0496fdd3f4bc$__906355ee62759061127e906001600160c01b031987169060040161504e565b602060405180830381865af415801561129b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190614c49565b6112c833610a0f565b610a4b6112d5848461225f565b82604051602001610af79190614dd7565b6040805160c081018252600091810182815260608083018490526080830184905260a083019390935281526020810191909152600082815260076020908152604091829020825160c081018452815460ff808216958301958652610100820416606083015263ffffffff62010000820481166080840152600160301b9091041660a08201529283526001810180549192840191611382906151e4565b80601f01602080910402602001604051908101604052809291908181526020018280546113ae906151e4565b80156113fb5780601f106113d0576101008083540402835291602001916113fb565b820191906000526020600020905b8154815290600101906020018083116113de57829003601f168201915b5050505050815250509050919050565b600080516020615775833981519152805460009190600160a01b900460ff1661143557600061143e565b638fb3603760e01b5b91505090565b61144d33610a0f565b610a4b61145b846015611c03565b83604051602001610a369190614e9e565b600061147733610a0f565b610bbe838361300a565b61148a33610a0f565b6040516355ee627560e01b8152610a4b9073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee62759061127e906001600160c01b031987169060040161504e565b6114d833610a0f565b6114e1826126ae565b610c926114ef83601e611c03565b82604051602001610af7919061515e565b61150933610a0f565b610c9261151783600c611c03565b82604051602001610af791906153a3565b61153133610a0f565b6040516355ee627560e01b8152610a4b9073__$32e9ecefef68cb354d118e0496fdd3f4bc$__906355ee627590611576906001600160c01b031988169060040161504e565b602060405180830381865af4158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b79190614c49565b83604051602001610a369190615063565b60ff8381166000908152600560205260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af415801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190615141565b1561165b57505050565b60ff808416600090815260066020908152604080832086851684528252808320858516845290915290205416610a4b57604051636bb20ea760e01b815260ff80851660048301528084166024830152821660448201526064016111c0565b6116c233610a0f565b6040516355ee627560e01b8152610a4b9073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee62759061127e906001600160c01b031987169060040161504e565b600061171233610a0f565b610bbe83836130ec565b61172533610a0f565b604051630f37f38f60e41b81526001600160401b0383166004820152610a4b9073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f09060240161127e565b61177233610a0f565b610a4b61178084600c611c03565b83604051602001610a3691906153a3565b61179a33610a0f565b610b5e610b7b8484612212565b60ff81811660009081526005602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610e36565b600080516020615775833981519152546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156118555750825b90506000826001600160401b031660011480156118715750303b155b90508115801561187f575080155b1561189d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118c757845460ff60401b1916600160401b1785555b6000866001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190615486565b9050611936816131ce565b61193e610e8e565b50831561198657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050565b61199733610a0f565b6040516355ee627560e01b8152610c929073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee6275906119dc906001600160c01b031987169060040161504e565b602060405180830381865af41580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d9190614c49565b82604051602001610af7919061521e565b6000611a3933610a0f565b610bbe83836131e2565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce906044015b602060405180830381865af4158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190614c49565b611ad033610a0f565b610b5e611add8585612212565b83604051602001610a369190614d37565b611af733610a0f565b610a4b610b7b83601e611c03565b600080516020615775833981519152600080611b40611b226117f4565b8730611b32600460008a8c6154a3565b611b3b916154cd565b6132c6565b91509150816119865763ffffffff811615611be057825460ff60a01b1916600160a01b178355611b6e6117f4565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611b9d939291906154fd565b600060405180830381600087803b158015611bb757600080fd5b505af1158015611bcb573d6000803e3d6000fd5b5050845460ff60a01b19168555506119869050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016111c0565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$94a2c899be079b00d952d0d84fffaa5c34$__90633889a4c890604401611a86565b6000611c5b84836122ad565b6000858152600760205260409020909150600101611c798482615583565b50604051634b00e98f60e11b8152600481018590527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d109190615642565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d84919061565f565b6040805160ff938416815260ff199290921660208301529185168183015233606082015232608082015263ffffffff841660a082015290519081900360c00190a150505050565b6008805460009182611ddc8361567c565b9091555050600854604051633aac82ef60e11b8152600481019190915273__$b4c16f233b92c2c4124fb22a521f86c95b$__9063755905de90602401602060405180830381865af4158015611e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5991906156a3565b905090565b604051634b00e98f60e11b81526004810183905260009073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed59190615642565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015611f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4e9190615141565b15611f71576040516307014a8d60e51b815260ff821660048201526024016111c0565b600083815260076020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190615141565b1561202857604051633f92eac960e21b81526004810185905260ff831660248201526044016111c0565b60006120326133d2565b9050600061203f846117a7565b61204a576004612060565b60ff808516600090815260056020526040902054165b835460ff86811661ffff1990921691909117610100918316919091021769ffffffffffffffff000019166201000063ffffffff851690810269ffffffff000000000000191691909117600160301b9190910217845560008781526007602052604090209091506001016120d38682615583565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216a9190615642565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156121ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121de919061565f565b6040805160ff938416815260ff1990921660208301529184169181019190915233606082015232608082015260a00161197d565b604051637d56159160e11b815261ffff821660048201526001600160601b038316602482015260009073__$9e81531fe4994e01e99541f86b55500b4b$__9063faac2b2290604401611a86565b604051635927341160e01b815262ffffff821660048201526001600160601b038316602482015260009073__$0f9396e6447a4be57af83e53f51d234633$__90635927341190604401611a86565b60405163037c8cb160e51b815260ff8216600482015260009073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015612302573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123269190615141565b156123475760405163093b89e160e11b8152600481018490526024016111c0565b50600082815260076020526040908190208054915163037c8cb160e51b8152610100830460ff16600482018190526201000090930463ffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156123c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e49190615141565b156124055760405163566ebf7960e01b8152600481018690526024016111c0565b60ff8085161461258457815461241f9060ff1682866115c8565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156124a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c79190615642565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015612517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253b919061565f565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015263ffffffff851660c082015260e00160405180910390a15b61258c6133d2565b825463ffffffff91909116620100000265ffffffff000019909116179091555092915050565b6001600160601b038216600090815260036020526040812054839060ff166125f857604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b0380851660009081526001602052604090205461261d911684613441565b6001600160601b03858116600090815260016020908152604080832080546001600160601b03191694861694909417909355600490528190205490519193507fb08c267f0a5e1593171021f433a0805c3818d5b57ea45f0609ddb7163dc228a7916126969187918791879163ffffffff909116906156c0565b60405180910390a16126a7846134c9565b5092915050565b6001600160601b03811660009081526003602052604090205460ff16156126f3576040516314d5804160e01b81526001600160601b03821660048201526024016111c0565b6001600160601b0381166000908152600360205260409020805460ff1916600117905561271f816134c9565b6040516001600160601b03821681527f1c26f28e2d8f145150c4243339c6b20813ea2bbc4e6f19ea2c9905060c0411a99060200160405180910390a150565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610ec657604051631afcd79f60e31b815260040160405180910390fd5b7f3fb1f8b5b572f385df2ff517fa4200d6781fd017f742a2f073e874e0dca7758b8054600460ff19918216179091557fa38294a430c9d56119aa0494393af7baee29b36db8610955904203b2dc0d4b0e8054821660019081179091557faabd79db0796e2d89bfe8696a82fbf6d2311a758e061bcc90c8bf3de6ba08b4e80548316821790557f1c034d70532bb968580b3cead82cdee06245a7d4ea4fc0a0598c9d941549db3e80549092168117909155601e600090815260066020527fb6ba906ff52451a7a924e2eaeb8aea3ebee7350a8703e5e417edb25358c7dcc190606e5b60ff1660ff16815260200190815260200160002060006128a660c890565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054600460ff1991821681179092557fd0d45eb00d049ccc46c339c71e63d90eea012e3db7256c4ce5a37e3ef4bde5ea80548216600190811790915560009283527f6f1fcfd2b22fe622991f7a4235fe1cefd5d6165948a5d5e8668ebd75e7881f246020527fe5510651289c67d4e8f0e7519899867b473e44abf356dbdbad5a29ca137bfc528054909216811790915590600690600b5b60ff1660ff16815260200190815260200160002060006129a0606e90565b60ff1660ff16815260200190815260200160002060006128a660d290565b7fdcae836ed36bf3d20474cfcca00229d5b3b00239a2a956d8ca4bf29e25a7143c8054600a60ff19918216179091557f2904e68c7a2b9b93d33af7507f4a643c6b0086d6fe2b31ff5a5fbc03699e4b8b8054821660019081179091557fbe12cc7efb7411c44beea05fe4d45203c4db5cef133202c25bd3ce7a44514dce80548316821790557f4f55fb356af25cbc2dd445c53c373fb68509850aba36a91b82fdeaae21b0fb4880548316821790557f8fc126f8eb253a1b51796c6e2b7888b31d478c4b83044f9573d937595c30830080548316821790557fb7d86cc33cf49cee7ee3c69728b50600d31f279520c03623c582359cac1cf203805490921681179091556015600090815260066020527feda6feebfb4ffb7de2d0dc45a13b92dc953c2ed6ee96fa7fe8179e7c4266747f906004612888565b7fb8657d180a4d2444fb942e94a4266075e5a1b59d96d88e88cf308d6927f00ff2805460ff199081166032179091557fb8d4b36fa3f605ad94cd0cac80f13c92af675fa832d6df8dc3ba620fe2bae5aa8054821660019081179091557f9f5a5f335709add57c36a55369203f75fab90769f90dc5c1d6b4f51e64f7931e80548316821790557fac51428db552575d93acd1b0206748187cdf03c3d4880b224b6b843f82e3ad6d80548316821790557f1759eeb783be12e6871ee15567296c25cea65699ad38e9965540ba6254a9037f8054603c93168317905560009182527f84f72166cd6dc886f96a4867c4575af2a636c629c04227c9418bfffa7a09a9ed602052907fd29801b20059b93ddfd5c6b35ed7b939364988e76b05e24456e4e78c8a3e96449060dc6128a6565b7f5cc25df4297f13907c2e8c8bb7612ac7d899f1e24c7e8664c22a89192ac286a78054600460ff1991821681179092557f210997b37b2d43faf47705b743346fb1b15ea96e448556607a491761f91e01d780548216600190811790915560009283527f62b939e4fd6f81e35ee2bfd6159b5f0fdc60eba32ce925e23fbacd5164be4c476020527f994510576db8bc5180614979b295aff86a861cb3965845612b5e9a9ef49f653e80549092168117909155906006906018612982565b7fce1f324a8a5d5daa4a6b2281780ab321637fd4089413dd89c573bbf705027cb98054600460ff1991821681179092557f17765961060f66318b8d1c9d16f37975e1f7d99f2e57f6ba8e618a045d1691568054821660019081179091557f7b2fffb8b571683ba7f6b314c4f61b812b39faac6c91c75f6cef800f300291fc80548316821790557ff2ece9920c5eb8e61fb6da50740b25ea927174d5d412d76ec051f6da7c89ae4c8054909216811790915560009182527f2d88733daa8d83575c1c435b1a4140007e667f8dfbe2e5678ffec947a513e5cd602052907fbeddbe65619271258b6647d557767a93c417716f295dde3ab0ac84ff252b32949060486128a6565b6001600160601b038216600090815260036020526040812054839060ff16612e2757604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b03808516600090815260026020526040902054612e4c911684613569565b6001600160601b03858116600090815260026020908152604080832080546001600160601b03191694861694909417909355600490528190205490519193507f72d83b31d9d848984842915e1bf55e0b10f5c5c208ea2e893df958de0472fc62916126969187918791879163ffffffff909116906156c0565b6001600160601b038216600090815260036020526040812054839060ff16612f0b57604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b03808516600090815260016020526040902054612f30911684613569565b6001600160601b03858116600090815260016020908152604080832080546001600160601b03191694861694909417909355600490528190205490519193507fb254741d2e56b5fc092dabf9d2224554522d8bc0c08a1ffdce59fe0acae2bfc9916126969187918791879163ffffffff909116906156c0565b60008051602061577583398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6001600160601b038216600090815260036020526040812054839060ff1661305057604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b03808516600090815260208190526040902054613075911684613441565b6001600160601b0385811660009081526020818152604080832080546001600160601b03191694861694909417909355600490528190205490519193507f5b04742c456b2820460f06a699b464350ad00ad419b30c9bb74699e0d1e64b66916126969187918791879163ffffffff909116906156c0565b6001600160601b038216600090815260036020526040812054839060ff1661313257604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b03808516600090815260208190526040902054613157911684613569565b6001600160601b0385811660009081526020818152604080832080546001600160601b03191694861694909417909355600490528190205490519193507f4068631e6ddfc25f1831c04cd7b41e313620779732e776b6e8e62273fccd6e6d916126969187918791879163ffffffff909116906156c0565b6131d661275e565b6131df816135b4565b50565b6001600160601b038216600090815260036020526040812054839060ff1661322857604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b0380851660009081526002602052604090205461324d911684613441565b6001600160601b03858116600090815260026020908152604080832080546001600160601b03191694861694909417909355600490528190205490519193507fee2ce932811dedb09eb973e9da29180e86fe3bab034360124e0fd962f795daad916126969187918791879163ffffffff909116906156c0565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161333591906156ef565b600060405180830381855afa9150503d8060008114613370576040519150601f19603f3d011682016040523d82523d6000602084013e613375565b606091505b509150915081156133c75760408151106133a7578080602001905181019061339d919061570b565b90945092506133c7565b60208151106133c757808060200190518101906133c49190615141565b93505b505094509492505050565b600073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561341d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e59919061573a565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af41580156134a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190615757565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613512573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613536919061573a565b6001600160601b03919091166000908152600460205260409020805463ffffffff191663ffffffff909216919091179055565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa2290604401613488565b6135bc61275e565b6131df81612fa9565b6001600160601b03811681146131df57600080fd5b8035610b0b816135c5565b6000602082840312156135f757600080fd5b8135613602816135c5565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561364157613641613609565b60405290565b60405161010081016001600160401b038111828210171561364157613641613609565b60405160e081016001600160401b038111828210171561364157613641613609565b60405161022081016001600160401b038111828210171561364157613641613609565b604080519081016001600160401b038111828210171561364157613641613609565b60405161012081016001600160401b038111828210171561364157613641613609565b60405161016081016001600160401b038111828210171561364157613641613609565b600082601f83011261372857600080fd5b81356001600160401b038082111561374257613742613609565b604051601f8301601f19908116603f0116810190828211818310171561376a5761376a613609565b8160405283815286602085880101111561378357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b03811681146131df57600080fd5b8035610b0b816137a3565b600060c082840312156137d557600080fd5b6137dd61361f565b905081356001600160401b03808211156137f657600080fd5b61380285838601613717565b8352613810602085016135da565b6020840152613821604085016137b8565b6040840152613832606085016137b8565b6060840152613843608085016137b8565b608084015260a084013591508082111561385c57600080fd5b5061386984828501613717565b60a08301525092915050565b60ff811681146131df57600080fd5b8035610b0b81613875565b6000806000606084860312156138a457600080fd5b83356138af816135c5565b925060208401356001600160401b038111156138ca57600080fd5b6138d6868287016137c3565b92505060408401356138e781613875565b809150509250925092565b64ffffffffff811681146131df57600080fd5b8035610b0b816138f2565b80151581146131df57600080fd5b8035610b0b81613910565b6000610100828403121561393c57600080fd5b613944613647565b905061394f826135da565b815260208201356001600160401b038082111561396b57600080fd5b61397785838601613717565b6020840152613988604085016135da565b604084015260608401359150808211156139a157600080fd5b6139ad85838601613717565b606084015260808401359150808211156139c657600080fd5b506139d384828501613717565b6080830152506139e560a08301613905565b60a08201526139f660c08301613905565b60c0820152613a0760e0830161391e565b60e082015292915050565b600060208284031215613a2457600080fd5b81356001600160401b03811115613a3a57600080fd5b613a4684828501613929565b949350505050565b600060208284031215613a6057600080fd5b5035919050565b61ffff811681146131df57600080fd5b8035610b0b81613a67565b600060e08284031215613a9457600080fd5b613a9c61366a565b9050613aa7826135da565b8152613ab5602083016135da565b6020820152613ac660408301613884565b6040820152613ad760608301613884565b606082015260808201356001600160401b0380821115613af657600080fd5b613b0285838601613717565b608084015260a0840135915080821115613b1b57600080fd5b50613b2884828501613717565b60a083015250613b3a60c08301613905565b60c082015292915050565b600080600060608486031215613b5a57600080fd5b8335613b65816135c5565b92506020840135613b7581613a67565b915060408401356001600160401b03811115613b9057600080fd5b613b9c86828701613a82565b9150509250925092565b600060208284031215613bb857600080fd5b813561360281613875565b803562ffffff81168114610b0b57600080fd5b600060808284031215613be857600080fd5b604051608081016001600160401b038282108183111715613c0b57613c0b613609565b8160405282935084359150613c1f82613a67565b908252602084013590613c31826135c5565b8160208401526040850135915080821115613c4b57600080fd5b50613c5885828601613717565b6040830152506060830135613c6c816138f2565b6060919091015292915050565b60008060008060808587031215613c8f57600080fd5b8435613c9a816135c5565b9350613ca860208601613bc3565b925060408501356001600160401b03811115613cc357600080fd5b613ccf87828801613bd6565b9250506060850135613ce081613875565b939692955090935050565b60008060408385031215613cfe57600080fd5b8235613d09816135c5565b91506020830135613d1981613875565b809150509250929050565b6001600160c01b0319811681146131df57600080fd5b8035610b0b81613d24565b63ffffffff811681146131df57600080fd5b8035610b0b81613d45565b600060a08284031215613d7457600080fd5b60405160a081016001600160401b038282108183111715613d9757613d97613609565b8160405282935084359150613dab82613d24565b908252602084013590613dbd82613910565b8160208401526040850135915080821115613dd757600080fd5b50613de485828601613717565b6040830152506060830135613df8816135c5565b60608201526080830135613e0b81613d45565b6080919091015292915050565b600080600060608486031215613e2d57600080fd5b8335613e38816135c5565b925060208401356001600160401b03811115613e5357600080fd5b6138d686828701613d62565b60008060408385031215613e7257600080fd5b8235613e7d816135c5565b91506020830135613d19816135c5565b6001600160401b03811681146131df57600080fd5b8035610b0b81613e8d565b600080600060608486031215613ec257600080fd5b8335613ecd81613e8d565b925060208401356001600160401b03811115613ee857600080fd5b6138d686828701613929565b60006102208284031215613f0757600080fd5b613f0f61368c565b9050613f1a826135da565b8152613f28602083016135da565b6020820152613f3960408301613d3a565b6040820152613f4a60608301613d3a565b6060820152613f5b608083016135da565b6080820152613f6c60a083016135da565b60a0820152613f7d60c083016135da565b60c0820152613f8e60e08301613905565b60e0820152610100808301356001600160401b0380821115613faf57600080fd5b613fbb86838701613717565b83850152610120925082850135915080821115613fd757600080fd5b50613fe485828601613717565b828401525050610140613ff8818401613a77565b9082015261016061400a838201613a77565b9082015261018061401c8382016135da565b908201526101a061402e8382016135da565b908201526101c0614040838201613905565b908201526101e0614052838201613905565b90820152610200614064838201613905565b9082015292915050565b6000806040838503121561408157600080fd5b823561408c816135c5565b915060208301356001600160401b038111156140a757600080fd5b6140b385828601613ef4565b9150509250929050565b6000604082840312156140cf57600080fd5b6140d76136af565b905081356140e4816135c5565b815260208201356001600160401b038111156140ff57600080fd5b61410b84828501613717565b60208301525092915050565b6000806040838503121561412a57600080fd5b823561413581613d24565b915060208301356001600160401b0381111561415057600080fd5b6140b3858286016140bd565b6000610120828403121561416f57600080fd5b6141776136d1565b905081356001600160401b038082111561419057600080fd5b61419c85838601613717565b83526020840135602084015260408401356040840152606084013560608401526141c860808501613d57565b60808401526141d960a08501613d57565b60a08401526141ea60c0850161391e565b60c08401526141fb60e0850161391e565b60e08401526101009150818401358181111561421657600080fd5b61422286828701613717565b8385015250505092915050565b6000806040838503121561424257600080fd5b823561424d81613d24565b915060208301356001600160401b0381111561426857600080fd5b6140b38582860161415c565b60008060006060848603121561428957600080fd5b8335614294816135c5565b92506142a260208501613bc3565b915060408401356138e781613875565b600080604083850312156142c557600080fd5b82356142d0816135c5565b915060208301356001600160401b038111156142eb57600080fd5b6140b3858286016137c3565b60006040828403121561430957600080fd5b6143116136af565b9050813581526020820135602082015292915050565b600060e0828403121561433957600080fd5b61434161361f565b9050813561434e816135c5565b815261435d83602084016142f7565b602082015260608201356001600160401b0381111561437b57600080fd5b61438784828501613717565b604083015250608082013561439b816138f2565b606082015260a08201356143ae816138f2565b608082015260c08201356143c1816138f2565b60a082015292915050565b6000806000606084860312156143e157600080fd5b83356143ec816135c5565b925060208401356001600160401b0381111561440757600080fd5b6138d686828701614327565b60005b8381101561442e578181015183820152602001614416565b50506000910152565b6000815180845261444f816020860160208601614413565b601f01601f19169290920160200192915050565b602081526000610bbe6020830184614437565b60008060006060848603121561448b57600080fd5b833561449681613d24565b925060208401356001600160401b038111156144b157600080fd5b6138d68682870161415c565b600060e082840312156144cf57600080fd5b6144d761366a565b90506144e2826135da565b815260208201356001600160401b03808211156144fe57600080fd5b61450a85838601613717565b60208401526040840135604084015261452560608501613d57565b606084015261453660808501613d57565b608084015261454760a08501613905565b60a084015260c084013591508082111561456057600080fd5b5061456d84828501613717565b60c08301525092915050565b60008060006060848603121561458e57600080fd5b833561459981613d24565b925060208401356001600160401b038111156145b457600080fd5b6138d6868287016144bd565b60006101c082840312156145d357600080fd5b6145db6136f4565b90506145e6826135da565b81526145f460208301613ea2565b6020820152614605604083016135da565b60408201526146166060830161391e565b60608201526146276080830161391e565b608082015261463860a0830161391e565b60a082015260c082013560c082015260e082013560e0820152610100614660848285016142f7565b90820152610140614673848483016142f7565b6101208301526140648461018085016142f7565b6000806000610200848603121561469d57600080fd5b83356146a8816135c5565b92506146b785602086016145c0565b91506101e08401356138e781613875565b6000806101e083850312156146dc57600080fd5b82356146e7816135c5565b91506146f684602085016145c0565b90509250929050565b60006020828403121561471157600080fd5b8135613602816137a3565b6000806040838503121561472f57600080fd5b823561473a816135c5565b915060208301356001600160401b0381111561475557600080fd5b6140b385828601613d62565b6000806040838503121561477457600080fd5b8235613d0981613d24565b60008060006060848603121561479457600080fd5b833561479f816135c5565b92506147ad60208501613bc3565b915060408401356001600160401b038111156147c857600080fd5b613b9c86828701613bd6565b6020815261481960208201835160ff815116825260ff6020820151166020830152604081015163ffffffff808216604085015280606084015116606085015250505050565b6000602083015160a080840152613a4660c0840182614437565b60008060006060848603121561484857600080fd5b8335614853816135c5565b925060208401356001600160401b0381111561486e57600080fd5b6138d686828701613ef4565b6000806040838503121561488d57600080fd5b8235614898816135c5565b915060208301356001600160401b038111156148b357600080fd5b6140b385828601614327565b60808101610bc1828460ff815116825260ff6020820151166020830152604081015163ffffffff808216604085015280606084015116606085015250505050565b6000610200828403121561491357600080fd5b61491b6136d1565b9050614926826135da565b8152614934602083016135da565b602082015261494683604084016142f7565b604082015261495883608084016142f7565b606082015261496a8360c084016142f7565b608082015261010061497e848285016142f7565b60a08301526149918461014085016142f7565b60c08301526149a48461018085016142f7565b60e0830152614064846101c085016142f7565b60008061022083850312156149cb57600080fd5b82356149d6816135c5565b91506146f68460208501614900565b6000806000606084860312156149fa57600080fd5b8335614a0581613d24565b925060208401356001600160401b03811115614a2057600080fd5b6138d6868287016140bd565b600080600060608486031215614a4157600080fd5b8335614a4c81613875565b925060208401356142a281613875565b60008060408385031215614a6f57600080fd5b8235613d0981613e8d565b60008060006102408486031215614a9057600080fd5b8335614a9b816135c5565b9250614aaa8560208601614900565b91506102208401356138e781613875565b600080600060608486031215614ad057600080fd5b8335614adb816135c5565b925060208401356142a281613a67565b60008060408385031215614afe57600080fd5b8235614b0981613d24565b915060208301356001600160401b03811115614b2457600080fd5b6140b3858286016144bd565b60ff19811681146131df57600080fd5b60008060408385031215614b5357600080fd5b8235614b5e81613875565b91506020830135613d1981614b30565b60008060008060808587031215614b8457600080fd5b8435614b8f816135c5565b93506020850135614b9f81613a67565b925060408501356001600160401b03811115614bba57600080fd5b613ccf87828801613a82565b602081526000825160c06020840152614be260e0840182614437565b90506001600160601b036020850151166040840152604084015160018060a01b0380821660608601528060608701511660808601528060808701511660a0860152505060a0840151601f198483030160c0850152614c408282614437565b95945050505050565b600060208284031215614c5b57600080fd5b5051919050565b60208152614c7c6020820183516001600160601b03169052565b60006020830151610100806040850152614c9a610120850183614437565b91506040850151614cb660608601826001600160601b03169052565b506060850151601f1980868503016080870152614cd38483614437565b935060808701519150808685030160a087015250614cf18382614437565b92505060a0850151614d0c60c086018264ffffffffff169052565b5060c085015164ffffffffff811660e08601525060e0850151801515858301525b5090949350505050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff60408401511660608301526060830151614d7c608084018260ff169052565b50608083015160e060a0840152614d97610100840182614437565b905060a0840151601f198483030160c0850152614db48282614437565b91505060c0840151614dcf60e085018264ffffffffff169052565b509392505050565b6020815261ffff82511660208201526001600160601b0360208301511660408201526000604083015160806060840152614e1460a0840182614437565b905064ffffffffff60608501511660808401528091505092915050565b602081526001600160401b0360c01b82511660208201526020820151151560408201526000604083015160a06060840152614e6f60c0840182614437565b90506001600160601b03606085015116608084015263ffffffff60808501511660a08401528091505092915050565b60208152614eb86020820183516001600160601b03169052565b60006020830151614ed460408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b0319811660808401525060808301516001600160601b03811660a08401525060a08301516001600160601b03811660c08401525060c08301516001600160601b03811660e08401525060e0830151610100614f5a8185018364ffffffffff169052565b808501519150506102206101208181860152614f7a610240860184614437565b9250808601519050610140601f198685030181870152614f9a8483614437565b935080870151915050610160614fb58187018361ffff169052565b8601519050610180614fcc8682018361ffff169052565b86015190506101a0614fe8868201836001600160601b03169052565b86015190506101c0615004868201836001600160601b03169052565b86015190506101e061501e8682018364ffffffffff169052565b86015190506102006150388682018364ffffffffff169052565b86015164ffffffffff8116838701529050614d2d565b6001600160c01b031991909116815260200190565b602081526001600160601b03825116602082015260006020830151604080840152613a466060840182614437565b60208152600082516101208060208501526150b0610140850183614437565b915060208501516040850152604085015160608501526060850151608085015260808501516150e760a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e085015161010061511d8187018315159052565b860151858403601f19018387015290506151378382614437565b9695505050505050565b60006020828403121561515357600080fd5b815161360281613910565b602081526001600160601b03825116602082015260006020830151615190604084018280518252602090810151910152565b50604083015160e060808401526151ab610100840182614437565b9050606084015164ffffffffff80821660a08601528060808701511660c08601528060a08701511660e086015250508091505092915050565b600181811c908216806151f857607f821691505b60208210810361521857634e487b7160e01b600052602260045260246000fd5b50919050565b602081526001600160601b0382511660208201526000602083015160e0604084015261524e610100840182614437565b90506040840151606084015263ffffffff6060850151166080840152608084015161528160a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614c408282614437565b81516001600160601b031681526101c0810160208301516152dc60208401826001600160401b03169052565b5060408301516152f760408401826001600160601b03169052565b50606083015161530b606084018215159052565b50608083015161531f608084018215159052565b5060a083015161533360a084018215159052565b5060c083015160c083015260e083015160e0830152610100808401516153658285018280518252602090810151910152565b50506101208301516101406153868185018380518252602090810151910152565b840151805161018085015260208101516101a085015290506126a7565b81516001600160601b031681526020808301516102008301916153d0908401826001600160601b03169052565b5060408301516153ed604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a083015161010061543a8185018380518252602090810151910152565b60c0850151805161014086015260209081015161016086015260e086015180516101808701528101516101a08601529085015180516101c0860152908101516101e085015290506126a7565b60006020828403121561549857600080fd5b8151613602816137a3565b600080858511156154b357600080fd5b838611156154c057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156154f55780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f821115610a4b57600081815260208120601f850160051c810160208610156155645750805b601f850160051c820191505b8181101561198657828155600101615570565b81516001600160401b0381111561559c5761559c613609565b6155b0816155aa84546151e4565b8461553d565b602080601f8311600181146155e557600084156155cd5750858301515b600019600386901b1c1916600185901b178555611986565b600085815260208120601f198616915b82811015615614578886015182559484019460019091019084016155f5565b50858210156156325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561565457600080fd5b815161360281613875565b60006020828403121561567157600080fd5b815161360281614b30565b60006001820161569c57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156156b557600080fd5b815161360281613e8d565b6001600160601b03948516815292841660208401529216604082015263ffffffff909116606082015260800190565b60008251615701818460208701614413565b9190910192915050565b6000806040838503121561571e57600080fd5b825161572981613910565b6020840151909250613d1981613d45565b60006020828403121561574c57600080fd5b815161360281613d45565b60006020828403121561576957600080fd5b8151613602816135c556fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a264697066735822122077c8887f22b5a2627f80a44bc33d7de004d7f2d6dd2fdeb6785d1b029a20d27564736f6c63430008140033",
3217
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103af5760003560e01c80637a9e5e4b116101f4578063a89896751161011a578063c4d66de8116100ad578063f48016ce1161007c578063f48016ce146109c3578063f5884fc5146107a8578063fae5df9b146109e4578063fe1f18d6146109f757600080fd5b8063c4d66de81461094c578063ca0e7f081461095f578063e80c61ed14610972578063e9e96c701461098557600080fd5b8063b5b3d9f9116100e9578063b5b3d9f9146108f3578063b6d7cd6214610906578063bf1db3f914610919578063bf7e214f1461092c57600080fd5b8063a8989675146108a7578063af902500146108ba578063b0628dc3146108cd578063b4d7efe2146108e057600080fd5b8063985aeba711610192578063a46eb8dc11610161578063a46eb8dc146107e1578063a5961b4c146107f4578063a6a67b1f14610881578063a76ee0181461089457600080fd5b8063985aeba7146107a85780639f8151e5146107bb578063a1fc1004146107a8578063a2842229146107ce57600080fd5b806381c2b282116101ce57806381c2b282146107285780638eaa6ac01461073b5780638eb9000d1461075b5780638fb360371461078757600080fd5b80637a9e5e4b146106ef5780637cca1124146107025780637cef48421461071557600080fd5b80633870a770116102d957806353ebe129116102775780635eede174116102465780635eede1741461064457806361105e0e146106b6578063763bb754146106c957806378929823146106dc57600080fd5b806353ebe129146105fe57806354f6127f146106115780635a8416b0146106315780635d4345cc146104c357600080fd5b8063468bce06116102b3578063468bce06146105bd5780634846003a146105c557806351dd844b146105d8578063533086d4146105eb57600080fd5b80633870a7701461057457806338a699a41461058757806340529b0f146105aa57600080fd5b80630fad0eb111610351578063275c059511610320578063275c0595146105285780632a8ea7ac1461053b5780632f61088a1461054e57806330a130ba1461056157600080fd5b80630fad0eb1146104c35780631e40b363146104d6578063228e42ec146104e9578063248a77dd1461051557600080fd5b806309648a9d1161038d57806309648a9d1461043d5780630cfc3ba3146104775780630d3581811461048a5780630f6c29ef146104b057600080fd5b80630232ca49146103b457806303c099ac146103fd5780630632b17d14610412575b600080fd5b6103e06103c23660046135e5565b6001600160601b039081166000908152600260205260409020541690565b6040516001600160601b0390911681526020015b60405180910390f35b61041061040b36600461388f565b610a0a565b005b610425610420366004613a12565b610a50565b6040516001600160401b0390911681526020016103f4565b61046561044b366004613a4e565b600090815260076020526040902054610100900460ff1690565b60405160ff90911681526020016103f4565b610410610485366004613b45565b610b10565b610465610498366004613ba6565b60ff9081166000908152600560205260409020541690565b6104106104be366004613c79565b610b37565b6104106104d1366004613ceb565b610b64565b6104106104e4366004613e18565b610b81565b6103e06104f73660046135e5565b6001600160601b039081166000908152602081905260409020541690565b6103e0610523366004613e5f565b610ba9565b610410610536366004613ead565b610bc7565b61041061054936600461406e565b610c61565b61041061055c366004614117565b610c96565b61041061056f36600461422f565b610d36565b610410610582366004614274565b610dd6565b61059a610595366004613a4e565b610dec565b60405190151581526020016103f4565b6104106105b8366004613ceb565b610e77565b610410610e8e565b6104106105d33660046142b2565b610ec8565b6104106105e63660046143cc565b610ef9565b6103e06105f9366004613e5f565b610f21565b6103e061060c366004613e5f565b610f36565b61062461061f366004613a4e565b610f4b565b6040516103f49190614463565b61041061063f366004614476565b610ff0565b61068c6106523660046135e5565b6001600160601b03908116600090815260208181526040808320546001835281842054600290935292205491831693908316929190911690565b604080516001600160601b03948516815292841660208401529216918101919091526060016103f4565b6104106106c4366004614579565b611090565b6104106106d7366004614687565b611130565b6104106106ea3660046146c8565b611158565b6104106106fd3660046146ff565b611180565b61041061071036600461471c565b611208565b610410610723366004614761565b611230565b61041061073636600461477f565b6112bf565b61074e610749366004613a4e565b6112e6565b6040516103f491906147d4565b6103e06107693660046135e5565b6001600160601b039081166000908152600160205260409020541690565b61078f61140b565b6040516001600160e01b031990911681526020016103f4565b6104106107b6366004614833565b611444565b6103e06107c9366004613e5f565b61146c565b6104106107dc366004614761565b611481565b6104106107ef36600461487a565b6114cf565b610874610802366004613a4e565b604080516080808201835260008083526020808401829052838501829052606093840182905294815260078552839020835191820184525460ff80821683526101008204169482019490945263ffffffff620100008504811693820193909352600160301b9093049091169082015290565b6040516103f491906148bf565b61041061088f3660046149b7565b611500565b6104106108a23660046149e5565b611528565b6104106108b5366004614a2c565b6115c8565b6104106108c8366004614761565b6116b9565b6103e06108db366004613e5f565b611707565b6104106108ee366004614a5c565b61171c565b610410610901366004614a7a565b611769565b610410610914366004614abb565b611791565b61059a610927366004613ba6565b6117a7565b6109346117f4565b6040516001600160a01b0390911681526020016103f4565b61041061095a3660046146ff565b611810565b61041061096d366004614aeb565b61198e565b6103e0610980366004613e5f565b611a2e565b61059a610993366004614a2c565b60ff9283166000908152600660209081526040808320948616835293815283822092851682529190915220541690565b6109d66109d1366004614b40565b611a43565b6040519081526020016103f4565b6104106109f2366004614b6e565b611ac7565b610410610a05366004613ceb565b611aee565b610a17335b600036611b05565b610a4b610a2584600b611c03565b83604051602001610a369190614bc6565b60405160208183030381529060405283611c4f565b505050565b6000610a5b33610a0f565b610a63611dcb565b604051630f37f38f60e41b81526001600160401b0382166004820152909150610b0b9073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f090602401602060405180830381865af4158015610ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae69190614c49565b83604051602001610af79190614c62565b604051602081830303815290604052611e5e565b919050565b610b1933610a0f565b610a4b610b268484612212565b82604051602001610af79190614d37565b610b4033610a0f565b610b5e610b4d858561225f565b83604051602001610a369190614dd7565b50505050565b610b6d33610a0f565b610a4b610b7b836015611c03565b826122ad565b610b8a33610a0f565b610a4b610b9884601c611c03565b83604051602001610a369190614e31565b6000610bb433610a0f565b610bbe83836125b2565b90505b92915050565b610bd033610a0f565b604051630f37f38f60e41b81526001600160401b0384166004820152610a4b9073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f090602401602060405180830381865af4158015610c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c509190614c49565b83604051602001610a369190614c62565b610c6a33610a0f565b610c73826126ae565b610c92610c81836015611c03565b82604051602001610af79190614e9e565b5050565b610c9f33610a0f565b6040516355ee627560e01b8152610c929073__$32e9ecefef68cb354d118e0496fdd3f4bc$__906355ee627590610ce4906001600160c01b031987169060040161504e565b602060405180830381865af4158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d259190614c49565b82604051602001610af79190615063565b610d3f33610a0f565b6040516355ee627560e01b8152610c929073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee627590610d84906001600160c01b031987169060040161504e565b602060405180830381865af4158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190614c49565b82604051602001610af79190615091565b610ddf33610a0f565b610b5e610b7b848461225f565b60008181526007602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc19190615141565b610e8033610a0f565b610a4b610b7b83601c611c03565b610e9661275e565b610e9e6127a7565b610ea66128ca565b610eae6129be565b610eb6612af5565b610ebe612c21565b610ec6612cdd565b565b610ed133610a0f565b610eda826126ae565b610c92610ee883600b611c03565b82604051602001610af79190614bc6565b610f0233610a0f565b610a4b610f1084601e611c03565b83604051602001610a36919061515e565b6000610f2c33610a0f565b610bbe8383612de1565b6000610f4133610a0f565b610bbe8383612ec5565b6000818152600760205260409020600101805460609190610f6b906151e4565b80601f0160208091040260200160405190810160405280929190818152602001828054610f97906151e4565b8015610fe45780601f10610fb957610100808354040283529160200191610fe4565b820191906000526020600020905b815481529060010190602001808311610fc757829003601f168201915b50505050509050919050565b610ff933610a0f565b6040516355ee627560e01b8152610a4b9073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee62759061103e906001600160c01b031988169060040161504e565b602060405180830381865af415801561105b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107f9190614c49565b83604051602001610a369190615091565b61109933610a0f565b6040516355ee627560e01b8152610a4b9073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee6275906110de906001600160c01b031988169060040161504e565b602060405180830381865af41580156110fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111f9190614c49565b83604051602001610a36919061521e565b61113933610a0f565b610a4b61114784600f611c03565b83604051602001610a3691906152b0565b61116133610a0f565b610c9261116f83600f611c03565b82604051602001610af791906152b0565b336111896117f4565b6001600160a01b0316816001600160a01b0316146111c95760405162d1953b60e31b81526001600160a01b03821660048201526024015b60405180910390fd5b816001600160a01b03163b6000036111ff576040516361798f2f60e11b81526001600160a01b03831660048201526024016111c0565b610c9282612fa9565b61121133610a0f565b610c9261121f83601c611c03565b82604051602001610af79190614e31565b61123933610a0f565b6040516355ee627560e01b8152610a4b9073__$32e9ecefef68cb354d118e0496fdd3f4bc$__906355ee62759061127e906001600160c01b031987169060040161504e565b602060405180830381865af415801561129b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190614c49565b6112c833610a0f565b610a4b6112d5848461225f565b82604051602001610af79190614dd7565b6040805160c081018252600091810182815260608083018490526080830184905260a083019390935281526020810191909152600082815260076020908152604091829020825160c081018452815460ff808216958301958652610100820416606083015263ffffffff62010000820481166080840152600160301b9091041660a08201529283526001810180549192840191611382906151e4565b80601f01602080910402602001604051908101604052809291908181526020018280546113ae906151e4565b80156113fb5780601f106113d0576101008083540402835291602001916113fb565b820191906000526020600020905b8154815290600101906020018083116113de57829003601f168201915b5050505050815250509050919050565b600080516020615775833981519152805460009190600160a01b900460ff1661143557600061143e565b638fb3603760e01b5b91505090565b61144d33610a0f565b610a4b61145b846015611c03565b83604051602001610a369190614e9e565b600061147733610a0f565b610bbe838361300a565b61148a33610a0f565b6040516355ee627560e01b8152610a4b9073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee62759061127e906001600160c01b031987169060040161504e565b6114d833610a0f565b6114e1826126ae565b610c926114ef83601e611c03565b82604051602001610af7919061515e565b61150933610a0f565b610c9261151783600c611c03565b82604051602001610af791906153a3565b61153133610a0f565b6040516355ee627560e01b8152610a4b9073__$32e9ecefef68cb354d118e0496fdd3f4bc$__906355ee627590611576906001600160c01b031988169060040161504e565b602060405180830381865af4158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b79190614c49565b83604051602001610a369190615063565b60ff8381166000908152600560205260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af415801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190615141565b1561165b57505050565b60ff808416600090815260066020908152604080832086851684528252808320858516845290915290205416610a4b57604051636bb20ea760e01b815260ff80851660048301528084166024830152821660448201526064016111c0565b6116c233610a0f565b6040516355ee627560e01b8152610a4b9073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee62759061127e906001600160c01b031987169060040161504e565b600061171233610a0f565b610bbe83836130ec565b61172533610a0f565b604051630f37f38f60e41b81526001600160401b0383166004820152610a4b9073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f09060240161127e565b61177233610a0f565b610a4b61178084600c611c03565b83604051602001610a3691906153a3565b61179a33610a0f565b610b5e610b7b8484612212565b60ff81811660009081526005602052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610e36565b600080516020615775833981519152546001600160a01b031690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156118555750825b90506000826001600160401b031660011480156118715750303b155b90508115801561187f575080155b1561189d5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118c757845460ff60401b1916600160401b1785555b6000866001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192b9190615486565b9050611936816131ce565b61193e610e8e565b50831561198657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b505050505050565b61199733610a0f565b6040516355ee627560e01b8152610c929073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee6275906119dc906001600160c01b031987169060040161504e565b602060405180830381865af41580156119f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1d9190614c49565b82604051602001610af7919061521e565b6000611a3933610a0f565b610bbe83836131e2565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce906044015b602060405180830381865af4158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190614c49565b611ad033610a0f565b610b5e611add8585612212565b83604051602001610a369190614d37565b611af733610a0f565b610a4b610b7b83601e611c03565b600080516020615775833981519152600080611b40611b226117f4565b8730611b32600460008a8c6154a3565b611b3b916154cd565b6132c6565b91509150816119865763ffffffff811615611be057825460ff60a01b1916600160a01b178355611b6e6117f4565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b8152600401611b9d939291906154fd565b600060405180830381600087803b158015611bb757600080fd5b505af1158015611bcb573d6000803e3d6000fd5b5050845460ff60a01b19168555506119869050565b60405162d1953b60e31b81526001600160a01b03871660048201526024016111c0565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$94a2c899be079b00d952d0d84fffaa5c34$__90633889a4c890604401611a86565b6000611c5b84836122ad565b6000858152600760205260409020909150600101611c798482615583565b50604051634b00e98f60e11b8152600481018590527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d109190615642565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015611d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d84919061565f565b6040805160ff938416815260ff199290921660208301529185168183015233606082015232608082015263ffffffff841660a082015290519081900360c00190a150505050565b6008805460009182611ddc8361567c565b9091555050600854604051633aac82ef60e11b8152600481019190915273__$b4c16f233b92c2c4124fb22a521f86c95b$__9063755905de90602401602060405180830381865af4158015611e35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5991906156a3565b905090565b604051634b00e98f60e11b81526004810183905260009073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611eb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed59190615642565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015611f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4e9190615141565b15611f71576040516307014a8d60e51b815260ff821660048201526024016111c0565b600083815260076020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015611fda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffe9190615141565b1561202857604051633f92eac960e21b81526004810185905260ff831660248201526044016111c0565b60006120326133d2565b9050600061203f846117a7565b61204a576004612060565b60ff808516600090815260056020526040902054165b835460ff86811661ffff1990921691909117610100918316919091021769ffffffffffffffff000019166201000063ffffffff851690810269ffffffff000000000000191691909117600160301b9190910217845560008781526007602052604090209091506001016120d38682615583565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612146573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216a9190615642565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156121ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121de919061565f565b6040805160ff938416815260ff1990921660208301529184169181019190915233606082015232608082015260a00161197d565b604051637d56159160e11b815261ffff821660048201526001600160601b038316602482015260009073__$9e81531fe4994e01e99541f86b55500b4b$__9063faac2b2290604401611a86565b604051635927341160e01b815262ffffff821660048201526001600160601b038316602482015260009073__$0f9396e6447a4be57af83e53f51d234633$__90635927341190604401611a86565b60405163037c8cb160e51b815260ff8216600482015260009073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015612302573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123269190615141565b156123475760405163093b89e160e11b8152600481018490526024016111c0565b50600082815260076020526040908190208054915163037c8cb160e51b8152610100830460ff16600482018190526201000090930463ffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af41580156123c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e49190615141565b156124055760405163566ebf7960e01b8152600481018690526024016111c0565b60ff8085161461258457815461241f9060ff1682866115c8565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af41580156124a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c79190615642565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015612517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253b919061565f565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015263ffffffff851660c082015260e00160405180910390a15b61258c6133d2565b825463ffffffff91909116620100000265ffffffff000019909116179091555092915050565b6001600160601b038216600090815260036020526040812054839060ff166125f857604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b0380851660009081526001602052604090205461261d911684613441565b6001600160601b03858116600090815260016020908152604080832080546001600160601b03191694861694909417909355600490528190205490519193507fb08c267f0a5e1593171021f433a0805c3818d5b57ea45f0609ddb7163dc228a7916126969187918791879163ffffffff909116906156c0565b60405180910390a16126a7846134c9565b5092915050565b6001600160601b03811660009081526003602052604090205460ff16156126f3576040516314d5804160e01b81526001600160601b03821660048201526024016111c0565b6001600160601b0381166000908152600360205260409020805460ff1916600117905561271f816134c9565b6040516001600160601b03821681527f1c26f28e2d8f145150c4243339c6b20813ea2bbc4e6f19ea2c9905060c0411a99060200160405180910390a150565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610ec657604051631afcd79f60e31b815260040160405180910390fd5b7f3fb1f8b5b572f385df2ff517fa4200d6781fd017f742a2f073e874e0dca7758b8054600460ff19918216179091557fa38294a430c9d56119aa0494393af7baee29b36db8610955904203b2dc0d4b0e8054821660019081179091557faabd79db0796e2d89bfe8696a82fbf6d2311a758e061bcc90c8bf3de6ba08b4e80548316821790557f1c034d70532bb968580b3cead82cdee06245a7d4ea4fc0a0598c9d941549db3e80549092168117909155601e600090815260066020527fb6ba906ff52451a7a924e2eaeb8aea3ebee7350a8703e5e417edb25358c7dcc190606e5b60ff1660ff16815260200190815260200160002060006128a660c890565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed58054600460ff1991821681179092557fd0d45eb00d049ccc46c339c71e63d90eea012e3db7256c4ce5a37e3ef4bde5ea80548216600190811790915560009283527f6f1fcfd2b22fe622991f7a4235fe1cefd5d6165948a5d5e8668ebd75e7881f246020527fe5510651289c67d4e8f0e7519899867b473e44abf356dbdbad5a29ca137bfc528054909216811790915590600690600b5b60ff1660ff16815260200190815260200160002060006129a0606e90565b60ff1660ff16815260200190815260200160002060006128a660d290565b7fdcae836ed36bf3d20474cfcca00229d5b3b00239a2a956d8ca4bf29e25a7143c8054600a60ff19918216179091557f2904e68c7a2b9b93d33af7507f4a643c6b0086d6fe2b31ff5a5fbc03699e4b8b8054821660019081179091557fbe12cc7efb7411c44beea05fe4d45203c4db5cef133202c25bd3ce7a44514dce80548316821790557f4f55fb356af25cbc2dd445c53c373fb68509850aba36a91b82fdeaae21b0fb4880548316821790557f8fc126f8eb253a1b51796c6e2b7888b31d478c4b83044f9573d937595c30830080548316821790557fb7d86cc33cf49cee7ee3c69728b50600d31f279520c03623c582359cac1cf203805490921681179091556015600090815260066020527feda6feebfb4ffb7de2d0dc45a13b92dc953c2ed6ee96fa7fe8179e7c4266747f906004612888565b7fb8657d180a4d2444fb942e94a4266075e5a1b59d96d88e88cf308d6927f00ff2805460ff199081166032179091557fb8d4b36fa3f605ad94cd0cac80f13c92af675fa832d6df8dc3ba620fe2bae5aa8054821660019081179091557f9f5a5f335709add57c36a55369203f75fab90769f90dc5c1d6b4f51e64f7931e80548316821790557fac51428db552575d93acd1b0206748187cdf03c3d4880b224b6b843f82e3ad6d80548316821790557f1759eeb783be12e6871ee15567296c25cea65699ad38e9965540ba6254a9037f8054603c93168317905560009182527f84f72166cd6dc886f96a4867c4575af2a636c629c04227c9418bfffa7a09a9ed602052907fd29801b20059b93ddfd5c6b35ed7b939364988e76b05e24456e4e78c8a3e96449060dc6128a6565b7f5cc25df4297f13907c2e8c8bb7612ac7d899f1e24c7e8664c22a89192ac286a78054600460ff1991821681179092557f210997b37b2d43faf47705b743346fb1b15ea96e448556607a491761f91e01d780548216600190811790915560009283527f62b939e4fd6f81e35ee2bfd6159b5f0fdc60eba32ce925e23fbacd5164be4c476020527f994510576db8bc5180614979b295aff86a861cb3965845612b5e9a9ef49f653e80549092168117909155906006906018612982565b7fce1f324a8a5d5daa4a6b2281780ab321637fd4089413dd89c573bbf705027cb98054600460ff1991821681179092557f17765961060f66318b8d1c9d16f37975e1f7d99f2e57f6ba8e618a045d1691568054821660019081179091557f7b2fffb8b571683ba7f6b314c4f61b812b39faac6c91c75f6cef800f300291fc80548316821790557ff2ece9920c5eb8e61fb6da50740b25ea927174d5d412d76ec051f6da7c89ae4c8054909216811790915560009182527f2d88733daa8d83575c1c435b1a4140007e667f8dfbe2e5678ffec947a513e5cd602052907fbeddbe65619271258b6647d557767a93c417716f295dde3ab0ac84ff252b32949060486128a6565b6001600160601b038216600090815260036020526040812054839060ff16612e2757604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b03808516600090815260026020526040902054612e4c911684613569565b6001600160601b03858116600090815260026020908152604080832080546001600160601b03191694861694909417909355600490528190205490519193507f72d83b31d9d848984842915e1bf55e0b10f5c5c208ea2e893df958de0472fc62916126969187918791879163ffffffff909116906156c0565b6001600160601b038216600090815260036020526040812054839060ff16612f0b57604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b03808516600090815260016020526040902054612f30911684613569565b6001600160601b03858116600090815260016020908152604080832080546001600160601b03191694861694909417909355600490528190205490519193507fb254741d2e56b5fc092dabf9d2224554522d8bc0c08a1ffdce59fe0acae2bfc9916126969187918791879163ffffffff909116906156c0565b60008051602061577583398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6001600160601b038216600090815260036020526040812054839060ff1661305057604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b03808516600090815260208190526040902054613075911684613441565b6001600160601b0385811660009081526020818152604080832080546001600160601b03191694861694909417909355600490528190205490519193507f5b04742c456b2820460f06a699b464350ad00ad419b30c9bb74699e0d1e64b66916126969187918791879163ffffffff909116906156c0565b6001600160601b038216600090815260036020526040812054839060ff1661313257604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b03808516600090815260208190526040902054613157911684613569565b6001600160601b0385811660009081526020818152604080832080546001600160601b03191694861694909417909355600490528190205490519193507f4068631e6ddfc25f1831c04cd7b41e313620779732e776b6e8e62273fccd6e6d916126969187918791879163ffffffff909116906156c0565b6131d661275e565b6131df816135b4565b50565b6001600160601b038216600090815260036020526040812054839060ff1661322857604051631e94ffd760e11b81526001600160601b03821660048201526024016111c0565b6001600160601b0380851660009081526002602052604090205461324d911684613441565b6001600160601b03858116600090815260026020908152604080832080546001600160601b03191694861694909417909355600490528190205490519193507fee2ce932811dedb09eb973e9da29180e86fe3bab034360124e0fd962f795daad916126969187918791879163ffffffff909116906156c0565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b1790525161333591906156ef565b600060405180830381855afa9150503d8060008114613370576040519150601f19603f3d011682016040523d82523d6000602084013e613375565b606091505b509150915081156133c75760408151106133a7578080602001905181019061339d919061570b565b90945092506133c7565b60208151106133c757808060200190518101906133c49190615141565b93505b505094509492505050565b600073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af415801561341d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e59919061573a565b60405163274acb3560e01b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af41580156134a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbe9190615757565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__63e8b7afe36040518163ffffffff1660e01b8152600401602060405180830381865af4158015613512573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613536919061573a565b6001600160601b03919091166000908152600460205260409020805463ffffffff191663ffffffff909216919091179055565b6040516363cf551160e11b81526001600160601b0380841660048301528216602482015260009073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa2290604401613488565b6135bc61275e565b6131df81612fa9565b6001600160601b03811681146131df57600080fd5b8035610b0b816135c5565b6000602082840312156135f757600080fd5b8135613602816135c5565b9392505050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561364157613641613609565b60405290565b60405161010081016001600160401b038111828210171561364157613641613609565b60405160e081016001600160401b038111828210171561364157613641613609565b60405161022081016001600160401b038111828210171561364157613641613609565b604080519081016001600160401b038111828210171561364157613641613609565b60405161012081016001600160401b038111828210171561364157613641613609565b60405161016081016001600160401b038111828210171561364157613641613609565b600082601f83011261372857600080fd5b81356001600160401b038082111561374257613742613609565b604051601f8301601f19908116603f0116810190828211818310171561376a5761376a613609565b8160405283815286602085880101111561378357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b03811681146131df57600080fd5b8035610b0b816137a3565b600060c082840312156137d557600080fd5b6137dd61361f565b905081356001600160401b03808211156137f657600080fd5b61380285838601613717565b8352613810602085016135da565b6020840152613821604085016137b8565b6040840152613832606085016137b8565b6060840152613843608085016137b8565b608084015260a084013591508082111561385c57600080fd5b5061386984828501613717565b60a08301525092915050565b60ff811681146131df57600080fd5b8035610b0b81613875565b6000806000606084860312156138a457600080fd5b83356138af816135c5565b925060208401356001600160401b038111156138ca57600080fd5b6138d6868287016137c3565b92505060408401356138e781613875565b809150509250925092565b64ffffffffff811681146131df57600080fd5b8035610b0b816138f2565b80151581146131df57600080fd5b8035610b0b81613910565b6000610100828403121561393c57600080fd5b613944613647565b905061394f826135da565b815260208201356001600160401b038082111561396b57600080fd5b61397785838601613717565b6020840152613988604085016135da565b604084015260608401359150808211156139a157600080fd5b6139ad85838601613717565b606084015260808401359150808211156139c657600080fd5b506139d384828501613717565b6080830152506139e560a08301613905565b60a08201526139f660c08301613905565b60c0820152613a0760e0830161391e565b60e082015292915050565b600060208284031215613a2457600080fd5b81356001600160401b03811115613a3a57600080fd5b613a4684828501613929565b949350505050565b600060208284031215613a6057600080fd5b5035919050565b61ffff811681146131df57600080fd5b8035610b0b81613a67565b600060e08284031215613a9457600080fd5b613a9c61366a565b9050613aa7826135da565b8152613ab5602083016135da565b6020820152613ac660408301613884565b6040820152613ad760608301613884565b606082015260808201356001600160401b0380821115613af657600080fd5b613b0285838601613717565b608084015260a0840135915080821115613b1b57600080fd5b50613b2884828501613717565b60a083015250613b3a60c08301613905565b60c082015292915050565b600080600060608486031215613b5a57600080fd5b8335613b65816135c5565b92506020840135613b7581613a67565b915060408401356001600160401b03811115613b9057600080fd5b613b9c86828701613a82565b9150509250925092565b600060208284031215613bb857600080fd5b813561360281613875565b803562ffffff81168114610b0b57600080fd5b600060808284031215613be857600080fd5b604051608081016001600160401b038282108183111715613c0b57613c0b613609565b8160405282935084359150613c1f82613a67565b908252602084013590613c31826135c5565b8160208401526040850135915080821115613c4b57600080fd5b50613c5885828601613717565b6040830152506060830135613c6c816138f2565b6060919091015292915050565b60008060008060808587031215613c8f57600080fd5b8435613c9a816135c5565b9350613ca860208601613bc3565b925060408501356001600160401b03811115613cc357600080fd5b613ccf87828801613bd6565b9250506060850135613ce081613875565b939692955090935050565b60008060408385031215613cfe57600080fd5b8235613d09816135c5565b91506020830135613d1981613875565b809150509250929050565b6001600160c01b0319811681146131df57600080fd5b8035610b0b81613d24565b63ffffffff811681146131df57600080fd5b8035610b0b81613d45565b600060a08284031215613d7457600080fd5b60405160a081016001600160401b038282108183111715613d9757613d97613609565b8160405282935084359150613dab82613d24565b908252602084013590613dbd82613910565b8160208401526040850135915080821115613dd757600080fd5b50613de485828601613717565b6040830152506060830135613df8816135c5565b60608201526080830135613e0b81613d45565b6080919091015292915050565b600080600060608486031215613e2d57600080fd5b8335613e38816135c5565b925060208401356001600160401b03811115613e5357600080fd5b6138d686828701613d62565b60008060408385031215613e7257600080fd5b8235613e7d816135c5565b91506020830135613d19816135c5565b6001600160401b03811681146131df57600080fd5b8035610b0b81613e8d565b600080600060608486031215613ec257600080fd5b8335613ecd81613e8d565b925060208401356001600160401b03811115613ee857600080fd5b6138d686828701613929565b60006102208284031215613f0757600080fd5b613f0f61368c565b9050613f1a826135da565b8152613f28602083016135da565b6020820152613f3960408301613d3a565b6040820152613f4a60608301613d3a565b6060820152613f5b608083016135da565b6080820152613f6c60a083016135da565b60a0820152613f7d60c083016135da565b60c0820152613f8e60e08301613905565b60e0820152610100808301356001600160401b0380821115613faf57600080fd5b613fbb86838701613717565b83850152610120925082850135915080821115613fd757600080fd5b50613fe485828601613717565b828401525050610140613ff8818401613a77565b9082015261016061400a838201613a77565b9082015261018061401c8382016135da565b908201526101a061402e8382016135da565b908201526101c0614040838201613905565b908201526101e0614052838201613905565b90820152610200614064838201613905565b9082015292915050565b6000806040838503121561408157600080fd5b823561408c816135c5565b915060208301356001600160401b038111156140a757600080fd5b6140b385828601613ef4565b9150509250929050565b6000604082840312156140cf57600080fd5b6140d76136af565b905081356140e4816135c5565b815260208201356001600160401b038111156140ff57600080fd5b61410b84828501613717565b60208301525092915050565b6000806040838503121561412a57600080fd5b823561413581613d24565b915060208301356001600160401b0381111561415057600080fd5b6140b3858286016140bd565b6000610120828403121561416f57600080fd5b6141776136d1565b905081356001600160401b038082111561419057600080fd5b61419c85838601613717565b83526020840135602084015260408401356040840152606084013560608401526141c860808501613d57565b60808401526141d960a08501613d57565b60a08401526141ea60c0850161391e565b60c08401526141fb60e0850161391e565b60e08401526101009150818401358181111561421657600080fd5b61422286828701613717565b8385015250505092915050565b6000806040838503121561424257600080fd5b823561424d81613d24565b915060208301356001600160401b0381111561426857600080fd5b6140b38582860161415c565b60008060006060848603121561428957600080fd5b8335614294816135c5565b92506142a260208501613bc3565b915060408401356138e781613875565b600080604083850312156142c557600080fd5b82356142d0816135c5565b915060208301356001600160401b038111156142eb57600080fd5b6140b3858286016137c3565b60006040828403121561430957600080fd5b6143116136af565b9050813581526020820135602082015292915050565b600060e0828403121561433957600080fd5b61434161361f565b9050813561434e816135c5565b815261435d83602084016142f7565b602082015260608201356001600160401b0381111561437b57600080fd5b61438784828501613717565b604083015250608082013561439b816138f2565b606082015260a08201356143ae816138f2565b608082015260c08201356143c1816138f2565b60a082015292915050565b6000806000606084860312156143e157600080fd5b83356143ec816135c5565b925060208401356001600160401b0381111561440757600080fd5b6138d686828701614327565b60005b8381101561442e578181015183820152602001614416565b50506000910152565b6000815180845261444f816020860160208601614413565b601f01601f19169290920160200192915050565b602081526000610bbe6020830184614437565b60008060006060848603121561448b57600080fd5b833561449681613d24565b925060208401356001600160401b038111156144b157600080fd5b6138d68682870161415c565b600060e082840312156144cf57600080fd5b6144d761366a565b90506144e2826135da565b815260208201356001600160401b03808211156144fe57600080fd5b61450a85838601613717565b60208401526040840135604084015261452560608501613d57565b606084015261453660808501613d57565b608084015261454760a08501613905565b60a084015260c084013591508082111561456057600080fd5b5061456d84828501613717565b60c08301525092915050565b60008060006060848603121561458e57600080fd5b833561459981613d24565b925060208401356001600160401b038111156145b457600080fd5b6138d6868287016144bd565b60006101c082840312156145d357600080fd5b6145db6136f4565b90506145e6826135da565b81526145f460208301613ea2565b6020820152614605604083016135da565b60408201526146166060830161391e565b60608201526146276080830161391e565b608082015261463860a0830161391e565b60a082015260c082013560c082015260e082013560e0820152610100614660848285016142f7565b90820152610140614673848483016142f7565b6101208301526140648461018085016142f7565b6000806000610200848603121561469d57600080fd5b83356146a8816135c5565b92506146b785602086016145c0565b91506101e08401356138e781613875565b6000806101e083850312156146dc57600080fd5b82356146e7816135c5565b91506146f684602085016145c0565b90509250929050565b60006020828403121561471157600080fd5b8135613602816137a3565b6000806040838503121561472f57600080fd5b823561473a816135c5565b915060208301356001600160401b0381111561475557600080fd5b6140b385828601613d62565b6000806040838503121561477457600080fd5b8235613d0981613d24565b60008060006060848603121561479457600080fd5b833561479f816135c5565b92506147ad60208501613bc3565b915060408401356001600160401b038111156147c857600080fd5b613b9c86828701613bd6565b6020815261481960208201835160ff815116825260ff6020820151166020830152604081015163ffffffff808216604085015280606084015116606085015250505050565b6000602083015160a080840152613a4660c0840182614437565b60008060006060848603121561484857600080fd5b8335614853816135c5565b925060208401356001600160401b0381111561486e57600080fd5b6138d686828701613ef4565b6000806040838503121561488d57600080fd5b8235614898816135c5565b915060208301356001600160401b038111156148b357600080fd5b6140b385828601614327565b60808101610bc1828460ff815116825260ff6020820151166020830152604081015163ffffffff808216604085015280606084015116606085015250505050565b6000610200828403121561491357600080fd5b61491b6136d1565b9050614926826135da565b8152614934602083016135da565b602082015261494683604084016142f7565b604082015261495883608084016142f7565b606082015261496a8360c084016142f7565b608082015261010061497e848285016142f7565b60a08301526149918461014085016142f7565b60c08301526149a48461018085016142f7565b60e0830152614064846101c085016142f7565b60008061022083850312156149cb57600080fd5b82356149d6816135c5565b91506146f68460208501614900565b6000806000606084860312156149fa57600080fd5b8335614a0581613d24565b925060208401356001600160401b03811115614a2057600080fd5b6138d6868287016140bd565b600080600060608486031215614a4157600080fd5b8335614a4c81613875565b925060208401356142a281613875565b60008060408385031215614a6f57600080fd5b8235613d0981613e8d565b60008060006102408486031215614a9057600080fd5b8335614a9b816135c5565b9250614aaa8560208601614900565b91506102208401356138e781613875565b600080600060608486031215614ad057600080fd5b8335614adb816135c5565b925060208401356142a281613a67565b60008060408385031215614afe57600080fd5b8235614b0981613d24565b915060208301356001600160401b03811115614b2457600080fd5b6140b3858286016144bd565b60ff19811681146131df57600080fd5b60008060408385031215614b5357600080fd5b8235614b5e81613875565b91506020830135613d1981614b30565b60008060008060808587031215614b8457600080fd5b8435614b8f816135c5565b93506020850135614b9f81613a67565b925060408501356001600160401b03811115614bba57600080fd5b613ccf87828801613a82565b602081526000825160c06020840152614be260e0840182614437565b90506001600160601b036020850151166040840152604084015160018060a01b0380821660608601528060608701511660808601528060808701511660a0860152505060a0840151601f198483030160c0850152614c408282614437565b95945050505050565b600060208284031215614c5b57600080fd5b5051919050565b60208152614c7c6020820183516001600160601b03169052565b60006020830151610100806040850152614c9a610120850183614437565b91506040850151614cb660608601826001600160601b03169052565b506060850151601f1980868503016080870152614cd38483614437565b935060808701519150808685030160a087015250614cf18382614437565b92505060a0850151614d0c60c086018264ffffffffff169052565b5060c085015164ffffffffff811660e08601525060e0850151801515858301525b5090949350505050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff60408401511660608301526060830151614d7c608084018260ff169052565b50608083015160e060a0840152614d97610100840182614437565b905060a0840151601f198483030160c0850152614db48282614437565b91505060c0840151614dcf60e085018264ffffffffff169052565b509392505050565b6020815261ffff82511660208201526001600160601b0360208301511660408201526000604083015160806060840152614e1460a0840182614437565b905064ffffffffff60608501511660808401528091505092915050565b602081526001600160401b0360c01b82511660208201526020820151151560408201526000604083015160a06060840152614e6f60c0840182614437565b90506001600160601b03606085015116608084015263ffffffff60808501511660a08401528091505092915050565b60208152614eb86020820183516001600160601b03169052565b60006020830151614ed460408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b0319811660808401525060808301516001600160601b03811660a08401525060a08301516001600160601b03811660c08401525060c08301516001600160601b03811660e08401525060e0830151610100614f5a8185018364ffffffffff169052565b808501519150506102206101208181860152614f7a610240860184614437565b9250808601519050610140601f198685030181870152614f9a8483614437565b935080870151915050610160614fb58187018361ffff169052565b8601519050610180614fcc8682018361ffff169052565b86015190506101a0614fe8868201836001600160601b03169052565b86015190506101c0615004868201836001600160601b03169052565b86015190506101e061501e8682018364ffffffffff169052565b86015190506102006150388682018364ffffffffff169052565b86015164ffffffffff8116838701529050614d2d565b6001600160c01b031991909116815260200190565b602081526001600160601b03825116602082015260006020830151604080840152613a466060840182614437565b60208152600082516101208060208501526150b0610140850183614437565b915060208501516040850152604085015160608501526060850151608085015260808501516150e760a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e085015161010061511d8187018315159052565b860151858403601f19018387015290506151378382614437565b9695505050505050565b60006020828403121561515357600080fd5b815161360281613910565b602081526001600160601b03825116602082015260006020830151615190604084018280518252602090810151910152565b50604083015160e060808401526151ab610100840182614437565b9050606084015164ffffffffff80821660a08601528060808701511660c08601528060a08701511660e086015250508091505092915050565b600181811c908216806151f857607f821691505b60208210810361521857634e487b7160e01b600052602260045260246000fd5b50919050565b602081526001600160601b0382511660208201526000602083015160e0604084015261524e610100840182614437565b90506040840151606084015263ffffffff6060850151166080840152608084015161528160a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614c408282614437565b81516001600160601b031681526101c0810160208301516152dc60208401826001600160401b03169052565b5060408301516152f760408401826001600160601b03169052565b50606083015161530b606084018215159052565b50608083015161531f608084018215159052565b5060a083015161533360a084018215159052565b5060c083015160c083015260e083015160e0830152610100808401516153658285018280518252602090810151910152565b50506101208301516101406153868185018380518252602090810151910152565b840151805161018085015260208101516101a085015290506126a7565b81516001600160601b031681526020808301516102008301916153d0908401826001600160601b03169052565b5060408301516153ed604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a083015161010061543a8185018380518252602090810151910152565b60c0850151805161014086015260209081015161016086015260e086015180516101808701528101516101a08601529085015180516101c0860152908101516101e085015290506126a7565b60006020828403121561549857600080fd5b8151613602816137a3565b600080858511156154b357600080fd5b838611156154c057600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156154f55780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f821115610a4b57600081815260208120601f850160051c810160208610156155645750805b601f850160051c820191505b8181101561198657828155600101615570565b81516001600160401b0381111561559c5761559c613609565b6155b0816155aa84546151e4565b8461553d565b602080601f8311600181146155e557600084156155cd5750858301515b600019600386901b1c1916600185901b178555611986565b600085815260208120601f198616915b82811015615614578886015182559484019460019091019084016155f5565b50858210156156325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561565457600080fd5b815161360281613875565b60006020828403121561567157600080fd5b815161360281614b30565b60006001820161569c57634e487b7160e01b600052601160045260246000fd5b5060010190565b6000602082840312156156b557600080fd5b815161360281613e8d565b6001600160601b03948516815292841660208401529216604082015263ffffffff909116606082015260800190565b60008251615701818460208701614413565b9190910192915050565b6000806040838503121561571e57600080fd5b825161572981613910565b6020840151909250613d1981613d45565b60006020828403121561574c57600080fd5b815161360281613d45565b60006020828403121561576957600080fd5b8151613602816135c556fef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a264697066735822122077c8887f22b5a2627f80a44bc33d7de004d7f2d6dd2fdeb6785d1b029a20d27564736f6c63430008140033",
2032
+ "bytecode": "0x60806040525f6007553480156012575f80fd5b5061451d806100205f395ff3fe608060405234801561000f575f80fd5b5060043610610260575f3560e01c80637d417f0d1161014b578063b0628dc3116100bf578063e2586c5811610084578063e2586c58146106ee578063e80c61ed14610701578063e9e96c7014610714578063f48016ce14610751578063f9b3fe3c14610772578063fe1f18d614610785575f80fd5b8063b0628dc314610682578063b4d7efe214610695578063bf1db3f9146106a8578063bf7e214f146106bb578063d7719f46146106db575f80fd5b80639626055911610110578063962605591461059657806396f4df2f146105a95780639f8151e5146105bc578063a2842229146105cf578063a5961b4c146105e2578063af9025001461066f575f80fd5b80637d417f0d1461050f5780638129fc1c146105225780638eaa6ac01461052a5780638eb9000d1461054a5780638fb3603714610575575f80fd5b8063490840b4116101e257806354f1fa81116101a757806354f1fa811461043057806354f6127f146104435780635eede17414610463578063623e7a0f146104d6578063733044ca146104e95780637a9e5e4b146104fc575f80fd5b8063490840b4146103d15780634a824392146103e45780634bb2d197146103f7578063533086d41461040a57806353ebe1291461041d575f80fd5b8063248a77dd11610228578063248a77dd1461034a5780632bce2d7c1461035d578063347777121461037057806338a699a41461039b57806340529b0f146103be575f80fd5b80630232ca491461026457806308077cd9146102ac57806309648a9d146102c15780630d358181146102fa578063228e42ec1461031f575b5f80fd5b61028f610272366004612fc6565b6001600160601b039081165f908152600460205260409020541690565b6040516001600160601b0390911681526020015b60405180910390f35b6102bf6102ba366004613263565b610798565b005b6102e86102cf3660046132c2565b5f90815260066020526040902054610100900460ff1690565b60405160ff90911681526020016102a3565b6102e86103083660046132d9565b60ff9081165f908152602081905260409020541690565b61028f61032d366004612fc6565b6001600160601b039081165f908152600260205260409020541690565b61028f6103583660046132f4565b6107dd565b6102bf61036b366004613410565b6107fa565b61038361037e366004613541565b610822565b6040516001600160401b0390911681526020016102a3565b6103ae6103a93660046132c2565b6108df565b60405190151581526020016102a3565b6102bf6103cc36600461357a565b610967565b6102bf6103df36600461363f565b610984565b6102bf6103f2366004613707565b6109b0565b6102bf61040536600461384e565b610a4e565b61028f6104183660046132f4565b610aec565b61028f61042b3660046132f4565b610b00565b6102bf61043e366004613890565b610b14565b6104566104513660046132c2565b610c72565b6040516102a39190613917565b6104ac610471366004612fc6565b6001600160601b039081165f908152600260209081526040808320546003835281842054600490935292205491831693908316929190911690565b604080516001600160601b03948516815292841660208401529216918101919091526060016102a3565b6102bf6104e43660046139c9565b610d14565b6102bf6104f7366004613a20565b610d3c565b6102bf61050a366004613a63565b610dd4565b6102bf61051d366004613a7e565b610e56565b6102bf610ef4565b61053d6105383660046132c2565b611070565b6040516102a39190613ac1565b61028f610558366004612fc6565b6001600160601b039081165f908152600360205260409020541690565b61057d611192565b6040516001600160e01b031990911681526020016102a3565b6102bf6105a4366004613b21565b6111c8565b6102bf6105b7366004613b64565b611266565b61028f6105ca3660046132f4565b61128e565b6102bf6105dd366004613ba2565b6112a2565b6106626105f03660046132c2565b60408051608080820183525f8083526020808401829052838501829052606093840182905294815260068552839020835191820184525460ff80821683526101008204169482019490945264ffffffffff620100008504811693820193909352600160381b9093049091169082015290565b6040516102a39190613bbe565b6102bf61067d366004613ba2565b61132f565b61028f6106903660046132f4565b61137d565b6102bf6106a3366004613c01565b611391565b6103ae6106b63660046132d9565b6113de565b6106c361142a565b6040516001600160a01b0390911681526020016102a3565b6102bf6106e9366004613c1d565b611445565b6102bf6106fc366004613c5f565b611476565b61028f61070f3660046132f4565b6114a7565b6103ae610722366004613ca1565b60ff9283165f908152600160209081526040808320948616835293815283822092851682529190915220541690565b61076461075f366004613ced565b6114bb565b6040519081526020016102a3565b6102bf610780366004613d19565b61153c565b6102bf61079336600461357a565b61156d565b6107a4335b5f36611584565b6107d86107b2846016611682565b836040516020016107c39190613d5b565b604051602081830303815290604052836116cd565b505050565b5f6107e73361079d565b6107f18383611844565b90505b92915050565b6108033361079d565b6107d8610811846017611682565b836040516020016107c39190613deb565b5f61082c3361079d565b6108346119b4565b604051630f37f38f60e41b81526001600160401b03821660048201529091506108da9073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f090602401602060405180830381865af4158015610891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b59190613e37565b836040516020016108c69190613e4e565b604051602081830303815290604052611a44565b919050565b5f8181526006602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015610943573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f49190613f18565b6109703361079d565b6107d861097e836017611682565b82611e70565b61098d3361079d565b6109ac61099b83600f611682565b826040516020016108c69190613f33565b5050565b6109b93361079d565b6040516355ee627560e01b81526109ac9073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee6275906109fe906001600160c01b0319871690600401613fb2565b602060405180830381865af4158015610a19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3d9190613e37565b826040516020016108c69190613fc7565b610a573361079d565b6040516355ee627560e01b81526109ac9073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee627590610a9c906001600160c01b0319871690600401613fb2565b602060405180830381865af4158015610ab7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610adb9190613e37565b826040516020016108c6919061407c565b5f610af63361079d565b6107f183836121d4565b5f610b0a3361079d565b6107f1838361232c565b60ff8381165f908152602081905260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015610b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9a9190613f18565b15610bc85760405163ea01ac1f60e01b815230600482015260ff841660248201526044015b60405180910390fd5b60ff80851690831614610c095760405163bae587e160e01b815230600482015260ff8085166024830152808616604483015283166064820152608401610bbf565b60ff8084165f90815260016020908152604080832088851684528252808320858516845290915290205416610c6c5760405163f33b49a360e01b815230600482015260ff8085166024830152808616604483015282166064820152608401610bbf565b50505050565b5f818152600660205260409020600101805460609190610c919061415a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbd9061415a565b8015610d085780601f10610cdf57610100808354040283529160200191610d08565b820191905f5260205f20905b815481529060010190602001808311610ceb57829003601f168201915b50505050509050919050565b610d1d3361079d565b6107d8610d2b84600b611682565b836040516020016107c39190614192565b610d453361079d565b604051630f37f38f60e41b81526001600160401b03841660048201526107d89073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f090602401602060405180830381865af4158015610d9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc39190613e37565b836040516020016107c39190613e4e565b33610ddd61142a565b6001600160a01b0316816001600160a01b031614610e185760405162d1953b60e31b81526001600160a01b0382166004820152602401610bbf565b816001600160a01b03163b5f03610e4d576040516361798f2f60e11b81526001600160a01b0383166004820152602401610bbf565b6109ac82612484565b610e5f3361079d565b6040516355ee627560e01b81526107d89073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee627590610ea4906001600160c01b0319881690600401613fb2565b602060405180830381865af4158015610ebf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee39190613e37565b836040516020016107c3919061407c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f385750825b90505f826001600160401b03166001148015610f535750303b155b905081158015610f61575080155b15610f7f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fa957845460ff60401b1916600160401b1785555b5f3390505f816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100e91906141e0565b9050611019816124e4565b6110216124f8565b5050831561106957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6040805160c0810182525f91810182815260608083018490526080830184905260a0830193909352815260208101919091525f82815260066020908152604091829020825160c081018452815460ff808216958301958652610100820416606083015264ffffffffff62010000820481166080840152600160381b9091041660a0820152928352600181018054919284019161110b9061415a565b80601f01602080910402602001604051908101604052809291908181526020018280546111379061415a565b80156111825780601f1061115957610100808354040283529160200191611182565b820191905f5260205f20905b81548152906001019060200180831161116557829003601f168201915b5050505050815250509050919050565b5f805160206144c883398151915280545f9190600160a01b900460ff166111b9575f6111c2565b638fb3603760e01b5b91505090565b6111d13361079d565b6040516355ee627560e01b81526107d89073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee627590611216906001600160c01b0319881690600401613fb2565b602060405180830381865af4158015611231573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112559190613e37565b836040516020016107c39190613fc7565b61126f3361079d565b6107d861127d84600f611682565b836040516020016107c39190613f33565b5f6112983361079d565b6107f1838361250a565b6112ab3361079d565b6040516355ee627560e01b81526107d89073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee6275906112f0906001600160c01b0319871690600401613fb2565b602060405180830381865af415801561130b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097e9190613e37565b6113383361079d565b6040516355ee627560e01b81526107d89073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee6275906112f0906001600160c01b0319871690600401613fb2565b5f6113873361079d565b6107f18383612662565b61139a3361079d565b604051630f37f38f60e41b81526001600160401b03831660048201526107d89073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f0906024016112f0565b60ff8181165f9081526020819052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610928565b5f805160206144c8833981519152546001600160a01b031690565b61144e3361079d565b611457826127ba565b6109ac611465836016611682565b826040516020016108c69190613d5b565b61147f3361079d565b611488826127ba565b6109ac61149683600b611682565b826040516020016108c69190614192565b5f6114b13361079d565b6107f183836128bd565b604051637a400b6760e11b815260ff8316600482015260ff19821660248201525f9073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce906044015b602060405180830381865af4158015611518573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f19190613e37565b6115453361079d565b61154e826127ba565b6109ac61155c836017611682565b826040516020016108c69190613deb565b6115763361079d565b6107d861097e836016611682565b5f805160206144c88339815191525f806115bc61159f61142a565b87306115ae60045f8a8c6141fb565b6115b791614222565b612a15565b915091508161167a5763ffffffff81161561165757825460ff60a01b1916600160a01b1783556115ea61142a565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161161993929190614258565b5f604051808303815f87803b158015611630575f80fd5b505af1158015611642573d5f803e3d5ffd5b5050845460ff60a01b191685555061167a9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610bbf565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__90633889a4c8906044016114fd565b5f6116d88483611e70565b5f8581526006602052604090209091506001016116f584826142db565b50604051634b00e98f60e11b8152600481018590527fdbbb264bf3560def22c1457cb693395546e7a0a2053566eb78e6f5eebf9831979073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611766573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178a9190614395565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156117d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fc91906143b0565b6040805160ff938416815260ff199290921660208301529185168183015233606082015232608082015264ffffffffff841660a082015290519081900360c00190a150505050565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af41580156118b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d79190613f18565b6118ff57604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f90815260036020526040902054611923911684612b1d565b6001600160601b038581165f90815260036020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507fc813323abc29b7cc59ddd274e5941cad2a987aa85c181fbde230bfb449b000969161199c9187918791879164ffffffffff909116906143cb565b60405180910390a16119ad84612ba2565b5092915050565b600780545f91826119c4836143fb565b9091555050600754604051633aac82ef60e11b8152600481019190915273__$b4c16f233b92c2c4124fb22a521f86c95b$__9063755905de90602401602060405180830381865af4158015611a1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3f919061441f565b905090565b604051634b00e98f60e11b8152600481018390525f9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611a94573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab89190614395565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015611b0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2f9190613f18565b15611b52576040516307014a8d60e51b815260ff82166004820152602401610bbf565b5f83815260066020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015611bb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bdc9190613f18565b15611c0657604051633f92eac960e21b81526004810185905260ff83166024820152604401610bbf565b611c0f826113de565b611c3157604051636cb0978b60e11b815260ff83166004820152602401610bbf565b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611c79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c9d919061443a565b60ff8085165f908152602081905260408120549293509116835460ff86811661ffff199092169190911761010091831691909102176bffffffffffffffffffff000019166201000064ffffffffff85169081026bffffffffff00000000000000191691909117600160381b919091021784555f878152600660205260409020909150600101611d2c86826142db565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190614395565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015611e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3391906143b0565b6040805160ff938416815260ff199290921660208301529184168183015233606082015232608082015290519081900360a00190a1505050505050565b60405163037c8cb160e51b815260ff821660048201525f9073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015611ec2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee69190613f18565b15611f075760405163093b89e160e11b815260048101849052602401610bbf565b505f82815260066020526040908190208054915163037c8cb160e51b8152610100830460ff16600482018190526201000090930464ffffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015611f7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fa29190613f18565b15611fc35760405163566ebf7960e01b815260048101869052602401610bbf565b60ff80851614612141578154611fdf90829060ff168187610b14565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527f8f1ee60b80a6d161c3408fa78af057311e20d28c1a7a12a336a549e26d7104b69073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612061573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120859190614395565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156120d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f791906143b0565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015264ffffffffff851660c082015260e00160405180910390a15b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612188573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ac919061443a565b825464ffffffffff91909116620100000266ffffffffff000019909116179091555092915050565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015612243573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122679190613f18565b61228f57604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f908152600460205260409020546122b3911684612c41565b6001600160601b038581165f90815260046020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507f5d0252a8f87c13449ff1a0e89d6a9d8dff6a3860c4cbbae6bd98d16f0924115b9161199c9187918791879164ffffffffff909116906143cb565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af415801561239b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123bf9190613f18565b6123e757604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f9081526003602052604090205461240b911684612c41565b6001600160601b038581165f90815260036020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507fcc72dbc9604f941e2273f4dfa0b71700384aa0f5da7c3fef80ecb075ac0010f89161199c9187918791879164ffffffffff909116906143cb565b5f805160206144c883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6124ec612c8b565b6124f581612cd4565b50565b612500612c8b565b612508612ce5565b565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015612579573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259d9190613f18565b6125c557604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f908152600260205260409020546125e9911684612b1d565b6001600160601b038581165f90815260026020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507fa9c12735dda7f4e5a00ab4e6a4cfdc194c4f03f3885a5f18abfa66b77b8cdae39161199c9187918791879164ffffffffff909116906143cb565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af41580156126d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f59190613f18565b61271d57604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f90815260026020526040902054612741911684612c41565b6001600160601b038581165f90815260026020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507f561cfda68ea43752c3141f3761d148409c741e20d766a95c64721f2c6ace5ba29161199c9187918791879164ffffffffff909116906143cb565b6001600160601b0381165f9081526005602052604090819020549051638d38cd4b60e01b815264ffffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015612828573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284c9190613f18565b15612875576040516314d5804160e01b81526001600160601b0382166004820152602401610bbf565b61287e81612ba2565b6040516001600160601b03821681527f1c26f28e2d8f145150c4243339c6b20813ea2bbc4e6f19ea2c9905060c0411a99060200160405180910390a150565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af415801561292c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129509190613f18565b61297857604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f9081526004602052604090205461299c911684612b1d565b6001600160601b038581165f90815260046020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507f52a6c3cc342afb5a41442a5b4757dbdd11e508f0f75a902a75a29d0409905a999161199c9187918791879164ffffffffff909116906143cb565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612a839190614455565b5f60405180830381855afa9150503d805f8114612abb576040519150601f19603f3d011682016040523d82523d5f602084013e612ac0565b606091505b50915091508115612b12576040815110612af25780806020019051810190612ae8919061446b565b9094509250612b12565b6020815110612b125780806020019051810190612b0f9190613f18565b93505b505094509492505050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af4158015612b7e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f19190614498565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612be9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c0d919061443a565b6001600160601b03919091165f908152600560205260409020805464ffffffffff191664ffffffffff909216919091179055565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa2290604401612b63565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661250857604051631afcd79f60e31b815260040160405180910390fd5b612cdc612c8b565b6124f581612484565b612ced612d3d565b612cf5612d5a565b612cfd612d8e565b612d05612dd2565b612d0d612dee565b612d15612e3b565b612d1d612e5b565b612d25612e6f565b612d2d612eae565b612d35612eb8565b612508612ecc565b612d4a60165b6005612ef4565b61250860165b60055b60c8612f36565b612d64600b612d43565b612d72600b6005606e612f36565b612d80600b606e6005612f36565b612508600b606e60d2612f36565b612d9a6015600a612ef4565b612da96015600a5b6014612f36565b612db86015600a5b601e612f36565b612dc66015600a6028612f36565b61250860156028612d53565b612ddf602b5b603c612ef4565b612508602b5b603c60dc612f36565b612dfa602d6032612ef4565b612e06602d6032612da2565b612e14602d60326033612f36565b612e20602d6032612db1565b612e2c602d6033612d53565b612508602d60335b6048612f36565b612e45602e612dd8565b612e4f602e612de5565b612508602e603c612e34565b612e65602c612d43565b612508602c612d50565b612e79602f612d43565b612e88602f60055b6046612f36565b612e96602f60056007612f36565b612ea2602f6007612e81565b612508602f6005612e34565b612508600f612d43565b612ec2600c612d43565b6125086029612d43565b612ed6600e612d43565b612ee06017612d43565b612eea6030612d43565b6125086031612d43565b60ff8281165f908152602081905260409020541615612f1557612f156144b3565b60ff9182165f908152602081905260409020805460ff191691909216179055565b60ff8084165f9081526001602090815260408083208685168452825280832085851684529091529020541615612f6e57612f6e6144b3565b60ff9283165f9081526001602081815260408084209587168452948152848320939095168252919093529120805460ff19169091179055565b6001600160601b03811681146124f5575f80fd5b80356108da81612fa7565b5f60208284031215612fd6575f80fd5b8135612fe181612fa7565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561301e5761301e612fe8565b60405290565b60405161010081016001600160401b038111828210171561301e5761301e612fe8565b60405160e081016001600160401b038111828210171561301e5761301e612fe8565b60405161014081016001600160401b038111828210171561301e5761301e612fe8565b64ffffffffff811681146124f5575f80fd5b80356108da8161308c565b6001600160a01b03811681146124f5575f80fd5b80356108da816130a9565b5f604082840312156130d8575f80fd5b604080519081016001600160401b03811182821017156130fa576130fa612fe8565b604052905080823561310b816130a9565b8152602083013561311b81612fa7565b6020919091015292915050565b5f82601f830112613137575f80fd5b8135602083015f806001600160401b0384111561315657613156612fe8565b50604051601f19601f85018116603f011681018181106001600160401b038211171561318457613184612fe8565b60405283815290508082840187101561319b575f80fd5b838360208301375f602085830101528094505050505092915050565b5f60e082840312156131c7575f80fd5b6131cf612ffc565b905081356131dc8161308c565b815260208201356131ec8161308c565b60208201526131fd6040830161309e565b604082015261320e60608301612fbb565b606082015261322083608084016130c8565b608082015260c08201356001600160401b0381111561323d575f80fd5b61324984828501613128565b60a08301525092915050565b60ff811681146124f5575f80fd5b5f805f60608486031215613275575f80fd5b833561328081612fa7565b925060208401356001600160401b0381111561329a575f80fd5b6132a6868287016131b7565b92505060408401356132b781613255565b809150509250925092565b5f602082840312156132d2575f80fd5b5035919050565b5f602082840312156132e9575f80fd5b8135612fe181613255565b5f8060408385031215613305575f80fd5b823561331081612fa7565b9150602083013561332081612fa7565b809150509250929050565b6001600160c01b0319811681146124f5575f80fd5b80151581146124f5575f80fd5b80356108da81613340565b63ffffffff811681146124f5575f80fd5b80356108da81613358565b5f60808284031215613384575f80fd5b604051608081016001600160401b03811182821017156133a6576133a6612fe8565b60405290508082356133b78161332b565b815260208301356133c781613340565b602082015260408301356133da81613358565b604082015260608301356001600160401b038111156133f7575f80fd5b61340385828601613128565b6060830152505092915050565b5f805f60608486031215613422575f80fd5b833561342d81612fa7565b925060208401356001600160401b03811115613447575f80fd5b6132a686828701613374565b5f6101008284031215613464575f80fd5b61346c613024565b905061347782612fbb565b815261348560208301612fbb565b60208201526134966040830161334d565b60408201526134a76060830161309e565b60608201526134b86080830161309e565b608082015260a08201356001600160401b038111156134d5575f80fd5b6134e184828501613128565b60a08301525060c08201356001600160401b038111156134ff575f80fd5b61350b84828501613128565b60c08301525060e08201356001600160401b03811115613529575f80fd5b61353584828501613128565b60e08301525092915050565b5f60208284031215613551575f80fd5b81356001600160401b03811115613566575f80fd5b61357284828501613453565b949350505050565b5f806040838503121561358b575f80fd5b823561359681612fa7565b9150602083013561332081613255565b5f60e082840312156135b6575f80fd5b6135be613047565b905081356135cb81612fa7565b815260208201356135db816130a9565b602082015260408201356135ee816130a9565b6040820152606082013561360181613340565b60608201526136126080830161334d565b608082015261362360a0830161334d565b60a082015261363460c0830161334d565b60c082015292915050565b5f806101008385031215613651575f80fd5b823561365c81612fa7565b915061366b84602085016135a6565b90509250929050565b5f6101008284031215613685575f80fd5b61368d613024565b905061369882612fbb565b81526136a660208301612fbb565b60208201526136b760408301613369565b60408201526136c860608301613369565b60608201526136d9608083016130bd565b60808201526136ea60a0830161309e565b60a082015260c08201356001600160401b038111156134ff575f80fd5b5f8060408385031215613718575f80fd5b82356137238161332b565b915060208301356001600160401b0381111561373d575f80fd5b61374985828601613674565b9150509250929050565b5f6101408284031215613764575f80fd5b61376c613069565b9050613777826130bd565b815261378560208301612fbb565b6020820152613796604083016130bd565b60408201526137a760608301613369565b60608201526137b86080830161309e565b60808201526137c960a0830161334d565b60a08201526137da60c0830161334d565b60c08201526137eb60e083016130bd565b60e08201526101008201356001600160401b03811115613809575f80fd5b61381584828501613128565b610100830152506101208201356001600160401b03811115613835575f80fd5b61384184828501613128565b6101208301525092915050565b5f806040838503121561385f575f80fd5b823561386a8161332b565b915060208301356001600160401b03811115613884575f80fd5b61374985828601613753565b5f805f80608085870312156138a3575f80fd5b84356138ae81613255565b935060208501356138be81613255565b925060408501356138ce81613255565b915060608501356138de81613255565b939692955090935050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107f160208301846138e9565b5f60608284031215613939575f80fd5b604051606081016001600160401b038111828210171561395b5761395b612fe8565b60405290508082356001600160401b03811115613976575f80fd5b61398285828601613128565b8252506020830135613993816130a9565b602082015260408301356001600160401b038111156139b0575f80fd5b6139bc85828601613128565b6040830152505092915050565b5f805f606084860312156139db575f80fd5b83356139e681612fa7565b925060208401356001600160401b03811115613a00575f80fd5b6132a686828701613929565b6001600160401b03811681146124f5575f80fd5b5f805f60608486031215613a32575f80fd5b8335613a3d81613a0c565b925060208401356001600160401b03811115613a57575f80fd5b6132a686828701613453565b5f60208284031215613a73575f80fd5b8135612fe1816130a9565b5f805f60608486031215613a90575f80fd5b8335613a9b8161332b565b925060208401356001600160401b03811115613ab5575f80fd5b6132a686828701613753565b60208152613b0860208201835160ff815116825260ff602082015116602083015264ffffffffff604082015116604083015264ffffffffff60608201511660608301525050565b5f602083015160a08084015261357260c08401826138e9565b5f805f60608486031215613b33575f80fd5b8335613b3e8161332b565b925060208401356001600160401b03811115613b58575f80fd5b6132a686828701613674565b5f805f6101208486031215613b77575f80fd5b8335613b8281612fa7565b9250613b9185602086016135a6565b91506101008401356132b781613255565b5f8060408385031215613bb3575f80fd5b82356135968161332b565b608081016107f4828460ff815116825260ff602082015116602083015264ffffffffff604082015116604083015264ffffffffff60608201511660608301525050565b5f8060408385031215613c12575f80fd5b823561359681613a0c565b5f8060408385031215613c2e575f80fd5b8235613c3981612fa7565b915060208301356001600160401b03811115613c53575f80fd5b613749858286016131b7565b5f8060408385031215613c70575f80fd5b8235613c7b81612fa7565b915060208301356001600160401b03811115613c95575f80fd5b61374985828601613929565b5f805f60608486031215613cb3575f80fd5b8335613cbe81613255565b92506020840135613cce81613255565b915060408401356132b781613255565b60ff19811681146124f5575f80fd5b5f8060408385031215613cfe575f80fd5b8235613d0981613255565b9150602083013561332081613cde565b5f8060408385031215613d2a575f80fd5b8235613d3581612fa7565b915060208301356001600160401b03811115613d4f575f80fd5b61374985828601613374565b6020815264ffffffffff825116602082015264ffffffffff602083015116604082015264ffffffffff60408301511660608201526001600160601b0360608301511660808201525f6080830151613dd160a084018280516001600160a01b031682526020908101516001600160601b0316910152565b5060a083015160e0808401526135726101008401826138e9565b602081526001600160401b0360c01b825116602082015260208201511515604082015263ffffffff60408301511660608201525f606083015160808084015261357260a08401826138e9565b5f60208284031215613e47575f80fd5b5051919050565b60208152613e686020820183516001600160601b03169052565b5f6020830151613e8360408401826001600160601b03169052565b506040830151801515606084015250606083015164ffffffffff8116608084015250608083015164ffffffffff811660a08401525060a083015161010060c0840152613ed36101208401826138e9565b905060c0840151601f198483030160e0850152613ef082826138e9565b91505060e0840151601f1984830301610100850152613f0f82826138e9565b95945050505050565b5f60208284031215613f28575f80fd5b8151612fe181613340565b5f60e0820190506001600160601b03835116825260018060a01b03602084015116602083015260018060a01b0360408401511660408301526060830151151560608301526080830151613f8a608084018215159052565b5060a0830151613f9e60a084018215159052565b5060c08301516119ad60c084018215159052565b6001600160c01b031991909116815260200190565b602081526001600160601b0382511660208201525f6020830151613ff660408401826001600160601b03169052565b50604083015163ffffffff8116606084015250606083015163ffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015164ffffffffff811660c08401525060c083015161010060e084015261405e6101208401826138e9565b905060e0840151601f1984830301610100850152613f0f82826138e9565b602081526140966020820183516001600160a01b03169052565b5f60208301516140b160408401826001600160601b03169052565b5060408301516001600160a01b038116606084015250606083015163ffffffff8116608084015250608083015164ffffffffff811660a08401525060a083015180151560c08401525060c083015180151560e08401525060e08301516001600160a01b0381166101008401525061010083015161014061012084015261413b6101608401826138e9565b9050610120840151601f1984830301610140850152613f0f82826138e9565b600181811c9082168061416e57607f821691505b60208210810361418c57634e487b7160e01b5f52602260045260245ffd5b50919050565b602081525f8251606060208401526141ad60808401826138e9565b60208501516001600160a01b0316604085810191909152850151848203601f19016060860152909150613f0f82826138e9565b5f602082840312156141f0575f80fd5b8151612fe1816130a9565b5f8085851115614209575f80fd5b83861115614215575f80fd5b5050820193919092039150565b80356001600160e01b031981169060048410156119ad576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b601f8211156107d857805f5260205f20601f840160051c810160208510156142bc5750805b601f840160051c820191505b81811015611069575f81556001016142c8565b81516001600160401b038111156142f4576142f4612fe8565b61430881614302845461415a565b84614297565b6020601f82116001811461433a575f83156143235750848201515b5f19600385901b1c1916600184901b178455611069565b5f84815260208120601f198516915b828110156143695787850151825560209485019460019092019101614349565b508482101561438657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156143a5575f80fd5b8151612fe181613255565b5f602082840312156143c0575f80fd5b8151612fe181613cde565b6001600160601b03948516815292841660208401529216604082015264ffffffffff909116606082015260800190565b5f6001820161441857634e487b7160e01b5f52601160045260245ffd5b5060010190565b5f6020828403121561442f575f80fd5b8151612fe181613a0c565b5f6020828403121561444a575f80fd5b8151612fe18161308c565b5f82518060208501845e5f920191825250919050565b5f806040838503121561447c575f80fd5b825161448781613340565b602084015190925061332081613358565b5f602082840312156144a8575f80fd5b8151612fe181612fa7565b634e487b7160e01b5f52600160045260245ffdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212209298cd947b1e6a36aa97e047a4bf5b869aef4bd2e85cb75c04a8a4a6ded77b6964736f6c634300081a0033",
2033
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610260575f3560e01c80637d417f0d1161014b578063b0628dc3116100bf578063e2586c5811610084578063e2586c58146106ee578063e80c61ed14610701578063e9e96c7014610714578063f48016ce14610751578063f9b3fe3c14610772578063fe1f18d614610785575f80fd5b8063b0628dc314610682578063b4d7efe214610695578063bf1db3f9146106a8578063bf7e214f146106bb578063d7719f46146106db575f80fd5b80639626055911610110578063962605591461059657806396f4df2f146105a95780639f8151e5146105bc578063a2842229146105cf578063a5961b4c146105e2578063af9025001461066f575f80fd5b80637d417f0d1461050f5780638129fc1c146105225780638eaa6ac01461052a5780638eb9000d1461054a5780638fb3603714610575575f80fd5b8063490840b4116101e257806354f1fa81116101a757806354f1fa811461043057806354f6127f146104435780635eede17414610463578063623e7a0f146104d6578063733044ca146104e95780637a9e5e4b146104fc575f80fd5b8063490840b4146103d15780634a824392146103e45780634bb2d197146103f7578063533086d41461040a57806353ebe1291461041d575f80fd5b8063248a77dd11610228578063248a77dd1461034a5780632bce2d7c1461035d578063347777121461037057806338a699a41461039b57806340529b0f146103be575f80fd5b80630232ca491461026457806308077cd9146102ac57806309648a9d146102c15780630d358181146102fa578063228e42ec1461031f575b5f80fd5b61028f610272366004612fc6565b6001600160601b039081165f908152600460205260409020541690565b6040516001600160601b0390911681526020015b60405180910390f35b6102bf6102ba366004613263565b610798565b005b6102e86102cf3660046132c2565b5f90815260066020526040902054610100900460ff1690565b60405160ff90911681526020016102a3565b6102e86103083660046132d9565b60ff9081165f908152602081905260409020541690565b61028f61032d366004612fc6565b6001600160601b039081165f908152600260205260409020541690565b61028f6103583660046132f4565b6107dd565b6102bf61036b366004613410565b6107fa565b61038361037e366004613541565b610822565b6040516001600160401b0390911681526020016102a3565b6103ae6103a93660046132c2565b6108df565b60405190151581526020016102a3565b6102bf6103cc36600461357a565b610967565b6102bf6103df36600461363f565b610984565b6102bf6103f2366004613707565b6109b0565b6102bf61040536600461384e565b610a4e565b61028f6104183660046132f4565b610aec565b61028f61042b3660046132f4565b610b00565b6102bf61043e366004613890565b610b14565b6104566104513660046132c2565b610c72565b6040516102a39190613917565b6104ac610471366004612fc6565b6001600160601b039081165f908152600260209081526040808320546003835281842054600490935292205491831693908316929190911690565b604080516001600160601b03948516815292841660208401529216918101919091526060016102a3565b6102bf6104e43660046139c9565b610d14565b6102bf6104f7366004613a20565b610d3c565b6102bf61050a366004613a63565b610dd4565b6102bf61051d366004613a7e565b610e56565b6102bf610ef4565b61053d6105383660046132c2565b611070565b6040516102a39190613ac1565b61028f610558366004612fc6565b6001600160601b039081165f908152600360205260409020541690565b61057d611192565b6040516001600160e01b031990911681526020016102a3565b6102bf6105a4366004613b21565b6111c8565b6102bf6105b7366004613b64565b611266565b61028f6105ca3660046132f4565b61128e565b6102bf6105dd366004613ba2565b6112a2565b6106626105f03660046132c2565b60408051608080820183525f8083526020808401829052838501829052606093840182905294815260068552839020835191820184525460ff80821683526101008204169482019490945264ffffffffff620100008504811693820193909352600160381b9093049091169082015290565b6040516102a39190613bbe565b6102bf61067d366004613ba2565b61132f565b61028f6106903660046132f4565b61137d565b6102bf6106a3366004613c01565b611391565b6103ae6106b63660046132d9565b6113de565b6106c361142a565b6040516001600160a01b0390911681526020016102a3565b6102bf6106e9366004613c1d565b611445565b6102bf6106fc366004613c5f565b611476565b61028f61070f3660046132f4565b6114a7565b6103ae610722366004613ca1565b60ff9283165f908152600160209081526040808320948616835293815283822092851682529190915220541690565b61076461075f366004613ced565b6114bb565b6040519081526020016102a3565b6102bf610780366004613d19565b61153c565b6102bf61079336600461357a565b61156d565b6107a4335b5f36611584565b6107d86107b2846016611682565b836040516020016107c39190613d5b565b604051602081830303815290604052836116cd565b505050565b5f6107e73361079d565b6107f18383611844565b90505b92915050565b6108033361079d565b6107d8610811846017611682565b836040516020016107c39190613deb565b5f61082c3361079d565b6108346119b4565b604051630f37f38f60e41b81526001600160401b03821660048201529091506108da9073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f090602401602060405180830381865af4158015610891573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b59190613e37565b836040516020016108c69190613e4e565b604051602081830303815290604052611a44565b919050565b5f8181526006602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf906024015b602060405180830381865af4158015610943573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f49190613f18565b6109703361079d565b6107d861097e836017611682565b82611e70565b61098d3361079d565b6109ac61099b83600f611682565b826040516020016108c69190613f33565b5050565b6109b93361079d565b6040516355ee627560e01b81526109ac9073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee6275906109fe906001600160c01b0319871690600401613fb2565b602060405180830381865af4158015610a19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3d9190613e37565b826040516020016108c69190613fc7565b610a573361079d565b6040516355ee627560e01b81526109ac9073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee627590610a9c906001600160c01b0319871690600401613fb2565b602060405180830381865af4158015610ab7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610adb9190613e37565b826040516020016108c6919061407c565b5f610af63361079d565b6107f183836121d4565b5f610b0a3361079d565b6107f1838361232c565b60ff8381165f908152602081905260409081902054905163037c8cb160e51b81529116600482015273__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015610b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b9a9190613f18565b15610bc85760405163ea01ac1f60e01b815230600482015260ff841660248201526044015b60405180910390fd5b60ff80851690831614610c095760405163bae587e160e01b815230600482015260ff8085166024830152808616604483015283166064820152608401610bbf565b60ff8084165f90815260016020908152604080832088851684528252808320858516845290915290205416610c6c5760405163f33b49a360e01b815230600482015260ff8085166024830152808616604483015282166064820152608401610bbf565b50505050565b5f818152600660205260409020600101805460609190610c919061415a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbd9061415a565b8015610d085780601f10610cdf57610100808354040283529160200191610d08565b820191905f5260205f20905b815481529060010190602001808311610ceb57829003601f168201915b50505050509050919050565b610d1d3361079d565b6107d8610d2b84600b611682565b836040516020016107c39190614192565b610d453361079d565b604051630f37f38f60e41b81526001600160401b03841660048201526107d89073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f090602401602060405180830381865af4158015610d9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc39190613e37565b836040516020016107c39190613e4e565b33610ddd61142a565b6001600160a01b0316816001600160a01b031614610e185760405162d1953b60e31b81526001600160a01b0382166004820152602401610bbf565b816001600160a01b03163b5f03610e4d576040516361798f2f60e11b81526001600160a01b0383166004820152602401610bbf565b6109ac82612484565b610e5f3361079d565b6040516355ee627560e01b81526107d89073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee627590610ea4906001600160c01b0319881690600401613fb2565b602060405180830381865af4158015610ebf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee39190613e37565b836040516020016107c3919061407c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f385750825b90505f826001600160401b03166001148015610f535750303b155b905081158015610f61575080155b15610f7f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fa957845460ff60401b1916600160401b1785555b5f3390505f816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100e91906141e0565b9050611019816124e4565b6110216124f8565b5050831561106957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6040805160c0810182525f91810182815260608083018490526080830184905260a0830193909352815260208101919091525f82815260066020908152604091829020825160c081018452815460ff808216958301958652610100820416606083015264ffffffffff62010000820481166080840152600160381b9091041660a0820152928352600181018054919284019161110b9061415a565b80601f01602080910402602001604051908101604052809291908181526020018280546111379061415a565b80156111825780601f1061115957610100808354040283529160200191611182565b820191905f5260205f20905b81548152906001019060200180831161116557829003601f168201915b5050505050815250509050919050565b5f805160206144c883398151915280545f9190600160a01b900460ff166111b9575f6111c2565b638fb3603760e01b5b91505090565b6111d13361079d565b6040516355ee627560e01b81526107d89073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee627590611216906001600160c01b0319881690600401613fb2565b602060405180830381865af4158015611231573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112559190613e37565b836040516020016107c39190613fc7565b61126f3361079d565b6107d861127d84600f611682565b836040516020016107c39190613f33565b5f6112983361079d565b6107f1838361250a565b6112ab3361079d565b6040516355ee627560e01b81526107d89073__$1919c6d2c69d787ccb2653a371d7e5737d$__906355ee6275906112f0906001600160c01b0319871690600401613fb2565b602060405180830381865af415801561130b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097e9190613e37565b6113383361079d565b6040516355ee627560e01b81526107d89073__$05887d5853069c88bcd4c0a2107db45f29$__906355ee6275906112f0906001600160c01b0319871690600401613fb2565b5f6113873361079d565b6107f18383612662565b61139a3361079d565b604051630f37f38f60e41b81526001600160401b03831660048201526107d89073__$b4c16f233b92c2c4124fb22a521f86c95b$__9063f37f38f0906024016112f0565b60ff8181165f9081526020819052604080822054905163b2466acf60e01b8152921660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401610928565b5f805160206144c8833981519152546001600160a01b031690565b61144e3361079d565b611457826127ba565b6109ac611465836016611682565b826040516020016108c69190613d5b565b61147f3361079d565b611488826127ba565b6109ac61149683600b611682565b826040516020016108c69190614192565b5f6114b13361079d565b6107f183836128bd565b604051637a400b6760e11b815260ff8316600482015260ff19821660248201525f9073__$4b9aaffa8d044614668dad578b824b8eee$__9063f48016ce906044015b602060405180830381865af4158015611518573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f19190613e37565b6115453361079d565b61154e826127ba565b6109ac61155c836017611682565b826040516020016108c69190613deb565b6115763361079d565b6107d861097e836016611682565b5f805160206144c88339815191525f806115bc61159f61142a565b87306115ae60045f8a8c6141fb565b6115b791614222565b612a15565b915091508161167a5763ffffffff81161561165757825460ff60a01b1916600160a01b1783556115ea61142a565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b815260040161161993929190614258565b5f604051808303815f87803b158015611630575f80fd5b505af1158015611642573d5f803e3d5ffd5b5050845460ff60a01b191685555061167a9050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610bbf565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff821660248201525f9073__$94a2c899be079b00d952d0d84fffaa5c34$__90633889a4c8906044016114fd565b5f6116d88483611e70565b5f8581526006602052604090209091506001016116f584826142db565b50604051634b00e98f60e11b8152600481018590527fdbbb264bf3560def22c1457cb693395546e7a0a2053566eb78e6f5eebf9831979073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611766573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178a9190614395565b604051630713cfad60e31b81526004810187905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156117d8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117fc91906143b0565b6040805160ff938416815260ff199290921660208301529185168183015233606082015232608082015264ffffffffff841660a082015290519081900360c00190a150505050565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af41580156118b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d79190613f18565b6118ff57604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f90815260036020526040902054611923911684612b1d565b6001600160601b038581165f90815260036020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507fc813323abc29b7cc59ddd274e5941cad2a987aa85c181fbde230bfb449b000969161199c9187918791879164ffffffffff909116906143cb565b60405180910390a16119ad84612ba2565b5092915050565b600780545f91826119c4836143fb565b9091555050600754604051633aac82ef60e11b8152600481019190915273__$b4c16f233b92c2c4124fb22a521f86c95b$__9063755905de90602401602060405180830381865af4158015611a1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a3f919061441f565b905090565b604051634b00e98f60e11b8152600481018390525f9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611a94573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab89190614395565b60405163037c8cb160e51b815260ff8216600482015290915073__$0d958e68cba84670b8f4a3f2f2686b1c6b$__90636f91962090602401602060405180830381865af4158015611b0b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b2f9190613f18565b15611b52576040516307014a8d60e51b815260ff82166004820152602401610bbf565b5f83815260066020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301529073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__9063b2466acf90602401602060405180830381865af4158015611bb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bdc9190613f18565b15611c0657604051633f92eac960e21b81526004810185905260ff83166024820152604401610bbf565b611c0f826113de565b611c3157604051636cb0978b60e11b815260ff83166004820152602401610bbf565b5f73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015611c79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c9d919061443a565b60ff8085165f908152602081905260408120549293509116835460ff86811661ffff199092169190911761010091831691909102176bffffffffffffffffffff000019166201000064ffffffffff85169081026bffffffffff00000000000000191691909117600160381b919091021784555f878152600660205260409020909150600101611d2c86826142db565b50604051634b00e98f60e11b8152600481018790527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190614395565b604051630713cfad60e31b81526004810189905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af4158015611e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3391906143b0565b6040805160ff938416815260ff199290921660208301529184168183015233606082015232608082015290519081900360a00190a1505050505050565b60405163037c8cb160e51b815260ff821660048201525f9073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015611ec2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee69190613f18565b15611f075760405163093b89e160e11b815260048101849052602401610bbf565b505f82815260066020526040908190208054915163037c8cb160e51b8152610100830460ff16600482018190526201000090930464ffffffffff16929073__$2e1fcf62e7a1b3c2a33bdf2228c171b2be$__90636f91962090602401602060405180830381865af4158015611f7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fa29190613f18565b15611fc35760405163566ebf7960e01b815260048101869052602401610bbf565b60ff80851614612141578154611fdf90829060ff168187610b14565b815461ff00191661010060ff861602178255604051634b00e98f60e11b8152600481018690527f8f1ee60b80a6d161c3408fa78af057311e20d28c1a7a12a336a549e26d7104b69073__$4b9aaffa8d044614668dad578b824b8eee$__90639601d31e90602401602060405180830381865af4158015612061573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120859190614395565b604051630713cfad60e31b81526004810188905273__$4b9aaffa8d044614668dad578b824b8eee$__9063389e7d6890602401602060405180830381865af41580156120d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120f791906143b0565b6040805160ff938416815260ff1990921660208301528285169082015290861660608201523360808201523260a082015264ffffffffff851660c082015260e00160405180910390a15b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612188573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ac919061443a565b825464ffffffffff91909116620100000266ffffffffff000019909116179091555092915050565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015612243573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122679190613f18565b61228f57604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f908152600460205260409020546122b3911684612c41565b6001600160601b038581165f90815260046020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507f5d0252a8f87c13449ff1a0e89d6a9d8dff6a3860c4cbbae6bd98d16f0924115b9161199c9187918791879164ffffffffff909116906143cb565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af415801561239b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123bf9190613f18565b6123e757604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f9081526003602052604090205461240b911684612c41565b6001600160601b038581165f90815260036020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507fcc72dbc9604f941e2273f4dfa0b71700384aa0f5da7c3fef80ecb075ac0010f89161199c9187918791879164ffffffffff909116906143cb565b5f805160206144c883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6124ec612c8b565b6124f581612cd4565b50565b612500612c8b565b612508612ce5565b565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015612579573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061259d9190613f18565b6125c557604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f908152600260205260409020546125e9911684612b1d565b6001600160601b038581165f90815260026020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507fa9c12735dda7f4e5a00ab4e6a4cfdc194c4f03f3885a5f18abfa66b77b8cdae39161199c9187918791879164ffffffffff909116906143cb565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af41580156126d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126f59190613f18565b61271d57604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f90815260026020526040902054612741911684612c41565b6001600160601b038581165f90815260026020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507f561cfda68ea43752c3141f3761d148409c741e20d766a95c64721f2c6ace5ba29161199c9187918791879164ffffffffff909116906143cb565b6001600160601b0381165f9081526005602052604090819020549051638d38cd4b60e01b815264ffffffffff909116600482015273__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af4158015612828573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061284c9190613f18565b15612875576040516314d5804160e01b81526001600160601b0382166004820152602401610bbf565b61287e81612ba2565b6040516001600160601b03821681527f1c26f28e2d8f145150c4243339c6b20813ea2bbc4e6f19ea2c9905060c0411a99060200160405180910390a150565b6001600160601b0382165f90815260056020526040808220549051638d38cd4b60e01b815264ffffffffff9091166004820152839073__$f55ca14f1ddce1b88fe30d23ae45f595f4$__90638d38cd4b90602401602060405180830381865af415801561292c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129509190613f18565b61297857604051631e94ffd760e11b81526001600160601b0382166004820152602401610bbf565b6001600160601b038085165f9081526004602052604090205461299c911684612b1d565b6001600160601b038581165f90815260046020908152604080832080546001600160601b03191694861694909417909355600590528190205490519193507f52a6c3cc342afb5a41442a5b4757dbdd11e508f0f75a902a75a29d0409905a999161199c9187918791879164ffffffffff909116906143cb565b6040516001600160a01b03848116602483015283811660448301526001600160e01b0319831660648301525f9182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612a839190614455565b5f60405180830381855afa9150503d805f8114612abb576040519150601f19603f3d011682016040523d82523d5f602084013e612ac0565b606091505b50915091508115612b12576040815110612af25780806020019051810190612ae8919061446b565b9094509250612b12565b6020815110612b125780806020019051810190612b0f9190613f18565b93505b505094509492505050565b60405163274acb3560e01b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063274acb35906044015b602060405180830381865af4158015612b7e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f19190614498565b73__$f55ca14f1ddce1b88fe30d23ae45f595f4$__639fa6a6e36040518163ffffffff1660e01b8152600401602060405180830381865af4158015612be9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c0d919061443a565b6001600160601b03919091165f908152600560205260409020805464ffffffffff191664ffffffffff909216919091179055565b6040516363cf551160e11b81526001600160601b038084166004830152821660248201525f9073__$3bac17678db7ae928afa209f2f44deec9c$__9063c79eaa2290604401612b63565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661250857604051631afcd79f60e31b815260040160405180910390fd5b612cdc612c8b565b6124f581612484565b612ced612d3d565b612cf5612d5a565b612cfd612d8e565b612d05612dd2565b612d0d612dee565b612d15612e3b565b612d1d612e5b565b612d25612e6f565b612d2d612eae565b612d35612eb8565b612508612ecc565b612d4a60165b6005612ef4565b61250860165b60055b60c8612f36565b612d64600b612d43565b612d72600b6005606e612f36565b612d80600b606e6005612f36565b612508600b606e60d2612f36565b612d9a6015600a612ef4565b612da96015600a5b6014612f36565b612db86015600a5b601e612f36565b612dc66015600a6028612f36565b61250860156028612d53565b612ddf602b5b603c612ef4565b612508602b5b603c60dc612f36565b612dfa602d6032612ef4565b612e06602d6032612da2565b612e14602d60326033612f36565b612e20602d6032612db1565b612e2c602d6033612d53565b612508602d60335b6048612f36565b612e45602e612dd8565b612e4f602e612de5565b612508602e603c612e34565b612e65602c612d43565b612508602c612d50565b612e79602f612d43565b612e88602f60055b6046612f36565b612e96602f60056007612f36565b612ea2602f6007612e81565b612508602f6005612e34565b612508600f612d43565b612ec2600c612d43565b6125086029612d43565b612ed6600e612d43565b612ee06017612d43565b612eea6030612d43565b6125086031612d43565b60ff8281165f908152602081905260409020541615612f1557612f156144b3565b60ff9182165f908152602081905260409020805460ff191691909216179055565b60ff8084165f9081526001602090815260408083208685168452825280832085851684529091529020541615612f6e57612f6e6144b3565b60ff9283165f9081526001602081815260408084209587168452948152848320939095168252919093529120805460ff19169091179055565b6001600160601b03811681146124f5575f80fd5b80356108da81612fa7565b5f60208284031215612fd6575f80fd5b8135612fe181612fa7565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b038111828210171561301e5761301e612fe8565b60405290565b60405161010081016001600160401b038111828210171561301e5761301e612fe8565b60405160e081016001600160401b038111828210171561301e5761301e612fe8565b60405161014081016001600160401b038111828210171561301e5761301e612fe8565b64ffffffffff811681146124f5575f80fd5b80356108da8161308c565b6001600160a01b03811681146124f5575f80fd5b80356108da816130a9565b5f604082840312156130d8575f80fd5b604080519081016001600160401b03811182821017156130fa576130fa612fe8565b604052905080823561310b816130a9565b8152602083013561311b81612fa7565b6020919091015292915050565b5f82601f830112613137575f80fd5b8135602083015f806001600160401b0384111561315657613156612fe8565b50604051601f19601f85018116603f011681018181106001600160401b038211171561318457613184612fe8565b60405283815290508082840187101561319b575f80fd5b838360208301375f602085830101528094505050505092915050565b5f60e082840312156131c7575f80fd5b6131cf612ffc565b905081356131dc8161308c565b815260208201356131ec8161308c565b60208201526131fd6040830161309e565b604082015261320e60608301612fbb565b606082015261322083608084016130c8565b608082015260c08201356001600160401b0381111561323d575f80fd5b61324984828501613128565b60a08301525092915050565b60ff811681146124f5575f80fd5b5f805f60608486031215613275575f80fd5b833561328081612fa7565b925060208401356001600160401b0381111561329a575f80fd5b6132a6868287016131b7565b92505060408401356132b781613255565b809150509250925092565b5f602082840312156132d2575f80fd5b5035919050565b5f602082840312156132e9575f80fd5b8135612fe181613255565b5f8060408385031215613305575f80fd5b823561331081612fa7565b9150602083013561332081612fa7565b809150509250929050565b6001600160c01b0319811681146124f5575f80fd5b80151581146124f5575f80fd5b80356108da81613340565b63ffffffff811681146124f5575f80fd5b80356108da81613358565b5f60808284031215613384575f80fd5b604051608081016001600160401b03811182821017156133a6576133a6612fe8565b60405290508082356133b78161332b565b815260208301356133c781613340565b602082015260408301356133da81613358565b604082015260608301356001600160401b038111156133f7575f80fd5b61340385828601613128565b6060830152505092915050565b5f805f60608486031215613422575f80fd5b833561342d81612fa7565b925060208401356001600160401b03811115613447575f80fd5b6132a686828701613374565b5f6101008284031215613464575f80fd5b61346c613024565b905061347782612fbb565b815261348560208301612fbb565b60208201526134966040830161334d565b60408201526134a76060830161309e565b60608201526134b86080830161309e565b608082015260a08201356001600160401b038111156134d5575f80fd5b6134e184828501613128565b60a08301525060c08201356001600160401b038111156134ff575f80fd5b61350b84828501613128565b60c08301525060e08201356001600160401b03811115613529575f80fd5b61353584828501613128565b60e08301525092915050565b5f60208284031215613551575f80fd5b81356001600160401b03811115613566575f80fd5b61357284828501613453565b949350505050565b5f806040838503121561358b575f80fd5b823561359681612fa7565b9150602083013561332081613255565b5f60e082840312156135b6575f80fd5b6135be613047565b905081356135cb81612fa7565b815260208201356135db816130a9565b602082015260408201356135ee816130a9565b6040820152606082013561360181613340565b60608201526136126080830161334d565b608082015261362360a0830161334d565b60a082015261363460c0830161334d565b60c082015292915050565b5f806101008385031215613651575f80fd5b823561365c81612fa7565b915061366b84602085016135a6565b90509250929050565b5f6101008284031215613685575f80fd5b61368d613024565b905061369882612fbb565b81526136a660208301612fbb565b60208201526136b760408301613369565b60408201526136c860608301613369565b60608201526136d9608083016130bd565b60808201526136ea60a0830161309e565b60a082015260c08201356001600160401b038111156134ff575f80fd5b5f8060408385031215613718575f80fd5b82356137238161332b565b915060208301356001600160401b0381111561373d575f80fd5b61374985828601613674565b9150509250929050565b5f6101408284031215613764575f80fd5b61376c613069565b9050613777826130bd565b815261378560208301612fbb565b6020820152613796604083016130bd565b60408201526137a760608301613369565b60608201526137b86080830161309e565b60808201526137c960a0830161334d565b60a08201526137da60c0830161334d565b60c08201526137eb60e083016130bd565b60e08201526101008201356001600160401b03811115613809575f80fd5b61381584828501613128565b610100830152506101208201356001600160401b03811115613835575f80fd5b61384184828501613128565b6101208301525092915050565b5f806040838503121561385f575f80fd5b823561386a8161332b565b915060208301356001600160401b03811115613884575f80fd5b61374985828601613753565b5f805f80608085870312156138a3575f80fd5b84356138ae81613255565b935060208501356138be81613255565b925060408501356138ce81613255565b915060608501356138de81613255565b939692955090935050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107f160208301846138e9565b5f60608284031215613939575f80fd5b604051606081016001600160401b038111828210171561395b5761395b612fe8565b60405290508082356001600160401b03811115613976575f80fd5b61398285828601613128565b8252506020830135613993816130a9565b602082015260408301356001600160401b038111156139b0575f80fd5b6139bc85828601613128565b6040830152505092915050565b5f805f606084860312156139db575f80fd5b83356139e681612fa7565b925060208401356001600160401b03811115613a00575f80fd5b6132a686828701613929565b6001600160401b03811681146124f5575f80fd5b5f805f60608486031215613a32575f80fd5b8335613a3d81613a0c565b925060208401356001600160401b03811115613a57575f80fd5b6132a686828701613453565b5f60208284031215613a73575f80fd5b8135612fe1816130a9565b5f805f60608486031215613a90575f80fd5b8335613a9b8161332b565b925060208401356001600160401b03811115613ab5575f80fd5b6132a686828701613753565b60208152613b0860208201835160ff815116825260ff602082015116602083015264ffffffffff604082015116604083015264ffffffffff60608201511660608301525050565b5f602083015160a08084015261357260c08401826138e9565b5f805f60608486031215613b33575f80fd5b8335613b3e8161332b565b925060208401356001600160401b03811115613b58575f80fd5b6132a686828701613674565b5f805f6101208486031215613b77575f80fd5b8335613b8281612fa7565b9250613b9185602086016135a6565b91506101008401356132b781613255565b5f8060408385031215613bb3575f80fd5b82356135968161332b565b608081016107f4828460ff815116825260ff602082015116602083015264ffffffffff604082015116604083015264ffffffffff60608201511660608301525050565b5f8060408385031215613c12575f80fd5b823561359681613a0c565b5f8060408385031215613c2e575f80fd5b8235613c3981612fa7565b915060208301356001600160401b03811115613c53575f80fd5b613749858286016131b7565b5f8060408385031215613c70575f80fd5b8235613c7b81612fa7565b915060208301356001600160401b03811115613c95575f80fd5b61374985828601613929565b5f805f60608486031215613cb3575f80fd5b8335613cbe81613255565b92506020840135613cce81613255565b915060408401356132b781613255565b60ff19811681146124f5575f80fd5b5f8060408385031215613cfe575f80fd5b8235613d0981613255565b9150602083013561332081613cde565b5f8060408385031215613d2a575f80fd5b8235613d3581612fa7565b915060208301356001600160401b03811115613d4f575f80fd5b61374985828601613374565b6020815264ffffffffff825116602082015264ffffffffff602083015116604082015264ffffffffff60408301511660608201526001600160601b0360608301511660808201525f6080830151613dd160a084018280516001600160a01b031682526020908101516001600160601b0316910152565b5060a083015160e0808401526135726101008401826138e9565b602081526001600160401b0360c01b825116602082015260208201511515604082015263ffffffff60408301511660608201525f606083015160808084015261357260a08401826138e9565b5f60208284031215613e47575f80fd5b5051919050565b60208152613e686020820183516001600160601b03169052565b5f6020830151613e8360408401826001600160601b03169052565b506040830151801515606084015250606083015164ffffffffff8116608084015250608083015164ffffffffff811660a08401525060a083015161010060c0840152613ed36101208401826138e9565b905060c0840151601f198483030160e0850152613ef082826138e9565b91505060e0840151601f1984830301610100850152613f0f82826138e9565b95945050505050565b5f60208284031215613f28575f80fd5b8151612fe181613340565b5f60e0820190506001600160601b03835116825260018060a01b03602084015116602083015260018060a01b0360408401511660408301526060830151151560608301526080830151613f8a608084018215159052565b5060a0830151613f9e60a084018215159052565b5060c08301516119ad60c084018215159052565b6001600160c01b031991909116815260200190565b602081526001600160601b0382511660208201525f6020830151613ff660408401826001600160601b03169052565b50604083015163ffffffff8116606084015250606083015163ffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015164ffffffffff811660c08401525060c083015161010060e084015261405e6101208401826138e9565b905060e0840151601f1984830301610100850152613f0f82826138e9565b602081526140966020820183516001600160a01b03169052565b5f60208301516140b160408401826001600160601b03169052565b5060408301516001600160a01b038116606084015250606083015163ffffffff8116608084015250608083015164ffffffffff811660a08401525060a083015180151560c08401525060c083015180151560e08401525060e08301516001600160a01b0381166101008401525061010083015161014061012084015261413b6101608401826138e9565b9050610120840151601f1984830301610140850152613f0f82826138e9565b600181811c9082168061416e57607f821691505b60208210810361418c57634e487b7160e01b5f52602260045260245ffd5b50919050565b602081525f8251606060208401526141ad60808401826138e9565b60208501516001600160a01b0316604085810191909152850151848203601f19016060860152909150613f0f82826138e9565b5f602082840312156141f0575f80fd5b8151612fe1816130a9565b5f8085851115614209575f80fd5b83861115614215575f80fd5b5050820193919092039150565b80356001600160e01b031981169060048410156119ad576001600160e01b031960049490940360031b84901b1690921692915050565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b601f8211156107d857805f5260205f20601f840160051c810160208510156142bc5750805b601f840160051c820191505b81811015611069575f81556001016142c8565b81516001600160401b038111156142f4576142f4612fe8565b61430881614302845461415a565b84614297565b6020601f82116001811461433a575f83156143235750848201515b5f19600385901b1c1916600184901b178455611069565b5f84815260208120601f198516915b828110156143695787850151825560209485019460019092019101614349565b508482101561438657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156143a5575f80fd5b8151612fe181613255565b5f602082840312156143c0575f80fd5b8151612fe181613cde565b6001600160601b03948516815292841660208401529216604082015264ffffffffff909116606082015260800190565b5f6001820161441857634e487b7160e01b5f52601160045260245ffd5b5060010190565b5f6020828403121561442f575f80fd5b8151612fe181613a0c565b5f6020828403121561444a575f80fd5b8151612fe18161308c565b5f82518060208501845e5f920191825250919050565b5f806040838503121561447c575f80fd5b825161448781613340565b602084015190925061332081613358565b5f602082840312156144a8575f80fd5b8151612fe181612fa7565b634e487b7160e01b5f52600160045260245ffdfef3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212209298cd947b1e6a36aa97e047a4bf5b869aef4bd2e85cb75c04a8a4a6ded77b6964736f6c634300081a0033",
3218
2034
  "linkReferences": {
3219
2035
  "contracts/type/Amount.sol": {
3220
2036
  "AmountLib": [
3221
2037
  {
3222
2038
  "length": 20,
3223
- "start": 13451
2039
+ "start": 11109
3224
2040
  },
3225
2041
  {
3226
2042
  "length": 20,
3227
- "start": 13747
2043
+ "start": 11401
3228
2044
  }
3229
2045
  ]
3230
2046
  },
@@ -3232,19 +2048,43 @@
3232
2048
  "BlocknumberLib": [
3233
2049
  {
3234
2050
  "length": 20,
3235
- "start": 13303
2051
+ "start": 6299
3236
2052
  },
3237
2053
  {
3238
2054
  "length": 20,
3239
- "start": 13548
3240
- }
3241
- ]
3242
- },
3243
- "contracts/type/ClaimId.sol": {
3244
- "ClaimIdLib": [
2055
+ "start": 7252
2056
+ },
2057
+ {
2058
+ "length": 20,
2059
+ "start": 8547
2060
+ },
2061
+ {
2062
+ "length": 20,
2063
+ "start": 8747
2064
+ },
2065
+ {
2066
+ "length": 20,
2067
+ "start": 9091
2068
+ },
2069
+ {
2070
+ "length": 20,
2071
+ "start": 9569
2072
+ },
2073
+ {
2074
+ "length": 20,
2075
+ "start": 9913
2076
+ },
2077
+ {
2078
+ "length": 20,
2079
+ "start": 10256
2080
+ },
3245
2081
  {
3246
2082
  "length": 20,
3247
- "start": 8798
2083
+ "start": 10516
2084
+ },
2085
+ {
2086
+ "length": 20,
2087
+ "start": 11204
3248
2088
  }
3249
2089
  ]
3250
2090
  },
@@ -3252,15 +2092,15 @@
3252
2092
  "DistributorTypeLib": [
3253
2093
  {
3254
2094
  "length": 20,
3255
- "start": 3443
2095
+ "start": 2698
3256
2096
  },
3257
2097
  {
3258
2098
  "length": 20,
3259
- "start": 4141
2099
+ "start": 3730
3260
2100
  },
3261
2101
  {
3262
2102
  "length": 20,
3263
- "start": 5310
2103
+ "start": 4830
3264
2104
  }
3265
2105
  ]
3266
2106
  },
@@ -3268,35 +2108,35 @@
3268
2108
  "Key32Lib": [
3269
2109
  {
3270
2110
  "length": 20,
3271
- "start": 6793
2111
+ "start": 5375
3272
2112
  },
3273
2113
  {
3274
2114
  "length": 20,
3275
- "start": 7379
2115
+ "start": 5966
3276
2116
  },
3277
2117
  {
3278
2118
  "length": 20,
3279
- "start": 7495
2119
+ "start": 6080
3280
2120
  },
3281
2121
  {
3282
2122
  "length": 20,
3283
- "start": 7832
2123
+ "start": 6780
3284
2124
  },
3285
2125
  {
3286
2126
  "length": 20,
3287
- "start": 8493
2127
+ "start": 7557
3288
2128
  },
3289
2129
  {
3290
2130
  "length": 20,
3291
- "start": 8609
2131
+ "start": 7671
3292
2132
  },
3293
2133
  {
3294
2134
  "length": 20,
3295
- "start": 9354
2135
+ "start": 8265
3296
2136
  },
3297
2137
  {
3298
2138
  "length": 20,
3299
- "start": 9470
2139
+ "start": 8379
3300
2140
  }
3301
2141
  ]
3302
2142
  },
@@ -3304,7 +2144,7 @@
3304
2144
  "NftIdLib": [
3305
2145
  {
3306
2146
  "length": 20,
3307
- "start": 7246
2147
+ "start": 5835
3308
2148
  }
3309
2149
  ]
3310
2150
  },
@@ -3312,15 +2152,7 @@
3312
2152
  "ObjectTypeLib": [
3313
2153
  {
3314
2154
  "length": 20,
3315
- "start": 7953
3316
- }
3317
- ]
3318
- },
3319
- "contracts/type/PayoutId.sol": {
3320
- "PayoutIdLib": [
3321
- {
3322
- "length": 20,
3323
- "start": 8876
2155
+ "start": 6899
3324
2156
  }
3325
2157
  ]
3326
2158
  },
@@ -3328,15 +2160,15 @@
3328
2160
  "ReferralLib": [
3329
2161
  {
3330
2162
  "length": 20,
3331
- "start": 4301
2163
+ "start": 2540
3332
2164
  },
3333
2165
  {
3334
2166
  "length": 20,
3335
- "start": 5878
2167
+ "start": 4612
3336
2168
  },
3337
2169
  {
3338
2170
  "length": 20,
3339
- "start": 6603
2171
+ "start": 4971
3340
2172
  }
3341
2173
  ]
3342
2174
  },
@@ -3344,35 +2176,19 @@
3344
2176
  "RequestIdLib": [
3345
2177
  {
3346
2178
  "length": 20,
3347
- "start": 2729
3348
- },
3349
- {
3350
- "length": 20,
3351
- "start": 3091
3352
- },
3353
- {
3354
- "length": 20,
3355
- "start": 5992
2179
+ "start": 2169
3356
2180
  },
3357
2181
  {
3358
2182
  "length": 20,
3359
- "start": 7708
3360
- }
3361
- ]
3362
- },
3363
- "contracts/type/RiskId.sol": {
3364
- "RiskIdLib": [
3365
- {
3366
- "length": 20,
3367
- "start": 3283
2183
+ "start": 3463
3368
2184
  },
3369
2185
  {
3370
2186
  "length": 20,
3371
- "start": 4717
2187
+ "start": 5084
3372
2188
  },
3373
2189
  {
3374
2190
  "length": 20,
3375
- "start": 5477
2191
+ "start": 6659
3376
2192
  }
3377
2193
  ]
3378
2194
  },
@@ -3380,27 +2196,27 @@
3380
2196
  "StateIdLib": [
3381
2197
  {
3382
2198
  "length": 20,
3383
- "start": 3641
2199
+ "start": 2346
3384
2200
  },
3385
2201
  {
3386
2202
  "length": 20,
3387
- "start": 5652
2203
+ "start": 2910
3388
2204
  },
3389
2205
  {
3390
2206
  "length": 20,
3391
- "start": 6131
2207
+ "start": 5160
3392
2208
  },
3393
2209
  {
3394
2210
  "length": 20,
3395
- "start": 8129
2211
+ "start": 7072
3396
2212
  },
3397
2213
  {
3398
2214
  "length": 20,
3399
- "start": 8937
2215
+ "start": 7850
3400
2216
  },
3401
2217
  {
3402
2218
  "length": 20,
3403
- "start": 9127
2219
+ "start": 8038
3404
2220
  }
3405
2221
  ]
3406
2222
  }
@@ -3410,11 +2226,11 @@
3410
2226
  "AmountLib": [
3411
2227
  {
3412
2228
  "length": 20,
3413
- "start": 13418
2229
+ "start": 11077
3414
2230
  },
3415
2231
  {
3416
2232
  "length": 20,
3417
- "start": 13714
2233
+ "start": 11369
3418
2234
  }
3419
2235
  ]
3420
2236
  },
@@ -3422,19 +2238,43 @@
3422
2238
  "BlocknumberLib": [
3423
2239
  {
3424
2240
  "length": 20,
3425
- "start": 13270
2241
+ "start": 6267
3426
2242
  },
3427
2243
  {
3428
2244
  "length": 20,
3429
- "start": 13515
3430
- }
3431
- ]
3432
- },
3433
- "contracts/type/ClaimId.sol": {
3434
- "ClaimIdLib": [
2245
+ "start": 7220
2246
+ },
2247
+ {
2248
+ "length": 20,
2249
+ "start": 8515
2250
+ },
2251
+ {
2252
+ "length": 20,
2253
+ "start": 8715
2254
+ },
2255
+ {
2256
+ "length": 20,
2257
+ "start": 9059
2258
+ },
2259
+ {
2260
+ "length": 20,
2261
+ "start": 9537
2262
+ },
2263
+ {
2264
+ "length": 20,
2265
+ "start": 9881
2266
+ },
2267
+ {
2268
+ "length": 20,
2269
+ "start": 10224
2270
+ },
2271
+ {
2272
+ "length": 20,
2273
+ "start": 10484
2274
+ },
3435
2275
  {
3436
2276
  "length": 20,
3437
- "start": 8765
2277
+ "start": 11172
3438
2278
  }
3439
2279
  ]
3440
2280
  },
@@ -3442,15 +2282,15 @@
3442
2282
  "DistributorTypeLib": [
3443
2283
  {
3444
2284
  "length": 20,
3445
- "start": 3410
2285
+ "start": 2666
3446
2286
  },
3447
2287
  {
3448
2288
  "length": 20,
3449
- "start": 4108
2289
+ "start": 3698
3450
2290
  },
3451
2291
  {
3452
2292
  "length": 20,
3453
- "start": 5277
2293
+ "start": 4798
3454
2294
  }
3455
2295
  ]
3456
2296
  },
@@ -3458,35 +2298,35 @@
3458
2298
  "Key32Lib": [
3459
2299
  {
3460
2300
  "length": 20,
3461
- "start": 6760
2301
+ "start": 5343
3462
2302
  },
3463
2303
  {
3464
2304
  "length": 20,
3465
- "start": 7346
2305
+ "start": 5934
3466
2306
  },
3467
2307
  {
3468
2308
  "length": 20,
3469
- "start": 7462
2309
+ "start": 6048
3470
2310
  },
3471
2311
  {
3472
2312
  "length": 20,
3473
- "start": 7799
2313
+ "start": 6748
3474
2314
  },
3475
2315
  {
3476
2316
  "length": 20,
3477
- "start": 8460
2317
+ "start": 7525
3478
2318
  },
3479
2319
  {
3480
2320
  "length": 20,
3481
- "start": 8576
2321
+ "start": 7639
3482
2322
  },
3483
2323
  {
3484
2324
  "length": 20,
3485
- "start": 9321
2325
+ "start": 8233
3486
2326
  },
3487
2327
  {
3488
2328
  "length": 20,
3489
- "start": 9437
2329
+ "start": 8347
3490
2330
  }
3491
2331
  ]
3492
2332
  },
@@ -3494,7 +2334,7 @@
3494
2334
  "NftIdLib": [
3495
2335
  {
3496
2336
  "length": 20,
3497
- "start": 7213
2337
+ "start": 5803
3498
2338
  }
3499
2339
  ]
3500
2340
  },
@@ -3502,15 +2342,7 @@
3502
2342
  "ObjectTypeLib": [
3503
2343
  {
3504
2344
  "length": 20,
3505
- "start": 7920
3506
- }
3507
- ]
3508
- },
3509
- "contracts/type/PayoutId.sol": {
3510
- "PayoutIdLib": [
3511
- {
3512
- "length": 20,
3513
- "start": 8843
2345
+ "start": 6867
3514
2346
  }
3515
2347
  ]
3516
2348
  },
@@ -3518,15 +2350,15 @@
3518
2350
  "ReferralLib": [
3519
2351
  {
3520
2352
  "length": 20,
3521
- "start": 4268
2353
+ "start": 2508
3522
2354
  },
3523
2355
  {
3524
2356
  "length": 20,
3525
- "start": 5845
2357
+ "start": 4580
3526
2358
  },
3527
2359
  {
3528
2360
  "length": 20,
3529
- "start": 6570
2361
+ "start": 4939
3530
2362
  }
3531
2363
  ]
3532
2364
  },
@@ -3534,35 +2366,19 @@
3534
2366
  "RequestIdLib": [
3535
2367
  {
3536
2368
  "length": 20,
3537
- "start": 2696
3538
- },
3539
- {
3540
- "length": 20,
3541
- "start": 3058
2369
+ "start": 2137
3542
2370
  },
3543
2371
  {
3544
2372
  "length": 20,
3545
- "start": 5959
3546
- },
3547
- {
3548
- "length": 20,
3549
- "start": 7675
3550
- }
3551
- ]
3552
- },
3553
- "contracts/type/RiskId.sol": {
3554
- "RiskIdLib": [
3555
- {
3556
- "length": 20,
3557
- "start": 3250
2373
+ "start": 3431
3558
2374
  },
3559
2375
  {
3560
2376
  "length": 20,
3561
- "start": 4684
2377
+ "start": 5052
3562
2378
  },
3563
2379
  {
3564
2380
  "length": 20,
3565
- "start": 5444
2381
+ "start": 6627
3566
2382
  }
3567
2383
  ]
3568
2384
  },
@@ -3570,27 +2386,27 @@
3570
2386
  "StateIdLib": [
3571
2387
  {
3572
2388
  "length": 20,
3573
- "start": 3608
2389
+ "start": 2314
3574
2390
  },
3575
2391
  {
3576
2392
  "length": 20,
3577
- "start": 5619
2393
+ "start": 2878
3578
2394
  },
3579
2395
  {
3580
2396
  "length": 20,
3581
- "start": 6098
2397
+ "start": 5128
3582
2398
  },
3583
2399
  {
3584
2400
  "length": 20,
3585
- "start": 8096
2401
+ "start": 7040
3586
2402
  },
3587
2403
  {
3588
2404
  "length": 20,
3589
- "start": 8904
2405
+ "start": 7818
3590
2406
  },
3591
2407
  {
3592
2408
  "length": 20,
3593
- "start": 9094
2409
+ "start": 8006
3594
2410
  }
3595
2411
  ]
3596
2412
  }