@etherisc/gif-next 0.0.2-e5a6af8-639 → 0.0.2-e5bdc7a-061

Sign up to get free protection for your applications and to get access to all the features.
Files changed (355) hide show
  1. package/README.md +27 -6
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +2 -2
  4. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  6. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  9. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  16. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +55 -133
  18. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  20. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +8 -38
  22. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +133 -78
  24. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +78 -46
  26. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +11 -23
  28. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +23 -0
  30. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  31. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +38 -147
  33. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +49 -17
  35. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +92 -190
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +2 -2
  39. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  40. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +66 -107
  42. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  43. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +33 -87
  44. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  45. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +155 -141
  46. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  47. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +391 -205
  48. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  49. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +147 -42
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +46 -0
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +24 -4
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +78 -11
  56. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  57. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +85 -72
  58. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  59. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +40 -27
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +302 -74
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +61 -25
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +46 -22
  66. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +36 -46
  68. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  70. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  72. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  75. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  79. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  85. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  86. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +22 -100
  88. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  90. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +11 -23
  93. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +8 -38
  96. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +84 -60
  98. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +66 -22
  100. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +8 -53
  102. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +49 -17
  104. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +101 -206
  106. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +58 -70
  108. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +19 -57
  110. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +11 -62
  112. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  113. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +77 -75
  114. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  115. package/artifacts/contracts/pool/Pool.sol/Pool.json +8 -77
  116. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +153 -159
  118. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +61 -33
  120. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +66 -31
  122. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +42 -22
  124. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  125. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +13 -38
  126. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  127. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  128. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +84 -76
  130. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +67 -47
  132. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -7
  134. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +38 -19
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +16 -23
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  141. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +132 -121
  143. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +70 -42
  145. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.json +54 -38
  147. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +56 -32
  149. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  150. package/artifacts/contracts/product/Product.sol/Product.json +13 -38
  151. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -18
  153. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +40 -16
  155. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  156. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  157. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +24 -0
  158. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  160. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/Registry.sol/Registry.json +62 -38
  162. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +107 -94
  164. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +32 -16
  166. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +39 -15
  168. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  169. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  170. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  171. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +12 -12
  172. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  174. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  175. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  176. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  177. package/artifacts/contracts/shared/Component.sol/Component.json +8 -38
  178. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  179. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +169 -102
  180. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +74 -42
  182. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  184. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +402 -6
  185. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  186. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  187. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  188. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  190. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +11 -23
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +67 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  194. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +11 -23
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  197. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  199. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  204. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +8 -38
  205. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  206. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  207. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  208. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  209. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  211. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  212. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  213. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  214. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  215. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  216. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  217. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  218. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  219. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  220. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  222. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  223. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +29 -59
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  227. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  229. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  230. package/artifacts/contracts/staking/Staking.sol/Staking.json +80 -152
  231. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  233. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +50 -46
  235. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  237. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +36 -20
  239. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +43 -19
  241. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  243. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  245. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  246. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  250. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  252. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  254. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  255. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  256. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  257. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  259. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  261. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  263. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  265. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  267. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  269. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +43 -5
  271. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  273. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  283. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  284. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  285. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +18 -2
  286. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  287. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  288. package/contracts/authorization/AccessAdmin.sol +21 -1
  289. package/contracts/distribution/BasicDistribution.sol +2 -2
  290. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  291. package/contracts/distribution/Distribution.sol +5 -6
  292. package/contracts/distribution/DistributionService.sol +19 -20
  293. package/contracts/distribution/IDistributionService.sol +5 -6
  294. package/contracts/examples/fire/FirePool.sol +19 -8
  295. package/contracts/examples/fire/FireProduct.sol +24 -11
  296. package/contracts/examples/unpermissioned/SimpleDistribution.sol +8 -0
  297. package/contracts/examples/unpermissioned/SimplePool.sol +34 -2
  298. package/contracts/examples/unpermissioned/SimpleProduct.sol +15 -21
  299. package/contracts/instance/BundleSet.sol +38 -34
  300. package/contracts/instance/IInstance.sol +6 -0
  301. package/contracts/instance/IInstanceService.sol +7 -5
  302. package/contracts/instance/Instance.sol +14 -5
  303. package/contracts/instance/InstanceAdmin.sol +6 -5
  304. package/contracts/instance/InstanceAuthorizationV3.sol +30 -7
  305. package/contracts/instance/InstanceReader.sol +85 -1
  306. package/contracts/instance/InstanceService.sol +32 -19
  307. package/contracts/instance/RiskSet.sol +119 -0
  308. package/contracts/instance/base/ObjectSet.sol +24 -25
  309. package/contracts/instance/module/IComponents.sol +1 -2
  310. package/contracts/instance/module/IPolicy.sol +2 -1
  311. package/contracts/instance/module/IRisk.sol +1 -0
  312. package/contracts/oracle/OracleService.sol +87 -69
  313. package/contracts/pool/BasicPool.sol +24 -3
  314. package/contracts/pool/BasicPoolAuthorization.sol +12 -1
  315. package/contracts/pool/BundleService.sol +37 -94
  316. package/contracts/pool/IBundleService.sol +2 -23
  317. package/contracts/pool/IPoolComponent.sol +1 -7
  318. package/contracts/pool/IPoolService.sol +12 -26
  319. package/contracts/pool/Pool.sol +112 -102
  320. package/contracts/pool/PoolService.sol +177 -99
  321. package/contracts/product/ApplicationService.sol +20 -18
  322. package/contracts/product/BasicProduct.sol +7 -11
  323. package/contracts/product/ClaimService.sol +19 -9
  324. package/contracts/product/IApplicationService.sol +5 -2
  325. package/contracts/product/IPolicyService.sol +17 -7
  326. package/contracts/product/PolicyService.sol +241 -191
  327. package/contracts/product/PricingService.sol +4 -1
  328. package/contracts/product/Product.sol +12 -40
  329. package/contracts/product/RiskService.sol +14 -3
  330. package/contracts/registry/IRegistry.sol +2 -0
  331. package/contracts/registry/Registry.sol +9 -1
  332. package/contracts/registry/RegistryAdmin.sol +14 -11
  333. package/contracts/registry/ReleaseRegistry.sol +2 -18
  334. package/contracts/registry/ServiceAuthorizationV3.sol +12 -31
  335. package/contracts/shared/Component.sol +35 -83
  336. package/contracts/shared/ComponentService.sol +105 -34
  337. package/contracts/shared/ComponentVerifyingService.sol +15 -13
  338. package/contracts/shared/ContractLib.sol +196 -10
  339. package/contracts/shared/IComponent.sol +5 -12
  340. package/contracts/shared/IComponentService.sol +13 -3
  341. package/contracts/shared/InstanceLinkedComponent.sol +1 -9
  342. package/contracts/shared/NftOwnable.sol +5 -1
  343. package/contracts/shared/Registerable.sol +0 -2
  344. package/contracts/shared/RegistryLinked.sol +6 -12
  345. package/contracts/shared/TokenHandler.sol +316 -66
  346. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  347. package/contracts/staking/IStaking.sol +9 -4
  348. package/contracts/staking/Staking.sol +29 -21
  349. package/contracts/staking/StakingService.sol +55 -8
  350. package/contracts/type/Key32.sol +2 -2
  351. package/contracts/type/Key32Set.sol +62 -0
  352. package/contracts/type/NftId.sol +6 -0
  353. package/contracts/type/ObjectType.sol +2 -0
  354. package/contracts/type/RiskId.sol +18 -6
  355. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/53f592811985bbcd7ac840e89701a77f.json"
3
+ "buildInfo": "../../../build-info/7182881c5e5b7bfa90a1f80c8fc1056d.json"
4
4
  }
@@ -53,12 +53,12 @@
53
53
  },
54
54
  {
55
55
  "inputs": [],
56
- "name": "ErrorInstanceServiceBundleMangerInstanceMismatch",
56
+ "name": "ErrorInstanceServiceBundleSetAuthorityMismatch",
57
57
  "type": "error"
58
58
  },
59
59
  {
60
60
  "inputs": [],
61
- "name": "ErrorInstanceServiceBundleSetAuthorityMismatch",
61
+ "name": "ErrorInstanceServiceBundleSetInstanceMismatch",
62
62
  "type": "error"
63
63
  },
64
64
  {
@@ -211,6 +211,11 @@
211
211
  "name": "ErrorInstanceServiceMasterInstanceReaderNotSet",
212
212
  "type": "error"
213
213
  },
