@tradetrust-yl/token-registry 5.1.2 → 5.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/dist/app.js +566 -0
  2. package/dist/artifacts/TitleEscrow.sol/TitleEscrow.json +83 -9
  3. package/dist/artifacts/TitleEscrowFactory.sol/TitleEscrowFactory.json +22 -3
  4. package/dist/artifacts/TradeTrustToken.sol/TradeTrustToken.json +125 -2
  5. package/dist/artifacts/base/RegistryAccess.sol/RegistryAccess.dbg.json +1 -1
  6. package/dist/artifacts/base/SBTUpgradeable.sol/SBTUpgradeable.dbg.json +1 -1
  7. package/dist/artifacts/base/SBTUpgradeable.sol/SBTUpgradeable.json +2 -2
  8. package/dist/artifacts/base/TradeTrustSBT.sol/TradeTrustSBT.dbg.json +1 -1
  9. package/dist/artifacts/base/TradeTrustSBT.sol/TradeTrustSBT.json +43 -0
  10. package/dist/artifacts/base/TradeTrustTokenBase.sol/TradeTrustTokenBase.dbg.json +1 -1
  11. package/dist/artifacts/base/TradeTrustTokenBase.sol/TradeTrustTokenBase.json +86 -0
  12. package/dist/artifacts/base/TradeTrustTokenBaseURI.sol/TradeTrustTokenBaseURI.dbg.json +1 -1
  13. package/dist/artifacts/base/TradeTrustTokenBaseURI.sol/TradeTrustTokenBaseURI.json +43 -0
  14. package/dist/artifacts/base/TradeTrustTokenBurnable.sol/TradeTrustTokenBurnable.dbg.json +1 -1
  15. package/dist/artifacts/base/TradeTrustTokenBurnable.sol/TradeTrustTokenBurnable.json +43 -0
  16. package/dist/artifacts/base/TradeTrustTokenMintable.sol/TradeTrustTokenMintable.dbg.json +1 -1
  17. package/dist/artifacts/base/TradeTrustTokenMintable.sol/TradeTrustTokenMintable.json +86 -0
  18. package/dist/artifacts/base/TradeTrustTokenRestorable.sol/TradeTrustTokenRestorable.dbg.json +1 -1
  19. package/dist/artifacts/base/TradeTrustTokenRestorable.sol/TradeTrustTokenRestorable.json +43 -0
  20. package/dist/artifacts/interfaces/IERC721MetadataUpgradeable.sol/IERC721MetadataUpgradeable.dbg.json +1 -1
  21. package/dist/artifacts/interfaces/ISBTUpgradeable.sol/ISBTUpgradeable.dbg.json +1 -1
  22. package/dist/artifacts/interfaces/ITitleEscrow.sol/ITitleEscrow.dbg.json +1 -1
  23. package/dist/artifacts/interfaces/ITitleEscrow.sol/ITitleEscrow.json +42 -6
  24. package/dist/artifacts/interfaces/ITitleEscrowFactory.sol/ITitleEscrowFactory.dbg.json +1 -1
  25. package/dist/artifacts/interfaces/ITitleEscrowSignable.sol/ITitleEscrowSignable.dbg.json +1 -1
  26. package/dist/artifacts/interfaces/ITitleEscrowSignable.sol/ITitleEscrowSignable.json +42 -6
  27. package/dist/artifacts/interfaces/ITradeTrustSBT.sol/ITradeTrustSBT.dbg.json +1 -1
  28. package/dist/artifacts/interfaces/ITradeTrustToken.sol/ITradeTrustToken.dbg.json +1 -1
  29. package/dist/artifacts/interfaces/ITradeTrustToken.sol/ITradeTrustToken.json +18 -0
  30. package/dist/artifacts/interfaces/ITradeTrustTokenBurnable.sol/ITradeTrustTokenBurnable.dbg.json +1 -1
  31. package/dist/artifacts/interfaces/ITradeTrustTokenMintable.sol/ITradeTrustTokenMintable.dbg.json +1 -1
  32. package/dist/artifacts/interfaces/ITradeTrustTokenMintable.sol/ITradeTrustTokenMintable.json +18 -0
  33. package/dist/artifacts/interfaces/ITradeTrustTokenRestorable.sol/ITradeTrustTokenRestorable.dbg.json +1 -1
  34. package/dist/artifacts/interfaces/RegistryAccessErrors.sol/RegistryAccessErrors.dbg.json +1 -1
  35. package/dist/artifacts/interfaces/SigHelperErrors.sol/SigHelperErrors.dbg.json +1 -1
  36. package/dist/artifacts/interfaces/TDocDeployerErrors.sol/TDocDeployerErrors.dbg.json +1 -1
  37. package/dist/artifacts/interfaces/TitleEscrowErrors.sol/TitleEscrowErrors.dbg.json +1 -1
  38. package/dist/artifacts/interfaces/TitleEscrowFactoryErrors.sol/TitleEscrowFactoryErrors.dbg.json +1 -1
  39. package/dist/artifacts/interfaces/TitleEscrowSignableErrors.sol/TitleEscrowSignableErrors.dbg.json +1 -1
  40. package/dist/artifacts/interfaces/TradeTrustTokenErrors.sol/TradeTrustTokenErrors.dbg.json +1 -1
  41. package/dist/artifacts/interfaces/TradeTrustTokenErrors.sol/TradeTrustTokenErrors.json +5 -0
  42. package/dist/artifacts/mocks/ERC721ReceiverMock.sol/ERC721ReceiverMock.dbg.json +1 -1
  43. package/dist/artifacts/mocks/ERC721ReceiverMock.sol/ERC721ReceiverMock.json +2 -2
  44. package/dist/artifacts/mocks/SBTUpgradeableMock.sol/SBTUpgradeableMock.dbg.json +1 -1
  45. package/dist/artifacts/mocks/SBTUpgradeableMock.sol/SBTUpgradeableMock.json +2 -2
  46. package/dist/artifacts/mocks/SigHelperMock.sol/SigHelperMock.dbg.json +1 -1
  47. package/dist/artifacts/mocks/SimpleCaller.sol/SimpleCaller.dbg.json +1 -1
  48. package/dist/artifacts/mocks/TitleEscrowFactoryCallerMock.sol/TitleEscrowFactoryCallerMock.dbg.json +1 -1
  49. package/dist/artifacts/mocks/TitleEscrowFactoryGetterMock.sol/TitleEscrowFactoryGetterMock.dbg.json +1 -1
  50. package/dist/artifacts/mocks/TitleEscrowMock.sol/TitleEscrowMock.dbg.json +1 -1
  51. package/dist/artifacts/mocks/TitleEscrowMock.sol/TitleEscrowMock.json +83 -9
  52. package/dist/artifacts/mocks/TradeTrustTokenMock.sol/TradeTrustTokenMock.dbg.json +1 -1
  53. package/dist/artifacts/mocks/TradeTrustTokenMock.sol/TradeTrustTokenMock.json +125 -2
  54. package/dist/artifacts/presets/TitleEscrowSignable.sol/TitleEscrowSignable.dbg.json +1 -1
  55. package/dist/artifacts/presets/TitleEscrowSignable.sol/TitleEscrowSignable.json +87 -8
  56. package/dist/artifacts/presets/TradeTrustTokenStandard.sol/TradeTrustTokenStandard.dbg.json +1 -1
  57. package/dist/artifacts/presets/TradeTrustTokenStandard.sol/TradeTrustTokenStandard.json +88 -2
  58. package/dist/artifacts/utils/SigHelper.sol/SigHelper.dbg.json +1 -1
  59. package/dist/artifacts/utils/TDocDeployer.sol/TDocDeployer.dbg.json +1 -1
  60. package/dist/artifacts/utils/TDocDeployer.sol/TDocDeployer.json +2 -2
  61. package/dist/constants/default-address.js +5 -3
  62. package/dist/constants/role-hash.js +5 -3
  63. package/dist/contracts/@openzeppelin/contracts/index.ts +2 -0
  64. package/dist/contracts/@openzeppelin/contracts/metatx/ERC2771Context.js +5 -0
  65. package/dist/contracts/@openzeppelin/contracts/metatx/ERC2771Context.ts +111 -0
  66. package/dist/contracts/@openzeppelin/contracts/metatx/index.js +5 -0
  67. package/dist/contracts/@openzeppelin/contracts/{proxy/utils → metatx}/index.ts +1 -1
  68. package/dist/contracts/@openzeppelin/contracts/proxy/Clones.js +5 -0
  69. package/dist/contracts/@openzeppelin/contracts/proxy/Clones.ts +70 -0
  70. package/dist/contracts/@openzeppelin/contracts/proxy/index.ts +1 -2
  71. package/dist/contracts/@openzeppelin/contracts/utils/Create2.js +5 -0
  72. package/dist/contracts/@openzeppelin/contracts/utils/Create2.ts +70 -0
  73. package/dist/contracts/@openzeppelin/contracts/utils/index.ts +1 -0
  74. package/dist/contracts/@openzeppelin/contracts-upgradeable/index.ts +2 -0
  75. package/dist/contracts/@openzeppelin/{contracts/proxy/utils/Initializable.ts → contracts-upgradeable/metatx/ERC2771ContextUpgradeable.ts} +46 -5
  76. package/dist/contracts/@openzeppelin/contracts-upgradeable/metatx/index.ts +5 -0
  77. package/dist/contracts/contracts/TitleEscrow.ts +62 -12
  78. package/dist/contracts/contracts/TitleEscrowFactory.ts +18 -1
  79. package/dist/contracts/contracts/TradeTrustToken.js +2 -1
  80. package/dist/contracts/contracts/TradeTrustToken.ts +120 -0
  81. package/dist/contracts/contracts/base/TradeTrustSBT.ts +29 -0
  82. package/dist/contracts/contracts/base/TradeTrustTokenBase.js +2 -1
  83. package/dist/contracts/contracts/base/TradeTrustTokenBase.ts +88 -0
  84. package/dist/contracts/contracts/base/TradeTrustTokenBaseURI.ts +29 -0
  85. package/dist/contracts/contracts/base/TradeTrustTokenBurnable.ts +29 -0
  86. package/dist/contracts/contracts/base/TradeTrustTokenMintable.js +2 -1
  87. package/dist/contracts/contracts/base/TradeTrustTokenMintable.ts +88 -0
  88. package/dist/contracts/contracts/base/TradeTrustTokenRestorable.ts +29 -0
  89. package/dist/contracts/contracts/interfaces/ITitleEscrow.ts +30 -12
  90. package/dist/contracts/contracts/interfaces/ITitleEscrowSignable.ts +30 -12
  91. package/dist/contracts/contracts/interfaces/ITradeTrustToken.ts +22 -0
  92. package/dist/contracts/contracts/interfaces/ITradeTrustTokenMintable.ts +22 -1
  93. package/dist/contracts/contracts/mocks/TitleEscrowMock.ts +62 -12
  94. package/dist/contracts/contracts/mocks/TradeTrustTokenMock.js +2 -1
  95. package/dist/contracts/contracts/mocks/TradeTrustTokenMock.ts +120 -0
  96. package/dist/contracts/contracts/presets/TitleEscrowSignable.ts +62 -12
  97. package/dist/contracts/contracts/presets/TradeTrustTokenStandard.js +2 -1
  98. package/dist/contracts/contracts/presets/TradeTrustTokenStandard.ts +88 -0
  99. package/dist/contracts/factories/@openzeppelin/contracts/access/IAccessControl__factory.js +3 -1
  100. package/dist/contracts/factories/@openzeppelin/contracts/index.js +4 -3
  101. package/dist/contracts/factories/@openzeppelin/contracts/index.ts +1 -0
  102. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/IERC1967__factory.js +3 -1
  103. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable__factory.js +3 -1
  104. package/dist/contracts/factories/@openzeppelin/contracts/interfaces/index.js +1 -2
  105. package/dist/contracts/factories/@openzeppelin/contracts/metatx/ERC2771Context__factory.js +45 -0
  106. package/dist/contracts/factories/@openzeppelin/contracts/metatx/ERC2771Context__factory.ts +58 -0
  107. package/dist/contracts/factories/@openzeppelin/contracts/metatx/index.js +12 -0
  108. package/dist/contracts/factories/@openzeppelin/contracts/{proxy/utils → metatx}/index.ts +1 -1
  109. package/dist/contracts/factories/@openzeppelin/contracts/proxy/Clones__factory.js +44 -0
  110. package/dist/contracts/factories/@openzeppelin/contracts/proxy/Clones__factory.ts +70 -0
  111. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.js +4 -2
  112. package/dist/contracts/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils__factory.ts +1 -1
  113. package/dist/contracts/factories/@openzeppelin/contracts/proxy/beacon/IBeacon__factory.js +3 -1
  114. package/dist/contracts/factories/@openzeppelin/contracts/proxy/index.js +9 -5
  115. package/dist/contracts/factories/@openzeppelin/contracts/proxy/index.ts +1 -1
  116. package/dist/contracts/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.js +3 -1
  117. package/dist/contracts/factories/@openzeppelin/contracts/token/index.js +1 -2
  118. package/dist/contracts/factories/@openzeppelin/contracts/utils/Address__factory.js +4 -2
  119. package/dist/contracts/factories/@openzeppelin/contracts/utils/Address__factory.ts +1 -1
  120. package/dist/contracts/factories/@openzeppelin/contracts/utils/Create2__factory.js +44 -0
  121. package/dist/contracts/factories/@openzeppelin/contracts/utils/Create2__factory.ts +70 -0
  122. package/dist/contracts/factories/@openzeppelin/contracts/utils/Errors__factory.js +3 -1
  123. package/dist/contracts/factories/@openzeppelin/contracts/utils/Pausable__factory.js +3 -1
  124. package/dist/contracts/factories/@openzeppelin/contracts/utils/Strings__factory.js +12 -2
  125. package/dist/contracts/factories/@openzeppelin/contracts/utils/Strings__factory.ts +11 -1
  126. package/dist/contracts/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.js +3 -1
  127. package/dist/contracts/factories/@openzeppelin/contracts/utils/index.js +8 -2
  128. package/dist/contracts/factories/@openzeppelin/contracts/utils/index.ts +1 -0
  129. package/dist/contracts/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.js +3 -1
  130. package/dist/contracts/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.js +3 -1
  131. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable__factory.js +3 -1
  132. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +3 -1
  133. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/index.js +4 -3
  134. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/index.ts +1 -0
  135. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/ERC2771ContextUpgradeable__factory.js +63 -0
  136. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/ERC2771ContextUpgradeable__factory.ts +85 -0
  137. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/index.js +12 -0
  138. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/metatx/index.ts +5 -0
  139. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/index.js +1 -2
  140. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +3 -1
  141. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable__factory.js +3 -1
  142. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +3 -1
  143. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable__factory.js +3 -1
  144. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/index.js +1 -2
  145. package/dist/contracts/factories/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable__factory.js +3 -1
  146. package/dist/contracts/factories/@openzeppelin/index.js +1 -2
  147. package/dist/contracts/factories/contracts/TitleEscrowFactory__factory.js +23 -7
  148. package/dist/contracts/factories/contracts/TitleEscrowFactory__factory.ts +34 -6
  149. package/dist/contracts/factories/contracts/TitleEscrow__factory.js +72 -12
  150. package/dist/contracts/factories/contracts/TitleEscrow__factory.ts +95 -12
  151. package/dist/contracts/factories/contracts/TradeTrustToken__factory.js +102 -6
  152. package/dist/contracts/factories/contracts/TradeTrustToken__factory.ts +128 -1
  153. package/dist/contracts/factories/contracts/base/RegistryAccess__factory.js +3 -1
  154. package/dist/contracts/factories/contracts/base/SBTUpgradeable__factory.js +4 -2
  155. package/dist/contracts/factories/contracts/base/SBTUpgradeable__factory.ts +1 -1
  156. package/dist/contracts/factories/contracts/base/TradeTrustSBT__factory.js +35 -1
  157. package/dist/contracts/factories/contracts/base/TradeTrustSBT__factory.ts +43 -0
  158. package/dist/contracts/factories/contracts/base/TradeTrustTokenBaseURI__factory.js +35 -1
  159. package/dist/contracts/factories/contracts/base/TradeTrustTokenBaseURI__factory.ts +43 -0
  160. package/dist/contracts/factories/contracts/base/TradeTrustTokenBase__factory.js +69 -1
  161. package/dist/contracts/factories/contracts/base/TradeTrustTokenBase__factory.ts +86 -0
  162. package/dist/contracts/factories/contracts/base/TradeTrustTokenBurnable__factory.js +35 -1
  163. package/dist/contracts/factories/contracts/base/TradeTrustTokenBurnable__factory.ts +43 -0
  164. package/dist/contracts/factories/contracts/base/TradeTrustTokenMintable__factory.js +69 -1
  165. package/dist/contracts/factories/contracts/base/TradeTrustTokenMintable__factory.ts +86 -0
  166. package/dist/contracts/factories/contracts/base/TradeTrustTokenRestorable__factory.js +35 -1
  167. package/dist/contracts/factories/contracts/base/TradeTrustTokenRestorable__factory.ts +43 -0
  168. package/dist/contracts/factories/contracts/index.js +1 -2
  169. package/dist/contracts/factories/contracts/interfaces/IERC721MetadataUpgradeable__factory.js +3 -1
  170. package/dist/contracts/factories/contracts/interfaces/ISBTUpgradeable__factory.js +3 -1
  171. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowFactory__factory.js +3 -1
  172. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowSignable__factory.js +38 -6
  173. package/dist/contracts/factories/contracts/interfaces/ITitleEscrowSignable__factory.ts +42 -6
  174. package/dist/contracts/factories/contracts/interfaces/ITitleEscrow__factory.js +38 -6
  175. package/dist/contracts/factories/contracts/interfaces/ITitleEscrow__factory.ts +42 -6
  176. package/dist/contracts/factories/contracts/interfaces/ITradeTrustSBT__factory.js +3 -1
  177. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenBurnable__factory.js +3 -1
  178. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenMintable__factory.js +17 -1
  179. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenMintable__factory.ts +18 -0
  180. package/dist/contracts/factories/contracts/interfaces/ITradeTrustTokenRestorable__factory.js +3 -1
  181. package/dist/contracts/factories/contracts/interfaces/ITradeTrustToken__factory.js +17 -1
  182. package/dist/contracts/factories/contracts/interfaces/ITradeTrustToken__factory.ts +18 -0
  183. package/dist/contracts/factories/contracts/interfaces/RegistryAccessErrors__factory.js +3 -1
  184. package/dist/contracts/factories/contracts/interfaces/SigHelperErrors__factory.js +3 -1
  185. package/dist/contracts/factories/contracts/interfaces/TDocDeployerErrors__factory.js +3 -1
  186. package/dist/contracts/factories/contracts/interfaces/TitleEscrowErrors__factory.js +3 -1
  187. package/dist/contracts/factories/contracts/interfaces/TitleEscrowFactoryErrors__factory.js +3 -1
  188. package/dist/contracts/factories/contracts/interfaces/TitleEscrowSignableErrors__factory.js +3 -1
  189. package/dist/contracts/factories/contracts/interfaces/TradeTrustTokenErrors__factory.js +7 -1
  190. package/dist/contracts/factories/contracts/interfaces/TradeTrustTokenErrors__factory.ts +5 -0
  191. package/dist/contracts/factories/contracts/mocks/ERC721ReceiverMock__factory.js +4 -2
  192. package/dist/contracts/factories/contracts/mocks/ERC721ReceiverMock__factory.ts +1 -1
  193. package/dist/contracts/factories/contracts/mocks/SBTUpgradeableMock__factory.js +4 -2
  194. package/dist/contracts/factories/contracts/mocks/SBTUpgradeableMock__factory.ts +1 -1
  195. package/dist/contracts/factories/contracts/mocks/SigHelperMock__factory.js +3 -1
  196. package/dist/contracts/factories/contracts/mocks/SimpleCaller__factory.js +3 -1
  197. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryCallerMock__factory.js +3 -1
  198. package/dist/contracts/factories/contracts/mocks/TitleEscrowFactoryGetterMock__factory.js +3 -1
  199. package/dist/contracts/factories/contracts/mocks/TitleEscrowMock__factory.js +72 -12
  200. package/dist/contracts/factories/contracts/mocks/TitleEscrowMock__factory.ts +95 -12
  201. package/dist/contracts/factories/contracts/mocks/TradeTrustTokenMock__factory.js +102 -6
  202. package/dist/contracts/factories/contracts/mocks/TradeTrustTokenMock__factory.ts +128 -1
  203. package/dist/contracts/factories/contracts/presets/TitleEscrowSignable__factory.js +75 -11
  204. package/dist/contracts/factories/contracts/presets/TitleEscrowSignable__factory.ts +99 -11
  205. package/dist/contracts/factories/contracts/presets/TradeTrustTokenStandard__factory.js +70 -2
  206. package/dist/contracts/factories/contracts/presets/TradeTrustTokenStandard__factory.ts +87 -1
  207. package/dist/contracts/factories/contracts/utils/SigHelper__factory.js +3 -1
  208. package/dist/contracts/factories/contracts/utils/TDocDeployer__factory.js +4 -2
  209. package/dist/contracts/factories/contracts/utils/TDocDeployer__factory.ts +1 -1
  210. package/dist/contracts/factories/index.js +1 -2
  211. package/dist/contracts/hardhat.d.ts +70 -16
  212. package/dist/contracts/index.js +29 -2
  213. package/dist/contracts/index.ts +8 -0
  214. package/dist/index.js +1 -2
  215. package/dist/models/common.js +5 -0
  216. package/dist/models/freightForwarder.js +5 -0
  217. package/dist/models/shipOwner.js +5 -0
  218. package/dist/services/admin/adminRepository.js +77 -0
  219. package/dist/services/crypto.js +215 -0
  220. package/dist/services/database.js +36 -0
  221. package/dist/services/freightForwarder/freightForwarderRepository.js +94 -0
  222. package/dist/services/shipOwner/shipOwnerController.js +77 -0
  223. package/dist/services/shipOwner/shipOwnerRepository.js +94 -0
  224. package/dist/services/shipOwner/shipOwnerRoutes.js +18 -0
  225. package/dist/types/app.d.ts +1 -0
  226. package/dist/types/constants/contract-address.d.ts +43 -3
  227. package/dist/types/models/common.d.ts +23 -0
  228. package/dist/types/models/freightForwarder.d.ts +15 -0
  229. package/dist/types/models/shipOwner.d.ts +25 -0
  230. package/dist/types/services/admin/adminRepository.d.ts +9 -0
  231. package/dist/types/services/crypto.d.ts +27 -0
  232. package/dist/types/services/database.d.ts +3 -0
  233. package/dist/types/services/freightForwarder/freightForwarderRepository.d.ts +10 -0
  234. package/dist/types/services/shipOwner/shipOwnerController.d.ts +6 -0
  235. package/dist/types/services/shipOwner/shipOwnerRepository.d.ts +10 -0
  236. package/dist/types/services/shipOwner/shipOwnerRoutes.d.ts +2 -0
  237. package/dist/types/utils/extractFactoryAddress.d.ts +10 -0
  238. package/dist/types/utils/extractTokenAddress.d.ts +10 -0
  239. package/dist/types/utils/get-event-from-receipt.d.ts +1 -1
  240. package/dist/types/utils/index.d.ts +1 -0
  241. package/dist/types/utils/run.d.ts +9 -0
  242. package/dist/utils/compute-interface-id.js +5 -3
  243. package/dist/utils/compute-title-escrow-address.js +5 -3
  244. package/dist/utils/encode-init-params.js +5 -3
  245. package/dist/utils/extractFactoryAddress.js +58 -0
  246. package/dist/utils/extractTokenAddress.js +58 -0
  247. package/dist/utils/get-event-from-receipt.js +5 -3
  248. package/dist/utils/index.js +11 -0
  249. package/dist/utils/run.js +36 -0
  250. package/package.json +16 -3
  251. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/Initializable__factory.js +0 -37
  252. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/Initializable__factory.ts +0 -49
  253. package/dist/contracts/factories/@openzeppelin/contracts/proxy/utils/index.js +0 -12
  254. /package/dist/contracts/@openzeppelin/{contracts/proxy/utils/Initializable.js → contracts-upgradeable/metatx/ERC2771ContextUpgradeable.js} +0 -0
  255. /package/dist/contracts/@openzeppelin/{contracts/proxy/utils → contracts-upgradeable/metatx}/index.js +0 -0