214
+ {
215
+ "inputs": [],
216
+ "name": "ErrorInstanceServiceMasterRiskSetAlreadySet",
217
+ "type": "error"
218
+ },
214
219
  {
215
220
  "inputs": [
216
221
  {
@@ -260,6 +265,21 @@
260
265
  "name": "ErrorInstanceServiceRequestUnauhorized",
261
266
  "type": "error"
262
267
  },
268
+ {
269
+ "inputs": [],
270
+ "name": "ErrorInstanceServiceRiskSetAuthorityMismatch",
271
+ "type": "error"
272
+ },
273
+ {
274
+ "inputs": [],
275
+ "name": "ErrorInstanceServiceRiskSetInstanceMismatch",
276
+ "type": "error"
277
+ },
278
+ {
279
+ "inputs": [],
280
+ "name": "ErrorInstanceServiceRiskSetZero",
281
+ "type": "error"
282
+ },
263
283
  {
264
284
  "inputs": [
265
285
  {
@@ -460,13 +480,13 @@
460
480
  "name": "createInstance",
461
481
  "outputs": [
462
482
  {
463
- "internalType": "contract Instance",
464
- "name": "clonedInstance",
483
+ "internalType": "contract IInstance",
484
+ "name": "instance",
465
485
  "type": "address"
466
486
  },
467
487
  {
468
488
  "internalType": "NftId",
469
- "name": "clonedInstanceNftId",
489
+ "name": "instanceNftId",
470
490
  "type": "uint96"
471
491
  }
472
492
  ],
@@ -838,18 +858,26 @@
838
858
  "type": "function"
839
859
  }
840
860
  ],
841
- "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b613f26806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80637a9e5e4b116100fe578063ada9652e1161009e578063bf7e214f1161006e578063bf7e214f1461043c578063c22f980d14610459578063e52ba1cb1461046c578063edabac031461047f575f80fd5b8063ada9652e146103fb578063b03d2a8e1461040f578063b68d180914610422578063b7d6851914610429575f80fd5b8063893d20e8116100d9578063893d20e8146103905780638fb3603714610398578063a2356b3a146103b9578063ad501467146103cc575f80fd5b80637a9e5e4b1461036e578063872309c7146103815780638899278a14610388575f80fd5b8063329d6e7411610169578063644c45e011610144578063644c45e0146103045780636a778e73146103215780636c741e781461033457806376b707b714610354575f80fd5b8063329d6e74146102b957806349bb9e4b146102cc5780635ab1bd53146102df575f80fd5b8063138461e0116101a4578063138461e01461023c5780631eff4b221461025c578063254f6866146102915780632d764ef8146102a6575f80fd5b806301ffc9a7146101ca5780630d8e6e2c1461020b5780630fec111c14610227575b5f80fd5b6101f66101d8366004613772565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610213610490565b60405162ffffff9091168152602001610202565b61022f610517565b60405161020291906137ce565b6102446106d5565b6040516001600160601b039091168152602001610202565b6102837f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610202565b6102a461029f366004613876565b6106df565b005b6102a46102b43660046138a3565b61085a565b6102a46102c73660046139a2565b610c38565b6102a46102da3660046139d3565b610d82565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610202565b5f80516020613e91833981519152546001600160601b0316610244565b61024461032f366004613876565b610e7e565b61033c61170f565b6040516001600160401b039091168152602001610202565b61035c61179b565b60405160ff9091168152602001610202565b6102a461037c366004613876565b61180f565b6102835f81565b610283600381565b6102ec6118ab565b6103a06119dc565b6040516001600160e01b03199091168152602001610202565b6102a46103c7366004613a33565b611a11565b6103d4611d89565b604080516001600160a01b0390931683526001600160601b03909116602083015201610202565b6102835f80516020613e9183398151915281565b6102a461041d366004613a77565b612027565b600a61035c565b6102a4610437366004613a92565b612249565b5f80516020613eb1833981519152546001600160a01b03166102ec565b6102a4610467366004613aa9565b612571565b61024461047a366004613aa9565b612845565b6007546001600160a01b03166102ec565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af41580156104ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613ac4565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190613af1565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016106336118ab565b6001600160a01b0316815260200182600101805461065090613b0c565b80601f016020809104026020016040519081016040528092919081815260200182805461067c90613b0c565b80156106c75780601f1061069e576101008083540402835291602001916106c7565b820191905f5260205f20905b8154815290600101906020018083116106aa57829003601f168201915b505050505081525091505090565b5f61051230612bb5565b6106e76118ab565b6001600160a01b0316336001600160a01b03161461071f5760405163086391f760e31b81523360048201526024015b60405180910390fd5b6007546001600160a01b0316610748576040516358e5a4af60e01b815260040160405180910390fd5b6001600160a01b03811661076f57604051631aa1808560e31b815260040160405180910390fd5b6007546001600160a01b039081169082160361079e57604051630666e2a560e01b815260040160405180910390fd5b6006546040805163379ed74560e21b8152905183926001600160a01b03908116929084169163de7b5d14916004808201926020929091908290030181865afa1580156107ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108109190613b44565b6001600160a01b0316146108375760405163f026367160e01b815260040160405180910390fd5b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b335f61086e6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa1580156108b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d69190613af1565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561092f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109539190613b6a565b1561097c576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f61098f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156109db573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a029190810190613bf6565b604001519050610a1b81600a5b60ff9081169116141590565b15610a3d578281604051632e87cd2360e11b8152600401610716929190613cc6565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9e9190613ce2565b9050610b2381610aac610490565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015610aff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f9190613ce2565b15610b45578381604051637f8084f960e01b8152600401610716929190613cc6565b5f610b586001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610b9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc09190613af1565b60035460405163db1e36e760e01b81526001600160601b038316600482015264ffffffffff891660248201529192506001600160a01b03169063db1e36e7906044015b5f604051808303815f87803b158015610c1a575f80fd5b505af1158015610c2c573d5f803e3d5ffd5b50505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610c5a610490565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610c98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbc9190613d11565b5f80516020613ed18339815191528054600160401b900460ff1680610cee575080546001600160401b03808416911610155b15610d0c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610d3683612dae565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f80516020613ed18339815191528054600160401b810460ff1615906001600160401b03165f81158015610db35750825b90505f826001600160401b03166001148015610dce5750303b155b905081158015610ddc575080155b15610dfa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e2457845460ff60401b1916600160401b1785555b610e2e8787612db6565b8315610e7557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f610e876118ab565b6001600160a01b0316336001600160a01b031614610eba5760405163086391f760e31b8152336004820152602401610716565b6006546001600160a01b031615610ee457604051632c237de760e11b815260040160405180910390fd5b6005546001600160a01b031615610f0e5760405163ab0cc43960e01b815260040160405180910390fd5b6008546001600160a01b031615610f385760405163558f4f7b60e11b815260040160405180910390fd5b6001600160a01b038216610f5f576040516309353e4560e11b815260040160405180910390fd5b5f8290505f816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc49190613b44565b90505f826001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015611003573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110279190613b44565b90505f8190505f846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108e9190613b44565b90505f8190505f866001600160a01b0316636dddada46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f59190613b44565b90505f8190505f886001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611138573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115c9190613b44565b9050806001600160a01b038916611186576040516327ccc33d60e11b815260040160405180910390fd5b6001600160a01b0387166111ac576040516295661560e31b815260040160405180910390fd5b6001600160a01b0385166111d35760405163e267254160e01b815260040160405180910390fd5b6001600160a01b0383166111fa5760405163bfebabd760e01b815260040160405180910390fd5b6001600160a01b038116611221576040516301fa2a2b60e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112819190613b44565b6001600160a01b03168a6001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ea9190613b44565b6001600160a01b031614611311576040516334ddf1a760e21b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113719190613b44565b6001600160a01b0316846001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da9190613b44565b6001600160a01b0316146114015760405163e168da3760e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114619190613b44565b6001600160a01b0316826001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ca9190613b44565b6001600160a01b0316146114f157604051631129422760e31b815260040160405180910390fd5b896001600160a01b0316846001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611537573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155b9190613b44565b6001600160a01b03161461158257604051631b25e96d60e31b815260040160405180910390fd5b896001600160a01b0316866001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ec9190613b44565b6001600160a01b031614611613576040516331783c7160e11b815260040160405180910390fd5b600480546001600160a01b03199081166001600160a01b038c8116919091179092556005805482168a84161790556006805482168f8416908117909155600780548316898516179055600880548316878516179055600980549092168484161790915560025490915f911663026bc43b8361168c6118ab565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f604051808303815f875af11580156116d5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116fc9190810190613bf6565b519e9d5050505050505050505050505050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600a61173461179b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af4158015611777573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613d11565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af41580156117eb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613ce2565b3361182e5f80516020613eb1833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146118695760405162d1953b60e31b81526001600160a01b0382166004820152602401610716565b816001600160a01b03163b5f0361189e576040516361798f2f60e11b81526001600160a01b0383166004820152602401610716565b6118a782612f25565b5050565b5f805f80516020613e9183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193b9190613b6a565b156119c6576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561199c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c09190613b44565b91505090565b54600160601b90046001600160a01b0316919050565b5f80516020613eb183398151915280545f9190600160a01b900460ff16611a03575f6119c0565b638fb3603760e01b91505090565b335f611a256001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611a69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8d9190613af1565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015611ae6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0a9190613b6a565b15611b33576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f611b466001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015611b92573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bb99190810190613bf6565b604001519050611bca81600a610a0f565b15611bec578281604051632e87cd2360e11b8152600401610716929190613cc6565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4d9190613ce2565b9050611c5b81610aac610490565b15611c7d578381604051637f8084f960e01b8152600401610716929190613cc6565b5f611c906001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611cd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf89190613af1565b600354604051636f61deef60e11b81526001600160601b0380841660048301526001600160a01b038b81166024840152908a16604483015292935091169063dec3bdde906064016020604051808303815f875af1158015611d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7f9190613af1565b5050505050505050565b5f803381611d95612f85565b9050611da181836130f3565b60025460405163026bc43b60e01b81526001600160a01b038084166004830152858116602483015292965091169063026bc43b906044015f604051808303815f875af1158015611df3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e1a9190810190613bf6565b5f0151925060035f9054906101000a90046001600160a01b03166001600160a01b03166381d9b45f8473__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eae9190613d2c565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af4158015611ef5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f199190613d47565b6040516001600160e01b031960e086901b1681526001600160601b03909316600484015264ffffffffff909116602483015260448201526064015f604051808303815f87803b158015611f6a575f80fd5b505af1158015611f7c573d5f803e3d5ffd5b505060405163776c828f60e01b81526001600160a01b0387811660048301528416925063776c828f91506024015f604051808303815f87803b158015611fc0575f80fd5b505af1158015611fd2573d5f803e3d5ffd5b5050604080516001600160601b03871681526001600160a01b03881660208201527f5f38ba73d945d51535b3c678f341052a70a580bed77c5db38464d02366c29fa8935001905060405180910390a150509091565b6001546001600160a01b0316604051630bee2f1560e11b81523360048201526001600160a01b0391909116906317dc5e2a90602401602060405180830381865afa158015612077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209b9190613b6a565b6120ba576040516302613e9f60e51b8152336004820152602401610716565b6040516301ffc9a760e01b81526307bb0a0360e51b6004820152339081906301ffc9a790602401602060405180830381865afa1580156120fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121209190613b6a565b612147576040516236c14d60e71b81526001600160a01b0382166004820152602401610716565b5f61215a6001546001600160a01b031690565b6040516308b09a5f60e41b81526001600160a01b0384811660048301529192505f91831690638b09a5f0906024015f60405180830381865afa1580156121a2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121c99190810190613bf6565b6020015160405163bf8e179760e01b81526001600160601b03821660048201529091505f906001600160a01b0384169063bf8e179790602401602060405180830381865afa15801561221d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122419190613b44565b505050505050565b335f61225d6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa1580156122a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122c59190613af1565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561231e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123429190613b6a565b1561236b576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f61237e6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156123ca573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123f19190810190613bf6565b60400151905061240281600a610a0f565b15612424578281604051632e87cd2360e11b8152600401610716929190613cc6565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612461573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124859190613ce2565b905061249381610aac610490565b156124b5578381604051637f8084f960e01b8152600401610716929190613cc6565b5f6124c86001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa15801561250c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125309190613af1565b60035460405163545c994560e11b81526001600160601b0383166004820152602481018990529192506001600160a01b03169063a8b9328a90604401610c03565b806125846001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03831660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156125d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f59190613b44565b6001600160a01b0316336001600160a01b031614612628576040516302613e9f60e51b8152336004820152602401610716565b81600a6001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa15801561268d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b19190613b6a565b6126e25760405163d711af7560e01b81526001600160601b038316600482015260ff82166024820152604401610716565b5f6126f56001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa158015612744573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261276b9190810190613bf6565b6080810151600754919250905f9061278b906001600160a01b0316613202565b604051636791f7ab60e01b81526001600160a01b03848116600483015291925090821690636791f7ab906024015f604051808303815f87803b1580156127cf575f80fd5b505af11580156127e1573d5f803e3d5ffd5b5050604051633def10c760e21b81526001600160a01b0384811660048301528516925063f7bc431c91506024015f604051808303815f87803b158015612825575f80fd5b505af1158015612837573d5f803e3d5ffd5b505050505050505050505050565b5f338161285a6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa15801561289e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c29190613af1565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561291b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293f9190613b6a565b15612968576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f61297b6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156129c7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129ee9190810190613bf6565b6040015190506129ff81600a610a0f565b15612a21578281604051632e87cd2360e11b8152600401610716929190613cc6565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a829190613ce2565b9050612a9081610aac610490565b15612ab2578381604051637f8084f960e01b8152600401610716929190613cc6565b5f612ac56001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612b09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2d9190613af1565b6003546040516321ece65760e01b81526001600160601b0380841660048301528a1660248201529192506001600160a01b0316906321ece657906044016020604051808303815f875af1158015612b86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612baa9190613af1565b505050505050919050565b5f805f80516020613e9183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612c21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c459190613b6a565b15612c715780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610716565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015612cc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce79190613b6a565b612d0f5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610716565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015612d61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d859190613af1565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6101c6613271565b5f80516020613ed18339815191528054600160401b810460ff1615906001600160401b03165f81158015612de75750825b90505f826001600160401b03166001148015612e025750303b155b905081158015612e10575080155b15612e2e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612e5857845460ff60401b1916600160401b1785555b5f8087806020019051810190612e6e9190613d5e565b91509150612e7d82828b6132a9565b612e8760026133ee565b600280546001600160a01b0319166001600160a01b0392909216919091179055612eb160036133ee565b600380546001600160a01b0319166001600160a01b0392909216919091179055612ee163c0d33ff960e01b613485565b50508315610e7557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e6c565b5f80516020613eb183398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6004545f908190612f9e906001600160a01b0316613202565b600554909150612fb6906001600160a01b0316613202565b60405163189acdbd60e31b81526001600160a01b0380831660048301529193509082169063c4d66de8906024015f604051808303815f87803b158015612ffa575f80fd5b505af115801561300c573d5f803e3d5ffd5b50505050816001600160a01b031663485cc9558260055f9054906101000a90046001600160a01b03166001600160a01b0316638e5bc2936040518163ffffffff1660e01b8152600401602060405180830381865afa158015613070573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130949190613b44565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f604051808303815f87803b1580156130d9575f80fd5b505af11580156130eb573d5f803e3d5ffd5b505050505090565b6009545f90819061310c906001600160a01b0316613202565b6008549091505f90613126906001600160a01b0316613202565b6007549091505f90613140906001600160a01b0316613202565b600654909150613158906001600160a01b0316613202565b9350836001600160a01b031663cc2a9a5b8785858561317f6001546001600160a01b031690565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015293851660248501529184166044840152831660648301528216608482015290881660a482015260c4015f604051808303815f87803b1580156131e3575f80fd5b505af11580156131f5573d5f803e3d5ffd5b5050505050505092915050565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c175f526e5af43d82803e903d91602b57fd5bf38260781b17602052603760095ff090506001600160a01b03811661326c576040516330be1a3d60e21b815260040160405180910390fd5b919050565b5f80516020613ed183398151915254600160401b900460ff166132a757604051631afcd79f60e31b815260040160405180910390fd5b565b6132b1613271565b6132b96134b1565b6001600160a01b038216156132d6576132d1826134c1565b61334d565b5f6132e160026133ee565b905061334b816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613322573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133469190613b44565b6134c1565b505b6133c983846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561338d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133b19190613af1565b60085f8560405180602001604052805f8152506134d5565b6133d9634a531f3360e01b613485565b6133e963daf9067160e01b613485565b505050565b5f6134016001546001600160a01b031690565b6001600160a01b031663d39e60438361341861179b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801561345b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061347f9190613b44565b92915050565b61348d613271565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b6134b9613271565b6132a7613570565b6134c9613271565b6134d28161359e565b50565b6134dd613271565b6134e786836135af565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301611d7f8382613dd6565b613578613271565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6135a6613271565b6134d281612f25565b6135b7613271565b6135c082613625565b6135c861372d565b6001600160a01b0381166135ef5760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020613e9183398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b61362d613271565b806001600160a01b03163b5f036136625760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610716565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526325713e4b60e21b60048201526301ffc9a790602401602060405180830381865afa9250505080156136dc575060408051601f3d908101601f191682019092526136d991810190613b6a565b60015b6137045760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610716565b806118a75760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610716565b613735613271565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b5f60208284031215613782575f80fd5b81356001600160e01b031981168114613799575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151613816608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e08084015261385a6101008401826137a0565b949350505050565b6001600160a01b03811681146134d2575f80fd5b5f60208284031215613886575f80fd5b813561379981613862565b64ffffffffff811681146134d2575f80fd5b5f602082840312156138b3575f80fd5b813561379981613891565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156138f4576138f46138be565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613922576139226138be565b604052919050565b5f6001600160401b03821115613942576139426138be565b50601f01601f191660200190565b5f82601f83011261395f575f80fd5b813561397261396d8261392a565b6138fa565b818152846020838601011115613986575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156139b2575f80fd5b81356001600160401b038111156139c7575f80fd5b61385a84828501613950565b5f80604083850312156139e4575f80fd5b82356139ef81613862565b915060208301356001600160401b03811115613a09575f80fd5b613a1585828601613950565b9150509250929050565b6001600160601b03811681146134d2575f80fd5b5f8060408385031215613a44575f80fd5b8235613a4f81613862565b91506020830135613a5f81613a1f565b809150509250929050565b80151581146134d2575f80fd5b5f60208284031215613a87575f80fd5b813561379981613a6a565b5f60208284031215613aa2575f80fd5b5035919050565b5f60208284031215613ab9575f80fd5b813561379981613a1f565b5f60208284031215613ad4575f80fd5b815162ffffff81168114613799575f80fd5b805161326c81613a1f565b5f60208284031215613b01575f80fd5b815161379981613a1f565b600181811c90821680613b2057607f821691505b602082108103613b3e57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215613b54575f80fd5b815161379981613862565b805161326c81613a6a565b5f60208284031215613b7a575f80fd5b815161379981613a6a565b60ff811681146134d2575f80fd5b805161326c81613b85565b805161326c81613862565b5f82601f830112613bb8575f80fd5b8151613bc661396d8261392a565b818152846020838601011115613bda575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215613c06575f80fd5b81516001600160401b03811115613c1b575f80fd5b820160e08185031215613c2c575f80fd5b613c346138d2565b613c3d82613ae6565b8152613c4b60208301613ae6565b6020820152613c5c60408301613b93565b6040820152613c6d60608301613b5f565b6060820152613c7e60808301613b9e565b6080820152613c8f60a08301613b9e565b60a082015260c08201516001600160401b03811115613cac575f80fd5b613cb886828501613ba9565b60c083015250949350505050565b6001600160a01b0392909216825260ff16602082015260400190565b5f60208284031215613cf2575f80fd5b815161379981613b85565b6001600160401b03811681146134d2575f80fd5b5f60208284031215613d21575f80fd5b815161379981613cfd565b5f60208284031215613d3c575f80fd5b815161379981613891565b5f60208284031215613d57575f80fd5b5051919050565b5f8060408385031215613d6f575f80fd5b8251613d7a81613862565b6020840151909250613a5f81613862565b601f8211156133e957805f5260205f20601f840160051c81016020851015613db05750805b601f840160051c820191505b81811015613dcf575f8155600101613dbc565b5050505050565b81516001600160401b03811115613def57613def6138be565b613e0381613dfd8454613b0c565b84613d8b565b6020601f821160018114613e35575f8315613e1e5750848201515b5f19600385901b1c1916600184901b178455613dcf565b5f84815260208120601f198516915b82811015613e645787850151825560209485019460019092019101613e44565b5084821015613e8157868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122081274b43a5bb78b3c0ea9b25055e736b78cbc2e0caefbd0b4c4e05896bd1da7c64736f6c634300081a0033",
842
- "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80637a9e5e4b116100fe578063ada9652e1161009e578063bf7e214f1161006e578063bf7e214f1461043c578063c22f980d14610459578063e52ba1cb1461046c578063edabac031461047f575f80fd5b8063ada9652e146103fb578063b03d2a8e1461040f578063b68d180914610422578063b7d6851914610429575f80fd5b8063893d20e8116100d9578063893d20e8146103905780638fb3603714610398578063a2356b3a146103b9578063ad501467146103cc575f80fd5b80637a9e5e4b1461036e578063872309c7146103815780638899278a14610388575f80fd5b8063329d6e7411610169578063644c45e011610144578063644c45e0146103045780636a778e73146103215780636c741e781461033457806376b707b714610354575f80fd5b8063329d6e74146102b957806349bb9e4b146102cc5780635ab1bd53146102df575f80fd5b8063138461e0116101a4578063138461e01461023c5780631eff4b221461025c578063254f6866146102915780632d764ef8146102a6575f80fd5b806301ffc9a7146101ca5780630d8e6e2c1461020b5780630fec111c14610227575b5f80fd5b6101f66101d8366004613772565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610213610490565b60405162ffffff9091168152602001610202565b61022f610517565b60405161020291906137ce565b6102446106d5565b6040516001600160601b039091168152602001610202565b6102837f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610202565b6102a461029f366004613876565b6106df565b005b6102a46102b43660046138a3565b61085a565b6102a46102c73660046139a2565b610c38565b6102a46102da3660046139d3565b610d82565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610202565b5f80516020613e91833981519152546001600160601b0316610244565b61024461032f366004613876565b610e7e565b61033c61170f565b6040516001600160401b039091168152602001610202565b61035c61179b565b60405160ff9091168152602001610202565b6102a461037c366004613876565b61180f565b6102835f81565b610283600381565b6102ec6118ab565b6103a06119dc565b6040516001600160e01b03199091168152602001610202565b6102a46103c7366004613a33565b611a11565b6103d4611d89565b604080516001600160a01b0390931683526001600160601b03909116602083015201610202565b6102835f80516020613e9183398151915281565b6102a461041d366004613a77565b612027565b600a61035c565b6102a4610437366004613a92565b612249565b5f80516020613eb1833981519152546001600160a01b03166102ec565b6102a4610467366004613aa9565b612571565b61024461047a366004613aa9565b612845565b6007546001600160a01b03166102ec565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af41580156104ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613ac4565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190613af1565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a0016106336118ab565b6001600160a01b0316815260200182600101805461065090613b0c565b80601f016020809104026020016040519081016040528092919081815260200182805461067c90613b0c565b80156106c75780601f1061069e576101008083540402835291602001916106c7565b820191905f5260205f20905b8154815290600101906020018083116106aa57829003601f168201915b505050505081525091505090565b5f61051230612bb5565b6106e76118ab565b6001600160a01b0316336001600160a01b03161461071f5760405163086391f760e31b81523360048201526024015b60405180910390fd5b6007546001600160a01b0316610748576040516358e5a4af60e01b815260040160405180910390fd5b6001600160a01b03811661076f57604051631aa1808560e31b815260040160405180910390fd5b6007546001600160a01b039081169082160361079e57604051630666e2a560e01b815260040160405180910390fd5b6006546040805163379ed74560e21b8152905183926001600160a01b03908116929084169163de7b5d14916004808201926020929091908290030181865afa1580156107ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108109190613b44565b6001600160a01b0316146108375760405163f026367160e01b815260040160405180910390fd5b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b335f61086e6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa1580156108b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d69190613af1565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561092f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109539190613b6a565b1561097c576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f61098f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156109db573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a029190810190613bf6565b604001519050610a1b81600a5b60ff9081169116141590565b15610a3d578281604051632e87cd2360e11b8152600401610716929190613cc6565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9e9190613ce2565b9050610b2381610aac610490565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015610aff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f9190613ce2565b15610b45578381604051637f8084f960e01b8152600401610716929190613cc6565b5f610b586001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610b9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc09190613af1565b60035460405163db1e36e760e01b81526001600160601b038316600482015264ffffffffff891660248201529192506001600160a01b03169063db1e36e7906044015b5f604051808303815f87803b158015610c1a575f80fd5b505af1158015610c2c573d5f803e3d5ffd5b50505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610c5a610490565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610c98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbc9190613d11565b5f80516020613ed18339815191528054600160401b900460ff1680610cee575080546001600160401b03808416911610155b15610d0c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610d3683612dae565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f80516020613ed18339815191528054600160401b810460ff1615906001600160401b03165f81158015610db35750825b90505f826001600160401b03166001148015610dce5750303b155b905081158015610ddc575080155b15610dfa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e2457845460ff60401b1916600160401b1785555b610e2e8787612db6565b8315610e7557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f610e876118ab565b6001600160a01b0316336001600160a01b031614610eba5760405163086391f760e31b8152336004820152602401610716565b6006546001600160a01b031615610ee457604051632c237de760e11b815260040160405180910390fd5b6005546001600160a01b031615610f0e5760405163ab0cc43960e01b815260040160405180910390fd5b6008546001600160a01b031615610f385760405163558f4f7b60e11b815260040160405180910390fd5b6001600160a01b038216610f5f576040516309353e4560e11b815260040160405180910390fd5b5f8290505f816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fa0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc49190613b44565b90505f826001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa158015611003573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110279190613b44565b90505f8190505f846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108e9190613b44565b90505f8190505f866001600160a01b0316636dddada46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f59190613b44565b90505f8190505f886001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611138573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115c9190613b44565b9050806001600160a01b038916611186576040516327ccc33d60e11b815260040160405180910390fd5b6001600160a01b0387166111ac576040516295661560e31b815260040160405180910390fd5b6001600160a01b0385166111d35760405163e267254160e01b815260040160405180910390fd5b6001600160a01b0383166111fa5760405163bfebabd760e01b815260040160405180910390fd5b6001600160a01b038116611221576040516301fa2a2b60e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112819190613b44565b6001600160a01b03168a6001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ea9190613b44565b6001600160a01b031614611311576040516334ddf1a760e21b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561134d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113719190613b44565b6001600160a01b0316846001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113da9190613b44565b6001600160a01b0316146114015760405163e168da3760e01b815260040160405180910390fd5b876001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561143d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114619190613b44565b6001600160a01b0316826001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ca9190613b44565b6001600160a01b0316146114f157604051631129422760e31b815260040160405180910390fd5b896001600160a01b0316846001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611537573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155b9190613b44565b6001600160a01b03161461158257604051631b25e96d60e31b815260040160405180910390fd5b896001600160a01b0316866001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ec9190613b44565b6001600160a01b031614611613576040516331783c7160e11b815260040160405180910390fd5b600480546001600160a01b03199081166001600160a01b038c8116919091179092556005805482168a84161790556006805482168f8416908117909155600780548316898516179055600880548316878516179055600980549092168484161790915560025490915f911663026bc43b8361168c6118ab565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f604051808303815f875af11580156116d5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116fc9190810190613bf6565b519e9d5050505050505050505050505050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600a61173461179b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af4158015611777573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613d11565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af41580156117eb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613ce2565b3361182e5f80516020613eb1833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146118695760405162d1953b60e31b81526001600160a01b0382166004820152602401610716565b816001600160a01b03163b5f0361189e576040516361798f2f60e11b81526001600160a01b0383166004820152602401610716565b6118a782612f25565b5050565b5f805f80516020613e9183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611917573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061193b9190613b6a565b156119c6576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa15801561199c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c09190613b44565b91505090565b54600160601b90046001600160a01b0316919050565b5f80516020613eb183398151915280545f9190600160a01b900460ff16611a03575f6119c0565b638fb3603760e01b91505090565b335f611a256001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611a69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a8d9190613af1565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015611ae6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0a9190613b6a565b15611b33576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f611b466001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015611b92573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bb99190810190613bf6565b604001519050611bca81600a610a0f565b15611bec578281604051632e87cd2360e11b8152600401610716929190613cc6565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4d9190613ce2565b9050611c5b81610aac610490565b15611c7d578381604051637f8084f960e01b8152600401610716929190613cc6565b5f611c906001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611cd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf89190613af1565b600354604051636f61deef60e11b81526001600160601b0380841660048301526001600160a01b038b81166024840152908a16604483015292935091169063dec3bdde906064016020604051808303815f875af1158015611d5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d7f9190613af1565b5050505050505050565b5f803381611d95612f85565b9050611da181836130f3565b60025460405163026bc43b60e01b81526001600160a01b038084166004830152858116602483015292965091169063026bc43b906044015f604051808303815f875af1158015611df3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e1a9190810190613bf6565b5f0151925060035f9054906101000a90046001600160a01b03166001600160a01b03166381d9b45f8473__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af4158015611e8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eae9190613d2c565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af4158015611ef5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f199190613d47565b6040516001600160e01b031960e086901b1681526001600160601b03909316600484015264ffffffffff909116602483015260448201526064015f604051808303815f87803b158015611f6a575f80fd5b505af1158015611f7c573d5f803e3d5ffd5b505060405163776c828f60e01b81526001600160a01b0387811660048301528416925063776c828f91506024015f604051808303815f87803b158015611fc0575f80fd5b505af1158015611fd2573d5f803e3d5ffd5b5050604080516001600160601b03871681526001600160a01b03881660208201527f5f38ba73d945d51535b3c678f341052a70a580bed77c5db38464d02366c29fa8935001905060405180910390a150509091565b6001546001600160a01b0316604051630bee2f1560e11b81523360048201526001600160a01b0391909116906317dc5e2a90602401602060405180830381865afa158015612077573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209b9190613b6a565b6120ba576040516302613e9f60e51b8152336004820152602401610716565b6040516301ffc9a760e01b81526307bb0a0360e51b6004820152339081906301ffc9a790602401602060405180830381865afa1580156120fc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121209190613b6a565b612147576040516236c14d60e71b81526001600160a01b0382166004820152602401610716565b5f61215a6001546001600160a01b031690565b6040516308b09a5f60e41b81526001600160a01b0384811660048301529192505f91831690638b09a5f0906024015f60405180830381865afa1580156121a2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121c99190810190613bf6565b6020015160405163bf8e179760e01b81526001600160601b03821660048201529091505f906001600160a01b0384169063bf8e179790602401602060405180830381865afa15801561221d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122419190613b44565b505050505050565b335f61225d6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa1580156122a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122c59190613af1565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561231e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123429190613b6a565b1561236b576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f61237e6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156123ca573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123f19190810190613bf6565b60400151905061240281600a610a0f565b15612424578281604051632e87cd2360e11b8152600401610716929190613cc6565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612461573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124859190613ce2565b905061249381610aac610490565b156124b5578381604051637f8084f960e01b8152600401610716929190613cc6565b5f6124c86001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa15801561250c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125309190613af1565b60035460405163545c994560e11b81526001600160601b0383166004820152602481018990529192506001600160a01b03169063a8b9328a90604401610c03565b806125846001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03831660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156125d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f59190613b44565b6001600160a01b0316336001600160a01b031614612628576040516302613e9f60e51b8152336004820152602401610716565b81600a6001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa15801561268d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b19190613b6a565b6126e25760405163d711af7560e01b81526001600160601b038316600482015260ff82166024820152604401610716565b5f6126f56001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa158015612744573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261276b9190810190613bf6565b6080810151600754919250905f9061278b906001600160a01b0316613202565b604051636791f7ab60e01b81526001600160a01b03848116600483015291925090821690636791f7ab906024015f604051808303815f87803b1580156127cf575f80fd5b505af11580156127e1573d5f803e3d5ffd5b5050604051633def10c760e21b81526001600160a01b0384811660048301528516925063f7bc431c91506024015f604051808303815f87803b158015612825575f80fd5b505af1158015612837573d5f803e3d5ffd5b505050505050505050505050565b5f338161285a6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa15801561289e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c29190613af1565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561291b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061293f9190613b6a565b15612968576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f61297b6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156129c7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129ee9190810190613bf6565b6040015190506129ff81600a610a0f565b15612a21578281604051632e87cd2360e11b8152600401610716929190613cc6565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a5e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a829190613ce2565b9050612a9081610aac610490565b15612ab2578381604051637f8084f960e01b8152600401610716929190613cc6565b5f612ac56001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612b09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2d9190613af1565b6003546040516321ece65760e01b81526001600160601b0380841660048301528a1660248201529192506001600160a01b0316906321ece657906044016020604051808303815f875af1158015612b86573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612baa9190613af1565b505050505050919050565b5f805f80516020613e9183398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612c21573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c459190613b6a565b15612c715780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610716565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015612cc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ce79190613b6a565b612d0f5760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610716565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015612d61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d859190613af1565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6101c6613271565b5f80516020613ed18339815191528054600160401b810460ff1615906001600160401b03165f81158015612de75750825b90505f826001600160401b03166001148015612e025750303b155b905081158015612e10575080155b15612e2e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315612e5857845460ff60401b1916600160401b1785555b5f8087806020019051810190612e6e9190613d5e565b91509150612e7d82828b6132a9565b612e8760026133ee565b600280546001600160a01b0319166001600160a01b0392909216919091179055612eb160036133ee565b600380546001600160a01b0319166001600160a01b0392909216919091179055612ee163c0d33ff960e01b613485565b50508315610e7557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e6c565b5f80516020613eb183398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6004545f908190612f9e906001600160a01b0316613202565b600554909150612fb6906001600160a01b0316613202565b60405163189acdbd60e31b81526001600160a01b0380831660048301529193509082169063c4d66de8906024015f604051808303815f87803b158015612ffa575f80fd5b505af115801561300c573d5f803e3d5ffd5b50505050816001600160a01b031663485cc9558260055f9054906101000a90046001600160a01b03166001600160a01b0316638e5bc2936040518163ffffffff1660e01b8152600401602060405180830381865afa158015613070573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130949190613b44565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f604051808303815f87803b1580156130d9575f80fd5b505af11580156130eb573d5f803e3d5ffd5b505050505090565b6009545f90819061310c906001600160a01b0316613202565b6008549091505f90613126906001600160a01b0316613202565b6007549091505f90613140906001600160a01b0316613202565b600654909150613158906001600160a01b0316613202565b9350836001600160a01b031663cc2a9a5b8785858561317f6001546001600160a01b031690565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015293851660248501529184166044840152831660648301528216608482015290881660a482015260c4015f604051808303815f87803b1580156131e3575f80fd5b505af11580156131f5573d5f803e3d5ffd5b5050505050505092915050565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c175f526e5af43d82803e903d91602b57fd5bf38260781b17602052603760095ff090506001600160a01b03811661326c576040516330be1a3d60e21b815260040160405180910390fd5b919050565b5f80516020613ed183398151915254600160401b900460ff166132a757604051631afcd79f60e31b815260040160405180910390fd5b565b6132b1613271565b6132b96134b1565b6001600160a01b038216156132d6576132d1826134c1565b61334d565b5f6132e160026133ee565b905061334b816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613322573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133469190613b44565b6134c1565b505b6133c983846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa15801561338d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133b19190613af1565b60085f8560405180602001604052805f8152506134d5565b6133d9634a531f3360e01b613485565b6133e963daf9067160e01b613485565b505050565b5f6134016001546001600160a01b031690565b6001600160a01b031663d39e60438361341861179b565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801561345b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061347f9190613b44565b92915050565b61348d613271565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b6134b9613271565b6132a7613570565b6134c9613271565b6134d28161359e565b50565b6134dd613271565b6134e786836135af565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa301611d7f8382613dd6565b613578613271565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6135a6613271565b6134d281612f25565b6135b7613271565b6135c082613625565b6135c861372d565b6001600160a01b0381166135ef5760405163f17ef42d60e01b815260040160405180910390fd5b5f80516020613e9183398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b61362d613271565b806001600160a01b03163b5f036136625760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610716565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b81526325713e4b60e21b60048201526301ffc9a790602401602060405180830381865afa9250505080156136dc575060408051601f3d908101601f191682019092526136d991810190613b6a565b60015b6137045760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610716565b806118a75760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610716565b613735613271565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b5f60208284031215613782575f80fd5b81356001600160e01b031981168114613799575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151613816608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e08084015261385a6101008401826137a0565b949350505050565b6001600160a01b03811681146134d2575f80fd5b5f60208284031215613886575f80fd5b813561379981613862565b64ffffffffff811681146134d2575f80fd5b5f602082840312156138b3575f80fd5b813561379981613891565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b03811182821017156138f4576138f46138be565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613922576139226138be565b604052919050565b5f6001600160401b03821115613942576139426138be565b50601f01601f191660200190565b5f82601f83011261395f575f80fd5b813561397261396d8261392a565b6138fa565b818152846020838601011115613986575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156139b2575f80fd5b81356001600160401b038111156139c7575f80fd5b61385a84828501613950565b5f80604083850312156139e4575f80fd5b82356139ef81613862565b915060208301356001600160401b03811115613a09575f80fd5b613a1585828601613950565b9150509250929050565b6001600160601b03811681146134d2575f80fd5b5f8060408385031215613a44575f80fd5b8235613a4f81613862565b91506020830135613a5f81613a1f565b809150509250929050565b80151581146134d2575f80fd5b5f60208284031215613a87575f80fd5b813561379981613a6a565b5f60208284031215613aa2575f80fd5b5035919050565b5f60208284031215613ab9575f80fd5b813561379981613a1f565b5f60208284031215613ad4575f80fd5b815162ffffff81168114613799575f80fd5b805161326c81613a1f565b5f60208284031215613b01575f80fd5b815161379981613a1f565b600181811c90821680613b2057607f821691505b602082108103613b3e57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215613b54575f80fd5b815161379981613862565b805161326c81613a6a565b5f60208284031215613b7a575f80fd5b815161379981613a6a565b60ff811681146134d2575f80fd5b805161326c81613b85565b805161326c81613862565b5f82601f830112613bb8575f80fd5b8151613bc661396d8261392a565b818152846020838601011115613bda575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215613c06575f80fd5b81516001600160401b03811115613c1b575f80fd5b820160e08185031215613c2c575f80fd5b613c346138d2565b613c3d82613ae6565b8152613c4b60208301613ae6565b6020820152613c5c60408301613b93565b6040820152613c6d60608301613b5f565b6060820152613c7e60808301613b9e565b6080820152613c8f60a08301613b9e565b60a082015260c08201516001600160401b03811115613cac575f80fd5b613cb886828501613ba9565b60c083015250949350505050565b6001600160a01b0392909216825260ff16602082015260400190565b5f60208284031215613cf2575f80fd5b815161379981613b85565b6001600160401b03811681146134d2575f80fd5b5f60208284031215613d21575f80fd5b815161379981613cfd565b5f60208284031215613d3c575f80fd5b815161379981613891565b5f60208284031215613d57575f80fd5b5051919050565b5f8060408385031215613d6f575f80fd5b8251613d7a81613862565b6020840151909250613a5f81613862565b601f8211156133e957805f5260205f20601f840160051c81016020851015613db05750805b601f840160051c820191505b81811015613dcf575f8155600101613dbc565b5050505050565b81516001600160401b03811115613def57613def6138be565b613e0381613dfd8454613b0c565b84613d8b565b6020601f821160018114613e35575f8315613e1e5750848201515b5f19600385901b1c1916600184901b178455613dcf565b5f84815260208120601f198516915b82811015613e645787850151825560209485019460019092019101613e44565b5084821015613e8157868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122081274b43a5bb78b3c0ea9b25055e736b78cbc2e0caefbd0b4c4e05896bd1da7c64736f6c634300081a0033",
861
+ "bytecode": "0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61422c806100d65f395ff3fe608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80637a9e5e4b116100fe578063ada9652e1161009e578063bf7e214f1161006e578063bf7e214f1461043c578063c22f980d14610459578063e52ba1cb1461046c578063edabac031461047f575f80fd5b8063ada9652e146103fb578063b03d2a8e1461040f578063b68d180914610422578063b7d6851914610429575f80fd5b8063893d20e8116100d9578063893d20e8146103905780638fb3603714610398578063a2356b3a146103b9578063ad501467146103cc575f80fd5b80637a9e5e4b1461036e578063872309c7146103815780638899278a14610388575f80fd5b8063329d6e7411610169578063644c45e011610144578063644c45e0146103045780636a778e73146103215780636c741e781461033457806376b707b714610354575f80fd5b8063329d6e74146102b957806349bb9e4b146102cc5780635ab1bd53146102df575f80fd5b8063138461e0116101a4578063138461e01461023c5780631eff4b221461025c578063254f6866146102915780632d764ef8146102a6575f80fd5b806301ffc9a7146101ca5780630d8e6e2c1461020b5780630fec111c14610227575b5f80fd5b6101f66101d8366004613a78565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610213610490565b60405162ffffff9091168152602001610202565b61022f610517565b6040516102029190613ad4565b6102446106d5565b6040516001600160601b039091168152602001610202565b6102837f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610202565b6102a461029f366004613b7c565b6106df565b005b6102a46102b4366004613ba9565b61085a565b6102a46102c7366004613ca8565b610c38565b6102a46102da366004613cd9565b610d82565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610202565b5f80516020614197833981519152546001600160601b0316610244565b61024461032f366004613b7c565b610e7e565b61033c611a26565b6040516001600160401b039091168152602001610202565b61035c611ab2565b60405160ff9091168152602001610202565b6102a461037c366004613b7c565b611b26565b6102835f81565b610283600381565b6102ec611bc2565b6103a0611cf3565b6040516001600160e01b03199091168152602001610202565b6102a46103c7366004613d39565b611d28565b6103d46120a0565b604080516001600160a01b0390931683526001600160601b03909116602083015201610202565b6102835f8051602061419783398151915281565b6102a461041d366004613d7d565b61233e565b600a61035c565b6102a4610437366004613d98565b612560565b5f805160206141b7833981519152546001600160a01b03166102ec565b6102a4610467366004613daf565b612888565b61024461047a366004613daf565b612aaf565b6007546001600160a01b03166102ec565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af41580156104ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613dca565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190613df7565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610633611bc2565b6001600160a01b0316815260200182600101805461065090613e12565b80601f016020809104026020016040519081016040528092919081815260200182805461067c90613e12565b80156106c75780601f1061069e576101008083540402835291602001916106c7565b820191905f5260205f20905b8154815290600101906020018083116106aa57829003601f168201915b505050505081525091505090565b5f61051230612e1f565b6106e7611bc2565b6001600160a01b0316336001600160a01b03161461071f5760405163086391f760e31b81523360048201526024015b60405180910390fd5b6007546001600160a01b0316610748576040516358e5a4af60e01b815260040160405180910390fd5b6001600160a01b03811661076f57604051631aa1808560e31b815260040160405180910390fd5b6007546001600160a01b039081169082160361079e57604051630666e2a560e01b815260040160405180910390fd5b6006546040805163379ed74560e21b8152905183926001600160a01b03908116929084169163de7b5d14916004808201926020929091908290030181865afa1580156107ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108109190613e4a565b6001600160a01b0316146108375760405163f026367160e01b815260040160405180910390fd5b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b335f61086e6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa1580156108b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d69190613df7565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561092f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109539190613e70565b1561097c576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f61098f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156109db573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a029190810190613efc565b604001519050610a1b81600a5b60ff9081169116141590565b15610a3d578281604051632e87cd2360e11b8152600401610716929190613fcc565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9e9190613fe8565b9050610b2381610aac610490565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015610aff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f9190613fe8565b15610b45578381604051637f8084f960e01b8152600401610716929190613fcc565b5f610b586001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610b9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc09190613df7565b60035460405163db1e36e760e01b81526001600160601b038316600482015264ffffffffff891660248201529192506001600160a01b03169063db1e36e7906044015b5f604051808303815f87803b158015610c1a575f80fd5b505af1158015610c2c573d5f803e3d5ffd5b50505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610c5a610490565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610c98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbc9190614017565b5f805160206141d78339815191528054600160401b900460ff1680610cee575080546001600160401b03808416911610155b15610d0c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610d3683613018565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f805160206141d78339815191528054600160401b810460ff1615906001600160401b03165f81158015610db35750825b90505f826001600160401b03166001148015610dce5750303b155b905081158015610ddc575080155b15610dfa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e2457845460ff60401b1916600160401b1785555b610e2e8787613020565b8315610e7557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f610e87611bc2565b6001600160a01b0316336001600160a01b031614610eba5760405163086391f760e31b8152336004820152602401610716565b6006546001600160a01b031615610ee457604051632c237de760e11b815260040160405180910390fd5b6005546001600160a01b031615610f0e5760405163ab0cc43960e01b815260040160405180910390fd5b6008546001600160a01b031615610f385760405163558f4f7b60e11b815260040160405180910390fd5b6009546001600160a01b031615610f625760405163d518f81b60e01b815260040160405180910390fd5b6001600160a01b038216610f89576040516309353e4560e11b815260040160405180910390fd5b5f8290505f816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fee9190613e4a565b90505f826001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110519190613e4a565b90505f8190505f846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611094573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b89190613e4a565b90505f8190505f866001600160a01b0316636dddada46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111f9190613e4a565b90505f8190505f886001600160a01b0316630e0c586d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611162573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111869190613e4a565b90505f8190505f8a6001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ed9190613e4a565b9050806001600160a01b038b16611217576040516327ccc33d60e11b815260040160405180910390fd5b6001600160a01b03891661123d576040516295661560e31b815260040160405180910390fd5b6001600160a01b0387166112645760405163e267254160e01b815260040160405180910390fd5b6001600160a01b03851661128b5760405163bfebabd760e01b815260040160405180910390fd5b6001600160a01b0383166112b257604051634e336b1d60e11b815260040160405180910390fd5b6001600160a01b0381166112d9576040516301fa2a2b60e01b815260040160405180910390fd5b896001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611315573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113399190613e4a565b6001600160a01b03168c6001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a29190613e4a565b6001600160a01b0316146113c9576040516334ddf1a760e21b815260040160405180910390fd5b896001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611405573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114299190613e4a565b6001600160a01b0316866001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114929190613e4a565b6001600160a01b0316146114b95760405163e168da3760e01b815260040160405180910390fd5b896001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115199190613e4a565b6001600160a01b0316846001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115829190613e4a565b6001600160a01b0316146115a9576040516303bc742960e01b815260040160405180910390fd5b896001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116099190613e4a565b6001600160a01b0316826001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116729190613e4a565b6001600160a01b03161461169957604051631129422760e31b815260040160405180910390fd5b8b6001600160a01b0316866001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117039190613e4a565b6001600160a01b03161461172a57604051630bbd547960e01b815260040160405180910390fd5b8b6001600160a01b0316846001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611770573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117949190613e4a565b6001600160a01b0316146117bb57604051632b34b6d960e01b815260040160405180910390fd5b8b6001600160a01b0316886001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611801573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118259190613e4a565b6001600160a01b03161461184c576040516331783c7160e11b815260040160405180910390fd5b8a60045f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508860055f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508d60065f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508660075f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508460085f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508260095f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600a5f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505f60065f9054906101000a90046001600160a01b031690505f60025f9054906101000a90046001600160a01b03166001600160a01b031663026bc43b8361199b611bc2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f604051808303815f875af11580156119e4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a0b9190810190613efc565b9050805f01519e505050505050505050505050505050919050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600a611a4b611ab2565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af4158015611a8e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190614017565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611b02573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613fe8565b33611b455f805160206141b7833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b031614611b805760405162d1953b60e31b81526001600160a01b0382166004820152602401610716565b816001600160a01b03163b5f03611bb5576040516361798f2f60e11b81526001600160a01b0383166004820152602401610716565b611bbe8261318f565b5050565b5f805f8051602061419783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611c2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c529190613e70565b15611cdd576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611cb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd79190613e4a565b91505090565b54600160601b90046001600160a01b0316919050565b5f805160206141b783398151915280545f9190600160a01b900460ff16611d1a575f611cd7565b638fb3603760e01b91505090565b335f611d3c6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611d80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da49190613df7565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015611dfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e219190613e70565b15611e4a576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f611e5d6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015611ea9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ed09190810190613efc565b604001519050611ee181600a610a0f565b15611f03578281604051632e87cd2360e11b8152600401610716929190613fcc565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f649190613fe8565b9050611f7281610aac610490565b15611f94578381604051637f8084f960e01b8152600401610716929190613fcc565b5f611fa76001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190613df7565b600354604051636f61deef60e11b81526001600160601b0380841660048301526001600160a01b038b81166024840152908a16604483015292935091169063dec3bdde906064016020604051808303815f875af1158015612072573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120969190613df7565b5050505050505050565b5f8033816120ac6131ef565b90506120b88183613356565b60025460405163026bc43b60e01b81526001600160a01b038084166004830152858116602483015292965091169063026bc43b906044015f604051808303815f875af115801561210a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121319190810190613efc565b5f0151925060035f9054906101000a90046001600160a01b03166001600160a01b03166381d9b45f8473__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af41580156121a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c59190614032565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af415801561220c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612230919061404d565b6040516001600160e01b031960e086901b1681526001600160601b03909316600484015264ffffffffff909116602483015260448201526064015f604051808303815f87803b158015612281575f80fd5b505af1158015612293573d5f803e3d5ffd5b505060405163776c828f60e01b81526001600160a01b0387811660048301528416925063776c828f91506024015f604051808303815f87803b1580156122d7575f80fd5b505af11580156122e9573d5f803e3d5ffd5b5050604080516001600160601b03871681526001600160a01b03881660208201527f5f38ba73d945d51535b3c678f341052a70a580bed77c5db38464d02366c29fa8935001905060405180910390a150509091565b6001546001600160a01b0316604051630bee2f1560e11b81523360048201526001600160a01b0391909116906317dc5e2a90602401602060405180830381865afa15801561238e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b29190613e70565b6123d1576040516302613e9f60e51b8152336004820152602401610716565b6040516301ffc9a760e01b81526307bb0a0360e51b6004820152339081906301ffc9a790602401602060405180830381865afa158015612413573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124379190613e70565b61245e576040516236c14d60e71b81526001600160a01b0382166004820152602401610716565b5f6124716001546001600160a01b031690565b6040516308b09a5f60e41b81526001600160a01b0384811660048301529192505f91831690638b09a5f0906024015f60405180830381865afa1580156124b9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124e09190810190613efc565b6020015160405163bf8e179760e01b81526001600160601b03821660048201529091505f906001600160a01b0384169063bf8e179790602401602060405180830381865afa158015612534573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125589190613e4a565b505050505050565b335f6125746001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa1580156125b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dc9190613df7565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015612635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126599190613e70565b15612682576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f6126956001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156126e1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127089190810190613efc565b60400151905061271981600a610a0f565b1561273b578281604051632e87cd2360e11b8152600401610716929190613fcc565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612778573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279c9190613fe8565b90506127aa81610aac610490565b156127cc578381604051637f8084f960e01b8152600401610716929190613fcc565b5f6127df6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612823573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128479190613df7565b60035460405163545c994560e11b81526001600160601b0383166004820152602481018990529192506001600160a01b03169063a8b9328a90604401610c03565b8061289b6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03831660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156128e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061290c9190613e4a565b6001600160a01b0316336001600160a01b03161461293f576040516302613e9f60e51b8152336004820152602401610716565b81600a61294c828261348d565b5f61295f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa1580156129ae573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129d59190810190613efc565b6080810151600754919250905f906129f5906001600160a01b0316613544565b604051636791f7ab60e01b81526001600160a01b03848116600483015291925090821690636791f7ab906024015f604051808303815f87803b158015612a39575f80fd5b505af1158015612a4b573d5f803e3d5ffd5b5050604051633def10c760e21b81526001600160a01b0384811660048301528516925063f7bc431c91506024015f604051808303815f87803b158015612a8f575f80fd5b505af1158015612aa1573d5f803e3d5ffd5b505050505050505050505050565b5f3381612ac46001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612b08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2c9190613df7565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015612b85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba99190613e70565b15612bd2576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f612be56001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015612c31573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c589190810190613efc565b604001519050612c6981600a610a0f565b15612c8b578281604051632e87cd2360e11b8152600401610716929190613fcc565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cec9190613fe8565b9050612cfa81610aac610490565b15612d1c578381604051637f8084f960e01b8152600401610716929190613fcc565b5f612d2f6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612d73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d979190613df7565b6003546040516321ece65760e01b81526001600160601b0380841660048301528a1660248201529192506001600160a01b0316906321ece657906044016020604051808303815f875af1158015612df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e149190613df7565b505050505050919050565b5f805f8051602061419783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612e8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eaf9190613e70565b15612edb5780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610716565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015612f2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f519190613e70565b612f795760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610716565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015612fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fef9190613df7565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6101c66135b3565b5f805160206141d78339815191528054600160401b810460ff1615906001600160401b03165f811580156130515750825b90505f826001600160401b0316600114801561306c5750303b155b90508115801561307a575080155b156130985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156130c257845460ff60401b1916600160401b1785555b5f80878060200190518101906130d89190614064565b915091506130e782828b6135eb565b6130f16002613730565b600280546001600160a01b0319166001600160a01b039290921691909117905561311b6003613730565b600380546001600160a01b0319166001600160a01b039290921691909117905561314b63c0d33ff960e01b6137c7565b50508315610e7557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e6c565b5f805160206141b783398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6004545f908190613208906001600160a01b0316613544565b600554909150613220906001600160a01b0316613544565b60405163189acdbd60e31b81526001600160a01b0380831660048301529193509082169063c4d66de8906024015f604051808303815f87803b158015613264575f80fd5b505af1158015613276573d5f803e3d5ffd5b505050505f60055f9054906101000a90046001600160a01b03166001600160a01b0316638e5bc2936040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ef9190613e4a565b60405163485cc95560e01b81526001600160a01b03848116600483015280831660248301529192509084169063485cc955906044015f604051808303815f87803b15801561333b575f80fd5b505af115801561334d573d5f803e3d5ffd5b50505050505090565b600a545f90819061336f906001600160a01b0316613544565b6008549091505f90613389906001600160a01b0316613544565b6009549091505f906133a3906001600160a01b0316613544565b6007549091505f906133bd906001600160a01b0316613544565b6006549091505f906133d7906001600160a01b0316613544565b9050806001600160a01b0316633587647689878787876133ff6001546001600160a01b031690565b6040516001600160e01b031960e089901b1681526001600160a01b03968716600482015294861660248601529285166044850152908416606484015283166084830152821660a4820152908a1660c482015260e4015f604051808303815f87803b15801561346b575f80fd5b505af115801561347d573d5f803e3d5ffd5b50929a9950505050505050505050565b6001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa1580156134ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135139190613e70565b611bbe5760405163d711af7560e01b81526001600160601b038316600482015260ff82166024820152604401610716565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c175f526e5af43d82803e903d91602b57fd5bf38260781b17602052603760095ff090506001600160a01b0381166135ae576040516330be1a3d60e21b815260040160405180910390fd5b919050565b5f805160206141d783398151915254600160401b900460ff166135e957604051631afcd79f60e31b815260040160405180910390fd5b565b6135f36135b3565b6135fb6137f3565b6001600160a01b038216156136185761361382613803565b61368f565b5f6136236002613730565b905061368d816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613664573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136889190613e4a565b613803565b505b61370b83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136f39190613df7565b60085f8560405180602001604052805f815250613817565b61371b634a531f3360e01b6137c7565b61372b63daf9067160e01b6137c7565b505050565b5f6137436001546001600160a01b031690565b6001600160a01b031663d39e60438361375a611ab2565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801561379d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137c19190613e4a565b92915050565b6137cf6135b3565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b6137fb6135b3565b6135e96138b2565b61380b6135b3565b613814816138e0565b50565b61381f6135b3565b61382986836138f1565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30161209683826140dc565b6138ba6135b3565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6138e86135b3565b6138148161318f565b6138f96135b3565b61390282613967565b61390a613a33565b6001600160a01b0381166139315760405163f17ef42d60e01b815260040160405180910390fd5b5f8051602061419783398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b61396f6135b3565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af41580156139c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139e99190613e70565b613a115760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610716565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b613a3b6135b3565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b5f60208284031215613a88575f80fd5b81356001600160e01b031981168114613a9f575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151613b1c608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152613b60610100840182613aa6565b949350505050565b6001600160a01b0381168114613814575f80fd5b5f60208284031215613b8c575f80fd5b8135613a9f81613b68565b64ffffffffff81168114613814575f80fd5b5f60208284031215613bb9575f80fd5b8135613a9f81613b97565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715613bfa57613bfa613bc4565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613c2857613c28613bc4565b604052919050565b5f6001600160401b03821115613c4857613c48613bc4565b50601f01601f191660200190565b5f82601f830112613c65575f80fd5b8135613c78613c7382613c30565b613c00565b818152846020838601011115613c8c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215613cb8575f80fd5b81356001600160401b03811115613ccd575f80fd5b613b6084828501613c56565b5f8060408385031215613cea575f80fd5b8235613cf581613b68565b915060208301356001600160401b03811115613d0f575f80fd5b613d1b85828601613c56565b9150509250929050565b6001600160601b0381168114613814575f80fd5b5f8060408385031215613d4a575f80fd5b8235613d5581613b68565b91506020830135613d6581613d25565b809150509250929050565b8015158114613814575f80fd5b5f60208284031215613d8d575f80fd5b8135613a9f81613d70565b5f60208284031215613da8575f80fd5b5035919050565b5f60208284031215613dbf575f80fd5b8135613a9f81613d25565b5f60208284031215613dda575f80fd5b815162ffffff81168114613a9f575f80fd5b80516135ae81613d25565b5f60208284031215613e07575f80fd5b8151613a9f81613d25565b600181811c90821680613e2657607f821691505b602082108103613e4457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215613e5a575f80fd5b8151613a9f81613b68565b80516135ae81613d70565b5f60208284031215613e80575f80fd5b8151613a9f81613d70565b60ff81168114613814575f80fd5b80516135ae81613e8b565b80516135ae81613b68565b5f82601f830112613ebe575f80fd5b8151613ecc613c7382613c30565b818152846020838601011115613ee0575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215613f0c575f80fd5b81516001600160401b03811115613f21575f80fd5b820160e08185031215613f32575f80fd5b613f3a613bd8565b613f4382613dec565b8152613f5160208301613dec565b6020820152613f6260408301613e99565b6040820152613f7360608301613e65565b6060820152613f8460808301613ea4565b6080820152613f9560a08301613ea4565b60a082015260c08201516001600160401b03811115613fb2575f80fd5b613fbe86828501613eaf565b60c083015250949350505050565b6001600160a01b0392909216825260ff16602082015260400190565b5f60208284031215613ff8575f80fd5b8151613a9f81613e8b565b6001600160401b0381168114613814575f80fd5b5f60208284031215614027575f80fd5b8151613a9f81614003565b5f60208284031215614042575f80fd5b8151613a9f81613b97565b5f6020828403121561405d575f80fd5b5051919050565b5f8060408385031215614075575f80fd5b825161408081613b68565b6020840151909250613d6581613b68565b601f82111561372b57805f5260205f20601f840160051c810160208510156140b65750805b601f840160051c820191505b818110156140d5575f81556001016140c2565b5050505050565b81516001600160401b038111156140f5576140f5613bc4565b614109816141038454613e12565b84614091565b6020601f82116001811461413b575f83156141245750848201515b5f19600385901b1c1916600184901b1784556140d5565b5f84815260208120601f198516915b8281101561416a578785015182556020948501946001909201910161414a565b508482101561418757868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122054c61baeec84ab5e2dc0aaa64a1e0f2011aac496c45d664239ecd3f0aeab912e64736f6c634300081a0033",
862
+ "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101c6575f3560e01c80637a9e5e4b116100fe578063ada9652e1161009e578063bf7e214f1161006e578063bf7e214f1461043c578063c22f980d14610459578063e52ba1cb1461046c578063edabac031461047f575f80fd5b8063ada9652e146103fb578063b03d2a8e1461040f578063b68d180914610422578063b7d6851914610429575f80fd5b8063893d20e8116100d9578063893d20e8146103905780638fb3603714610398578063a2356b3a146103b9578063ad501467146103cc575f80fd5b80637a9e5e4b1461036e578063872309c7146103815780638899278a14610388575f80fd5b8063329d6e7411610169578063644c45e011610144578063644c45e0146103045780636a778e73146103215780636c741e781461033457806376b707b714610354575f80fd5b8063329d6e74146102b957806349bb9e4b146102cc5780635ab1bd53146102df575f80fd5b8063138461e0116101a4578063138461e01461023c5780631eff4b221461025c578063254f6866146102915780632d764ef8146102a6575f80fd5b806301ffc9a7146101ca5780630d8e6e2c1461020b5780630fec111c14610227575b5f80fd5b6101f66101d8366004613a78565b6001600160e01b0319165f9081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b610213610490565b60405162ffffff9091168152602001610202565b61022f610517565b6040516102029190613ad4565b6102446106d5565b6040516001600160601b039091168152602001610202565b6102837f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b604051908152602001610202565b6102a461029f366004613b7c565b6106df565b005b6102a46102b4366004613ba9565b61085a565b6102a46102c7366004613ca8565b610c38565b6102a46102da366004613cd9565b610d82565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610202565b5f80516020614197833981519152546001600160601b0316610244565b61024461032f366004613b7c565b610e7e565b61033c611a26565b6040516001600160401b039091168152602001610202565b61035c611ab2565b60405160ff9091168152602001610202565b6102a461037c366004613b7c565b611b26565b6102835f81565b610283600381565b6102ec611bc2565b6103a0611cf3565b6040516001600160e01b03199091168152602001610202565b6102a46103c7366004613d39565b611d28565b6103d46120a0565b604080516001600160a01b0390931683526001600160601b03909116602083015201610202565b6102835f8051602061419783398151915281565b6102a461041d366004613d7d565b61233e565b600a61035c565b6102a4610437366004613d98565b612560565b5f805160206141b7833981519152546001600160a01b03166102ec565b6102a4610467366004613daf565b612888565b61024461047a366004613daf565b612aaf565b6007546001600160a01b03166102ec565b604051632efe011360e01b8152600360048201525f60248201819052604482018190529073__$8eede297b65ed5a56eb3f84d8232ae93f5$__90632efe011390606401602060405180830381865af41580156104ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613dca565b905090565b6040805160e0810182525f8082526020820181905291810182905260608082018390526080820183905260a082019290925260c08101919091525f7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e0016040528073__$94a2c899be079b00d952d0d84fffaa5c34$__63bc1b392d6040518163ffffffff1660e01b8152600401602060405180830381865af41580156105c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105eb9190613df7565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610633611bc2565b6001600160a01b0316815260200182600101805461065090613e12565b80601f016020809104026020016040519081016040528092919081815260200182805461067c90613e12565b80156106c75780601f1061069e576101008083540402835291602001916106c7565b820191905f5260205f20905b8154815290600101906020018083116106aa57829003601f168201915b505050505081525091505090565b5f61051230612e1f565b6106e7611bc2565b6001600160a01b0316336001600160a01b03161461071f5760405163086391f760e31b81523360048201526024015b60405180910390fd5b6007546001600160a01b0316610748576040516358e5a4af60e01b815260040160405180910390fd5b6001600160a01b03811661076f57604051631aa1808560e31b815260040160405180910390fd5b6007546001600160a01b039081169082160361079e57604051630666e2a560e01b815260040160405180910390fd5b6006546040805163379ed74560e21b8152905183926001600160a01b03908116929084169163de7b5d14916004808201926020929091908290030181865afa1580156107ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108109190613e4a565b6001600160a01b0316146108375760405163f026367160e01b815260040160405180910390fd5b50600780546001600160a01b0319166001600160a01b0392909216919091179055565b335f61086e6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa1580156108b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d69190613df7565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af415801561092f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109539190613e70565b1561097c576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f61098f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156109db573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a029190810190613efc565b604001519050610a1b81600a5b60ff9081169116141590565b15610a3d578281604051632e87cd2360e11b8152600401610716929190613fcc565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9e9190613fe8565b9050610b2381610aac610490565b60405163c9e66e2960e01b815262ffffff909116600482015273__$8eede297b65ed5a56eb3f84d8232ae93f5$__9063c9e66e2990602401602060405180830381865af4158015610aff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0f9190613fe8565b15610b45578381604051637f8084f960e01b8152600401610716929190613fcc565b5f610b586001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015610b9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc09190613df7565b60035460405163db1e36e760e01b81526001600160601b038316600482015264ffffffffff891660248201529192506001600160a01b03169063db1e36e7906044015b5f604051808303815f87803b158015610c1a575f80fd5b505af1158015610c2c573d5f803e3d5ffd5b50505050505050505050565b73__$8eede297b65ed5a56eb3f84d8232ae93f5$__63a123b37c610c5a610490565b6040516001600160e01b031960e084901b16815262ffffff9091166004820152602401602060405180830381865af4158015610c98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbc9190614017565b5f805160206141d78339815191528054600160401b900460ff1680610cee575080546001600160401b03808416911610155b15610d0c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610d3683613018565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f805160206141d78339815191528054600160401b810460ff1615906001600160401b03165f81158015610db35750825b90505f826001600160401b03166001148015610dce5750303b155b905081158015610ddc575080155b15610dfa5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e2457845460ff60401b1916600160401b1785555b610e2e8787613020565b8315610e7557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2906020015b60405180910390a15b50505050505050565b5f610e87611bc2565b6001600160a01b0316336001600160a01b031614610eba5760405163086391f760e31b8152336004820152602401610716565b6006546001600160a01b031615610ee457604051632c237de760e11b815260040160405180910390fd5b6005546001600160a01b031615610f0e5760405163ab0cc43960e01b815260040160405180910390fd5b6008546001600160a01b031615610f385760405163558f4f7b60e11b815260040160405180910390fd5b6009546001600160a01b031615610f625760405163d518f81b60e01b815260040160405180910390fd5b6001600160a01b038216610f89576040516309353e4560e11b815260040160405180910390fd5b5f8290505f816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fee9190613e4a565b90505f826001600160a01b031663311adb686040518163ffffffff1660e01b8152600401602060405180830381865afa15801561102d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110519190613e4a565b90505f8190505f846001600160a01b03166302cd30716040518163ffffffff1660e01b8152600401602060405180830381865afa158015611094573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b89190613e4a565b90505f8190505f866001600160a01b0316636dddada46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111f9190613e4a565b90505f8190505f886001600160a01b0316630e0c586d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611162573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111869190613e4a565b90505f8190505f8a6001600160a01b031663d4cda0d86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ed9190613e4a565b9050806001600160a01b038b16611217576040516327ccc33d60e11b815260040160405180910390fd5b6001600160a01b03891661123d576040516295661560e31b815260040160405180910390fd5b6001600160a01b0387166112645760405163e267254160e01b815260040160405180910390fd5b6001600160a01b03851661128b5760405163bfebabd760e01b815260040160405180910390fd5b6001600160a01b0383166112b257604051634e336b1d60e11b815260040160405180910390fd5b6001600160a01b0381166112d9576040516301fa2a2b60e01b815260040160405180910390fd5b896001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611315573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113399190613e4a565b6001600160a01b03168c6001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561137e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113a29190613e4a565b6001600160a01b0316146113c9576040516334ddf1a760e21b815260040160405180910390fd5b896001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611405573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114299190613e4a565b6001600160a01b0316866001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114929190613e4a565b6001600160a01b0316146114b95760405163e168da3760e01b815260040160405180910390fd5b896001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115199190613e4a565b6001600160a01b0316846001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561155e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115829190613e4a565b6001600160a01b0316146115a9576040516303bc742960e01b815260040160405180910390fd5b896001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116099190613e4a565b6001600160a01b0316826001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116729190613e4a565b6001600160a01b03161461169957604051631129422760e31b815260040160405180910390fd5b8b6001600160a01b0316866001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117039190613e4a565b6001600160a01b03161461172a57604051630bbd547960e01b815260040160405180910390fd5b8b6001600160a01b0316846001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611770573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117949190613e4a565b6001600160a01b0316146117bb57604051632b34b6d960e01b815260040160405180910390fd5b8b6001600160a01b0316886001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611801573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118259190613e4a565b6001600160a01b03161461184c576040516331783c7160e11b815260040160405180910390fd5b8a60045f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508860055f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508d60065f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508660075f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508460085f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508260095f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600a5f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505f60065f9054906101000a90046001600160a01b031690505f60025f9054906101000a90046001600160a01b03166001600160a01b031663026bc43b8361199b611bc2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044015f604051808303815f875af11580156119e4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611a0b9190810190613efc565b9050805f01519e505050505050505050505050505050919050565b5f73__$1d92393fa9ccd763988368ce8a1cb90d26$__63dda777d3600a611a4b611ab2565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865af4158015611a8e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190614017565b604051632392b61b60e21b8152600360048201525f9073__$b659da7d8a6d2d32aa6c1e17da23dc2174$__90638e4ad86c90602401602060405180830381865af4158015611b02573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105129190613fe8565b33611b455f805160206141b7833981519152546001600160a01b031690565b6001600160a01b0316816001600160a01b031614611b805760405162d1953b60e31b81526001600160a01b0382166004820152602401610716565b816001600160a01b03163b5f03611bb5576040516361798f2f60e11b81526001600160a01b0383166004820152602401610716565b611bbe8261318f565b5050565b5f805f8051602061419783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015611c2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c529190613e70565b15611cdd576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611cb3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd79190613e4a565b91505090565b54600160601b90046001600160a01b0316919050565b5f805160206141b783398151915280545f9190600160a01b900460ff16611d1a575f611cd7565b638fb3603760e01b91505090565b335f611d3c6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611d80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da49190613df7565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015611dfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e219190613e70565b15611e4a576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f611e5d6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015611ea9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611ed09190810190613efc565b604001519050611ee181600a610a0f565b15611f03578281604051632e87cd2360e11b8152600401610716929190613fcc565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f649190613fe8565b9050611f7281610aac610490565b15611f94578381604051637f8084f960e01b8152600401610716929190613fcc565b5f611fa76001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015611feb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200f9190613df7565b600354604051636f61deef60e11b81526001600160601b0380841660048301526001600160a01b038b81166024840152908a16604483015292935091169063dec3bdde906064016020604051808303815f875af1158015612072573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120969190613df7565b5050505050505050565b5f8033816120ac6131ef565b90506120b88183613356565b60025460405163026bc43b60e01b81526001600160a01b038084166004830152858116602483015292965091169063026bc43b906044015f604051808303815f875af115801561210a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121319190810190613efc565b5f0151925060035f9054906101000a90046001600160a01b03166001600160a01b03166381d9b45f8473__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63c6edc3dd6040518163ffffffff1660e01b8152600401602060405180830381865af41580156121a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c59190614032565b73__$fb6c7635e3c1acf7e7d82c7d43e7a24671$__63f87bf3736040518163ffffffff1660e01b8152600401602060405180830381865af415801561220c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612230919061404d565b6040516001600160e01b031960e086901b1681526001600160601b03909316600484015264ffffffffff909116602483015260448201526064015f604051808303815f87803b158015612281575f80fd5b505af1158015612293573d5f803e3d5ffd5b505060405163776c828f60e01b81526001600160a01b0387811660048301528416925063776c828f91506024015f604051808303815f87803b1580156122d7575f80fd5b505af11580156122e9573d5f803e3d5ffd5b5050604080516001600160601b03871681526001600160a01b03881660208201527f5f38ba73d945d51535b3c678f341052a70a580bed77c5db38464d02366c29fa8935001905060405180910390a150509091565b6001546001600160a01b0316604051630bee2f1560e11b81523360048201526001600160a01b0391909116906317dc5e2a90602401602060405180830381865afa15801561238e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b29190613e70565b6123d1576040516302613e9f60e51b8152336004820152602401610716565b6040516301ffc9a760e01b81526307bb0a0360e51b6004820152339081906301ffc9a790602401602060405180830381865afa158015612413573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124379190613e70565b61245e576040516236c14d60e71b81526001600160a01b0382166004820152602401610716565b5f6124716001546001600160a01b031690565b6040516308b09a5f60e41b81526001600160a01b0384811660048301529192505f91831690638b09a5f0906024015f60405180830381865afa1580156124b9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124e09190810190613efc565b6020015160405163bf8e179760e01b81526001600160601b03821660048201529091505f906001600160a01b0384169063bf8e179790602401602060405180830381865afa158015612534573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125589190613e4a565b505050505050565b335f6125746001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa1580156125b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125dc9190613df7565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015612635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126599190613e70565b15612682576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f6126956001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa1580156126e1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526127089190810190613efc565b60400151905061271981600a610a0f565b1561273b578281604051632e87cd2360e11b8152600401610716929190613fcc565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612778573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279c9190613fe8565b90506127aa81610aac610490565b156127cc578381604051637f8084f960e01b8152600401610716929190613fcc565b5f6127df6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612823573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128479190613df7565b60035460405163545c994560e11b81526001600160601b0383166004820152602481018990529192506001600160a01b03169063a8b9328a90604401610c03565b8061289b6001546001600160a01b031690565b604051631c5da14d60e11b81526001600160601b03831660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa1580156128e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061290c9190613e4a565b6001600160a01b0316336001600160a01b03161461293f576040516302613e9f60e51b8152336004820152602401610716565b81600a61294c828261348d565b5f61295f6001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03871660048201529091505f906001600160a01b0383169063a48f42e0906024015f60405180830381865afa1580156129ae573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526129d59190810190613efc565b6080810151600754919250905f906129f5906001600160a01b0316613544565b604051636791f7ab60e01b81526001600160a01b03848116600483015291925090821690636791f7ab906024015f604051808303815f87803b158015612a39575f80fd5b505af1158015612a4b573d5f803e3d5ffd5b5050604051633def10c760e21b81526001600160a01b0384811660048301528516925063f7bc431c91506024015f604051808303815f87803b158015612a8f575f80fd5b505af1158015612aa1573d5f803e3d5ffd5b505050505050505050505050565b5f3381612ac46001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612b08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b2c9190613df7565b604051630a4d29dd60e31b81526001600160601b038216600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906352694ee890602401602060405180830381865af4158015612b85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba99190613e70565b15612bd2576040516308afbeb960e31b81526001600160a01b0383166004820152602401610716565b5f612be56001546001600160a01b031690565b6040516305247a1760e51b81526001600160601b03841660048201526001600160a01b03919091169063a48f42e0906024015f60405180830381865afa158015612c31573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c589190810190613efc565b604001519050612c6981600a610a0f565b15612c8b578281604051632e87cd2360e11b8152600401610716929190613fcc565b5f836001600160a01b03166376b707b76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cec9190613fe8565b9050612cfa81610aac610490565b15612d1c578381604051637f8084f960e01b8152600401610716929190613fcc565b5f612d2f6001546001600160a01b031690565b604051632f2a35f760e11b81523360048201526001600160a01b039190911690635e546bee90602401602060405180830381865afa158015612d73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d979190613df7565b6003546040516321ece65760e01b81526001600160601b0380841660048301528a1660248201529192506001600160a01b0316906321ece657906044016020604051808303815f875af1158015612df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e149190613df7565b505050505050919050565b5f805f8051602061419783398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$94a2c899be079b00d952d0d84fffaa5c34$__906330b8415f90602401602060405180830381865af4158015612e8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eaf9190613e70565b15612edb5780546040516301ab8b6760e21b81526001600160601b039091166004820152602401610716565b6001546001600160a01b031660405163c3c5a54760e01b81526001600160a01b038581166004830152919091169063c3c5a54790602401602060405180830381865afa158015612f2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612f519190613e70565b612f795760405163b9304b0d60e01b81526001600160a01b0384166004820152602401610716565b6001546001600160a01b0316604051632f2a35f760e11b81526001600160a01b0385811660048301529190911690635e546bee90602401602060405180830381865afa158015612fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fef9190613df7565b81546bffffffffffffffffffffffff19166001600160601b039190911690811790915592915050565b6101c66135b3565b5f805160206141d78339815191528054600160401b810460ff1615906001600160401b03165f811580156130515750825b90505f826001600160401b0316600114801561306c5750303b155b90508115801561307a575080155b156130985760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156130c257845460ff60401b1916600160401b1785555b5f80878060200190518101906130d89190614064565b915091506130e782828b6135eb565b6130f16002613730565b600280546001600160a01b0319166001600160a01b039290921691909117905561311b6003613730565b600380546001600160a01b0319166001600160a01b039290921691909117905561314b63c0d33ff960e01b6137c7565b50508315610e7557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602001610e6c565b5f805160206141b783398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b6004545f908190613208906001600160a01b0316613544565b600554909150613220906001600160a01b0316613544565b60405163189acdbd60e31b81526001600160a01b0380831660048301529193509082169063c4d66de8906024015f604051808303815f87803b158015613264575f80fd5b505af1158015613276573d5f803e3d5ffd5b505050505f60055f9054906101000a90046001600160a01b03166001600160a01b0316638e5bc2936040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906132ef9190613e4a565b60405163485cc95560e01b81526001600160a01b03848116600483015280831660248301529192509084169063485cc955906044015f604051808303815f87803b15801561333b575f80fd5b505af115801561334d573d5f803e3d5ffd5b50505050505090565b600a545f90819061336f906001600160a01b0316613544565b6008549091505f90613389906001600160a01b0316613544565b6009549091505f906133a3906001600160a01b0316613544565b6007549091505f906133bd906001600160a01b0316613544565b6006549091505f906133d7906001600160a01b0316613544565b9050806001600160a01b0316633587647689878787876133ff6001546001600160a01b031690565b6040516001600160e01b031960e089901b1681526001600160a01b03968716600482015294861660248601529285166044850152908416606484015283166084830152821660a4820152908a1660c482015260e4015f604051808303815f87803b15801561346b575f80fd5b505af115801561347d573d5f803e3d5ffd5b50929a9950505050505050505050565b6001546001600160a01b0316604051635b12715d60e11b81526001600160601b038416600482015260ff831660248201526001600160a01b03919091169063b624e2ba90604401602060405180830381865afa1580156134ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135139190613e70565b611bbe5760405163d711af7560e01b81526001600160601b038316600482015260ff82166024820152604401610716565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c175f526e5af43d82803e903d91602b57fd5bf38260781b17602052603760095ff090506001600160a01b0381166135ae576040516330be1a3d60e21b815260040160405180910390fd5b919050565b5f805160206141d783398151915254600160401b900460ff166135e957604051631afcd79f60e31b815260040160405180910390fd5b565b6135f36135b3565b6135fb6137f3565b6001600160a01b038216156136185761361382613803565b61368f565b5f6136236002613730565b905061368d816001600160a01b031663bf7e214f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613664573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136889190613e4a565b613803565b505b61370b83846001600160a01b031663644c45e06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136f39190613df7565b60085f8560405180602001604052805f815250613817565b61371b634a531f3360e01b6137c7565b61372b63daf9067160e01b6137c7565b505050565b5f6137436001546001600160a01b031690565b6001600160a01b031663d39e60438361375a611ab2565b6040516001600160e01b031960e085901b16815260ff928316600482015291166024820152604401602060405180830381865afa15801561379d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137c19190613e4a565b92915050565b6137cf6135b3565b6001600160e01b0319165f908152602081905260409020805460ff19166001179055565b6137fb6135b3565b6135e96138b2565b61380b6135b3565b613814816138e0565b50565b61381f6135b3565b61382986836138f1565b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0387166cffffffffffffffffffffffffff1990911617600160601b60ff8716021760ff60681b1916600160681b851515021781557f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30161209683826140dc565b6138ba6135b3565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6138e86135b3565b6138148161318f565b6138f96135b3565b61390282613967565b61390a613a33565b6001600160a01b0381166139315760405163f17ef42d60e01b815260040160405180910390fd5b5f8051602061419783398151915280546001600160601b0316600160601b6001600160a01b039093169290920291909117905550565b61396f6135b3565b604051633334d16b60e01b81526001600160a01b038216600482015273__$fb599632d08395912d9d70eb2f0f93b5e2$__90633334d16b90602401602060405180830381865af41580156139c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139e99190613e70565b613a115760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610716565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b613a3b6135b3565b6301ffc9a760e01b5f9081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b5f60208284031215613a88575f80fd5b81356001600160e01b031981168114613a9f575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081526001600160601b0382511660208201526001600160601b03602083015116604082015260ff60408301511660608201525f6060830151613b1c608084018215159052565b5060808301516001600160a01b03811660a08401525060a08301516001600160a01b03811660c08401525060c083015160e080840152613b60610100840182613aa6565b949350505050565b6001600160a01b0381168114613814575f80fd5b5f60208284031215613b8c575f80fd5b8135613a9f81613b68565b64ffffffffff81168114613814575f80fd5b5f60208284031215613bb9575f80fd5b8135613a9f81613b97565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715613bfa57613bfa613bc4565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613c2857613c28613bc4565b604052919050565b5f6001600160401b03821115613c4857613c48613bc4565b50601f01601f191660200190565b5f82601f830112613c65575f80fd5b8135613c78613c7382613c30565b613c00565b818152846020838601011115613c8c575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215613cb8575f80fd5b81356001600160401b03811115613ccd575f80fd5b613b6084828501613c56565b5f8060408385031215613cea575f80fd5b8235613cf581613b68565b915060208301356001600160401b03811115613d0f575f80fd5b613d1b85828601613c56565b9150509250929050565b6001600160601b0381168114613814575f80fd5b5f8060408385031215613d4a575f80fd5b8235613d5581613b68565b91506020830135613d6581613d25565b809150509250929050565b8015158114613814575f80fd5b5f60208284031215613d8d575f80fd5b8135613a9f81613d70565b5f60208284031215613da8575f80fd5b5035919050565b5f60208284031215613dbf575f80fd5b8135613a9f81613d25565b5f60208284031215613dda575f80fd5b815162ffffff81168114613a9f575f80fd5b80516135ae81613d25565b5f60208284031215613e07575f80fd5b8151613a9f81613d25565b600181811c90821680613e2657607f821691505b602082108103613e4457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215613e5a575f80fd5b8151613a9f81613b68565b80516135ae81613d70565b5f60208284031215613e80575f80fd5b8151613a9f81613d70565b60ff81168114613814575f80fd5b80516135ae81613e8b565b80516135ae81613b68565b5f82601f830112613ebe575f80fd5b8151613ecc613c7382613c30565b818152846020838601011115613ee0575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f60208284031215613f0c575f80fd5b81516001600160401b03811115613f21575f80fd5b820160e08185031215613f32575f80fd5b613f3a613bd8565b613f4382613dec565b8152613f5160208301613dec565b6020820152613f6260408301613e99565b6040820152613f7360608301613e65565b6060820152613f8460808301613ea4565b6080820152613f9560a08301613ea4565b60a082015260c08201516001600160401b03811115613fb2575f80fd5b613fbe86828501613eaf565b60c083015250949350505050565b6001600160a01b0392909216825260ff16602082015260400190565b5f60208284031215613ff8575f80fd5b8151613a9f81613e8b565b6001600160401b0381168114613814575f80fd5b5f60208284031215614027575f80fd5b8151613a9f81614003565b5f60208284031215614042575f80fd5b8151613a9f81613b97565b5f6020828403121561405d575f80fd5b5051919050565b5f8060408385031215614075575f80fd5b825161408081613b68565b6020840151909250613d6581613b68565b601f82111561372b57805f5260205f20601f840160051c810160208510156140b65750805b601f840160051c820191505b818110156140d5575f81556001016140c2565b5050505050565b81516001600160401b038111156140f5576140f5613bc4565b614109816141038454613e12565b84614091565b6020601f82116001811461413b575f83156141245750848201515b5f19600385901b1c1916600184901b1784556140d5565b5f84815260208120601f198516915b8281101561416a578785015182556020948501946001909201910161414a565b508482101561418757868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122054c61baeec84ab5e2dc0aaa64a1e0f2011aac496c45d664239ecd3f0aeab912e64736f6c634300081a0033",
843
863
  "linkReferences": {
864
+ "contracts/shared/ContractLib.sol": {
865
+ "ContractLib": [
866
+ {
867
+ "length": 20,
868
+ "start": 14947
869
+ }
870
+ ]
871
+ },
844
872
  "contracts/staking/TargetManagerLib.sol": {
845
873
  "TargetManagerLib": [
846
874
  {
847
875
  "length": 20,
848
- "start": 7963
876
+ "start": 8754
849
877
  },
850
878
  {
851
879
  "length": 20,
852
- "start": 8070
880
+ "start": 8861
853
881
  }
854
882
  ]
855
883
  },
@@ -865,23 +893,23 @@
865
893
  },
866
894
  {
867
895
  "length": 20,
868
- "start": 6581
896
+ "start": 7372
869
897
  },
870
898
  {
871
899
  "length": 20,
872
- "start": 7044
900
+ "start": 7835
873
901
  },
874
902
  {
875
903
  "length": 20,
876
- "start": 9148
904
+ "start": 9939
877
905
  },
878
906
  {
879
907
  "length": 20,
880
- "start": 10681
908
+ "start": 11299
881
909
  },
882
910
  {
883
911
  "length": 20,
884
- "start": 11455
912
+ "start": 12073
885
913
  }
886
914
  ]
887
915
  },
@@ -889,7 +917,7 @@
889
917
  "RoleIdLib": [
890
918
  {
891
919
  "length": 20,
892
- "start": 6120
920
+ "start": 6911
893
921
  }
894
922
  ]
895
923
  },
@@ -911,21 +939,29 @@
911
939
  "VersionPartLib": [
912
940
  {
913
941
  "length": 20,
914
- "start": 6281
942
+ "start": 7072
915
943
  }
916
944
  ]
917
945
  }
918
946
  },
919
947
  "deployedLinkReferences": {
948
+ "contracts/shared/ContractLib.sol": {
949
+ "ContractLib": [
950
+ {
951
+ "length": 20,
952
+ "start": 14733
953
+ }
954
+ ]
955
+ },
920
956
  "contracts/staking/TargetManagerLib.sol": {
921
957
  "TargetManagerLib": [
922
958
  {
923
959
  "length": 20,
924
- "start": 7749
960
+ "start": 8540
925
961
  },
926
962
  {
927
963
  "length": 20,
928
- "start": 7856
964
+ "start": 8647
929
965
  }
930
966
  ]
931
967
  },
@@ -941,23 +977,23 @@
941
977
  },
942
978
  {
943
979
  "length": 20,
944
- "start": 6367
980
+ "start": 7158
945
981
  },
946
982
  {
947
983
  "length": 20,
948
- "start": 6830
984
+ "start": 7621
949
985
  },
950
986
  {
951
987
  "length": 20,
952
- "start": 8934
988
+ "start": 9725
953
989
  },
954
990
  {
955
991
  "length": 20,
956
- "start": 10467
992
+ "start": 11085
957
993
  },
958
994
  {
959
995
  "length": 20,
960
- "start": 11241
996
+ "start": 11859
961
997
  }
962
998
  ]
963
999
  },
@@ -965,7 +1001,7 @@
965
1001
  "RoleIdLib": [
966
1002
  {
967
1003
  "length": 20,
968
- "start": 5906
1004
+ "start": 6697
969
1005
  }
970
1006
  ]
971
1007
  },
@@ -987,7 +1023,7 @@
987
1023
  "VersionPartLib": [
988
1024
  {
989
1025
  "length": 20,
990
- "start": 6067
1026
+ "start": 6858
991
1027
  }
992
1028
  ]
993
1029
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/53f592811985bbcd7ac840e89701a77f.json"
3
+ "buildInfo": "../../../build-info/7182881c5e5b7bfa90a1f80c8fc1056d.json"
4
4
  }