@@ -4,7 +4,13 @@
4
4
  "sourceName": "contracts/mocks/TitleEscrowMock.sol",
5
5
  "abi": [
6
6
  {
7
- "inputs": [],
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "trustedForwarder",
11
+ "type": "address"
12
+ }
13
+ ],
8
14
  "stateMutability": "nonpayable",
9
15
  "type": "constructor"
10
16
  },
@@ -129,6 +135,12 @@
129
135
  {
130
136
  "anonymous": false,
131
137
  "inputs": [
138
+ {
139
+ "indexed": true,
140
+ "internalType": "address",
141
+ "name": "actor",
142
+ "type": "address"
143
+ },
132
144
  {
133
145
  "indexed": true,
134
146
  "internalType": "address",
@@ -166,6 +178,12 @@
166
178
  {
167
179
  "anonymous": false,
168
180
  "inputs": [
181
+ {
182
+ "indexed": true,
183
+ "internalType": "address",
184
+ "name": "actor",
185
+ "type": "address"
186
+ },
169
187
  {
170
188
  "indexed": true,
171
189
  "internalType": "address",
@@ -216,6 +234,12 @@
216
234
  {
217
235
  "anonymous": false,
218
236
  "inputs": [
237
+ {
238
+ "indexed": true,
239
+ "internalType": "address",
240
+ "name": "actor",
241
+ "type": "address"
242
+ },
219
243
  {
220
244
  "indexed": true,
221
245
  "internalType": "address",
@@ -253,6 +277,12 @@
253
277
  {
254
278
  "anonymous": false,
255
279
  "inputs": [
280
+ {
281
+ "indexed": true,
282
+ "internalType": "address",
283
+ "name": "actor",
284
+ "type": "address"
285
+ },
256
286
  {
257
287
  "indexed": true,
258
288
  "internalType": "address",
@@ -290,6 +320,12 @@
290
320
  {
291
321
  "anonymous": false,
292
322
  "inputs": [
323
+ {
324
+ "indexed": true,
325
+ "internalType": "address",
326
+ "name": "actor",
327
+ "type": "address"
328
+ },
293
329
  {
294
330
  "indexed": true,
295
331
  "internalType": "address",
@@ -327,6 +363,12 @@
327
363
  {
328
364
  "anonymous": false,
329
365
  "inputs": [
366
+ {
367
+ "indexed": false,
368
+ "internalType": "address",
369
+ "name": "actor",
370
+ "type": "address"
371
+ },
330
372
  {
331
373
  "indexed": true,
332
374
  "internalType": "address",
@@ -362,12 +404,6 @@
362
404
  "internalType": "uint256",
363
405
  "name": "tokenId",
364
406
  "type": "uint256"
365
- },
366
- {
367
- "indexed": false,
368
- "internalType": "bytes",
369
- "name": "remark",
370
- "type": "bytes"
371
407
  }
372
408
  ],
373
409
  "name": "RejectTransferOwners",
@@ -432,6 +468,12 @@
432
468
  {
433
469
  "anonymous": false,
434
470
  "inputs": [
471
+ {
472
+ "indexed": false,
473
+ "internalType": "address",
474
+ "name": "actor",
475
+ "type": "address"
476
+ },
435
477
  {
436
478
  "indexed": true,
437
479
  "internalType": "address",
@@ -575,6 +617,25 @@
575
617
  "stateMutability": "view",
576
618
  "type": "function"
577
619
  },
620
+ {
621
+ "inputs": [
622
+ {
623
+ "internalType": "address",
624
+ "name": "forwarder",
625
+ "type": "address"
626
+ }
627
+ ],
628
+ "name": "isTrustedForwarder",
629
+ "outputs": [
630
+ {
631
+ "internalType": "bool",
632
+ "name": "",
633
+ "type": "bool"
634
+ }
635
+ ],
636
+ "stateMutability": "view",
637
+ "type": "function"
638
+ },
578
639
  {
579
640
  "inputs": [
580
641
  {
@@ -860,10 +921,23 @@
860
921
  "outputs": [],
861
922
  "stateMutability": "nonpayable",
862
923
  "type": "function"
924
+ },
925
+ {
926
+ "inputs": [],
927
+ "name": "trustedForwarder",
928
+ "outputs": [
929
+ {
930
+ "internalType": "address",
931
+ "name": "",
932
+ "type": "address"
933
+ }
934
+ ],
935
+ "stateMutability": "view",
936
+ "type": "function"
863
937
  }
864
938
  ],
865
- "bytecode": "0x60806040523480156200001157600080fd5b50600062000024620001ab60201b60201c565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015620000735750825b9050600060018367ffffffffffffffff16148015620000a9575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015620000b8575080155b15620000f0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315620001415760018560000160086101000a81548160ff0219169083151502179055505b8315620001a05760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405162000197919062000234565b60405180910390a15b505050505062000251565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b60006200021c620002166200021084620001d3565b620001f1565b620001dd565b9050919050565b6200022e81620001fb565b82525050565b60006020820190506200024b600083018462000223565b92915050565b6146c180620002616000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c80637b103999116100c3578063bd1d07b51161007c578063bd1d07b51461038b578063c9437e5e146103a9578063cb3cfb29146103c7578063cd6dc687146103e3578063e3d79a6e146103ff578063e534155d1461041b57610158565b80637b103999146102df57806383d38fcb146102fd5780638fb33c3c14610319578063a47d1f5e14610335578063acec338a14610353578063baf139751461036f57610158565b806320f99c0a1161011557806320f99c0a14610233578063299e11d814610251578063308f8e1c1461026d57806334427f611461028957806338af3eed146102a5578063452736fd146102c357610158565b806301ffc9a71461015d57806302fb0c5e1461018d578063035aedfa146101ab57806305de0a2e146101c9578063150b7a02146101e557806317d70f7c14610215575b600080fd5b6101776004803603810190610172919061386a565b610439565b60405161018491906138b2565b60405180910390f35b6101956104a3565b6040516101a291906138b2565b60405180910390f35b6101b36104b6565b6040516101c0919061390e565b60405180910390f35b6101e360048036038101906101de919061398e565b6104dc565b005b6101ff60048036038101906101fa9190613a3d565b6109aa565b60405161020c9190613ad4565b60405180910390f35b61021d610ea7565b60405161022a9190613afe565b60405180910390f35b61023b610ead565b604051610248919061390e565b60405180910390f35b61026b60048036038101906102669190613b19565b610ed3565b005b61028760048036038101906102829190613b94565b610fff565b005b6102a3600480360381019061029e9190613bf4565b61148a565b005b6102ad6114a6565b6040516102ba919061390e565b60405180910390f35b6102dd60048036038101906102d8919061398e565b6114cc565b005b6102e7611acb565b6040516102f4919061390e565b60405180910390f35b6103176004803603810190610312919061398e565b611aef565b005b610333600480360381019061032e919061398e565b611f6b565b005b61033d612253565b60405161034a9190613cf8565b60405180910390f35b61036d60048036038101906103689190613d46565b6122e1565b005b61038960048036038101906103849190613b94565b6122fe565b005b610393612787565b6040516103a0919061390e565b60405180910390f35b6103b16127ad565b6040516103be91906138b2565b60405180910390f35b6103e160048036038101906103dc919061398e565b6127bc565b005b6103fd60048036038101906103f89190613d73565b612c8a565b005b61041960048036038101906104149190613b94565b612e1b565b005b6104236132a4565b604051610430919061390e565b60405180910390f35b60007f3e143f7b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600660149054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190613dc8565b905080156105a8576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166105ee576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610675576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067d6132ca565b6106b3576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156106f3576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361077b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610824576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84846007918261083592919061403b565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506108d28188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061339b565b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f279c68b511f19d28a79afc0687d9909fc941d6f7551e4b0e333a1171cc2eea5f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548b8b6040516109999493929190614147565b60405180910390a350505050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190613dc8565b90508015610a76576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16610abc576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001548514610b0257846040517fed15e6cf000000000000000000000000000000000000000000000000000000008152600401610af99190613afe565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b9257336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401610b89919061390e565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c3e5750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610d935760008585905003610c80576040517f10daa94f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008787810190610c9491906142b7565b925092509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d015750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610d455782826040517fbd805e91000000000000000000000000000000000000000000000000000000008152600401610d3c929190614326565b60405180910390fd5b610d5e836040518060200160405280600081525061348d565b610d77826040518060200160405280600081525061339b565b8060079081610d86919061434f565b5060019350505050610da6565b848460079182610da492919061403b565b505b801515600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f44fc4ffe7e585a241451c67b41553546c65c2b07de6e9d33405e53f75357293b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001546007604051610e71939291906144a5565b60405180910390a47f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f9250505095945050505050565b60015481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360018190555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660146101000a81548160ff0219169083151502179055505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110919190613dc8565b905080156110cb576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611111576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611198576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111a06132ca565b6111d6576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611216576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361127c576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061134757508573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61137d576040517f1c98cac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084846007918261143392919061403b565b506114828686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061348d565b505050505050565b611495848383610fff565b6114a08383836122fe565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e9190613dc8565b90508015611598576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166115de576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115e66132ca565b61161c576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116a3576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172a576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282607882829050111561176a576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118155750600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561184c576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84846007918261185d92919061403b565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611948818a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061348d565b611996838a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061339b565b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2812f41a966386b432bd1d43d72b6613f5eca9adf4ed9e193f95f5c91a1b66268660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548f8f604051611ab89594939291906144e3565b60405180910390a4505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b819190613dc8565b90508015611bbb576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611c01576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c88576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0f576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d176132ca565b611d4d576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611d8d576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da7600060405180602001604052806000815250613616565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab67aa583060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001546040518463ffffffff1660e01b8152600401611e2693929190614557565b600060405180830381600087803b158015611e4057600080fd5b505af1158015611e54573d6000803e3d6000fd5b50505050848460079182611e6992919061403b565b506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fea17cbc366059ac6185e6bfc7eebd173d3260bb6bc373830f9d04260e72c244b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548888604051611f5c9493929190614147565b60405180910390a25050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffd9190613dc8565b90508015612037576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff1661207d576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156120bd576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120c56132ca565b156120fc576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461218c57336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401612183919061390e565b60405180910390fd5b6121a660006040518060200160405280600081525061348d565b6121c060006040518060200160405280600081525061339b565b6000600660146101000a81548160ff0219169083151502179055508484600791826121ec92919061403b565b507f49c56a060f3a16e899a045537fb86df850339c10c8c140a052aca89cbcc30c0b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660015487876040516122449493929190614147565b60405180910390a15050505050565b6007805461226090613e5e565b80601f016020809104026020016040519081016040528092919081815260200182805461228c90613e5e565b80156122d95780601f106122ae576101008083540402835291602001916122d9565b820191906000526020600020905b8154815290600101906020018083116122bc57829003601f168201915b505050505081565b80600660146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123909190613dc8565b905080156123ca576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16612410576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612497576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61249f6132ca565b6124d5576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612515576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361257b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612602576040517f702e6e6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036126bc576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084846007918261273092919061403b565b5061277f8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061339b565b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006127b76132ca565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561282a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284e9190613dc8565b90508015612888576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166128ce576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612955576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61295d6132ca565b612993576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156129d3576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612a5b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612b04576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848460079182612b1592919061403b565b506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612bb28188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061348d565b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f26cb5b08a00ade9c3c65737592d8344548bf60664af05af8ed04720b893eca2760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548b8b604051612c799493929190614147565b60405180910390a350505050505050565b6000612c94613708565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612ce25750825b9050600060018367ffffffffffffffff16148015612d17575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612d25575080155b15612d5c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612dac5760018560000160086101000a81548160ff0219169083151502179055505b612db68787613730565b8315612e125760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612e0991906145f0565b60405180910390a15b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ead9190613dc8565b90508015612ee7576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16612f2d576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612fb4576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612fbc6132ca565b612ff2576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613032576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036130b9576040517fdd9f921d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613140576040517f98f83ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361323c576000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b84846007918261324d92919061403b565b5061329c8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613616565b505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e6001546040518263ffffffff1660e01b815260040161333e9190613afe565b602060405180830381865afa15801561335b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337f9190614620565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b8173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f30426d047f8ae6511337356e511764b12f79993bd73501d0e993b3da7a780a4d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154856040516134409392919061464d565b60405180910390a381600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9081b884d1178ac5e4855291131f541f64a88854f90b8df23412ffd63c39be1d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154856040516135329392919061464d565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146135d1576135d060006040518060400160405280600281526020017f3078000000000000000000000000000000000000000000000000000000000000815250613616565b5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffbe262229f456b8d55f1e1887503540dc0a1efcb4b048b6b739117e66d03121460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154856040516136bb9392919061464d565b60405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61373861379e565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001819055506001600660146101000a81548160ff0219169083151502179055505050565b6137a66137de565b6137dc576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60006137e8613708565b60000160089054906101000a900460ff16905090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61384781613812565b811461385257600080fd5b50565b6000813590506138648161383e565b92915050565b6000602082840312156138805761387f613808565b5b600061388e84828501613855565b91505092915050565b60008115159050919050565b6138ac81613897565b82525050565b60006020820190506138c760008301846138a3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138f8826138cd565b9050919050565b613908816138ed565b82525050565b600060208201905061392360008301846138ff565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261394e5761394d613929565b5b8235905067ffffffffffffffff81111561396b5761396a61392e565b5b60208301915083600182028301111561398757613986613933565b5b9250929050565b600080602083850312156139a5576139a4613808565b5b600083013567ffffffffffffffff8111156139c3576139c261380d565b5b6139cf85828601613938565b92509250509250929050565b6139e4816138ed565b81146139ef57600080fd5b50565b600081359050613a01816139db565b92915050565b6000819050919050565b613a1a81613a07565b8114613a2557600080fd5b50565b600081359050613a3781613a11565b92915050565b600080600080600060808688031215613a5957613a58613808565b5b6000613a67888289016139f2565b9550506020613a78888289016139f2565b9450506040613a8988828901613a28565b935050606086013567ffffffffffffffff811115613aaa57613aa961380d565b5b613ab688828901613938565b92509250509295509295909350565b613ace81613812565b82525050565b6000602082019050613ae96000830184613ac5565b92915050565b613af881613a07565b82525050565b6000602082019050613b136000830184613aef565b92915050565b600080600080600060a08688031215613b3557613b34613808565b5b6000613b43888289016139f2565b9550506020613b5488828901613a28565b9450506040613b65888289016139f2565b9350506060613b76888289016139f2565b9250506080613b87888289016139f2565b9150509295509295909350565b600080600060408486031215613bad57613bac613808565b5b6000613bbb868287016139f2565b935050602084013567ffffffffffffffff811115613bdc57613bdb61380d565b5b613be886828701613938565b92509250509250925092565b60008060008060608587031215613c0e57613c0d613808565b5b6000613c1c878288016139f2565b9450506020613c2d878288016139f2565b935050604085013567ffffffffffffffff811115613c4e57613c4d61380d565b5b613c5a87828801613938565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ca2578082015181840152602081019050613c87565b60008484015250505050565b6000601f19601f8301169050919050565b6000613cca82613c68565b613cd48185613c73565b9350613ce4818560208601613c84565b613ced81613cae565b840191505092915050565b60006020820190508181036000830152613d128184613cbf565b905092915050565b613d2381613897565b8114613d2e57600080fd5b50565b600081359050613d4081613d1a565b92915050565b600060208284031215613d5c57613d5b613808565b5b6000613d6a84828501613d31565b91505092915050565b60008060408385031215613d8a57613d89613808565b5b6000613d98858286016139f2565b9250506020613da985828601613a28565b9150509250929050565b600081519050613dc281613d1a565b92915050565b600060208284031215613dde57613ddd613808565b5b6000613dec84828501613db3565b91505092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e7657607f821691505b602082108103613e8957613e88613e2f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ef17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eb4565b613efb8683613eb4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f38613f33613f2e84613a07565b613f13565b613a07565b9050919050565b6000819050919050565b613f5283613f1d565b613f66613f5e82613f3f565b848454613ec1565b825550505050565b600090565b613f7b613f6e565b613f86818484613f49565b505050565b5b81811015613faa57613f9f600082613f73565b600181019050613f8c565b5050565b601f821115613fef57613fc081613e8f565b613fc984613ea4565b81016020851015613fd8578190505b613fec613fe485613ea4565b830182613f8b565b50505b505050565b600082821c905092915050565b600061401260001984600802613ff4565b1980831691505092915050565b600061402b8383614001565b9150826002028217905092915050565b6140458383613df5565b67ffffffffffffffff81111561405e5761405d613e00565b5b6140688254613e5e565b614073828285613fae565b6000601f8311600181146140a25760008415614090578287013590505b61409a858261401f565b865550614102565b601f1984166140b086613e8f565b60005b828110156140d8578489013582556001820191506020850194506020810190506140b3565b868310156140f557848901356140f1601f891682614001565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b60006141268385613c73565b935061413383858461410b565b61413c83613cae565b840190509392505050565b600060608201905061415c60008301876138ff565b6141696020830186613aef565b818103604083015261417c81848661411a565b905095945050505050565b6000614192826138cd565b9050919050565b6141a281614187565b81146141ad57600080fd5b50565b6000813590506141bf81614199565b92915050565b600080fd5b6141d382613cae565b810181811067ffffffffffffffff821117156141f2576141f1613e00565b5b80604052505050565b60006142056137fe565b905061421182826141ca565b919050565b600067ffffffffffffffff82111561423157614230613e00565b5b61423a82613cae565b9050602081019050919050565b600061425a61425584614216565b6141fb565b905082815260208101848484011115614276576142756141c5565b5b61428184828561410b565b509392505050565b600082601f83011261429e5761429d613929565b5b81356142ae848260208601614247565b91505092915050565b6000806000606084860312156142d0576142cf613808565b5b60006142de868287016141b0565b93505060206142ef868287016141b0565b925050604084013567ffffffffffffffff8111156143105761430f61380d565b5b61431c86828701614289565b9150509250925092565b600060408201905061433b60008301856138ff565b61434860208301846138ff565b9392505050565b61435882613c68565b67ffffffffffffffff81111561437157614370613e00565b5b61437b8254613e5e565b614386828285613fae565b600060209050601f8311600181146143b957600084156143a7578287015190505b6143b1858261401f565b865550614419565b601f1984166143c786613e8f565b60005b828110156143ef578489015182556001820191506020850194506020810190506143ca565b8683101561440c5784890151614408601f891682614001565b8355505b6001600288020188555050505b505050505050565b6000815461442e81613e5e565b6144388186613c73565b9450600182166000811461445357600181146144695761449c565b60ff19831686528115156020028601935061449c565b61447285613e8f565b60005b8381101561449457815481890152600182019150602081019050614475565b808801955050505b50505092915050565b60006060820190506144ba60008301866138ff565b6144c76020830185613aef565b81810360408301526144d98184614421565b9050949350505050565b60006080820190506144f860008301886138ff565b61450560208301876138ff565b6145126040830186613aef565b818103606083015261452581848661411a565b90509695505050505050565b50565b6000614541600083613c73565b915061454c82614531565b600082019050919050565b600060808201905061456c60008301866138ff565b61457960208301856138ff565b6145866040830184613aef565b818103606083015261459781614534565b9050949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b60006145da6145d56145d0846145a1565b613f13565b6145ab565b9050919050565b6145ea816145bf565b82525050565b600060208201905061460560008301846145e1565b92915050565b60008151905061461a816139db565b92915050565b60006020828403121561463657614635613808565b5b60006146448482850161460b565b91505092915050565b600060608201905061466260008301866138ff565b61466f6020830185613aef565b81810360408301526146818184613cbf565b905094935050505056fea2646970667358221220941896e3d59e9ac06178cd3f6d81655ea98ab5673dcb4c9fbe36da3706825be364736f6c63430008160033",
866
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c80637b103999116100c3578063bd1d07b51161007c578063bd1d07b51461038b578063c9437e5e146103a9578063cb3cfb29146103c7578063cd6dc687146103e3578063e3d79a6e146103ff578063e534155d1461041b57610158565b80637b103999146102df57806383d38fcb146102fd5780638fb33c3c14610319578063a47d1f5e14610335578063acec338a14610353578063baf139751461036f57610158565b806320f99c0a1161011557806320f99c0a14610233578063299e11d814610251578063308f8e1c1461026d57806334427f611461028957806338af3eed146102a5578063452736fd146102c357610158565b806301ffc9a71461015d57806302fb0c5e1461018d578063035aedfa146101ab57806305de0a2e146101c9578063150b7a02146101e557806317d70f7c14610215575b600080fd5b6101776004803603810190610172919061386a565b610439565b60405161018491906138b2565b60405180910390f35b6101956104a3565b6040516101a291906138b2565b60405180910390f35b6101b36104b6565b6040516101c0919061390e565b60405180910390f35b6101e360048036038101906101de919061398e565b6104dc565b005b6101ff60048036038101906101fa9190613a3d565b6109aa565b60405161020c9190613ad4565b60405180910390f35b61021d610ea7565b60405161022a9190613afe565b60405180910390f35b61023b610ead565b604051610248919061390e565b60405180910390f35b61026b60048036038101906102669190613b19565b610ed3565b005b61028760048036038101906102829190613b94565b610fff565b005b6102a3600480360381019061029e9190613bf4565b61148a565b005b6102ad6114a6565b6040516102ba919061390e565b60405180910390f35b6102dd60048036038101906102d8919061398e565b6114cc565b005b6102e7611acb565b6040516102f4919061390e565b60405180910390f35b6103176004803603810190610312919061398e565b611aef565b005b610333600480360381019061032e919061398e565b611f6b565b005b61033d612253565b60405161034a9190613cf8565b60405180910390f35b61036d60048036038101906103689190613d46565b6122e1565b005b61038960048036038101906103849190613b94565b6122fe565b005b610393612787565b6040516103a0919061390e565b60405180910390f35b6103b16127ad565b6040516103be91906138b2565b60405180910390f35b6103e160048036038101906103dc919061398e565b6127bc565b005b6103fd60048036038101906103f89190613d73565b612c8a565b005b61041960048036038101906104149190613b94565b612e1b565b005b6104236132a4565b604051610430919061390e565b60405180910390f35b60007f3e143f7b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600660149054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190613dc8565b905080156105a8576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166105ee576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610675576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067d6132ca565b6106b3576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156106f3576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361077b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610824576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84846007918261083592919061403b565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506108d28188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061339b565b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f279c68b511f19d28a79afc0687d9909fc941d6f7551e4b0e333a1171cc2eea5f60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548b8b6040516109999493929190614147565b60405180910390a350505050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3c9190613dc8565b90508015610a76576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16610abc576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001548514610b0257846040517fed15e6cf000000000000000000000000000000000000000000000000000000008152600401610af99190613afe565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b9257336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401610b89919061390e565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610c3e5750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610d935760008585905003610c80576040517f10daa94f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008787810190610c9491906142b7565b925092509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610d015750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610d455782826040517fbd805e91000000000000000000000000000000000000000000000000000000008152600401610d3c929190614326565b60405180910390fd5b610d5e836040518060200160405280600081525061348d565b610d77826040518060200160405280600081525061339b565b8060079081610d86919061434f565b5060019350505050610da6565b848460079182610da492919061403b565b505b801515600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f44fc4ffe7e585a241451c67b41553546c65c2b07de6e9d33405e53f75357293b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001546007604051610e71939291906144a5565b60405180910390a47f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f9250505095945050505050565b60015481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360018190555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660146101000a81548160ff0219169083151502179055505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110919190613dc8565b905080156110cb576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611111576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611198576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111a06132ca565b6111d6576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611216576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361127c576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061134757508573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61137d576040517f1c98cac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084846007918261143392919061403b565b506114828686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061348d565b505050505050565b611495848383610fff565b6114a08383836122fe565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561153a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155e9190613dc8565b90508015611598576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166115de576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6115e66132ca565b61161c576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116a3576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172a576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282607882829050111561176a576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118155750600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561184c576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84846007918261185d92919061403b565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611948818a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061348d565b611996838a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061339b565b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2812f41a966386b432bd1d43d72b6613f5eca9adf4ed9e193f95f5c91a1b66268660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548f8f604051611ab89594939291906144e3565b60405180910390a4505050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b819190613dc8565b90508015611bbb576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611c01576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c88576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d0f576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611d176132ca565b611d4d576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611d8d576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611da7600060405180602001604052806000815250613616565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab67aa583060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001546040518463ffffffff1660e01b8152600401611e2693929190614557565b600060405180830381600087803b158015611e4057600080fd5b505af1158015611e54573d6000803e3d6000fd5b50505050848460079182611e6992919061403b565b506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167fea17cbc366059ac6185e6bfc7eebd173d3260bb6bc373830f9d04260e72c244b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548888604051611f5c9493929190614147565b60405180910390a25050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ffd9190613dc8565b90508015612037576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff1661207d576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156120bd576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120c56132ca565b156120fc576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461218c57336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401612183919061390e565b60405180910390fd5b6121a660006040518060200160405280600081525061348d565b6121c060006040518060200160405280600081525061339b565b6000600660146101000a81548160ff0219169083151502179055508484600791826121ec92919061403b565b507f49c56a060f3a16e899a045537fb86df850339c10c8c140a052aca89cbcc30c0b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660015487876040516122449493929190614147565b60405180910390a15050505050565b6007805461226090613e5e565b80601f016020809104026020016040519081016040528092919081815260200182805461228c90613e5e565b80156122d95780601f106122ae576101008083540402835291602001916122d9565b820191906000526020600020905b8154815290600101906020018083116122bc57829003601f168201915b505050505081565b80600660146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123909190613dc8565b905080156123ca576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16612410576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612497576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61249f6132ca565b6124d5576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612515576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361257b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612602576040517f702e6e6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036126bc576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084846007918261273092919061403b565b5061277f8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061339b565b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006127b76132ca565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561282a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284e9190613dc8565b90508015612888576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166128ce576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612955576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61295d6132ca565b612993576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156129d3576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612a5b576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612b04576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848460079182612b1592919061403b565b506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612bb28188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061348d565b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f26cb5b08a00ade9c3c65737592d8344548bf60664af05af8ed04720b893eca2760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548b8b604051612c799493929190614147565b60405180910390a350505050505050565b6000612c94613708565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612ce25750825b9050600060018367ffffffffffffffff16148015612d17575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612d25575080155b15612d5c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612dac5760018560000160086101000a81548160ff0219169083151502179055505b612db68787613730565b8315612e125760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612e0991906145f0565b60405180910390a15b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ead9190613dc8565b90508015612ee7576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16612f2d576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612fb4576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612fbc6132ca565b612ff2576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115613032576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036130b9576040517fdd9f921d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613140576040517f98f83ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361323c576000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b84846007918261324d92919061403b565b5061329c8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613616565b505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60003073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e6001546040518263ffffffff1660e01b815260040161333e9190613afe565b602060405180830381865afa15801561335b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337f9190614620565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b8173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f30426d047f8ae6511337356e511764b12f79993bd73501d0e993b3da7a780a4d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154856040516134409392919061464d565b60405180910390a381600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f9081b884d1178ac5e4855291131f541f64a88854f90b8df23412ffd63c39be1d60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154856040516135329392919061464d565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146135d1576135d060006040518060400160405280600281526020017f3078000000000000000000000000000000000000000000000000000000000000815250613616565b5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ffbe262229f456b8d55f1e1887503540dc0a1efcb4b048b6b739117e66d03121460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154856040516136bb9392919061464d565b60405180910390a381600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b61373861379e565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001819055506001600660146101000a81548160ff0219169083151502179055505050565b6137a66137de565b6137dc576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60006137e8613708565b60000160089054906101000a900460ff16905090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61384781613812565b811461385257600080fd5b50565b6000813590506138648161383e565b92915050565b6000602082840312156138805761387f613808565b5b600061388e84828501613855565b91505092915050565b60008115159050919050565b6138ac81613897565b82525050565b60006020820190506138c760008301846138a3565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138f8826138cd565b9050919050565b613908816138ed565b82525050565b600060208201905061392360008301846138ff565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261394e5761394d613929565b5b8235905067ffffffffffffffff81111561396b5761396a61392e565b5b60208301915083600182028301111561398757613986613933565b5b9250929050565b600080602083850312156139a5576139a4613808565b5b600083013567ffffffffffffffff8111156139c3576139c261380d565b5b6139cf85828601613938565b92509250509250929050565b6139e4816138ed565b81146139ef57600080fd5b50565b600081359050613a01816139db565b92915050565b6000819050919050565b613a1a81613a07565b8114613a2557600080fd5b50565b600081359050613a3781613a11565b92915050565b600080600080600060808688031215613a5957613a58613808565b5b6000613a67888289016139f2565b9550506020613a78888289016139f2565b9450506040613a8988828901613a28565b935050606086013567ffffffffffffffff811115613aaa57613aa961380d565b5b613ab688828901613938565b92509250509295509295909350565b613ace81613812565b82525050565b6000602082019050613ae96000830184613ac5565b92915050565b613af881613a07565b82525050565b6000602082019050613b136000830184613aef565b92915050565b600080600080600060a08688031215613b3557613b34613808565b5b6000613b43888289016139f2565b9550506020613b5488828901613a28565b9450506040613b65888289016139f2565b9350506060613b76888289016139f2565b9250506080613b87888289016139f2565b9150509295509295909350565b600080600060408486031215613bad57613bac613808565b5b6000613bbb868287016139f2565b935050602084013567ffffffffffffffff811115613bdc57613bdb61380d565b5b613be886828701613938565b92509250509250925092565b60008060008060608587031215613c0e57613c0d613808565b5b6000613c1c878288016139f2565b9450506020613c2d878288016139f2565b935050604085013567ffffffffffffffff811115613c4e57613c4d61380d565b5b613c5a87828801613938565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015613ca2578082015181840152602081019050613c87565b60008484015250505050565b6000601f19601f8301169050919050565b6000613cca82613c68565b613cd48185613c73565b9350613ce4818560208601613c84565b613ced81613cae565b840191505092915050565b60006020820190508181036000830152613d128184613cbf565b905092915050565b613d2381613897565b8114613d2e57600080fd5b50565b600081359050613d4081613d1a565b92915050565b600060208284031215613d5c57613d5b613808565b5b6000613d6a84828501613d31565b91505092915050565b60008060408385031215613d8a57613d89613808565b5b6000613d98858286016139f2565b9250506020613da985828601613a28565b9150509250929050565b600081519050613dc281613d1a565b92915050565b600060208284031215613dde57613ddd613808565b5b6000613dec84828501613db3565b91505092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613e7657607f821691505b602082108103613e8957613e88613e2f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613ef17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613eb4565b613efb8683613eb4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613f38613f33613f2e84613a07565b613f13565b613a07565b9050919050565b6000819050919050565b613f5283613f1d565b613f66613f5e82613f3f565b848454613ec1565b825550505050565b600090565b613f7b613f6e565b613f86818484613f49565b505050565b5b81811015613faa57613f9f600082613f73565b600181019050613f8c565b5050565b601f821115613fef57613fc081613e8f565b613fc984613ea4565b81016020851015613fd8578190505b613fec613fe485613ea4565b830182613f8b565b50505b505050565b600082821c905092915050565b600061401260001984600802613ff4565b1980831691505092915050565b600061402b8383614001565b9150826002028217905092915050565b6140458383613df5565b67ffffffffffffffff81111561405e5761405d613e00565b5b6140688254613e5e565b614073828285613fae565b6000601f8311600181146140a25760008415614090578287013590505b61409a858261401f565b865550614102565b601f1984166140b086613e8f565b60005b828110156140d8578489013582556001820191506020850194506020810190506140b3565b868310156140f557848901356140f1601f891682614001565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b60006141268385613c73565b935061413383858461410b565b61413c83613cae565b840190509392505050565b600060608201905061415c60008301876138ff565b6141696020830186613aef565b818103604083015261417c81848661411a565b905095945050505050565b6000614192826138cd565b9050919050565b6141a281614187565b81146141ad57600080fd5b50565b6000813590506141bf81614199565b92915050565b600080fd5b6141d382613cae565b810181811067ffffffffffffffff821117156141f2576141f1613e00565b5b80604052505050565b60006142056137fe565b905061421182826141ca565b919050565b600067ffffffffffffffff82111561423157614230613e00565b5b61423a82613cae565b9050602081019050919050565b600061425a61425584614216565b6141fb565b905082815260208101848484011115614276576142756141c5565b5b61428184828561410b565b509392505050565b600082601f83011261429e5761429d613929565b5b81356142ae848260208601614247565b91505092915050565b6000806000606084860312156142d0576142cf613808565b5b60006142de868287016141b0565b93505060206142ef868287016141b0565b925050604084013567ffffffffffffffff8111156143105761430f61380d565b5b61431c86828701614289565b9150509250925092565b600060408201905061433b60008301856138ff565b61434860208301846138ff565b9392505050565b61435882613c68565b67ffffffffffffffff81111561437157614370613e00565b5b61437b8254613e5e565b614386828285613fae565b600060209050601f8311600181146143b957600084156143a7578287015190505b6143b1858261401f565b865550614419565b601f1984166143c786613e8f565b60005b828110156143ef578489015182556001820191506020850194506020810190506143ca565b8683101561440c5784890151614408601f891682614001565b8355505b6001600288020188555050505b505050505050565b6000815461442e81613e5e565b6144388186613c73565b9450600182166000811461445357600181146144695761449c565b60ff19831686528115156020028601935061449c565b61447285613e8f565b60005b8381101561449457815481890152600182019150602081019050614475565b808801955050505b50505092915050565b60006060820190506144ba60008301866138ff565b6144c76020830185613aef565b81810360408301526144d98184614421565b9050949350505050565b60006080820190506144f860008301886138ff565b61450560208301876138ff565b6145126040830186613aef565b818103606083015261452581848661411a565b90509695505050505050565b50565b6000614541600083613c73565b915061454c82614531565b600082019050919050565b600060808201905061456c60008301866138ff565b61457960208301856138ff565b6145866040830184613aef565b818103606083015261459781614534565b9050949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b60006145da6145d56145d0846145a1565b613f13565b6145ab565b9050919050565b6145ea816145bf565b82525050565b600060208201905061460560008301846145e1565b92915050565b60008151905061461a816139db565b92915050565b60006020828403121561463657614635613808565b5b60006146448482850161460b565b91505092915050565b600060608201905061466260008301866138ff565b61466f6020830185613aef565b81810360408301526146818184613cbf565b905094935050505056fea2646970667358221220941896e3d59e9ac06178cd3f6d81655ea98ab5673dcb4c9fbe36da3706825be364736f6c63430008160033",
939
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162004d1b38038062004d1b833981810160405281019062000037919062000241565b80808073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506200007e6200008660201b60201c565b5050620002b5565b6000620000986200019060201b60201c565b90508060000160089054906101000a900460ff1615620000e4576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff80168160000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff16146200018d5767ffffffffffffffff8160000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff60405162000184919062000298565b60405180910390a15b50565b600080620001a3620001ac60201b60201c565b90508091505090565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200020982620001dc565b9050919050565b6200021b81620001fc565b81146200022757600080fd5b50565b6000815190506200023b8162000210565b92915050565b6000602082840312156200025a5762000259620001d7565b5b60006200026a848285016200022a565b91505092915050565b600067ffffffffffffffff82169050919050565b620002928162000273565b82525050565b6000602082019050620002af600083018462000287565b92915050565b608051614a4a620002d16000396000611bfe0152614a4a6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80637b103999116100de578063baf1397511610097578063cb3cfb2911610071578063cb3cfb291461044b578063cd6dc68714610467578063e3d79a6e14610483578063e534155d1461049f5761018e565b8063baf13975146103f3578063bd1d07b51461040f578063c9437e5e1461042d5761018e565b80637b103999146103455780637da0a8771461036357806383d38fcb146103815780638fb33c3c1461039d578063a47d1f5e146103b9578063acec338a146103d75761018e565b806320f99c0a1161014b57806334427f611161012557806334427f61146102bf57806338af3eed146102db578063452736fd146102f9578063572b6c05146103155761018e565b806320f99c0a14610269578063299e11d814610287578063308f8e1c146102a35761018e565b806301ffc9a71461019357806302fb0c5e146101c3578063035aedfa146101e157806305de0a2e146101ff578063150b7a021461021b57806317d70f7c1461024b575b600080fd5b6101ad60048036038101906101a89190613af1565b6104bd565b6040516101ba9190613b39565b60405180910390f35b6101cb610527565b6040516101d89190613b39565b60405180910390f35b6101e961053a565b6040516101f69190613b95565b60405180910390f35b61021960048036038101906102149190613c15565b610560565b005b61023560048036038101906102309190613cc4565b610a53565b6040516102429190613d5b565b60405180910390f35b610253610f59565b6040516102609190613d85565b60405180910390f35b610271610f5f565b60405161027e9190613b95565b60405180910390f35b6102a1600480360381019061029c9190613da0565b610f85565b005b6102bd60048036038101906102b89190613e1b565b6110b1565b005b6102d960048036038101906102d49190613e7b565b611543565b005b6102e361155f565b6040516102f09190613b95565b60405180910390f35b610313600480360381019061030e9190613c15565b611585565b005b61032f600480360381019061032a9190613eef565b611b97565b60405161033c9190613b39565b60405180910390f35b61034d611bd6565b60405161035a9190613b95565b60405180910390f35b61036b611bfa565b6040516103789190613b95565b60405180910390f35b61039b60048036038101906103969190613c15565b611c22565b005b6103b760048036038101906103b29190613c15565b6120b3565b005b6103c161239b565b6040516103ce9190613fac565b60405180910390f35b6103f160048036038101906103ec9190613ffa565b612429565b005b61040d60048036038101906104089190613e1b565b612446565b005b6104176128d6565b6040516104249190613b95565b60405180910390f35b6104356128fc565b6040516104429190613b39565b60405180910390f35b61046560048036038101906104609190613c15565b61290b565b005b610481600480360381019061047c9190614027565b612dfe565b005b61049d60048036038101906104989190613e1b565b612f8f565b005b6104a761341f565b6040516104b49190613b95565b60405180910390f35b60007f3e143f7b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600660149054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f2919061407c565b9050801561062c576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16610672576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106b3613445565b73ffffffffffffffffffffffffffffffffffffffff1614610700576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610708613454565b61073e576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282607882829050111561077e576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610806576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036108af576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600791826108c09291906142ef565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061095d8188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613525565b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff166109d5613445565b73ffffffffffffffffffffffffffffffffffffffff167f9d836937a837e685e1ce6796afaed48df16cd88219d6775dc46b6617b847dd1360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548c8c604051610a4294939291906143fb565b60405180910390a450505050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae5919061407c565b90508015610b1f576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16610b65576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001548514610bab57846040517fed15e6cf000000000000000000000000000000000000000000000000000000008152600401610ba29190613d85565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c3b57336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401610c329190613b95565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610ce75750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610e3c5760008585905003610d29576040517f10daa94f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008787810190610d3d919061456b565b925092509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610daa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610dee5782826040517fbd805e91000000000000000000000000000000000000000000000000000000008152600401610de59291906145da565b60405180910390fd5b610e078360405180602001604052806000815250613635565b610e208260405180602001604052806000815250613525565b8060079081610e2f9190614603565b5060019350505050610e4f565b848460079182610e4d9291906142ef565b505b801515600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f949aacc83c3ca79403342afa7cf9a504f34996bc163596e87d5f0bd365a60f7e610eed613445565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001546007604051610f239493929190614759565b60405180910390a47f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f9250505095945050505050565b60015481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360018190555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660146101000a81548160ff0219169083151502179055505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611143919061407c565b9050801561117d576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166111c3576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611204613445565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611259613454565b61128f576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156112cf576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611335576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061140057508573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611436576040517f1c98cac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600791826114ec9291906142ef565b5061153b8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613635565b505050505050565b61154e8483836110b1565b611559838383612446565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611617919061407c565b90508015611651576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611697576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169f613454565b6116d5576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611716613445565b73ffffffffffffffffffffffffffffffffffffffff1614611763576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117a4613445565b73ffffffffffffffffffffffffffffffffffffffff16146117f1576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611831576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118dc5750600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611913576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600791826119249291906142ef565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611a0f818a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613635565b611a5d838a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613525565b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2e6f393db2fca12e96dfa806cf78ed2daddc38a90ffd973ef5a6b4fdbabae410611b4f613445565b8760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154604051611b8494939291906147a5565b60405180910390a4505050505050505050565b6000611ba1611bfa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb4919061407c565b90508015611cee576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611d34576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d75613445565b73ffffffffffffffffffffffffffffffffffffffff1614611dc2576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e03613445565b73ffffffffffffffffffffffffffffffffffffffff1614611e50576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e58613454565b611e8e576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611ece576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ee86000604051806020016040528060008152506137dc565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab67aa583060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001546040518463ffffffff1660e01b8152600401611f6793929190614810565b600060405180830381600087803b158015611f8157600080fd5b505af1158015611f95573d6000803e3d6000fd5b50505050848460079182611faa9291906142ef565b506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612037613445565b73ffffffffffffffffffffffffffffffffffffffff167fea17cbc366059ac6185e6bfc7eebd173d3260bb6bc373830f9d04260e72c244b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660015488886040516120a494939291906143fb565b60405180910390a25050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612121573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612145919061407c565b9050801561217f576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166121c5576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612205576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61220d613454565b15612244576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122d457336040517f540b96010000000000000000000000000000000000000000000000000000000081526004016122cb9190613b95565b60405180910390fd5b6122ee600060405180602001604052806000815250613635565b612308600060405180602001604052806000815250613525565b6000600660146101000a81548160ff0219169083151502179055508484600791826123349291906142ef565b507f49c56a060f3a16e899a045537fb86df850339c10c8c140a052aca89cbcc30c0b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154878760405161238c94939291906143fb565b60405180910390a15050505050565b600780546123a890614112565b80601f01602080910402602001604051908101604052809291908181526020018280546123d490614112565b80156124215780601f106123f657610100808354040283529160200191612421565b820191906000526020600020905b81548152906001019060200180831161240457829003601f168201915b505050505081565b80600660146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d8919061407c565b90508015612512576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16612558576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612599613445565b73ffffffffffffffffffffffffffffffffffffffff16146125e6576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125ee613454565b612624576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612664576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036126ca576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612751576040517f702e6e6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361280b576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084846007918261287f9291906142ef565b506128ce8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613525565b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612906613454565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299d919061407c565b905080156129d7576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16612a1d576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a5e613445565b73ffffffffffffffffffffffffffffffffffffffff1614612aab576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ab3613454565b612ae9576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612b29576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612bb1576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612c5a576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848460079182612c6b9291906142ef565b506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612d088188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613635565b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16612d80613445565b73ffffffffffffffffffffffffffffffffffffffff167f5ede0a76a5fa7073243cab067bae342c2fbb26acd128b30356d94d1a4c1d20ea60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548c8c604051612ded94939291906143fb565b60405180910390a450505050505050565b6000612e086138ec565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612e565750825b9050600060018367ffffffffffffffff16148015612e8b575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612e99575080155b15612ed0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612f205760018560000160086101000a81548160ff0219169083151502179055505b612f2a8787613900565b8315612f865760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612f7d91906148a9565b60405180910390a15b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613021919061407c565b9050801561305b576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166130a1576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166130e2613445565b73ffffffffffffffffffffffffffffffffffffffff161461312f576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613137613454565b61316d576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156131ad576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613234576040517fdd9f921d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036132bb576040517f98f83ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036133b7576000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8484600791826133c89291906142ef565b506134178686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506137dc565b505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061344f61396e565b905090565b60003073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e6001546040518263ffffffff1660e01b81526004016134c89190613d85565b602060405180830381865afa1580156134e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350991906148d9565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b8173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661357d613445565b73ffffffffffffffffffffffffffffffffffffffff167f220142965e07ad032af0005eb4747d4a55acc8c786d04f087ce27e10ea2d140460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154866040516135e893929190614906565b60405180910390a481600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661368d613445565b73ffffffffffffffffffffffffffffffffffffffff167f48509251c4976d4cc0f5420ed39336d873f0713b399e0200c55069c04937b96860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154866040516136f893929190614906565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146137975761379660006040518060400160405280600281526020017f30780000000000000000000000000000000000000000000000000000000000008152506137dc565b5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613834613445565b73ffffffffffffffffffffffffffffffffffffffff167ff5b0435494e36d58667cba8d6d2b6983f1c65c50be1cb5a861fdf3ad76357a6e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548660405161389f93929190614906565b60405180910390a481600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000806138f76139da565b90508091505090565b613908613a05565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001819055506001600660146101000a81548160ff0219169083151502179055505050565b600080600036905090506000613982613a45565b9050808210158015613999575061399833611b97565b5b156139ca576000368284039080926139b39392919061494e565b906139be91906149b5565b60601c925050506139d7565b6139d2613a54565b925050505b90565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b613a0d613a5c565b613a43576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000613a4f613a7c565b905090565b600033905090565b6000613a666138ec565b60000160089054906101000a900460ff16905090565b60006014905090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613ace81613a99565b8114613ad957600080fd5b50565b600081359050613aeb81613ac5565b92915050565b600060208284031215613b0757613b06613a8f565b5b6000613b1584828501613adc565b91505092915050565b60008115159050919050565b613b3381613b1e565b82525050565b6000602082019050613b4e6000830184613b2a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b7f82613b54565b9050919050565b613b8f81613b74565b82525050565b6000602082019050613baa6000830184613b86565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613bd557613bd4613bb0565b5b8235905067ffffffffffffffff811115613bf257613bf1613bb5565b5b602083019150836001820283011115613c0e57613c0d613bba565b5b9250929050565b60008060208385031215613c2c57613c2b613a8f565b5b600083013567ffffffffffffffff811115613c4a57613c49613a94565b5b613c5685828601613bbf565b92509250509250929050565b613c6b81613b74565b8114613c7657600080fd5b50565b600081359050613c8881613c62565b92915050565b6000819050919050565b613ca181613c8e565b8114613cac57600080fd5b50565b600081359050613cbe81613c98565b92915050565b600080600080600060808688031215613ce057613cdf613a8f565b5b6000613cee88828901613c79565b9550506020613cff88828901613c79565b9450506040613d1088828901613caf565b935050606086013567ffffffffffffffff811115613d3157613d30613a94565b5b613d3d88828901613bbf565b92509250509295509295909350565b613d5581613a99565b82525050565b6000602082019050613d706000830184613d4c565b92915050565b613d7f81613c8e565b82525050565b6000602082019050613d9a6000830184613d76565b92915050565b600080600080600060a08688031215613dbc57613dbb613a8f565b5b6000613dca88828901613c79565b9550506020613ddb88828901613caf565b9450506040613dec88828901613c79565b9350506060613dfd88828901613c79565b9250506080613e0e88828901613c79565b9150509295509295909350565b600080600060408486031215613e3457613e33613a8f565b5b6000613e4286828701613c79565b935050602084013567ffffffffffffffff811115613e6357613e62613a94565b5b613e6f86828701613bbf565b92509250509250925092565b60008060008060608587031215613e9557613e94613a8f565b5b6000613ea387828801613c79565b9450506020613eb487828801613c79565b935050604085013567ffffffffffffffff811115613ed557613ed4613a94565b5b613ee187828801613bbf565b925092505092959194509250565b600060208284031215613f0557613f04613a8f565b5b6000613f1384828501613c79565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f56578082015181840152602081019050613f3b565b60008484015250505050565b6000601f19601f8301169050919050565b6000613f7e82613f1c565b613f888185613f27565b9350613f98818560208601613f38565b613fa181613f62565b840191505092915050565b60006020820190508181036000830152613fc68184613f73565b905092915050565b613fd781613b1e565b8114613fe257600080fd5b50565b600081359050613ff481613fce565b92915050565b6000602082840312156140105761400f613a8f565b5b600061401e84828501613fe5565b91505092915050565b6000806040838503121561403e5761403d613a8f565b5b600061404c85828601613c79565b925050602061405d85828601613caf565b9150509250929050565b60008151905061407681613fce565b92915050565b60006020828403121561409257614091613a8f565b5b60006140a084828501614067565b91505092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061412a57607f821691505b60208210810361413d5761413c6140e3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026141a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614168565b6141af8683614168565b95508019841693508086168417925050509392505050565b6000819050919050565b60006141ec6141e76141e284613c8e565b6141c7565b613c8e565b9050919050565b6000819050919050565b614206836141d1565b61421a614212826141f3565b848454614175565b825550505050565b600090565b61422f614222565b61423a8184846141fd565b505050565b5b8181101561425e57614253600082614227565b600181019050614240565b5050565b601f8211156142a35761427481614143565b61427d84614158565b8101602085101561428c578190505b6142a061429885614158565b83018261423f565b50505b505050565b600082821c905092915050565b60006142c6600019846008026142a8565b1980831691505092915050565b60006142df83836142b5565b9150826002028217905092915050565b6142f983836140a9565b67ffffffffffffffff811115614312576143116140b4565b5b61431c8254614112565b614327828285614262565b6000601f8311600181146143565760008415614344578287013590505b61434e85826142d3565b8655506143b6565b601f19841661436486614143565b60005b8281101561438c57848901358255600182019150602085019450602081019050614367565b868310156143a957848901356143a5601f8916826142b5565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b60006143da8385613f27565b93506143e78385846143bf565b6143f083613f62565b840190509392505050565b60006060820190506144106000830187613b86565b61441d6020830186613d76565b81810360408301526144308184866143ce565b905095945050505050565b600061444682613b54565b9050919050565b6144568161443b565b811461446157600080fd5b50565b6000813590506144738161444d565b92915050565b600080fd5b61448782613f62565b810181811067ffffffffffffffff821117156144a6576144a56140b4565b5b80604052505050565b60006144b9613a85565b90506144c5828261447e565b919050565b600067ffffffffffffffff8211156144e5576144e46140b4565b5b6144ee82613f62565b9050602081019050919050565b600061450e614509846144ca565b6144af565b90508281526020810184848401111561452a57614529614479565b5b6145358482856143bf565b509392505050565b600082601f83011261455257614551613bb0565b5b81356145628482602086016144fb565b91505092915050565b60008060006060848603121561458457614583613a8f565b5b600061459286828701614464565b93505060206145a386828701614464565b925050604084013567ffffffffffffffff8111156145c4576145c3613a94565b5b6145d08682870161453d565b9150509250925092565b60006040820190506145ef6000830185613b86565b6145fc6020830184613b86565b9392505050565b61460c82613f1c565b67ffffffffffffffff811115614625576146246140b4565b5b61462f8254614112565b61463a828285614262565b600060209050601f83116001811461466d576000841561465b578287015190505b61466585826142d3565b8655506146cd565b601f19841661467b86614143565b60005b828110156146a35784890151825560018201915060208501945060208101905061467e565b868310156146c057848901516146bc601f8916826142b5565b8355505b6001600288020188555050505b505050505050565b600081546146e281614112565b6146ec8186613f27565b94506001821660008114614707576001811461471d57614750565b60ff198316865281151560200286019350614750565b61472685614143565b60005b8381101561474857815481890152600182019150602081019050614729565b808801955050505b50505092915050565b600060808201905061476e6000830187613b86565b61477b6020830186613b86565b6147886040830185613d76565b818103606083015261479a81846146d5565b905095945050505050565b60006080820190506147ba6000830187613b86565b6147c76020830186613b86565b6147d46040830185613b86565b6147e16060830184613d76565b95945050505050565b50565b60006147fa600083613f27565b9150614805826147ea565b600082019050919050565b60006080820190506148256000830186613b86565b6148326020830185613b86565b61483f6040830184613d76565b8181036060830152614850816147ed565b9050949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600061489361488e6148898461485a565b6141c7565b614864565b9050919050565b6148a381614878565b82525050565b60006020820190506148be600083018461489a565b92915050565b6000815190506148d381613c62565b92915050565b6000602082840312156148ef576148ee613a8f565b5b60006148fd848285016148c4565b91505092915050565b600060608201905061491b6000830186613b86565b6149286020830185613d76565b818103604083015261493a8184613f73565b9050949350505050565b600080fd5b600080fd5b6000808585111561496257614961614944565b5b8386111561497357614972614949565b5b6001850283019150848603905094509492505050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b60006149c183836140a9565b826149cc8135614989565b92506014821015614a0c57614a077fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802614168565b831692505b50509291505056fea2646970667358221220be0c9de9843fd10f0530f4521807fdfede01ee188e8922cfd1d4a5e6719191f664736f6c63430008160033",
940
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80637b103999116100de578063baf1397511610097578063cb3cfb2911610071578063cb3cfb291461044b578063cd6dc68714610467578063e3d79a6e14610483578063e534155d1461049f5761018e565b8063baf13975146103f3578063bd1d07b51461040f578063c9437e5e1461042d5761018e565b80637b103999146103455780637da0a8771461036357806383d38fcb146103815780638fb33c3c1461039d578063a47d1f5e146103b9578063acec338a146103d75761018e565b806320f99c0a1161014b57806334427f611161012557806334427f61146102bf57806338af3eed146102db578063452736fd146102f9578063572b6c05146103155761018e565b806320f99c0a14610269578063299e11d814610287578063308f8e1c146102a35761018e565b806301ffc9a71461019357806302fb0c5e146101c3578063035aedfa146101e157806305de0a2e146101ff578063150b7a021461021b57806317d70f7c1461024b575b600080fd5b6101ad60048036038101906101a89190613af1565b6104bd565b6040516101ba9190613b39565b60405180910390f35b6101cb610527565b6040516101d89190613b39565b60405180910390f35b6101e961053a565b6040516101f69190613b95565b60405180910390f35b61021960048036038101906102149190613c15565b610560565b005b61023560048036038101906102309190613cc4565b610a53565b6040516102429190613d5b565b60405180910390f35b610253610f59565b6040516102609190613d85565b60405180910390f35b610271610f5f565b60405161027e9190613b95565b60405180910390f35b6102a1600480360381019061029c9190613da0565b610f85565b005b6102bd60048036038101906102b89190613e1b565b6110b1565b005b6102d960048036038101906102d49190613e7b565b611543565b005b6102e361155f565b6040516102f09190613b95565b60405180910390f35b610313600480360381019061030e9190613c15565b611585565b005b61032f600480360381019061032a9190613eef565b611b97565b60405161033c9190613b39565b60405180910390f35b61034d611bd6565b60405161035a9190613b95565b60405180910390f35b61036b611bfa565b6040516103789190613b95565b60405180910390f35b61039b60048036038101906103969190613c15565b611c22565b005b6103b760048036038101906103b29190613c15565b6120b3565b005b6103c161239b565b6040516103ce9190613fac565b60405180910390f35b6103f160048036038101906103ec9190613ffa565b612429565b005b61040d60048036038101906104089190613e1b565b612446565b005b6104176128d6565b6040516104249190613b95565b60405180910390f35b6104356128fc565b6040516104429190613b39565b60405180910390f35b61046560048036038101906104609190613c15565b61290b565b005b610481600480360381019061047c9190614027565b612dfe565b005b61049d60048036038101906104989190613e1b565b612f8f565b005b6104a761341f565b6040516104b49190613b95565b60405180910390f35b60007f3e143f7b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600660149054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f2919061407c565b9050801561062c576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16610672576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106b3613445565b73ffffffffffffffffffffffffffffffffffffffff1614610700576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610708613454565b61073e576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8282607882829050111561077e576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610806576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036108af576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600791826108c09291906142ef565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061095d8188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613525565b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff166109d5613445565b73ffffffffffffffffffffffffffffffffffffffff167f9d836937a837e685e1ce6796afaed48df16cd88219d6775dc46b6617b847dd1360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548c8c604051610a4294939291906143fb565b60405180910390a450505050505050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae5919061407c565b90508015610b1f576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16610b65576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001548514610bab57846040517fed15e6cf000000000000000000000000000000000000000000000000000000008152600401610ba29190613d85565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c3b57336040517f540b9601000000000000000000000000000000000000000000000000000000008152600401610c329190613b95565b60405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610ce75750600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610e3c5760008585905003610d29576040517f10daa94f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008787810190610d3d919061456b565b925092509250600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610daa5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15610dee5782826040517fbd805e91000000000000000000000000000000000000000000000000000000008152600401610de59291906145da565b60405180910390fd5b610e078360405180602001604052806000815250613635565b610e208260405180602001604052806000815250613525565b8060079081610e2f9190614603565b5060019350505050610e4f565b848460079182610e4d9291906142ef565b505b801515600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f949aacc83c3ca79403342afa7cf9a504f34996bc163596e87d5f0bd365a60f7e610eed613445565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001546007604051610f239493929190614759565b60405180910390a47f150b7a023d4804d13e8c85fb27262cb750cf6ba9f9dd3bb30d90f482ceeb4b1f9250505095945050505050565b60015481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b846000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360018190555082600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660146101000a81548160ff0219169083151502179055505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561111f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611143919061407c565b9050801561117d576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166111c3576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611204613445565b73ffffffffffffffffffffffffffffffffffffffff1614611251576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611259613454565b61128f576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156112cf576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611335576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061140057508573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611436576040517f1c98cac300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508484600791826114ec9291906142ef565b5061153b8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613635565b505050505050565b61154e8483836110b1565b611559838383612446565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611617919061407c565b90508015611651576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611697576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61169f613454565b6116d5576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611716613445565b73ffffffffffffffffffffffffffffffffffffffff1614611763576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117a4613445565b73ffffffffffffffffffffffffffffffffffffffff16146117f1576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611831576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806118dc5750600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611913576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484600791826119249291906142ef565b506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611a0f818a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613635565b611a5d838a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613525565b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f2e6f393db2fca12e96dfa806cf78ed2daddc38a90ffd973ef5a6b4fdbabae410611b4f613445565b8760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154604051611b8494939291906147a5565b60405180910390a4505050505050505050565b6000611ba1611bfa565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb4919061407c565b90508015611cee576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16611d34576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611d75613445565b73ffffffffffffffffffffffffffffffffffffffff1614611dc2576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e03613445565b73ffffffffffffffffffffffffffffffffffffffff1614611e50576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e58613454565b611e8e576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115611ece576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ee86000604051806020016040528060008152506137dc565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ab67aa583060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001546040518463ffffffff1660e01b8152600401611f6793929190614810565b600060405180830381600087803b158015611f8157600080fd5b505af1158015611f95573d6000803e3d6000fd5b50505050848460079182611faa9291906142ef565b506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612037613445565b73ffffffffffffffffffffffffffffffffffffffff167fea17cbc366059ac6185e6bfc7eebd173d3260bb6bc373830f9d04260e72c244b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660015488886040516120a494939291906143fb565b60405180910390a25050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612121573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612145919061407c565b9050801561217f576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166121c5576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612205576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61220d613454565b15612244576040517fd5475a0b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122d457336040517f540b96010000000000000000000000000000000000000000000000000000000081526004016122cb9190613b95565b60405180910390fd5b6122ee600060405180602001604052806000815250613635565b612308600060405180602001604052806000815250613525565b6000600660146101000a81548160ff0219169083151502179055508484600791826123349291906142ef565b507f49c56a060f3a16e899a045537fb86df850339c10c8c140a052aca89cbcc30c0b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154878760405161238c94939291906143fb565b60405180910390a15050505050565b600780546123a890614112565b80601f01602080910402602001604051908101604052809291908181526020018280546123d490614112565b80156124215780601f106123f657610100808354040283529160200191612421565b820191906000526020600020905b81548152906001019060200180831161240457829003601f168201915b505050505081565b80600660146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d8919061407c565b90508015612512576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16612558576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612599613445565b73ffffffffffffffffffffffffffffffffffffffff16146125e6576040517f667b3fbf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6125ee613454565b612624576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612664576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036126ca576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612751576040517f702e6e6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361280b576000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084846007918261287f9291906142ef565b506128ce8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613525565b505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000612906613454565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299d919061407c565b905080156129d7576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff16612a1d576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a5e613445565b73ffffffffffffffffffffffffffffffffffffffff1614612aab576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ab3613454565b612ae9576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82826078828290501115612b29576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612bb1576040517f2c75c45a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612c5a576040517f8c90bf4500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848460079182612c6b9291906142ef565b506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612d088188888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613635565b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16612d80613445565b73ffffffffffffffffffffffffffffffffffffffff167f5ede0a76a5fa7073243cab067bae342c2fbb26acd128b30356d94d1a4c1d20ea60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548c8c604051612ded94939291906143fb565b60405180910390a450505050505050565b6000612e086138ec565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015612e565750825b9050600060018367ffffffffffffffff16148015612e8b575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612e99575080155b15612ed0576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612f205760018560000160086101000a81548160ff0219169083151502179055505b612f2a8787613900565b8315612f865760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051612f7d91906148a9565b60405180910390a15b50505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613021919061407c565b9050801561305b576040517fad49811c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff166130a1576040517f7c339b1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166130e2613445565b73ffffffffffffffffffffffffffffffffffffffff161461312f576040517ff52018ac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613137613454565b61316d576040517f2fd3952300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828260788282905011156131ad576040517f1408658400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603613234576040517fdd9f921d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036132bb576040517f98f83ce800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036133b7576000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b8484600791826133c89291906142ef565b506134178686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506137dc565b505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061344f61396e565b905090565b60003073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e6001546040518263ffffffff1660e01b81526004016134c89190613d85565b602060405180830381865afa1580156134e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350991906148d9565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b8173ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661357d613445565b73ffffffffffffffffffffffffffffffffffffffff167f220142965e07ad032af0005eb4747d4a55acc8c786d04f087ce27e10ea2d140460008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154866040516135e893929190614906565b60405180910390a481600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b8173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661368d613445565b73ffffffffffffffffffffffffffffffffffffffff167f48509251c4976d4cc0f5420ed39336d873f0713b399e0200c55069c04937b96860008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600154866040516136f893929190614906565b60405180910390a4600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146137975761379660006040518060400160405280600281526020017f30780000000000000000000000000000000000000000000000000000000000008152506137dc565b5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b8173ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613834613445565b73ffffffffffffffffffffffffffffffffffffffff167ff5b0435494e36d58667cba8d6d2b6983f1c65c50be1cb5a861fdf3ad76357a6e60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001548660405161389f93929190614906565b60405180910390a481600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000806138f76139da565b90508091505090565b613908613a05565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806001819055506001600660146101000a81548160ff0219169083151502179055505050565b600080600036905090506000613982613a45565b9050808210158015613999575061399833611b97565b5b156139ca576000368284039080926139b39392919061494e565b906139be91906149b5565b60601c925050506139d7565b6139d2613a54565b925050505b90565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0060001b905090565b613a0d613a5c565b613a43576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000613a4f613a7c565b905090565b600033905090565b6000613a666138ec565b60000160089054906101000a900460ff16905090565b60006014905090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613ace81613a99565b8114613ad957600080fd5b50565b600081359050613aeb81613ac5565b92915050565b600060208284031215613b0757613b06613a8f565b5b6000613b1584828501613adc565b91505092915050565b60008115159050919050565b613b3381613b1e565b82525050565b6000602082019050613b4e6000830184613b2a565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613b7f82613b54565b9050919050565b613b8f81613b74565b82525050565b6000602082019050613baa6000830184613b86565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613bd557613bd4613bb0565b5b8235905067ffffffffffffffff811115613bf257613bf1613bb5565b5b602083019150836001820283011115613c0e57613c0d613bba565b5b9250929050565b60008060208385031215613c2c57613c2b613a8f565b5b600083013567ffffffffffffffff811115613c4a57613c49613a94565b5b613c5685828601613bbf565b92509250509250929050565b613c6b81613b74565b8114613c7657600080fd5b50565b600081359050613c8881613c62565b92915050565b6000819050919050565b613ca181613c8e565b8114613cac57600080fd5b50565b600081359050613cbe81613c98565b92915050565b600080600080600060808688031215613ce057613cdf613a8f565b5b6000613cee88828901613c79565b9550506020613cff88828901613c79565b9450506040613d1088828901613caf565b935050606086013567ffffffffffffffff811115613d3157613d30613a94565b5b613d3d88828901613bbf565b92509250509295509295909350565b613d5581613a99565b82525050565b6000602082019050613d706000830184613d4c565b92915050565b613d7f81613c8e565b82525050565b6000602082019050613d9a6000830184613d76565b92915050565b600080600080600060a08688031215613dbc57613dbb613a8f565b5b6000613dca88828901613c79565b9550506020613ddb88828901613caf565b9450506040613dec88828901613c79565b9350506060613dfd88828901613c79565b9250506080613e0e88828901613c79565b9150509295509295909350565b600080600060408486031215613e3457613e33613a8f565b5b6000613e4286828701613c79565b935050602084013567ffffffffffffffff811115613e6357613e62613a94565b5b613e6f86828701613bbf565b92509250509250925092565b60008060008060608587031215613e9557613e94613a8f565b5b6000613ea387828801613c79565b9450506020613eb487828801613c79565b935050604085013567ffffffffffffffff811115613ed557613ed4613a94565b5b613ee187828801613bbf565b925092505092959194509250565b600060208284031215613f0557613f04613a8f565b5b6000613f1384828501613c79565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f56578082015181840152602081019050613f3b565b60008484015250505050565b6000601f19601f8301169050919050565b6000613f7e82613f1c565b613f888185613f27565b9350613f98818560208601613f38565b613fa181613f62565b840191505092915050565b60006020820190508181036000830152613fc68184613f73565b905092915050565b613fd781613b1e565b8114613fe257600080fd5b50565b600081359050613ff481613fce565b92915050565b6000602082840312156140105761400f613a8f565b5b600061401e84828501613fe5565b91505092915050565b6000806040838503121561403e5761403d613a8f565b5b600061404c85828601613c79565b925050602061405d85828601613caf565b9150509250929050565b60008151905061407681613fce565b92915050565b60006020828403121561409257614091613a8f565b5b60006140a084828501614067565b91505092915050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061412a57607f821691505b60208210810361413d5761413c6140e3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026141a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614168565b6141af8683614168565b95508019841693508086168417925050509392505050565b6000819050919050565b60006141ec6141e76141e284613c8e565b6141c7565b613c8e565b9050919050565b6000819050919050565b614206836141d1565b61421a614212826141f3565b848454614175565b825550505050565b600090565b61422f614222565b61423a8184846141fd565b505050565b5b8181101561425e57614253600082614227565b600181019050614240565b5050565b601f8211156142a35761427481614143565b61427d84614158565b8101602085101561428c578190505b6142a061429885614158565b83018261423f565b50505b505050565b600082821c905092915050565b60006142c6600019846008026142a8565b1980831691505092915050565b60006142df83836142b5565b9150826002028217905092915050565b6142f983836140a9565b67ffffffffffffffff811115614312576143116140b4565b5b61431c8254614112565b614327828285614262565b6000601f8311600181146143565760008415614344578287013590505b61434e85826142d3565b8655506143b6565b601f19841661436486614143565b60005b8281101561438c57848901358255600182019150602085019450602081019050614367565b868310156143a957848901356143a5601f8916826142b5565b8355505b6001600288020188555050505b50505050505050565b82818337600083830152505050565b60006143da8385613f27565b93506143e78385846143bf565b6143f083613f62565b840190509392505050565b60006060820190506144106000830187613b86565b61441d6020830186613d76565b81810360408301526144308184866143ce565b905095945050505050565b600061444682613b54565b9050919050565b6144568161443b565b811461446157600080fd5b50565b6000813590506144738161444d565b92915050565b600080fd5b61448782613f62565b810181811067ffffffffffffffff821117156144a6576144a56140b4565b5b80604052505050565b60006144b9613a85565b90506144c5828261447e565b919050565b600067ffffffffffffffff8211156144e5576144e46140b4565b5b6144ee82613f62565b9050602081019050919050565b600061450e614509846144ca565b6144af565b90508281526020810184848401111561452a57614529614479565b5b6145358482856143bf565b509392505050565b600082601f83011261455257614551613bb0565b5b81356145628482602086016144fb565b91505092915050565b60008060006060848603121561458457614583613a8f565b5b600061459286828701614464565b93505060206145a386828701614464565b925050604084013567ffffffffffffffff8111156145c4576145c3613a94565b5b6145d08682870161453d565b9150509250925092565b60006040820190506145ef6000830185613b86565b6145fc6020830184613b86565b9392505050565b61460c82613f1c565b67ffffffffffffffff811115614625576146246140b4565b5b61462f8254614112565b61463a828285614262565b600060209050601f83116001811461466d576000841561465b578287015190505b61466585826142d3565b8655506146cd565b601f19841661467b86614143565b60005b828110156146a35784890151825560018201915060208501945060208101905061467e565b868310156146c057848901516146bc601f8916826142b5565b8355505b6001600288020188555050505b505050505050565b600081546146e281614112565b6146ec8186613f27565b94506001821660008114614707576001811461471d57614750565b60ff198316865281151560200286019350614750565b61472685614143565b60005b8381101561474857815481890152600182019150602081019050614729565b808801955050505b50505092915050565b600060808201905061476e6000830187613b86565b61477b6020830186613b86565b6147886040830185613d76565b818103606083015261479a81846146d5565b905095945050505050565b60006080820190506147ba6000830187613b86565b6147c76020830186613b86565b6147d46040830185613b86565b6147e16060830184613d76565b95945050505050565b50565b60006147fa600083613f27565b9150614805826147ea565b600082019050919050565b60006080820190506148256000830186613b86565b6148326020830185613b86565b61483f6040830184613d76565b8181036060830152614850816147ed565b9050949350505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600061489361488e6148898461485a565b6141c7565b614864565b9050919050565b6148a381614878565b82525050565b60006020820190506148be600083018461489a565b92915050565b6000815190506148d381613c62565b92915050565b6000602082840312156148ef576148ee613a8f565b5b60006148fd848285016148c4565b91505092915050565b600060608201905061491b6000830186613b86565b6149286020830185613d76565b818103604083015261493a8184613f73565b9050949350505050565b600080fd5b600080fd5b6000808585111561496257614961614944565b5b8386111561497357614972614949565b5b6001850283019150848603905094509492505050565b60007fffffffffffffffffffffffffffffffffffffffff00000000000000000000000082169050919050565b60006149c183836140a9565b826149cc8135614989565b92506014821015614a0c57614a077fffffffffffffffffffffffffffffffffffffffff00000000000000000000000083601403600802614168565b831692505b50509291505056fea2646970667358221220be0c9de9843fd10f0530f4521807fdfede01ee188e8922cfd1d4a5e6719191f664736f6c63430008160033",
867
941
  "linkReferences": {},
868
942
  "deployedLinkReferences": {}
869
943
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/1067a345634333e57c0800bdd087e30a.json"
3
+ "buildInfo": "../../../build-info/cde4f950b67209cffa8a0323a6ef50d8.json"
4
4
  }