@superfluid-finance/ethereum-contracts 1.2.3-dev.f94fdbb.0 → 1.3.1-dev.7df8a6a.0

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 (171) hide show
  1. package/build/contracts/AccessControl.json +3 -3
  2. package/build/contracts/AccessControlEnumerable.json +3 -3
  3. package/build/contracts/Address.json +5 -5
  4. package/build/contracts/AgreementBase.json +13 -13
  5. package/build/contracts/AgreementLibrary.json +7 -7
  6. package/build/contracts/BaseRelayRecipient.json +5 -5
  7. package/build/contracts/BatchLiquidator.json +179 -179
  8. package/build/contracts/BatchOperation.json +5 -5
  9. package/build/contracts/CFAv1Library.json +5 -5
  10. package/build/contracts/CallUtils.json +7 -7
  11. package/build/contracts/ClosingOnUpdateFlowTestApp.json +2107 -1917
  12. package/build/contracts/ConstantFlowAgreementV1.json +8 -8
  13. package/build/contracts/Context.json +3 -3
  14. package/build/contracts/ContextDefinitions.json +5 -5
  15. package/build/contracts/Create2.json +5 -5
  16. package/build/contracts/CustomSuperTokenBase.json +3 -3
  17. package/build/contracts/ERC165.json +3 -3
  18. package/build/contracts/ERC1820Implementer.json +5 -5
  19. package/build/contracts/ERC1820RegistryCompiled.json +7 -7
  20. package/build/contracts/ERC20.json +5 -5
  21. package/build/contracts/ERC20Burnable.json +3 -3
  22. package/build/contracts/ERC20Pausable.json +3 -3
  23. package/build/contracts/ERC20PresetMinterPauser.json +5 -5
  24. package/build/contracts/ERC20WithTokenInfo.json +3 -3
  25. package/build/contracts/ERC777Helper.json +7 -7
  26. package/build/contracts/ERC777RecipientDrainingGas.json +839 -839
  27. package/build/contracts/ERC777RecipientReverting.json +839 -839
  28. package/build/contracts/EnumerableSet.json +5 -5
  29. package/build/contracts/EventsEmitter.json +47 -47
  30. package/build/contracts/ExclusiveInflowTestApp.json +2107 -1917
  31. package/build/contracts/FixedSizeData.json +213 -213
  32. package/build/contracts/FlowExchangeTestApp.json +2107 -1917
  33. package/build/contracts/FlowOperatorDefinitions.json +5 -5
  34. package/build/contracts/FullUpgradableSuperTokenProxy.json +226 -312
  35. package/build/contracts/IAccessControl.json +3 -3
  36. package/build/contracts/IAccessControlEnumerable.json +3 -3
  37. package/build/contracts/IConstantFlowAgreementV1.json +451 -444
  38. package/build/contracts/IDAv1Library.json +5 -5
  39. package/build/contracts/IERC165.json +3 -3
  40. package/build/contracts/IERC1820Implementer.json +3 -3
  41. package/build/contracts/IERC1820Registry.json +3 -3
  42. package/build/contracts/IERC20.json +3 -3
  43. package/build/contracts/IERC20Metadata.json +3 -3
  44. package/build/contracts/IERC777.json +3 -3
  45. package/build/contracts/IERC777Recipient.json +3 -3
  46. package/build/contracts/IERC777Sender.json +3 -3
  47. package/build/contracts/IInstantDistributionAgreementV1.json +570 -559
  48. package/build/contracts/IMaticBridgedNativeSuperToken.json +71 -32
  49. package/build/contracts/IMaticBridgedNativeSuperTokenCustom.json +3 -3
  50. package/build/contracts/IMultiSigWallet.json +3 -3
  51. package/build/contracts/IPureSuperToken.json +71 -32
  52. package/build/contracts/IPureSuperTokenCustom.json +3 -3
  53. package/build/contracts/IRelayRecipient.json +3 -3
  54. package/build/contracts/IResolver.json +3 -3
  55. package/build/contracts/ISETH.json +71 -32
  56. package/build/contracts/ISETHCustom.json +3 -3
  57. package/build/contracts/ISuperAgreement.json +3 -3
  58. package/build/contracts/ISuperApp.json +179 -173
  59. package/build/contracts/ISuperToken.json +522 -483
  60. package/build/contracts/ISuperTokenFactory.json +3 -3
  61. package/build/contracts/ISuperfluid.json +633 -628
  62. package/build/contracts/ISuperfluidGovernance.json +134 -133
  63. package/build/contracts/ISuperfluidToken.json +403 -394
  64. package/build/contracts/ITOGAv1.json +1211 -1211
  65. package/build/contracts/ITOGAv2.json +1211 -1211
  66. package/build/contracts/Initializable.json +3 -3
  67. package/build/contracts/InstantDistributionAgreementV1.json +10 -10
  68. package/build/contracts/MaticBridgedNativeSuperTokenProxy.json +194 -194
  69. package/build/contracts/NonClosableOutflowTestApp.json +2107 -1917
  70. package/build/contracts/Ownable.json +3 -3
  71. package/build/contracts/Pausable.json +3 -3
  72. package/build/contracts/Proxy.json +3 -3
  73. package/build/contracts/PureSuperToken.json +91 -91
  74. package/build/contracts/Resolver.json +96 -96
  75. package/build/contracts/SETHProxy.json +199 -199
  76. package/build/contracts/SafeCast.json +5 -5
  77. package/build/contracts/SafeERC20.json +5 -5
  78. package/build/contracts/SafeMath.json +5 -5
  79. package/build/contracts/SelfDeletingFlowTestApp.json +2107 -1917
  80. package/build/contracts/SlotsBitmapLibrary.json +7 -7
  81. package/build/contracts/Strings.json +5 -5
  82. package/build/contracts/SuperAppBase.json +3 -3
  83. package/build/contracts/SuperAppDefinitions.json +5 -5
  84. package/build/contracts/SuperToken.json +2262 -2262
  85. package/build/contracts/SuperTokenFactory.json +582 -582
  86. package/build/contracts/SuperTokenFactoryBase.json +576 -576
  87. package/build/contracts/SuperTokenFactoryHelper.json +578 -578
  88. package/build/contracts/SuperUpgrader.json +687 -687
  89. package/build/contracts/Superfluid.json +6648 -6678
  90. package/build/contracts/SuperfluidFrameworkDeployer.json +526 -526
  91. package/build/contracts/SuperfluidGovernanceBase.json +13 -13
  92. package/build/contracts/SuperfluidGovernanceConfigs.json +5 -5
  93. package/build/contracts/SuperfluidGovernanceII.json +21 -21
  94. package/build/contracts/SuperfluidGovernanceIIProxy.json +20 -20
  95. package/build/contracts/SuperfluidLoader.json +147 -147
  96. package/build/contracts/SuperfluidToken.json +1269 -1269
  97. package/build/contracts/TOGA.json +1221 -1221
  98. package/build/contracts/TestGovernance.json +315 -315
  99. package/build/contracts/TestToken.json +475 -561
  100. package/build/contracts/TokenCustodian.json +220 -220
  101. package/build/contracts/TokenInfo.json +3 -3
  102. package/build/contracts/UUPSProxiable.json +136 -136
  103. package/build/contracts/UUPSProxy.json +87 -87
  104. package/build/contracts/UUPSUtils.json +43 -43
  105. package/build/contracts-sizes.txt +6 -6
  106. package/contracts/agreements/AgreementBase.sol +1 -1
  107. package/contracts/agreements/AgreementLibrary.sol +1 -1
  108. package/contracts/agreements/ConstantFlowAgreementV1.sol +1 -1
  109. package/contracts/agreements/InstantDistributionAgreementV1.sol +1 -1
  110. package/contracts/gov/SuperfluidGovernanceBase.sol +1 -1
  111. package/contracts/gov/SuperfluidGovernanceII.sol +1 -1
  112. package/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol +7 -10
  113. package/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol +11 -18
  114. package/contracts/interfaces/superfluid/ISuperApp.sol +7 -9
  115. package/contracts/interfaces/superfluid/ISuperToken.sol +36 -44
  116. package/contracts/interfaces/superfluid/ISuperfluid.sol +17 -21
  117. package/contracts/interfaces/superfluid/ISuperfluidGovernance.sol +1 -1
  118. package/contracts/interfaces/superfluid/ISuperfluidToken.sol +13 -14
  119. package/contracts/libs/BaseRelayRecipient.sol +1 -1
  120. package/contracts/libs/CallUtils.sol +1 -1
  121. package/contracts/libs/ERC1820RegistryCompiled.sol +1 -1
  122. package/contracts/libs/ERC777Helper.sol +1 -1
  123. package/contracts/libs/EventsEmitter.sol +2 -2
  124. package/contracts/libs/FixedSizeData.sol +2 -2
  125. package/contracts/libs/SlotsBitmapLibrary.sol +1 -1
  126. package/contracts/mocks/AgreementMock.sol +1 -1
  127. package/contracts/mocks/CFAAppMocks.sol +6 -6
  128. package/contracts/mocks/CFALibraryMock.sol +2 -2
  129. package/contracts/mocks/CallUtilsMock.sol +1 -1
  130. package/contracts/mocks/CallUtilsTester.sol +1 -1
  131. package/contracts/mocks/CustomSuperTokenMock.sol +1 -1
  132. package/contracts/mocks/ERC777SenderRecipientMock.sol +1 -1
  133. package/contracts/mocks/FakeSuperfluidMock.sol +1 -1
  134. package/contracts/mocks/ForwarderMock.sol +1 -1
  135. package/contracts/mocks/IDASuperAppTester.sol +2 -2
  136. package/contracts/mocks/IDAv1LibraryMock.sol +3 -3
  137. package/contracts/mocks/MockSmartWallet.sol +1 -1
  138. package/contracts/mocks/MultiFlowTesterApp.sol +2 -2
  139. package/contracts/mocks/SuperAppMocks.sol +15 -12
  140. package/contracts/mocks/SuperTokenFactoryMock.sol +1 -1
  141. package/contracts/mocks/SuperTokenMock.sol +1 -1
  142. package/contracts/mocks/SuperfluidDestructorMock.sol +1 -1
  143. package/contracts/mocks/SuperfluidGovernanceIIMock.sol +1 -1
  144. package/contracts/mocks/SuperfluidMock.sol +2 -2
  145. package/contracts/mocks/UUPSProxiableMock.sol +1 -1
  146. package/contracts/superfluid/FullUpgradableSuperTokenProxy.sol +2 -2
  147. package/contracts/superfluid/SuperToken.sol +1 -1
  148. package/contracts/superfluid/SuperTokenFactory.sol +1 -1
  149. package/contracts/superfluid/Superfluid.sol +4 -4
  150. package/contracts/superfluid/SuperfluidToken.sol +1 -1
  151. package/contracts/tokens/MaticBridgedNativeSuperToken.sol +1 -1
  152. package/contracts/tokens/PureSuperToken.sol +1 -1
  153. package/contracts/tokens/SETH.sol +1 -1
  154. package/contracts/upgradability/UUPSProxiable.sol +1 -1
  155. package/contracts/upgradability/UUPSProxy.sol +1 -1
  156. package/contracts/upgradability/UUPSUtils.sol +1 -1
  157. package/contracts/utils/BatchLiquidator.sol +1 -1
  158. package/contracts/utils/Resolver.sol +1 -1
  159. package/contracts/utils/SuperUpgrader.sol +6 -6
  160. package/contracts/utils/SuperfluidLoader.sol +1 -1
  161. package/contracts/utils/TOGA.sol +1 -1
  162. package/contracts/utils/TestGovernance.sol +2 -2
  163. package/contracts/utils/TestToken.sol +2 -2
  164. package/contracts/utils/TokenCustodian.sol +1 -1
  165. package/package.json +5 -3
  166. package/scripts/deploy-framework.js +5 -5
  167. package/scripts/deploy-super-token.js +13 -4
  168. package/scripts/gov-create-new-app-registration-key.js +2 -1
  169. package/scripts/gov-create-new-factory-registration.js +1 -1
  170. package/scripts/libs/getConfig.js +21 -3
  171. package/scripts/resolver-list-super-token.js +1 -0
@@ -110,9 +110,9 @@
110
110
  "type": "function"
111
111
  }
112
112
  ],
113
- "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"deployWrapperSuperToken\",\"outputs\":[{\"internalType\":\"contract ERC20PresetMinterPauser\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract SuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFramework\",\"outputs\":[{\"components\":[{\"internalType\":\"contract TestGovernance\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"contract Superfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ConstantFlowAgreementV1\",\"name\":\"cfa\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract IConstantFlowAgreementV1\",\"name\":\"cfa\",\"type\":\"address\"}],\"internalType\":\"struct CFAv1Library.InitData\",\"name\":\"cfaLib\",\"type\":\"tuple\"},{\"internalType\":\"contract InstantDistributionAgreementV1\",\"name\":\"ida\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract IInstantDistributionAgreementV1\",\"name\":\"ida\",\"type\":\"address\"}],\"internalType\":\"struct IDAv1Library.InitData\",\"name\":\"idaLib\",\"type\":\"tuple\"},{\"internalType\":\"contract SuperTokenFactory\",\"name\":\"superTokenFactory\",\"type\":\"address\"}],\"internalType\":\"struct SuperfluidFrameworkDeployer.Framework\",\"name\":\"sf\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Superfluid Framework Deployer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys everything... probably\"},\"deployWrapperSuperToken(string,string)\":{\"notice\":\"Deploy new wrapper super token\"},\"getFramework()\":{\"notice\":\"Fetches the framework contracts\"}},\"notice\":\"This is NOT for deploying public nets, but rather only for tesing envs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/utils/SuperfluidFrameworkDeployer.sol\":\"SuperfluidFrameworkDeployer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e12cbaa7378fd9b62280e4e1d164bedcb4399ce238f5f98fc0eefb7e50577981\",\"dweb:/ipfs/QmXRoFGUgfsaRkoPT5bxNMtSayKTQ8GZATLPXf69HcRA51\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x0edeb16b9821ae2b16e9d69c383b38d3ad2fbb3e0c06cf809a0786d96e602551\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88adc865fb1bd8dab4c58096e1d5887713f62c0405f8d2d17294727a8f43d8f7\",\"dweb:/ipfs/QmUJ27zsjxCatfoTFWho4k4qdhuBTorMqLuJzWqUX4Sdmg\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0xe68ed7fb8766ed1e888291f881e36b616037f852b37d96877045319ad298ba87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d491a2ca79dbf44bc02e876e21a5847a2cbcc011188532ad8662cdc1c134a4e\",\"dweb:/ipfs/QmUQXhSV8ZvHLzfdG89ZNSh1nLrAYyjnNBLznJGwGcwVk8\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xdadd41acb749920eccf40aeaa8d291adf9751399a7343561bad13e7a8d99be0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12af4ac016f9fdf3be5d15824f4292272aa11f6b2e0192a0f7320f5ad49bbbf0\",\"dweb:/ipfs/QmRXMpdqCgA3TYuYxBodqs5p9jGbnMW6xa2gvjppvq4TWk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol\":{\"keccak256\":\"0x978847fbff92d66d27d8767402a90ba996970b1936b372406aa17f5492bd8dc5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1414cb92779420b50d3e796b47bad6ea800ef1805bc6f9bf35a3ccb4e17db3dc\",\"dweb:/ipfs/QmaMzwYqLiivfaWSgqeaAPboBtJjVD1hSrH48p7ExJZ7DG\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol\":{\"keccak256\":\"0x2cd54808b851c4db22f459065af0b7a952262741a85a73923e7a660767cd7baa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://750c4a78e953fe92317bba7166afd0a4b7725723e5822ea1b92ffd4e72d2d36b\",\"dweb:/ipfs/QmZNyCSrdYXGQfmB6LkbX8R6y4gGZRNh1d2pJobYBpkaRF\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xc3d946432c0ddbb1f846a0d3985be71299df331b91d06732152117f62f0be2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4632c341a06ba5c079b51ca5a915efab4e6ab57735b37839b3e8365ff806a43e\",\"dweb:/ipfs/QmTHT3xHYed2wajEoA5qu7ii2BxLpPhQZHwAhtLK5Z7ANK\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol\":{\"keccak256\":\"0x1a5d61db2733202ba361e6d6741cd2e662380e22b80e987eacfc91973f2267dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04c0cd697050a6516b7779aa2343ad2d0e5217d8915ac2382681dfdf4e445be3\",\"dweb:/ipfs/QmPCBCZgm7pHBwwogE2F9NCN3UfTdLNhqc8UDEvw8kDzyA\"]},\"@openzeppelin/contracts/token/ERC777/IERC777Sender.sol\":{\"keccak256\":\"0x742e51d63b108240759794360637468d9fcbf072cbd357744790d356a87bb382\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23912910ce2bb68e49ff83f43fcfa864210ee44580491e876db14922f8aecc18\",\"dweb:/ipfs/QmU6GnRQ51xvY8D57kPCV47oGeYozaz5AQZUCHxFfXdFZ4\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0xebe3f8a59f0f1c96344a05edb984ef666ee4207e993cca99af3808f1de8771b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0db23062a52185cf06ad4202be0bfa4c7718c4b75f4526aeb456620ff2e737d4\",\"dweb:/ipfs/QmXtWdePeH6xpXf175YcnbwjsuLp35k6JxX8CjHzvHiyAi\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/introspection/IERC1820Registry.sol\":{\"keccak256\":\"0x6e306f9ab28416a9e5931f0b6e264676e8ac68fad184f9a9d8bb125c6ec23bc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd7fe961c914caa1fcc8223d446c1582aec4f2a32d2f06cf09c938b72cf8ce11\",\"dweb:/ipfs/QmPfEfqtUh9SA86br28HfmMyVSBe22B3oPwF8iACCF4evY\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x5c6caab697d302ad7eb59c234a4d2dbc965c1bae87709bd2850060b7695b28c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62abcee612c175f1b9bc70e5dfe5bd23473c99987ade6e80e291f68dc60ff1\",\"dweb:/ipfs/QmZCMajhG7FtRYNDwBchXN89mXR6HLPVzr9732qfUdNf9E\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0xa2f576be637946f767aa56601c26d717f48a0aff44f82e46f13807eea1009a21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://973868f808e88e21a1a0a01d4839314515ee337ad096286c88e41b74dcc11fc2\",\"dweb:/ipfs/QmfYuZxRfx2J2xdk4EXN7jKg4bUYEMTaYk9BAw9Bqn4o2Y\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/agreements/AgreementBase.sol\":{\"keccak256\":\"0xe59fc8bbe728c574773b5d3a3e9cfb4e8f323e9a3c3267a82d36fb79921b9997\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0e21d969b3b996ab211eff83fa5bb7041614c0ac597c7479012c0fe625f4e15f\",\"dweb:/ipfs/QmWThBae9FCDgCAcco2bZicvsPq8vz5K1XW66hz3LXSK2V\"]},\"project:/contracts/agreements/AgreementLibrary.sol\":{\"keccak256\":\"0x107ee59e59b54e9ee85997d135a9bfc97979eda1143c7b1b61b63959777bff91\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://1a235f5a0fc7a04143662a69279d513d2434eeb7d60afdcc57911dcfeef712e5\",\"dweb:/ipfs/QmbUDhcf9mizwLxyCttibMxEM9NUun4guT3Sc9vdEaSxAv\"]},\"project:/contracts/agreements/ConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xf601772532bdd09c6b98a0dfe3eba5fd6309161f9275ca3d103459b9bd1fd983\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://8839421289ec98fa3e5f7a13c7bba89b04f3e21579d1fcd86697cd9a172f17b2\",\"dweb:/ipfs/QmaetJch2QxW6HjWAXrXAguA7g6DyvegpBA2vspx3a7G6N\"]},\"project:/contracts/agreements/InstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x3a9509fe08ce669c554060aa045d36517695c8fd6f9c1ca651f89aebf78f329d\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a9b091753795543953b4ca0e7d05242fe673c3b82ddc9e5bac691aba319f1be8\",\"dweb:/ipfs/QmPKTTVGrLbcsG8G92WK523DZLj7PxVknjxrvWt2TrTiuT\"]},\"project:/contracts/apps/CFAv1Library.sol\":{\"keccak256\":\"0x5384b9a56711ce7b72405c653ff8be3bb94131428919b380248e10f1ddb252de\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://979aa0e84f86851125d7ad79d7f974681c91680139e65ae426fee12671f81ca0\",\"dweb:/ipfs/QmVk59WkCeqaUVRBeiCfftVstSXugXgyXMurEeAicAx3du\"]},\"project:/contracts/apps/IDAv1Library.sol\":{\"keccak256\":\"0x6ea8462f8acd24e4f31aa1e0e78df01d6d47279cebf306ed2844114c06c99fca\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3a089417a435c8602e8100ac3365f4e447b1babf1a9ab226d4481fd698928783\",\"dweb:/ipfs/QmSbbrrojn4yZ5BEWd2uNLif6ifeJT1XPuyYp6529kM2RP\"]},\"project:/contracts/gov/SuperfluidGovernanceBase.sol\":{\"keccak256\":\"0xcbf4daa0e4c1da855ee47011428b4cd75c9fd5b7923749c481a882bbeb241fbb\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://bb93ada4ed13faf08607fc37eefdfa99342a3b766648158e58874acc1ea42861\",\"dweb:/ipfs/Qmdcks7t6bxnbR9f7q2Db9JMsicJeQJo7nEMppwPSCp4pg\"]},\"project:/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xb96bb6cb0fe88ddf5b890b6826f7f7585cf6e94223c76d8e2fb269779afe4445\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://b864597ae952222f0f43c66943492966013021c4171d5ef4f7357c047dfd737c\",\"dweb:/ipfs/Qmcr7xicfmPDD343B34ETP3XrdU9Vi1z3zxJSgqLipfQmY\"]},\"project:/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x47948789bc2265e6228f70ddd9eb194be4e35b1c5ce598f5b5a01fcb48def27b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d758b5560a735d8ab2175a2b76afe38f99bf170800917c4f0adae1f8862ad785\",\"dweb:/ipfs/QmXZToKtnJXmJq4hBqkwVAj6CYkG2DGbErt9G9T7sW4Zoe\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x57f4203168992c940eb6b8c7cc75f854cb36a1f9323b3f39ddc5e4fbe819c043\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://888941dfa3e5004f678f215b98a85d1bf54e412317928a78e0a1cff090773d4c\",\"dweb:/ipfs/QmVe838upcAyqpy1d3oQNHJrbRyWCKHL51zWrMKruvLxFG\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0x3cb0b7216007b942f7611d7b3d983c0df9408fdd4fd6b799c33fc9033e0abf8b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://17901a1fd3635f441671e14ece8ecc6806af20c5eb80cca3b7c6e53a51fef7b6\",\"dweb:/ipfs/QmUXXMfU6nmsyEnufyGEwyZ5M7pzpXNTr6vw32e3JjjoZp\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0x2d9b845469a35b66f1166406149ac85e933dbe9156f57e4a4078948e6a6e71a4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://48e5cb11d4b90e42af521e23b33d57e12187c989d8d56be332b1649308168d45\",\"dweb:/ipfs/QmdaTW4HfpFfHjkHiJ3CmZUmCfLJyFCPTnCygwhiNhx3Tu\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0x2166f766b7f61f9bb1376b0948efa0d0c0046b93dc301e51ce495203b145189b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://929630e6a15f523b142b2897783b2f7a54532ac5ae578bd17a0b7f25a6ca2bd8\",\"dweb:/ipfs/QmTu9ffH9qbQncJGEc24bmnoCGjifQ7BG47AYR8AzMLfXR\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x518b869178aafffde40c654a1e24b3b1a2b5e42e5e8f17562556f404db8b9434\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://458ce84666b418fa3a7569c0e109db4d920fb6d1cb67ebc4c497c9c71107d93b\",\"dweb:/ipfs/QmV9nqhRF7MDGkV6UW3WWcqeXov2vmqHuRcvbqaaV8yP6u\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/interfaces/utils/IRelayRecipient.sol\":{\"keccak256\":\"0x3f531ce91c165b7581483798cc920d38828d509df6cb9d427a10c922b4627790\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://c4b872da16464ec4a06422b2bf0e95594f0458cca02993cefdbc76b5f7b7a974\",\"dweb:/ipfs/Qma9nVTfu6kbLQ6y58ZnDRXX8YzKiyASWeCsdY8ue6rpdT\"]},\"project:/contracts/libs/BaseRelayRecipient.sol\":{\"keccak256\":\"0x505cc7758bcb57e40bccac0108f990a00c1e307f8fd33d490feb7473b3829f63\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5adff7a74c567ef936cc5b0d2425688db81488e58d3f6720d9d108b8aa8230a9\",\"dweb:/ipfs/QmTtese5RWc7xCxp1hMTkeZkHbFcYhxK6xxPMm5QSs9GV5\"]},\"project:/contracts/libs/CallUtils.sol\":{\"keccak256\":\"0x16b6a382d6e75244f35ced44126b23472fcc94a412391c9db693e83bb810f76a\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d43974dcedc193e8ef84fb44f41b27b4e74e3af476b4c2f9d0e6b271fa83e354\",\"dweb:/ipfs/QmUZG2Rqh8yzZ79rT4rmCKSkuKFk5QkRpSYGJXgVHwDFr9\"]},\"project:/contracts/libs/ERC777Helper.sol\":{\"keccak256\":\"0x5db4d5e987d0659d5fd915e9823359141ad3d9d5796e50ae98756bccc86ea9d6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2a4e7413e6539cffc1ea0807f05ac49fea8ebc258a9d76b72bade12a0c143075\",\"dweb:/ipfs/QmTsrsMe3bcwB4JnfPAiG1bNvEdTAVFTSyVBKQALVuLMWy\"]},\"project:/contracts/libs/EventsEmitter.sol\":{\"keccak256\":\"0xd454206f297bbab7020fbdf6311c138227154433d574427dbc8c283107e8a01e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://af0ffd28f03fe3a759ef8479c7451274c4816fbc7e9f37e4874612df20eebbc2\",\"dweb:/ipfs/QmfJou9yUti54ppcCiHnVf4ByFfRojqQPGdhGatPBT6Chr\"]},\"project:/contracts/libs/FixedSizeData.sol\":{\"keccak256\":\"0xbb3de3fbf919ef59b6890063847904d2824d7a0da63ff486d97a19eb8f4241f5\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://23a9d841867cbe1da4487d78929cc994352c22c9113840f98c15f0870b612f6f\",\"dweb:/ipfs/QmS7tZMw2itiie8BPosFiwmZy8TUipHUbzpEAf66SficGL\"]},\"project:/contracts/libs/SlotsBitmapLibrary.sol\":{\"keccak256\":\"0x8702dc0404f8b03c21b82e2144b1c1d8ca0c0b22986159985749d6d25eefb4c7\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d16223a93a87019af0991d791c4ec2b9d4e80b87e2f2e0981848e4f015008e75\",\"dweb:/ipfs/QmarrBFqsszA65mmyySyfrpUHPvgDdBwUzyhnBZTEQSLwi\"]},\"project:/contracts/superfluid/FullUpgradableSuperTokenProxy.sol\":{\"keccak256\":\"0x8351cd8c965160f68ab2b5ffde063d1457d3f51c179a7c1081547a60d856bc3c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://152dc489a518ac6f9b90b42c52faebc0cbb7479516c606b8ca3b7f7c63945717\",\"dweb:/ipfs/QmW5Q5K3zqsFmcRXA3FMsoom76tYuHUF9pZLvZYZGynnxe\"]},\"project:/contracts/superfluid/SuperToken.sol\":{\"keccak256\":\"0xcaa50b4f7c92fd51a483f31d9869d7ad4a8b11d0fb7564eca1859434a18ba429\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5311245d23b5e6359a95a9b62ca047f6bdcb82b68c309aaf44d7852c6af7ff96\",\"dweb:/ipfs/QmNvbjHfENCwJVprouTgDS1M7J2PTyuuuKshKtAnjWEjAJ\"]},\"project:/contracts/superfluid/SuperTokenFactory.sol\":{\"keccak256\":\"0x3cb80ed9391959d9d79cc06f95071b00dee5b07e28fc0a75e7d6338b40ebddbb\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://8d589a8000d2b57865d0ca3f9d2342971003eff476e3aeb1fcd36c903cde429b\",\"dweb:/ipfs/QmSdbmi2TCLKBqNvHBEfsdujSFa6ievkqHkKjLX2B5QbQ5\"]},\"project:/contracts/superfluid/Superfluid.sol\":{\"keccak256\":\"0x46252b6e794f48e49e742bb3dcd81bbcf5ac0b3e533012154740c4248a56ee6d\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://5978846a82bbf0c37b5db039d69b2bdd8674d73cf9b0a2f3374c007fa2a6179d\",\"dweb:/ipfs/Qmai4rVUqRQta6eqT6mFPdX1g8oEidCLJaytbmFUiiSo6j\"]},\"project:/contracts/superfluid/SuperfluidToken.sol\":{\"keccak256\":\"0x4f3fc780361d5ffad656e0c79fa17b98bb2b4d28252240ec40461874ec746107\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://c6c3c8e676aa027b71a7b5c0c7241ee09edf52cbd9561f528580249d0b7c9773\",\"dweb:/ipfs/QmdAa7btJCFRHpCUQqiBeWsfdWZQXTwxPLBoiAzYCAZAvy\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0x5f50cec21a585dab7b59545aeb51735f36e3222e4b0768370be8d46373d0ef05\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://acdd57d81b5b2d346da335636baf1e37da3d31cf2eef58af493e43bc65a27414\",\"dweb:/ipfs/QmTepRBNAfRBXVDBM37ME1jpw1YgcseVehC17sWpEYeFDc\"]},\"project:/contracts/upgradability/UUPSProxy.sol\":{\"keccak256\":\"0x1164a0047c0600d162060fc9ea72a5e50779a9ccd28143fa4a984f5a635493cc\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://1205e5b16fd67b2bf99bb917175d0bd1caaa1509d3f4a4f3c8184e8c40c564ef\",\"dweb:/ipfs/Qme96cpfG4LNjdA44H2CZP3zYT73XEtRZMXpBGMTDjtFVf\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xffec084e77ce3c0b595f0612687242f3d8b7a84cab15e5650c17428ee48d0b5b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://be0183816467872b053562d9a737042ac3a91ea67e3c74e03de5db7226f3e73b\",\"dweb:/ipfs/QmUyi4YXh1T7MExbrLwZ6rAdXTPChF8q27YpZxxniR6CHM\"]},\"project:/contracts/utils/SuperfluidFrameworkDeployer.sol\":{\"keccak256\":\"0x80f96f7edcb0a6ed27ec54e590c933fe78581eb52f9f03efd46ae1cee59db4cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2422b922c1e886e6f03b305d30fdd295bdaf249e6b56930069fe095de6c8911d\",\"dweb:/ipfs/QmZhDF1n3o6JzHhcZB8yGGjcgQmSnhA9HJxQW1fiWzayNE\"]},\"project:/contracts/utils/TestGovernance.sol\":{\"keccak256\":\"0x88232403c83d71e09b94ff78bf4464d5707c55052247c94b5d0a7808b4ab366b\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://b4b364b1555bad346d96ea124597823514c75a0f49b30136d65b3b9be4d09aac\",\"dweb:/ipfs/QmQKztdSztuVcW6EnQzTUvjFS2Dudi89g1sZ2fxBEZSuoy\"]}},\"version\":1}",
114
- "bytecode": "0x60806040523480156200001157600080fd5b5060405162000020906200047b565b604051809103906000f0801580156200003d573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117815560405160019190620000709062000489565b911515825215156020820152604001604051809103906000f0801580156200009c573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b0392831690811790915560005460405163189acdbd60e31b8152921660048301529063c4d66de890602401600060405180830381600087803b158015620000f857600080fd5b505af11580156200010d573d6000803e3d6000fd5b50600092508291506200011d9050565b60405190808252806020026020018201604052801562000147578160200160208202803683370190505b50600054600154604051630b520f0360e31b81529293506001600160a01b0391821692635a907818926200018d9216906045906138409061070890889060040162000515565b600060405180830381600087803b158015620001a857600080fd5b505af1158015620001bd573d6000803e3d6000fd5b50506001546040516001600160a01b039091169250620001de915062000497565b6001600160a01b039091168152602001604051809103906000f0801580156200020b573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b0392831690811790915560005460015460405163cadf8f8560e01b8152908416600482015260248101929092529091169063cadf8f8590604401600060405180830381600087803b1580156200027657600080fd5b505af11580156200028b573d6000803e3d6000fd5b50506001546040516001600160a01b039091169250620002ac9150620004a5565b6001600160a01b039091168152602001604051809103906000f080158015620002d9573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831690811790915560005460015460405163cadf8f8560e01b8152908416600482015260248101929092529091169063cadf8f8590604401600060405180830381600087803b1580156200034457600080fd5b505af115801562000359573d6000803e3d6000fd5b5050505060006040516200036d90620004b3565b604051809103906000f0801580156200038a573d6000803e3d6000fd5b506001546040519192506001600160a01b0316908290620003ab90620004c1565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003df573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283169081179091556000805460015460408051848152602081019182905263109e50a960e21b9091529185169463427942a4946200043f94929091169290602482016200055c565b600060405180830381600087803b1580156200045a57600080fd5b505af11580156200046f573d6000803e3d6000fd5b5050505050506200059c565b6119968062002b3283390190565b61564880620044c883390190565b61538b8062009b1083390190565b61543c806200ee9b83390190565b614ada80620142d783390190565b6113838062018db183390190565b600081518084526020808501945080840160005b838110156200050a5781516001600160a01b031687529582019590820190600101620004e3565b509495945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200055190830184620004cf565b979650505050505050565b600060018060a01b038087168352808616602084015260806040840152620005886080840186620004cf565b915080841660608401525095945050505050565b61258680620005ac6000396000f3fe60806040523480156200001157600080fd5b50600436106200003a5760003560e01c8063845531a4146200003f578063dfa98ad5146200007b575b600080fd5b620000566200005036600462000539565b62000160565b604080516001600160a01b039384168152929091166020830152015b60405180910390f35b620001516040805160e08101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810191909152506040805160e0810182526000546001600160a01b03908116825260015481166020808401829052600254831684860181905285518087018752838152808301919091526060850152600354831660808501819052855180870190965291855284015260a082019290925260045490911660c082015290565b604051620000729190620005ac565b600080858585856040516200017590620004df565b62000184949392919062000678565b604051809103906000f080158015620001a1573d6000803e3d6000fd5b509150816001600160a01b0316632f2ff15d836001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002189190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156200025857600080fd5b505af11580156200026d573d6000803e3d6000fd5b50505050816001600160a01b0316632f2ff15d836001600160a01b031663d53913936040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e59190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156200032557600080fd5b505af11580156200033a573d6000803e3d6000fd5b50505050816001600160a01b0316632f2ff15d836001600160a01b031663e63ab1e96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b29190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b158015620003f257600080fd5b505af115801562000407573d6000803e3d6000fd5b50506004546040516001600160a01b03909116925063431f1481915084906001906200043a908b908b90602001620006c8565b60405160208183030381529060405288886040516020016200045e929190620006c8565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016200048e94939291906200072e565b6020604051808303816000875af1158015620004ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d491906200078b565b905094509492505050565b611d9380620007be83390190565b60008083601f8401126200050057600080fd5b50813567ffffffffffffffff8111156200051957600080fd5b6020830191508360208285010111156200053257600080fd5b9250929050565b600080600080604085870312156200055057600080fd5b843567ffffffffffffffff808211156200056957600080fd5b6200057788838901620004ed565b909650945060208701359150808211156200059157600080fd5b50620005a087828801620004ed565b95989497509550505050565b81516001600160a01b03908116825260208084015182168184015260408085015183169084015260608085015180518416918501919091520151166080808301919091528201516101208201906200060f60a08401826001600160a01b03169052565b5060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c08301516001600160a01b0381166101008401525092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006200068e6040830186886200064f565b8281036020840152620006a38185876200064f565b979650505050505050565b600060208284031215620006c157600080fd5b5051919050565b81838237600f60fb1b9101908152600101919050565b6000815180845260005b818110156200070657602081850181015186830182015201620006e8565b8181111562000719576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03851681526000600385106200075b57634e487b7160e01b600052602160045260246000fd5b84602083015260806040830152620007776080830185620006de565b8281036060840152620006a38185620006de565b6000602082840312156200079e57600080fd5b81516001600160a01b0381168114620007b657600080fd5b939250505056fe60806040523480156200001157600080fd5b5060405162001d9338038062001d938339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045b565b620000e98282620000ed565b5050565b6200010482826200013060201b6200096e1760201c565b60008281526001602090815260409091206200012b918390620009f2620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b6020821081036200045557634e487b7160e01b600052602260045260246000fd5b50919050565b611928806200046b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e91461042257600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115cf565b610449565b60405190151581526020015b60405180910390f35b6101f9610474565b6040516101e89190611625565b6101dc610214366004611674565b610506565b6004545b6040519081526020016101e8565b6101dc61023936600461169e565b61051e565b61021d61024c3660046116da565b60009081526020819052604090206001015490565b61027461026f3660046116f3565b610542565b005b604051601281526020016101e8565b6102746102933660046116f3565b61056d565b6101dc6102a6366004611674565b6105f0565b61027461062f565b6102746102c1366004611674565b6106d5565b6102746102d43660046116da565b610774565b60075460ff166101dc565b61021d6102f236600461171f565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611674565b610781565b610274610796565b61033b61033636600461173a565b61083a565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116f3565b610859565b6101f9610882565b61021d600081565b6101dc610384366004611674565b610891565b6101dc610397366004611674565b610923565b61021d6103aa3660046116da565b610931565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116f3565b610948565b61021d6103f736600461175c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b148061046e575061046e82610a07565b92915050565b60606005805461048390611786565b80601f01602080910402602001604051908101604052809291908181526020018280546104af90611786565b80156104fc5780601f106104d1576101008083540402835291602001916104fc565b820191906000526020600020905b8154815290600101906020018083116104df57829003601f168201915b5050505050905090565b600033610514818585610a3c565b5060019392505050565b60003361052c858285610b60565b610537858585610bf2565b506001949350505050565b60008281526020819052604090206001015461055e8133610dcb565b6105688383610e2f565b505050565b6001600160a01b03811633146105e25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105ec8282610e51565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610514908290869061062a9087906117d6565b610a3c565b6106597f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610859565b6106cb5760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105d9565b6106d3610e73565b565b6106ff7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610859565b61076a5760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105d9565b6105ec8282610f06565b61077e3382610ff1565b50565b61078c823383610b60565b6105ec8282610ff1565b6107c07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610859565b6108325760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105d9565b6106d361114b565b600082815260016020526040812061085290836111c6565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461048390611786565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190838110156109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d9565b6105378286868403610a3c565b600033610514818585610bf2565b600081815260016020526040812061046e906111d2565b6000828152602081905260409020600101546109648133610dcb565b6105688383610e51565b6109788282610859565b6105ec576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556109ae3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610852836001600160a01b0384166111dc565b60006001600160e01b03198216637965db0b60e01b148061046e57506301ffc9a760e01b6001600160e01b031983161461046e565b6001600160a01b038316610a9e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d9565b6001600160a01b038216610aff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220546000198114610bec5781811015610bdf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d9565b610bec8484848403610a3c565b50505050565b6001600160a01b038316610c565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d9565b6001600160a01b038216610cb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d9565b610cc383838361122b565b6001600160a01b03831660009081526002602052604090205481811015610d3b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d9565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d729084906117d6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dbe91815260200190565b60405180910390a3610bec565b610dd58282610859565b6105ec57610ded816001600160a01b03166014611236565b610df8836020611236565b604051602001610e099291906117ee565b60408051601f198184030181529082905262461bcd60e51b82526105d991600401611625565b610e39828261096e565b600082815260016020526040902061056890826109f2565b610e5b82826113d2565b60008281526001602052604090206105689082611437565b60075460ff16610ebc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d9565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610f5c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d9565b610f686000838361122b565b8060046000828254610f7a91906117d6565b90915550506001600160a01b03821660009081526002602052604081208054839290610fa79084906117d6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166110515760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d9565b61105d8260008361122b565b6001600160a01b038216600090815260026020526040902054818110156110d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105d9565b6001600160a01b0383166000908152600260205260408120838303905560048054849290611100908490611863565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60075460ff16156111915760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ee93390565b6000610852838361144c565b600061046e825490565b60008181526001830160205260408120546112235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561046e565b50600061046e565b610568838383611476565b6060600061124583600261187a565b6112509060026117d6565b67ffffffffffffffff81111561126857611268611899565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600360fc1b816000815181106112ad576112ad6118af565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112dc576112dc6118af565b60200101906001600160f81b031916908160001a905350600061130084600261187a565b61130b9060016117d6565b90505b6001811115611383576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061133f5761133f6118af565b1a60f81b828281518110611355576113556118af565b60200101906001600160f81b031916908160001a90535060049490941c9361137c816118c5565b905061130e565b5083156108525760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d9565b6113dc8282610859565b156105ec576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610852836001600160a01b0384166114dc565b6000826000018281548110611463576114636118af565b9060005260206000200154905092915050565b60075460ff16156105685760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105d9565b600081815260018301602052604081205480156115c5576000611500600183611863565b855490915060009061151490600190611863565b9050818114611579576000866000018281548110611534576115346118af565b9060005260206000200154905080876000018481548110611557576115576118af565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061158a5761158a6118dc565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061046e565b600091505061046e565b6000602082840312156115e157600080fd5b81356001600160e01b03198116811461085257600080fd5b60005b838110156116145781810151838201526020016115fc565b83811115610bec5750506000910152565b60208152600082518060208401526116448160408501602087016115f9565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461166f57600080fd5b919050565b6000806040838503121561168757600080fd5b61169083611658565b946020939093013593505050565b6000806000606084860312156116b357600080fd5b6116bc84611658565b92506116ca60208501611658565b9150604084013590509250925092565b6000602082840312156116ec57600080fd5b5035919050565b6000806040838503121561170657600080fd5b8235915061171660208401611658565b90509250929050565b60006020828403121561173157600080fd5b61085282611658565b6000806040838503121561174d57600080fd5b50508035926020909101359150565b6000806040838503121561176f57600080fd5b61177883611658565b915061171660208401611658565b600181811c9082168061179a57607f821691505b6020821081036117ba57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117e9576117e96117c0565b500190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516118268160178501602088016115f9565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118578160288401602088016115f9565b01602801949350505050565b600082821015611875576118756117c0565b500390565b6000816000190483118215151615611894576118946117c0565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816118d4576118d46117c0565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220afe1caf1e01f9ffa2b2ee0f93fd3af8e01926b940b318b54a1ea7d0d8697587864736f6c634300080d0033a264697066735822122076be1833f8f8dea73e62ab1593f919fd9f7a43ccb2a51a1357e702e753eeb89164736f6c634300080d0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6119188061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80637f0558e4116101045780638da5cb5b116100a2578063e447cc1d11610071578063e447cc1d1461040c578063f047a2d91461041f578063f2fde38b14610432578063f79a8e631461044557600080fd5b80638da5cb5b146103c25780638ecbd87b146103d3578063ab846f1a146103e6578063cadf8f85146103f957600080fd5b80638a7ff2f7116100de5780638a7ff2f7146103665780638abe04e9146103795780638b93b3f51461039c5780638ce93379146103af57600080fd5b80637f0558e41461032457806380f70cba146103375780638369a0f11461035857600080fd5b8063427942a41161017c578063640b6cc91161014b578063640b6cc9146102e3578063715018a6146102f657806378707cb8146102fe5780637dce4f811461031157600080fd5b8063427942a41461028257806344864b251461029557806345228235146102a85780635a907818146102d057600080fd5b806321964473116101b8578063219644731461023657806325c955c314610249578063325529081461025c57806342148deb1461026f57600080fd5b806286d555146101de57806301a06b97146101f357806319df62ab14610206575b600080fd5b6101f16101ec36600461144d565b610458565b005b6101f1610201366004611493565b610573565b610219610214366004611493565b6105f2565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f1610244366004611518565b610626565b6101f1610257366004611493565b6106ef565b6101f161026a3660046115ab565b610703565b6101f161027d3660046115f6565b61077f565b6101f161029036600461164b565b610834565b6101f16102a3366004611493565b6109c7565b6102bb6102b6366004611493565b610a32565b6040805192835260208301919091520161022d565b6101f16102de3660046116de565b610a7a565b6101f16102f13660046117de565b610b31565b6101f1610b3c565b6101f161030c36600461181f565b610ba2565b6101f161031f3660046115ab565b610bae565b6101f16103323660046117de565b610c1e565b61034a6103453660046117de565b610c94565b60405190815260200161022d565b6102196103453660046117de565b61034a610374366004611493565b610d05565b61038c610387366004611493565b610d32565b604051901515815260200161022d565b6101f16103aa366004611493565b610d4d565b6101f16103bd3660046115ab565b610dbd565b6000546001600160a01b0316610219565b6101f16103e1366004611493565b610e1c565b6101f16103f43660046115ab565b610e90565b6101f1610407366004611493565b610eec565b6101f161041a366004611493565b610f24565b61038c61042d3660046115ab565b610f98565b6101f1610440366004611872565b610fb3565b6101f161045336600461144d565b61107e565b808211801561046a575063ffffffff82105b8015610479575063ffffffff81105b6104e65760405162461bcd60e51b815260206004820152603360248201527f5346476f763a20496e76616c6964206c69717569646174696f6e506572696f64604482015272081bdc881c185d1c9a58da585b94195c9a5bd9606a1b60648201526084015b60405180910390fd5b6040805160018152602081018490529081018290526001600160a01b0380851691908616907f60a59221512cd8cbfb226200f7ba6f20dc4b38a3cf04993d17ea4e56d26aa1869060600160405180910390a3602082901b811761056b85857fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f7884611086565b505b50505050565b604080516000808252602082018190528183015290516001600160a01b0383811692908516917f60a59221512cd8cbfb226200f7ba6f20dc4b38a3cf04993d17ea4e56d26aa1869181900360600190a36105ee82827fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78611139565b5050565b600061061f83837f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09610c94565b9392505050565b8281146106835760405162461bcd60e51b815260206004820152602560248201527f5346476f763a2061727261797320617265206e6f74207468652073616d65206c6044820152640cadccee8d60db1b60648201526084016104dd565b60005b818110156106e7576106d7868686848181106106a4576106a461188f565b90506020020160208101906106b99190611872565b8585858181106106cb576106cb61188f565b90506020020135610c1e565b6106e0816118a5565b9050610686565b505050505050565b6105ee8260006106fe846111fa565b611139565b60408051600181526001600160a01b03838116602083015280851692908616917f14e12f219a4f9023456dc7832e10119ab768b8ccefc8cb79bc6de0419781eeeb910160405180910390a361077a83837f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d098461128d565b505050565b8261078981611342565b60005b8281101561056b57846001600160a01b031663787afde78585848181106107b5576107b561188f565b90506020020160208101906107ca9190611872565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050508061082d906118a5565b905061078c565b8461083e81611342565b6001600160a01b038516156108a9576040516311a5465560e21b81526001600160a01b038681166004830152871690634695195490602401600060405180830381600087803b15801561089057600080fd5b505af11580156108a4573d6000803e3d6000fd5b505050505b60005b8381101561095457866001600160a01b03166306cecba88686848181106108d5576108d561188f565b90506020020160208101906108ea9190611872565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561092b57600080fd5b505af115801561093f573d6000803e3d6000fd5b505050508061094d906118a5565b90506108ac565b506001600160a01b038216156106e7576040516354fbc49360e01b81526001600160a01b0383811660048301528716906354fbc49390602401600060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b50505050505050505050565b816109d181611342565b604051631ca0c40360e21b81526001600160a01b038381166004830152841690637283100c906024015b600060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b50505050505050565b6000806000610a6285857fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78610c94565b63ffffffff602082901c811697911695509350505050565b6001600160a01b038516610a9057610a906118cc565b6002546001600160a01b031615610aa957610aa96118cc565b600280546001600160a01b0319166001600160a01b038716908117909155610ad390600086610703565b610ae08560008585610458565b60005b81518110156106e7576002548251610b21916001600160a01b031690600090859085908110610b1457610b1461188f565b6020026020010151610e90565b610b2a816118a5565b9050610ae3565b61077a838383611139565b6000546001600160a01b03163314610b965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dd565b610ba06000611379565b565b61056d8484848461128d565b610bc38383610bbc846113c9565b6000611086565b60408051600181526001600160a01b038381166020830152600092820192909252818416918516907f168da2dec91b2e06e30d49955479383e76f71ba185807a8a5b75e2ed563e1d27906060015b60405180910390a3505050565b6040805160018152602081018390526001600160a01b0380851692908616917fc055c4a3853372c08a98805545379133f00f7261d956b9197729d67f37a82a53910160405180910390a361077a83837feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc484611086565b6001600160a01b03808416600090815260016020908152604080832093861683529281528282208483529052908120805460ff16610cf957506001600160a01b0384166000908152600160209081526040808320838052825280832085845290915290205b60010154949350505050565b600061061f83837feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4610c94565b6000610d43836000610345856111fa565b6001149392505050565b803b80610da65760405162461bcd60e51b815260206004820152602160248201527f5346476f763a20666163746f7279206d757374206265206120636f6e747261636044820152601d60fa1b60648201526084016104dd565b506105ee826000610db6846111fa565b6001611086565b6040805160008082526001600160a01b03848116602084015292820152818416918516907f168da2dec91b2e06e30d49955479383e76f71ba185807a8a5b75e2ed563e1d279060600160405180910390a361077a83836106fe846113c9565b60408051600080825260208201526001600160a01b0380841692908516917fc055c4a3853372c08a98805545379133f00f7261d956b9197729d67f37a82a53910160405180910390a36105ee82827feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4611139565b610e9e8383610db6846113c9565b6040805160018082526001600160a01b03848116602084015292820152818416918516907f168da2dec91b2e06e30d49955479383e76f71ba185807a8a5b75e2ed563e1d2790606001610c11565b81610ef681611342565b6040516315a024e160e01b81526001600160a01b0383811660048301528416906315a024e1906024016109fb565b60408051600080825260208201526001600160a01b0380841692908516917f14e12f219a4f9023456dc7832e10119ab768b8ccefc8cb79bc6de0419781eeeb910160405180910390a36105ee82827f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09611139565b6000610fa88484610345856113c9565b600114949350505050565b6000546001600160a01b0316331461100d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dd565b6001600160a01b0381166110725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104dd565b61107b81611379565b50565b61056d848484845b8361109081611342565b60408051848152600160208201529081018390526001600160a01b0380861691908716907f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e3909060600160405180910390a350604080518082018252600180825260208083019485526001600160a01b039788166000908152828252848120979098168852958652828720948752939094529093209151825460ff19169015151782559151910155565b8261114381611342565b826001600160a01b0316846001600160a01b03167f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e3908460008060405161119c939291909283529015156020830152604082015260600190565b60405180910390a350604080518082018252600080825260208083018281526001600160a01b03978816835260018083528584209790981683529581528382209482529390935291209051815460ff19169015151781559051910155565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b8361129781611342565b60408051848152600160208201526001600160a01b03848116828401529151868316928816917f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e390919081900360600190a35060408051808201825260018082526001600160a01b03938416602080840191825297851660009081528289528481209790951685529587528284209484529390955290209251835460ff19169015151783559051910155565b6002546001600160a01b0382811691161461135f5761135f6118cc565b6000546001600160a01b0316331461107b5761107b6118cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c001611270565b6001600160a01b038116811461107b57600080fd5b6000806000806080858703121561146357600080fd5b843561146e81611438565b9350602085013561147e81611438565b93969395505050506040820135916060013590565b600080604083850312156114a657600080fd5b82356114b181611438565b915060208301356114c181611438565b809150509250929050565b60008083601f8401126114de57600080fd5b50813567ffffffffffffffff8111156114f657600080fd5b6020830191508360208260051b850101111561151157600080fd5b9250929050565b60008060008060006060868803121561153057600080fd5b853561153b81611438565b9450602086013567ffffffffffffffff8082111561155857600080fd5b61156489838a016114cc565b9096509450604088013591508082111561157d57600080fd5b5061158a888289016114cc565b969995985093965092949392505050565b80356115a681611438565b919050565b6000806000606084860312156115c057600080fd5b83356115cb81611438565b925060208401356115db81611438565b915060408401356115eb81611438565b809150509250925092565b60008060006040848603121561160b57600080fd5b833561161681611438565b9250602084013567ffffffffffffffff81111561163257600080fd5b61163e868287016114cc565b9497909650939450505050565b60008060008060006080868803121561166357600080fd5b853561166e81611438565b9450602086013561167e81611438565b9350604086013567ffffffffffffffff81111561169a57600080fd5b6116a6888289016114cc565b90945092505060608601356116ba81611438565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156116f657600080fd5b853561170181611438565b945060208681013561171281611438565b94506040870135935060608701359250608087013567ffffffffffffffff8082111561173d57600080fd5b818901915089601f83011261175157600080fd5b813581811115611763576117636116c8565b8060051b604051601f19603f83011681018181108582111715611788576117886116c8565b60405291825284820192508381018501918c8311156117a657600080fd5b938501935b828510156117cb576117bc8561159b565b845293850193928501926117ab565b8096505050505050509295509295909350565b6000806000606084860312156117f357600080fd5b83356117fe81611438565b9250602084013561180e81611438565b929592945050506040919091013590565b6000806000806080858703121561183557600080fd5b843561184081611438565b9350602085013561185081611438565b925060408501359150606085013561186781611438565b939692955090935050565b60006020828403121561188457600080fd5b813561061f81611438565b634e487b7160e01b600052603260045260246000fd5b6000600182016118c557634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052600160045260246000fdfea2646970667358221220d55d03fae1077e9654f24de4836d0c79dbf8f3f6fc31f40ab920a491cb0e33d164736f6c634300080d0033610100604052600160c052622dc6c060e0523480156200001e57600080fd5b506040516200564838038062005648833981016040819052620000419162000068565b901515608052151560a052620000a0565b805180151581146200006357600080fd5b919050565b600080604083850312156200007c57600080fd5b620000878362000052565b9150620000976020840162000052565b90509250929050565b60805160a05160c05160e05161551a6200012e6000396000818161037101528181612cb60152612d440152600081816107020152612af301526000818161058501528181611f390152818161254201526129700152600081816106b9015281816107aa01528181610bd0015281816112a60152818161141d0152818161157c0152612873015261551a6000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c806374041e0211610167578063bbe4fd50116100ce578063cd312ec411610087578063cd312ec4146106b4578063e8dccb7d146106db578063f213bb02146106fd578063f2e55caf14610724578063f37330521461072c578063f9f522f41461073f57600080fd5b8063bbe4fd5014610642578063bced3ddc14610648578063bd1c448b1461065b578063bf4287341461066e578063c4d66de814610681578063c56a069d1461069457600080fd5b8063a5dbbbcd11610120578063a5dbbbcd146105a7578063ad3915c8146105ba578063b6d200de146105cd578063b724211e146105e0578063ba48b5f8146105f3578063bb84cfa11461060657600080fd5b806374041e0214610521578063768fabb014610534578063787afde7146105475780638ca484841461055a578063989b0c3e1461056d5780639d297e301461058057600080fd5b8063469519541161020b578063572b6c05116101c4578063572b6c05146104b1578063670e77e3146104c45780636ad3ca7d146104d75780636b4f3335146104ea5780637283100c146104fd578063731aed6e1461051057600080fd5b80634695195414610422578063486ff0cd1461043557806350d75d251461045357806352d1902d1461045b57806354fbc4931461048b57806357121e0c1461049e57600080fd5b8063289b3c0d1161025d578063289b3c0d1461034157806333d608f11461036c57806339255d5b146103ab5780633ca3ad4e146103be5780633f6c923a146103e15780634329d2931461040157600080fd5b806306cecba8146102a55780630792f20a146102ba57806313349046146102e357806315a024e1146103085780631e6d0a841461031b5780631e855cf31461032e575b600080fd5b6102b86102b3366004614281565b61076f565b005b6102cd6102c83660046142e6565b61094c565b6040516102da919061438e565b60405180910390f35b6102f66102f1366004614281565b610a44565b60405160ff90911681526020016102da565b6102b8610316366004614281565b610a67565b6102cd6103293660046143af565b610d33565b6102cd61033c366004614530565b610fa1565b6000546201000090046001600160a01b03165b6040516001600160a01b0390911681526020016102da565b6103937f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b0390911681526020016102da565b6102cd6103b936600461457f565b610fb5565b6103d16103cc366004614281565b610fcb565b60405190151581526020016102da565b6103f46103ef3660046145f4565b610fe8565b6040516102da9190614628565b61041461040f366004614709565b610ff9565b6040516102da9291906147b5565b6102b8610430366004614281565b611274565b604080518082019091526002815261763160f01b60208201526102cd565b6103546113ac565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba745b6040519081526020016102da565b6102b8610499366004614281565b6113db565b6102b86104ac366004614281565b61165c565b6103d16104bf366004614281565b6117b2565b6102b86104d23660046147da565b61183c565b6102b86104e53660046147da565b61184d565b6103d16104f8366004614281565b611857565b6102b861050b366004614281565b61187b565b6003546001600160a01b0316610354565b6102cd61052f3660046143af565b611922565b6102cd6105423660046148f3565b611a9c565b6102b8610555366004614281565b611c54565b6103d1610568366004614281565b611d96565b6102cd61057b36600461496e565b611e5b565b6103d17f000000000000000000000000000000000000000000000000000000000000000081565b61047d6105b53660046149b9565b611eee565b6102b86105c83660046149db565b611f37565b6103546105db3660046149db565b611fc2565b6102cd6105ee3660046149f4565b612028565b6102cd610601366004614a50565b6120e8565b6103d1610614366004614ad2565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b4261047d565b61047d6106563660046149b9565b6124b4565b6102b8610669366004614b0b565b6124fc565b6103d161067c366004614b56565b612651565b6102b861068f366004614281565b612692565b6106a76106a23660046149db565b61276e565b6040516102da9190614b97565b6103d17f000000000000000000000000000000000000000000000000000000000000000081565b6103d16106e93660046149db565b600090815260026020526040902054151590565b61047d7f000000000000000000000000000000000000000000000000000000000000000081565b610354612858565b6102b861073a366004614be4565b61291e565b61075261074d366004614281565b612a80565b6040805193151584529115156020840152908201526060016102da565b6000546201000090046001600160a01b031633146107a85760405162461bcd60e51b815260040161079f90614c10565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000156107e65760405162461bcd60e51b815260040161079f90614c47565b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084a9190614c73565b60008181526002602052604081205491925081900361087b5760405162461bcd60e51b815260040161079f90614c8c565b600060016108898184614ce4565b8154811061089957610899614cfb565b6000918252602090912001546040516311a5465560e21b81526001600160a01b03868116600483015290911691508190634695195490602401600060405180830381600087803b1580156108ec57600080fd5b505af1158015610900573d6000803e3d6000fd5b5050604080518681526001600160a01b03881660208201527f9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a935001905060405180910390a150505050565b606061095733611d96565b6109735760405162461bcd60e51b815260040161079f90614d11565b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109b59250839150612acf9050565b6109c1576109c1614d54565b6000610a0287878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b9050848160e00151610a149190614d6a565b60e0820152610100810151610a2a908590614d82565b610100820152610a3981612aef565b979650505050505050565b6001600160a01b03811660009081526004602052604081205460ff165b92915050565b6000546201000090046001600160a01b03163314610a975760405162461bcd60e51b815260040161079f90614c10565b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afb9190614c73565b60008181526002602052604090205490915015610b695760405162461bcd60e51b815260206004820152602660248201527f53463a2061677265656d656e7420636c61737320616c726561647920726567696044820152651cdd195c995960d21b606482015260840161079f565b60015461010011610bcc5760405162461bcd60e51b815260206004820152602760248201527f53463a20737570706f727420757020746f203235362061677265656d656e7420604482015266636c617373657360c81b606482015260840161079f565b60007f0000000000000000000000000000000000000000000000000000000000000000610c86576000604051610c0190614204565b604051809103906000f080158015610c1d573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03868116600483015291925090821690634a0687ef90602401600060405180830381600087803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b5050505080915050610c89565b50815b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116179055546000838152600260205260409081902091909155517f878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d190610d2690849086909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b6060610d3e33611d96565b610d5a5760405162461bcd60e51b815260040161079f90614d11565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d9c9250839150612acf9050565b610da857610da8614d54565b600080610e228a6000898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612c7992505050565b915091508115610f5a57610e3581612e40565b15610ec65780806020019051810190610e4e9190614e08565b9350610e5984612acf565b610ec15786610e7a5760405162461bcd60e51b815260040161079f90614e3c565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929650610ec192508c915060149050612e94565b610f94565b86610f135760405162461bcd60e51b815260206004820152601f60248201527f53463a204150505f52554c455f4354585f49535f4d414c464f524d4154454400604482015260640161079f565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929650610ec192508c915060169050612e94565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b6060610fae338484612f09565b9392505050565b6060610fc3338585856131e7565b949350505050565b6001600160a01b0316600090815260046020526040902054151590565b610ff0614211565b610a618261333a565b60608083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061103e9250839150612acf9050565b61108a5760405162461bcd60e51b815260206004820152601d60248201527f53463a204150505f52554c455f4354585f49535f4e4f545f56414c4944000000604482015260640161079f565b8961109481611d96565b6110b05760405162461bcd60e51b815260040161079f90614e73565b60006110f187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b6101208101519091506001600160a01b031633146111695760405162461bcd60e51b815260206004820152602f60248201527f53463a2063616c6c41677265656d656e7457697468436f6e746578742066726f60448201526e6d2077726f6e67206164647265737360881b606482015260840161079f565b60608101805133909152604080516020601f8c018190048102820181019092528a8152908b908b908190840183828082843760009201919091525050505060a08301526111b582612aef565b955060006111fb8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613405915050565b96509050801561125a57858060200190518101906112199190614e08565b965061122487612acf565b61123057611230614d54565b61123987610fe8565b6001600160a01b0383166060820152925061125383612aef565b9650611263565b611263866134ea565b505050505097509795505050505050565b6000546201000090046001600160a01b031633146112a45760405162461bcd60e51b815260040161079f90614c10565b7f0000000000000000000000000000000000000000000000000000000000000000156112e25760405162461bcd60e51b815260040161079f90614c47565b806001600160a01b031663cd312ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190614eb5565b156113a05760405162461bcd60e51b815260206004820152602660248201527f53463a2063616e6e6f7420646f776e677261646520746f206e6f6e2075706772604482015265616461626c6560d01b606482015260840161079f565b6113a9816135f5565b50565b60006113d67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000546201000090046001600160a01b0316331461140b5760405162461bcd60e51b815260040161079f90614c10565b6003546001600160a01b031661157a577f00000000000000000000000000000000000000000000000000000000000000006114f157600060405161144e90614204565b604051809103906000f08015801561146a573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03848116600483015291925090821690634a0687ef90602401600060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b0394909416939093179092555061150d9050565b600380546001600160a01b0319166001600160a01b0383161790555b600360009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561155d57600080fd5b505af1158015611571573d6000803e3d6000fd5b50505050611618565b7f0000000000000000000000000000000000000000000000000000000000000000156115b85760405162461bcd60e51b815260040161079f90614c47565b6003546040516311a5465560e21b81526001600160a01b03838116600483015290911690634695195490602401600060405180830381600087803b1580156115ff57600080fd5b505af1158015611613573d6000803e3d6000fd5b505050505b6003546040516001600160a01b0390911681527fce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499906020015b60405180910390a150565b3361166681610fcb565b6116b25760405162461bcd60e51b815260206004820152601860248201527f53463a2073656e646572206973206e6f7420616e206170700000000000000000604482015260640161079f565b6116bb82610fcb565b6117075760405162461bcd60e51b815260206004820152601860248201527f53463a20746172676574206973206e6f7420616e206170700000000000000000604482015260640161079f565b61171082610a44565b60ff1661171c82610a44565b60ff16116117805760405162461bcd60e51b815260206004820152602b60248201527f53463a20736f75726365206170702073686f756c64206861766520686967686560448201526a1c88185c1c081b195d995b60aa1b606482015260840161079f565b503360009081526005602090815260408083206001600160a01b0394909416835292905220805460ff19166001179055565b600080546201000090046001600160a01b03166380f70cba30836117d58661382f565b6040518463ffffffff1660e01b81526004016117f393929190614ed2565b602060405180830381865afa158015611810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118349190614c73565b151592915050565b6113a96118476138b7565b8261391f565b6113a9338261391f565b6001600160a01b038116600090815260046020526040812054618000161515610a61565b6000546201000090046001600160a01b031633146118ab5760405162461bcd60e51b815260040161079f90614c10565b600054604080516001600160a01b03620100009093048316815291831660208301527f13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b606061192d33611d96565b6119495760405162461bcd60e51b815260040161079f90614d11565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061198b9250839150612acf9050565b61199757611997614d54565b600080611a118a6001898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612c7992505050565b915091508115610f9457611a2481612e40565b15611a445780806020019051810190611a3d9190614e08565b9350610f94565b86611a915760405162461bcd60e51b815260206004820152601f60248201527f53463a204150505f52554c455f4354585f49535f4d414c464f524d4154454400604482015260640161079f565b610f948a6016612e94565b6060611aa733611d96565b611ac35760405162461bcd60e51b815260040161079f90614d11565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b059250839150612acf9050565b611b1157611b11614d54565b6000611b5289898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b9050611b618160600151610fcb565b15611bf65760608101516001600160a01b039081166000908152600560209081526040808320938b168352929052205460ff16611bf65760405162461bcd60e51b815260206004820152602d60248201527f53463a204150505f52554c455f434f4d504f534954455f4150505f49535f4e4f60448201526c1517d5d2125511531254d51151609a1b606482015260840161079f565b805181611c0282614ef6565b60ff169052506003602082015260c08101869052600060e082015261010081018590526001600160a01b038088166101208301528416610140820152611c4781612aef565b9998505050505050505050565b6000546201000090046001600160a01b03163314611c845760405162461bcd60e51b815260040161079f90614c10565b60035460408051634a3852d960e11b815290516000926001600160a01b031691639470a5b29160048083019260209291908290030181865afa158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf29190614f15565b6040516311a5465560e21b81526001600160a01b03808316600483015291925090831690634695195490602401600060405180830381600087803b158015611d3957600080fd5b505af1158015611d4d573d6000803e3d6000fd5b50506040516001600160a01b038481168252851692507f840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd391506020015b60405180910390a25050565b600080826001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfb9190614c73565b6000818152600260205260409020549091508015801590610fc357506001600160a01b0384166001611e2d8184614ce4565b81548110611e3d57611e3d614cfb565b6000918252602090912001546001600160a01b031614949350505050565b6060611e6633611d96565b611e825760405162461bcd60e51b815260040161079f90614d11565b6000611ec385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b905082816101000151611ed69190614d82565b610100820152611ee581612aef565b95945050505050565b600081815260026020526040812054808203611f1c5760405162461bcd60e51b815260040161079f90614c8c565b611f27600182614ce4565b6001901b19841691505092915050565b7f000000000000000000000000000000000000000000000000000000000000000015611fb65760405162461bcd60e51b815260206004820152602860248201527f53463a2061707020726567697374726174696f6e2072657175697265732070656044820152673936b4b9b9b4b7b760c11b606482015260840161079f565b6113a981336001613d63565b600081815260026020526040812054808203611ff05760405162461bcd60e51b815260040161079f90614c8c565b6001611ffc8183614ce4565b8154811061200c5761200c614cfb565b6000918252602090912001546001600160a01b03169392505050565b606061203333611d96565b61204f5760405162461bcd60e51b815260040161079f90614d11565b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120919250839150612acf9050565b61209d5761209d614d54565b6120a78484612e94565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b606082828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061212c9250839150612acf9050565b6121785760405162461bcd60e51b815260206004820152601d60248201527f53463a204150505f52554c455f4354585f49535f4e4f545f56414c4944000000604482015260640161079f565b6001600160a01b0387166000908152600460205260409020548790806121d65760405162461bcd60e51b8152602060048201526013602482015272053463a206e6f7420612073757065722061707606c1b604482015260640161079f565b61800081161561221c5760405162461bcd60e51b815260206004820152601160248201527014d18e88185c1c081a5cc81a985a5b1959607a1b604482015260640161079f565b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061225d9150839050613f5a565b90506001600160e01b031981166330d9c91560e01b148061228e57506001600160e01b0319811663d86ed3e560e01b145b806122a957506001600160e01b03198116630221347d60e61b145b806122c457506001600160e01b0319811663d86ed3e560e01b145b806122df57506001600160e01b03198116635f9e7d7760e01b145b806122fa57506001600160e01b0319811663d86ed3e560e01b145b156123175760405162461bcd60e51b815260040161079f90614f32565b600061235889898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b6101208101519091506001600160a01b031633146123d05760405162461bcd60e51b815260206004820152602f60248201527f53463a2063616c6c417070416374696f6e57697468436f6e746578742066726f60448201526e6d2077726f6e67206164647265737360881b606482015260840161079f565b606081018051339091526123e382612aef565b975060008061242a8f8f8f8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f9250613405915050565b91509150811561249957808060200190518101906124489190614e08565b99506124538a612acf565b61246f5760405162461bcd60e51b815260040161079f90614e3c565b6124788a610fe8565b6001600160a01b0384166060820152935061249284612aef565b99506124a2565b6124a2816134ea565b50505050505050505095945050505050565b6000818152600260205260408120548082036124e25760405162461bcd60e51b815260040161079f90614c8c565b6124ed600182614ce4565b6001901b841791505092915050565b600061253e3284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613fb692505050565b90507f00000000000000000000000000000000000000000000000000000000000000001561263f576000805460405163407b865d60e11b81524292620100009092046001600160a01b0316916380f70cba916125a09130918790600401614ed2565b602060405180830381865afa1580156125bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e19190614c73565b101561263f5760405162461bcd60e51b815260206004820152602760248201527f53463a20696e76616c6964206f72206578706972656420726567697374726174604482015266696f6e206b657960c81b606482015260840161079f565b61264b84336001613d63565b50505050565b6000610fae83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612acf92505050565b600054610100900460ff166126ad5760005460ff16156126b1565b303b155b6127145760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161079f565b600054610100900460ff16158015612736576000805461ffff19166101011790555b6000805462010000600160b01b031916620100006001600160a01b03851602179055801561276a576000805461ff00191690555b5050565b60606000806001805490506001600160401b0381111561279057612790614445565b6040519080825280602002602001820160405280156127b9578160200160208202803683370190505b50925060009050600091505b600154821015612850576001821b84161561284057600182815481106127ed576127ed614cfb565b6000918252602090912001546001600160a01b0316838261280d81614f76565b93508151811061281f5761281f614cfb565b60200260200101906001600160a01b031690816001600160a01b0316815250505b61284982614f76565b91506127c5565b825250919050565b6003546000906001600160a01b03166128715750600090565b7f0000000000000000000000000000000000000000000000000000000000000000156128a757506003546001600160a01b031690565b600360009054906101000a90046001600160a01b03166001600160a01b03166350d75d256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d69190614f15565b333b8061296d5760405162461bcd60e51b815260206004820152601e60248201527f53463a20666163746f7279206d757374206265206120636f6e74726163740000604482015260640161079f565b507f000000000000000000000000000000000000000000000000000000000000000015612a7457600061299f33613fe9565b6000805460405163407b865d60e11b81529293509091620100009091046001600160a01b0316906380f70cba906129de90309085908790600401614ed2565b602060405180830381865afa1580156129fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1f9190614c73565b600114905080612a715760405162461bcd60e51b815260206004820152601f60248201527f53463a20617574686f72697a656420666163746f727920726571756972656400604482015260640161079f565b50505b61276a81836000613d63565b6001600160a01b038116600090815260046020908152604080832081519283019091525480825215801592918291612ac757805161800081161515935064ff000000001691505b509193909250565b60008151600014158015610a615750600654825160208401201492915050565b60607f0000000000000000000000000000000000000000000000000000000000000000826000015160ff161115612b735760405162461bcd60e51b815260206004820152602260248201527f53463a204150505f52554c455f4d41585f4150505f4c4556454c5f5245414348604482015261115160f21b606482015260840161079f565b815160208084015160009260ff1664ff000000009190921b1617905060006080612ba08560e00151614063565b6001600160801b0316901b612bb88560c00151614063565b6001600160801b0316179050818460400151856060015186608001518760a00151604051602001612bed959493929190614f8f565b60408051601f1981840301815282825261010087015161012088015161014089015160208601879052938501919091526001600160a01b03908116606085015290911660808301529060a00160408051601f1981840301815290829052612c5792916020016147b5565b60408051601f1981840301815291905280516020820120600655949350505050565b600060606001600160a01b038716612c9357612c93614d54565b612c9d84846140d0565b935060005a90508615612d3857876001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160401b031686604051612cec9190614fd0565b6000604051808303818686fa925050503d8060008114612d28576040519150601f19603f3d011682016040523d82523d6000602084013e612d2d565b606091505b509093509150612dc4565b876001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160401b031686604051612d7a9190614fd0565b60006040518083038160008787f1925050503d8060008114612db8576040519150601f19603f3d011682016040523d82523d6000602084013e612dbd565b606091505b5090935091505b82612e3557612dd4603f82614fec565b5a1115612df95785612dee57612de9826134ea565b612e35565b612de988600a612e94565b60405162461bcd60e51b815260206004820152601160248201527053463a206e656564206d6f72652067617360781b604482015260640161079f565b509550959350505050565b6000604082511015612e5457506000919050565b602082810151906000908214612e6e575060009392505050565b506040830151612e7d816141cb565b612e88906040614d6a565b84511492505050919050565b6001600160a01b03821660009081526004602052604081205461800016900361276a576001600160a01b038216600081815260046020526040908190208054618000179055517fbe3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b90611d8a9084815260200190565b60065460609015612f5c5760405162461bcd60e51b815260206004820152601d60248201527f53463a204150505f52554c455f4354585f49535f4e4f545f434c45414e000000604482015260640161079f565b6001600160a01b038316600090815260046020526040902054839080612fba5760405162461bcd60e51b8152602060048201526013602482015272053463a206e6f7420612073757065722061707606c1b604482015260640161079f565b6180008116156130005760405162461bcd60e51b815260206004820152601160248201527014d18e88185c1c081a5cc81a985a5b1959607a1b604482015260640161079f565b83600061300c82613f5a565b90506001600160e01b031981166330d9c91560e01b148061303d57506001600160e01b0319811663d86ed3e560e01b145b8061305857506001600160e01b03198116630221347d60e61b145b8061307357506001600160e01b0319811663d86ed3e560e01b145b8061308e57506001600160e01b03198116635f9e7d7760e01b145b806130a957506001600160e01b0319811663d86ed3e560e01b145b156130c65760405162461bcd60e51b815260040161079f90614f32565b60006131726040518061016001604052806130e08c610fcb565b6130eb5760006130ee565b60015b60ff168152600260208201526040014281526020018b6001600160a01b03168152602001600060e01b6001600160e01b03191681526020016040518060200160405280600081525081526020016000815260200160008152602001600081526020018a6001600160a01b0316815260200160006001600160a01b0316815250612aef565b90506000613181898984613405565b9750905080156131cb578680602001905181019061319f9190614e08565b91506131aa82612acf565b6131c65760405162461bcd60e51b815260040161079f90614e3c565b6131d4565b6131d4876134ea565b5050600060065550929695505050505050565b6006546060901561323a5760405162461bcd60e51b815260206004820152601d60248201527f53463a204150505f52554c455f4354585f49535f4e4f545f434c45414e000000604482015260640161079f565b8361324481611d96565b6132605760405162461bcd60e51b815260040161079f90614e73565b600061326b85613f5a565b905060006133076040518061016001604052806132878b610fcb565b613292576000613295565b60015b60ff168152600160208201526040014281526020018a6001600160a01b03168152602001846001600160e01b031916815260200187815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815250612aef565b90506000613316888884613405565b955090508061332857613328856134ea565b50506000600655509095945050505050565b613342614211565b60608083806020019051810190613359919061500e565b815191935091506000906133769084016020908101908501615067565b60a08901526001600160e01b03191660808801526001600160a01b031660608701526040860152602081811c600f168187015260ff90911685528251600092506133c79190840181019084016150eb565b6001600160a01b03908116610140890152166101208701526101008601526001600160801b03811660c086015260801c60e085015250919392505050565b600060606001600160a01b03851661341f5761341f614d54565b61342984846140d0565b9350846001600160a01b0316846040516134439190614fd0565b6000604051808303816000865af19150503d8060008114613480576040519150601f19603f3d011682016040523d82523d6000602084013e613485565b606091505b50909250905081156134e25760008151116134e25760405162461bcd60e51b815260206004820152601960248201527f53463a204150505f52554c455f4354585f49535f454d50545900000000000000604482015260640161079f565b935093915050565b60048151101561353c5760405162461bcd60e51b815260206004820152601a60248201527f43616c6c5574696c733a20746172676574207265766572742829000000000000604482015260640161079f565b602081015163b1b7848f60e01b6001600160e01b03198216016135ec5760408051808201825260208082527f43616c6c5574696c733a207461726765742070616e69636b65643a2030785f5f90820190815260248501517f43616c6c5574696c733a207461726765742070616e69636b65643a2030780000600482811c600f908116603090810160081b918516011791909117909252925162461bcd60e51b815291929161079f9184910161438e565b81518060208401fd5b600061361f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036136755760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c65000000604482015260640161079f565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d79190614c73565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74146137515760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b606482015260840161079f565b6001600160a01b03811630036137a95760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f7000000000000000604482015260640161079f565b6137d1817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74604080519182526001600160a01b038416602083015201611651565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b6000601836108015906138ce57506138ce336117b2565b6139125760405162461bcd60e51b81526020600482015260156024820152742737ba103a393ab9ba32b2103337b93bb0b93232b960591b604482015260640161079f565b5060131936013560601c90565b60005b8151811015613d5e57600082828151811061393f5761393f614cfb565b6020026020010151600001519050600163ffffffff168163ffffffff1603613a1f5760008084848151811061397657613976614cfb565b6020026020010151604001518060200190518101906139959190615136565b915091508484815181106139ab576139ab614cfb565b6020026020010151602001516001600160a01b03166362aa52878784846040518463ffffffff1660e01b81526004016139e693929190614ed2565b600060405180830381600087803b158015613a0057600080fd5b505af1158015613a14573d6000803e3d6000fd5b505050505050613d4b565b60011963ffffffff821601613b05576000806000858581518110613a4557613a45614cfb565b602002602001015160400151806020019051810190613a649190615164565b925092509250858581518110613a7c57613a7c614cfb565b6020908102919091018101510151604051630b682aeb60e11b81526001600160a01b0389811660048301528581166024830152848116604483015260648201849052909116906316d055d690608401600060405180830381600087803b158015613ae557600080fd5b505af1158015613af9573d6000803e3d6000fd5b50505050505050613d4b565b60641963ffffffff821601613bd557828281518110613b2657613b26614cfb565b6020026020010151602001516001600160a01b031663ca78946485858581518110613b5357613b53614cfb565b602002602001015160400151806020019051810190613b729190614c73565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015613bb857600080fd5b505af1158015613bcc573d6000803e3d6000fd5b50505050613d4b565b60651963ffffffff821601613c2357828281518110613bf657613bf6614cfb565b6020026020010151602001516001600160a01b031663245887fc85858581518110613b5357613b53614cfb565b60c81963ffffffff821601613c9b57600080848481518110613c4757613c47614cfb565b602002602001015160400151806020019051810190613c66919061500e565b91509150613c9386868681518110613c8057613c80614cfb565b60200260200101516020015184846131e7565b505050613d4b565b60c91963ffffffff821601613cf557613cef84848481518110613cc057613cc0614cfb565b602002602001015160200151858581518110613cde57613cde614cfb565b602002602001015160400151612f09565b50613d4b565b60405162461bcd60e51b815260206004820152602560248201527f53463a20756e6b6e6f776e2062617463682063616c6c206f7065726174696f6e604482015264207479706560d81b606482015260840161079f565b5080613d5681614f76565b915050613922565b505050565b323303613dbe5760405162461bcd60e51b8152602060048201526024808201527f53463a204150505f52554c455f4e4f5f524547495354524154494f4e5f464f526044820152635f454f4160e01b606482015260840161079f565b8015613e2c57813b8015613e2a5760405162461bcd60e51b815260206004820152602d60248201527f53463a204150505f52554c455f524547495354524154494f4e5f4f4e4c595f4960448201526c272fa1a7a729aa292aa1aa27a960991b606482015260840161079f565b505b64ff000080ff198316158015613e44575060ff831615155b8015613e5257506180008316155b613e9e5760405162461bcd60e51b815260206004820152601760248201527f53463a20696e76616c696420636f6e66696720776f7264000000000000000000604482015260640161079f565b6001600160a01b03821660009081526004602052604090205415613f045760405162461bcd60e51b815260206004820152601a60248201527f53463a2061707020616c72656164792072656769737465726564000000000000604482015260640161079f565b60408051602080820183528582526001600160a01b038516600081815260049092528382209251909255915190917f0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef791a2505050565b6000600482511015613fae5760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e76616c69642063616c6c446174610000000000604482015260640161079f565b506020015190565b60008282604051602001613fcb9291906151a7565b60405160208183030381529060405280519060200120905092915050565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c00161389a565b60006001600160801b038211156140cc5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161079f565b5090565b81518083015160609190801561413d5760405162461bcd60e51b815260206004820152602c60248201527f53463a20706c61636572686f6c646572206374782073686f756c64206861766560448201526b040f4cae4de40d8cadccee8d60a31b606482015260840161079f565b50601f1981018452825184908481614154816141cb565b61415e9190614ce4565b6001600160401b0381111561417557614175614445565b6040519080825280601f01601f19166020018201604052801561419f576020820181803683370190505b506040516020016141b3949392919061522c565b60405160208183030381529060405291505092915050565b60008082601f16116141de5760006141e1565b60015b60ff166141ef602084614fec565b6141f99190614d6a565b610a6190602061527b565b61024a8061529b83390190565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b03811681146113a957600080fd5b60006020828403121561429357600080fd5b8135610fae8161426c565b60008083601f8401126142b057600080fd5b5081356001600160401b038111156142c757600080fd5b6020830191508360208285010111156142df57600080fd5b9250929050565b600080600080606085870312156142fc57600080fd5b84356001600160401b0381111561431257600080fd5b61431e8782880161429e565b90989097506020870135966040013595509350505050565b60005b83811015614351578181015183820152602001614339565b8381111561264b5750506000910152565b6000815180845261437a816020860160208601614336565b601f01601f19169290920160200192915050565b602081526000610fae6020830184614362565b80151581146113a957600080fd5b600080600080600080608087890312156143c857600080fd5b86356143d38161426c565b955060208701356001600160401b03808211156143ef57600080fd5b6143fb8a838b0161429e565b909750955060408901359150614410826143a1565b9093506060880135908082111561442657600080fd5b5061443389828a0161429e565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561447d5761447d614445565b60405290565b604051601f8201601f191681016001600160401b03811182821017156144ab576144ab614445565b604052919050565b60006001600160401b038211156144cc576144cc614445565b50601f01601f191660200190565b600082601f8301126144eb57600080fd5b81356144fe6144f9826144b3565b614483565b81815284602083860101111561451357600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561454357600080fd5b823561454e8161426c565b915060208301356001600160401b0381111561456957600080fd5b614575858286016144da565b9150509250929050565b60008060006060848603121561459457600080fd5b833561459f8161426c565b925060208401356001600160401b03808211156145bb57600080fd5b6145c7878388016144da565b935060408601359150808211156145dd57600080fd5b506145ea868287016144da565b9150509250925092565b60006020828403121561460657600080fd5b81356001600160401b0381111561461c57600080fd5b610fc3848285016144da565b6020815261463c60208201835160ff169052565b60006020830151614652604084018260ff169052565b5060408301516060830152606083015161467760808401826001600160a01b03169052565b5060808301516001600160e01b0319811660a08401525060a08301516101608060c08501526146aa610180850183614362565b915060c085015160e085015260e08501516101008181870152808701519150506101208181870152808701519150506101406146f0818701836001600160a01b03169052565b909501516001600160a01b031693019290925250919050565b60008060008060008060006080888a03121561472457600080fd5b873561472f8161426c565b965060208801356001600160401b038082111561474b57600080fd5b6147578b838c0161429e565b909850965060408a013591508082111561477057600080fd5b61477c8b838c0161429e565b909650945060608a013591508082111561479557600080fd5b506147a28a828b0161429e565b989b979a50959850939692959293505050565b6040815260006147c86040830185614362565b8281036020840152611ee58185614362565b600060208083850312156147ed57600080fd5b82356001600160401b038082111561480457600080fd5b818501915085601f83011261481857600080fd5b81358181111561482a5761482a614445565b8060051b614839858201614483565b918252838101850191858101908984111561485357600080fd5b86860192505b83831015611c47578235858111156148715760008081fd5b86016060818c03601f19018113156148895760008081fd5b61489161445b565b8983013563ffffffff811681146148a85760008081fd5b81526040838101356148b98161426c565b828c01529183013591888311156148d05760008081fd5b6148de8e8c858701016144da565b90820152845250509186019190860190614859565b60008060008060008060a0878903121561490c57600080fd5b86356001600160401b0381111561492257600080fd5b61492e89828a0161429e565b90975095505060208701356149428161426c565b9350604087013592506060870135915060808701356149608161426c565b809150509295509295509295565b60008060006040848603121561498357600080fd5b83356001600160401b0381111561499957600080fd5b6149a58682870161429e565b909790965060209590950135949350505050565b600080604083850312156149cc57600080fd5b50508035926020909101359150565b6000602082840312156149ed57600080fd5b5035919050565b60008060008060608587031215614a0a57600080fd5b84356001600160401b03811115614a2057600080fd5b614a2c8782880161429e565b9095509350506020850135614a408161426c565b9396929550929360400135925050565b600080600080600060608688031215614a6857600080fd5b8535614a738161426c565b945060208601356001600160401b0380821115614a8f57600080fd5b614a9b89838a0161429e565b90965094506040880135915080821115614ab457600080fd5b50614ac18882890161429e565b969995985093965092949392505050565b60008060408385031215614ae557600080fd5b8235614af08161426c565b91506020830135614b008161426c565b809150509250929050565b600080600060408486031215614b2057600080fd5b8335925060208401356001600160401b03811115614b3d57600080fd5b614b498682870161429e565b9497909650939450505050565b60008060208385031215614b6957600080fd5b82356001600160401b03811115614b7f57600080fd5b614b8b8582860161429e565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614bd85783516001600160a01b031683529284019291840191600101614bb3565b50909695505050505050565b60008060408385031215614bf757600080fd5b8235614c028161426c565b946020939093013593505050565b6020808252601b908201527f53463a206f6e6c7920676f7665726e616e636520616c6c6f7765640000000000604082015260600190565b60208082526012908201527153463a206e6f6e2075706772616461626c6560701b604082015260600190565b600060208284031215614c8557600080fd5b5051919050565b60208082526022908201527f53463a2061677265656d656e7420636c617373206e6f74207265676973746572604082015261195960f21b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015614cf657614cf6614cce565b500390565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f53463a2073656e646572206973206e6f74206c6973746564206167726565656d604082015262195b9d60ea1b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b60008219821115614d7d57614d7d614cce565b500190565b600080821280156001600160ff1b0384900385131615614da457614da4614cce565b600160ff1b8390038412811615614dbd57614dbd614cce565b50500190565b600082601f830112614dd457600080fd5b8151614de26144f9826144b3565b818152846020838601011115614df757600080fd5b610fc3826020830160208701614336565b600060208284031215614e1a57600080fd5b81516001600160401b03811115614e3057600080fd5b610fc384828501614dc3565b6020808252601c908201527f53463a204150505f52554c455f4354585f49535f524541444f4e4c5900000000604082015260600190565b60208082526022908201527f53463a206f6e6c79206c6973746564206167726565656d656e7420616c6c6f77604082015261195960f21b606082015260800190565b600060208284031215614ec757600080fd5b8151610fae816143a1565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060ff821660ff8103614f0c57614f0c614cce565b60010192915050565b600060208284031215614f2757600080fd5b8151610fae8161426c565b60208082526024908201527f53463a2061677265656d656e742063616c6c6261636b206973206e6f742061636040820152633a34b7b760e11b606082015260800190565b600060018201614f8857614f88614cce565b5060010190565b858152602081018590526001600160a01b03841660408201526001600160e01b03198316606082015260a060808201819052600090610a3990830184614362565b60008251614fe2818460208701614336565b9190910192915050565b60008261500957634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561502157600080fd5b82516001600160401b038082111561503857600080fd5b61504486838701614dc3565b9350602085015191508082111561505a57600080fd5b5061457585828601614dc3565b600080600080600060a0868803121561507f57600080fd5b855194506020860151935060408601516150988161426c565b60608701519093506001600160e01b0319811681146150b657600080fd5b60808701519092506001600160401b038111156150d257600080fd5b6150de88828901614dc3565b9150509295509295909350565b6000806000806080858703121561510157600080fd5b8451935060208501519250604085015161511a8161426c565b606086015190925061512b8161426c565b939692955090935050565b6000806040838503121561514957600080fd5b82516151548161426c565b6020939093015192949293505050565b60008060006060848603121561517957600080fd5b83516151848161426c565b60208501519093506151958161426c565b80925050604084015190509250925092565b60608152604160608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e726567697374726174696f6e4b6560a0820152607960f81b60c082015260018060a01b038316602082015260e060408201526000610fc360e0830184614362565b60008551602061523f8285838b01614336565b8184019150868252855161525881838501848a01614336565b855192019161526c81838501848901614336565b91909101019695505050505050565b600081600019048311821515161561529557615295614cce565b50029056fe608060405234801561001057600080fd5b5061022a806100206000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea264697066735822122055e86118ce2711c610170f2e930678ba3d15a2874e37c60b77b322eebc0ffc5f64736f6c634300080d0033a2646970667358221220653a90556ed0948f50056c859d77161c99f3a5ef902eb934ec3f67e4dc13144c64736f6c634300080d003360a06040523480156200001157600080fd5b506040516200538b3803806200538b833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516152f762000094600039600061077701526152f76000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c806350d75d25116100f957806394229ecb11610097578063aabd266811610071578063aabd26681461042e578063b4b333c614610441578063e6a1e88814610454578063e8e7e2d11461046757600080fd5b806394229ecb146103ed5780639b2e48bc146104005780639cb28b72146102aa57600080fd5b806362fc305e116100d357806362fc305e1461038e5780637730599e146103a1578063811b3d40146103c75780638d997f6e146103da57600080fd5b806350d75d251461035357806352d1902d1461037357806354b770e31461037b57600080fd5b806326b0f536116101665780634b839e0b116101405780634b839e0b146102e05780634c8b181f146103035780634fe9c2911461031657806350209a621461034057600080fd5b806326b0f536146102aa578063354b9590146102b857806346951954146102cb57600080fd5b8062422bbe146101ad57806304aafa49146101e55780630602f7db146101ff578063062e56ec1461022557806309d256ef146102455780630f1ac49514610274575b600080fd5b6101c06101bb366004614493565b61047a565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b6101f164010000000081565b6040519081526020016101dc565b61021261020d3660046144de565b6104b0565b604051600b9190910b81526020016101dc565b61023861023336600461454c565b6104d1565b6040516101dc919061460d565b6102586102533660046144de565b6104eb565b6040805160ff9093168352600b9190910b6020830152016101dc565b610287610282366004614620565b61050f565b60408051948552600b9390930b60208501529183015260608201526080016101dc565b6101f160016001605f1b0381565b6102386102c636600461466b565b610545565b6102de6102d93660046146f7565b61076c565b005b6102f36102ee366004614714565b6107f0565b60405190151581526020016101dc565b610238610311366004614755565b6108c7565b610329610324366004614620565b6109e1565b6040805192151583526020830191909152016101dc565b61023861034e3660046147d1565b610ac3565b61035b610b96565b6040516001600160a01b0390911681526020016101dc565b6101f1610bc5565b61023861038936600461454c565b610c29565b61023861039c3660046147d1565b610c41565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36101f1565b6102386103d5366004614821565b610cf4565b6101f16103e8366004614865565b610f7e565b6102386103fb36600461466b565b611199565b61041361040e366004614714565b611379565b604080519384526020840192909252908201526060016101dc565b61028761043c3660046144de565b6113d3565b61023861044f366004614755565b6113e5565b610287610462366004614493565b611479565b610212610475366004614620565b6114b4565b600080600061048985856114ce565b925060006104978785611539565b8051602090910151959990985094965093945050505050565b6000806104bc846115fe565b5090506104c98184611779565b949350505050565b60606104e285856000808787610cf4565b95945050505050565b60008060006104fa8585611539565b80516020909101519097909650945050505050565b600080600080600061052187876117e8565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006105898885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036105f55760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f55504441544500000000000000000060448201526064015b60405180910390fd5b60008061060b8a6106068b8b611a65565b611a8d565b9150915060008060006106238d8d886060015161047a565b925092509250610634826001611ad4565b6106805760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f5550444154455f464c4f570000000000000060448201526064016105ec565b6000600b82900b60016001605f1b0314806106a557508a600b0b8560200151600b0b12155b6106c75760208501516106b8908c6148b0565b6106c290836148b0565b6106c9565b815b9050600081600b0b12156106ef5760405162461bcd60e51b81526004016105ec90614900565b6106fb8e858584611b2f565b5050505061072960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b606082015261075d8183858a8a89611bb8565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e45760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016105ec565b6107ed81611d3d565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190614941565b505090506000811261087c5760019150506108c0565b600080610888876115fe565b91509150600061089888886117e8565b91505060006108aa8260400151611f4b565b90506108b885828686611fb9565b955050505050505b9392505050565b6060600061090b8785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061091e8888846060015161047a565b50915050600061092f826002611ad4565b90508061097e5760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f44454c4554455f464c4f570000000000000060448201526064016105ec565b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109d38183898988611ff6565b9a9950505050505050505050565b6000806000846001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a48919061497a565b9050806001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac9190614997565b9150610ab98585846107f0565b9250509250929050565b60606000610b078785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610b3360408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610b7191611a65565b9050600080610b84846000015184611a8d565b9150915061075d8482848b8b8a611bb8565b6000610bc07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190614997565b60606104e28585600760016001605f1b038787610cf4565b60606000610c858785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610cb160408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610ce88186868561278d565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610d3b925087915061292d9050565b610d875760405162461bcd60e51b815260206004820152601860248201527f4346413a20556e636c65616e207065726d697373696f6e73000000000000000060448201526064016105ec565b6000610dc98885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b031603610e305760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f53454e4445525f464c4f575f4f50455241544f52000060448201526064016105ec565b600085600b0b1215610e845760405162461bcd60e51b815260206004820152601c60248201527f4346413a20455f4e4f5f4e454741544956455f414c4c4f57414e43450000000060448201526064016105ec565b6040805180820190915260ff87168152600b86900b60208201526060820151600090610eb0908a6114ce565b9050896001600160a01b031663a1b2bf8b82610ecb85612934565b6040518363ffffffff1660e01b8152600401610ee89291906149eb565b600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600080836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe3919061497a565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611049919061497a565b90506000816001600160a01b03166380f70cba84887feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161109d93929190614a04565b602060405180830381865afa1580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614997565b90506000826001600160a01b03166380f70cba85897fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161113293929190614a04565b602060405180830381865afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190614997565b9050602081901c63ffffffff1661118b8382896129aa565b955050505050505b92915050565b606060006111dd8885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036112445760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f43524541544500000000000000000060448201526064016105ec565b60008060006112588b8b866060015161047a565b925092509250611269826000611ad4565b6112b55760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f4f50455241544f525f4352454154455f464c4f57000060448201526064016105ec565b6000600b82900b60016001605f1b03146112d8576112d389836148b0565b6112da565b815b9050600081600b0b12156113005760405162461bcd60e51b81526004016105ec90614900565b61130c8c858584611b2f565b5050505061133a60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b606082015261136c8186868561278d565b9998505050505050505050565b600080600080600061138b88886117e8565b9150915081156113c8578060200151600b0b8160000151876113ad9190614a28565b6113b79190614a67565b945080604001519350806060015192505b505093509350939050565b60008060008060006105218787611a8d565b606060006114298785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061143c8888846060015161047a565b50915050600061144d826002611ad4565b90506109a360408051608081018252600080825260208201819052918101829052606081019190915290565b600080600080600061148f886106068989611a65565b805160208201516040830151606090930151919c909b50919950975095505050505050565b6000806114c184846117e8565b6020015195945050505050565b6000828260405160200161151b9291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c99190810190614b5d565b90506115f1816000815181106115e1576115e1614bf7565b602002602001015160001c612a7f565b92509250505b9250929050565b6000806000836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611665919061497a565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb919061497a565b90506000816001600160a01b03166380f70cba84887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161171f93929190614a04565b602060405180830381865afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190614997565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b038211156117d25760405162461bcd60e51b815260206004820152601b60248201527f4346413a206465706f736974206e756d62657220746f6f20626967000000000060448201526064016105ec565b63ffffffff198216915060006104c98484614c23565b60006117f26143cc565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611851573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118799190810190614b5d565b90506115f18160008151811061189157611891614bf7565b602002602001015160001c612abf565b6118a96143f7565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611915919061497a565b6001600160a01b03161461195f5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016105ec565b604051632fd0a1cd60e21b8152339063bf4287349061198290859060040161460d565b602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c39190614c47565b6119fd5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016105ec565b604051631fb6491d60e11b81523390633f6c923a90611a2090859060040161460d565b600060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c09190810190614ce9565b604080516001600160a01b03808516602083015283169181019190915260009060600161151b565b6000611a976143cc565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611834565b600080826002811115611ae957611ae9614df0565b03611afa5750600182811614611193565b6001826002811115611b0e57611b0e614df0565b03611b215750600182811c811614611193565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611b6284612934565b6040518363ffffffff1660e01b8152600401611b7f9291906149eb565b600060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050505050505050565b60606000611bc68884612b1f565b91505085611c115760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f9190614c47565b15611cdb57611cd488604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612c929050565b9150611d26565b611d238860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506133af915050565b91505b8751611d329084613487565b509695505050505050565b6000611d677f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611dbd5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016105ec565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190614997565b611e27610bc5565b14611e805760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016105ec565b6001600160a01b0381163003611ed85760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016105ec565b611f00817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc611f29610bc5565b604080519182526001600160a01b03841660208301520160405180910390a150565b60006001600160ff1b03821115611fb55760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016105ec565b5090565b600080611fc68587614e06565b90506000611fd48587614e47565b9050611fe08486614e75565b611fea8284614e47565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166120795760405162461bcd60e51b81526020600482015260136024820152724346413a2073656e646572206973207a65726f60681b60448201526064016105ec565b60408701516001600160a01b03166120cb5760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b6120dd87602001518860400151611a65565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161213391611a8d565b915091508161217f5760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc926121cb926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190614941565b5050905089602001516001600160a01b031686606001516001600160a01b031614158015612254575089604001516001600160a01b031686606001516001600160a01b031614155b801561225e575088155b156123aa5760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156122ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d19190614c47565b158015612349575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190614c47565b155b156123aa57600081126123aa5760405162461bcd60e51b815260206004820152602360248201527f4346413a2073656e646572206163636f756e74206973206e6f7420637269746960448201526218d85b60ea1b60648201526084016105ec565b60008112156123c8576123c88a600001518286858a6060015161359e565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036124be5760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190614c47565b156124af576124a88a604001518b600001518685898b6002612c92565b9450612780565b89516124a8908584888a6133af565b89604001516001600160a01b031686606001516001600160a01b0316036125f25760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614c47565b1561256a576124a88a602001518b600001518685898b6002612c92565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614c47565b156124af576124a860008b600001518685898b6002612c92565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190614c47565b801561266c5750600081125b156126e65760208a0151604051635b92108f60e11b8152339163b724211e9161269c918991600b90600401614e8c565b6000604051808303816000875af11580156126bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e39190810190614eba565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614c47565b15612771576124a88a604001518b600001518685898b6002612c92565b89516109d3908584888a6133af565b5050505095945050505050565b606060008061279c8785612b1f565b915091506000806127b1896000015185611a8d565b9150915081156128035760405162461bcd60e51b815260206004820152601760248201527f4346413a20666c6f7720616c726561647920657869737400000000000000000060448201526064016105ec565b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561284d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128719190614c47565b156128ca576128c389604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612c929050565b9450612915565b612912896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92506133af915050565b94505b88516129219087613487565b50505050949350505050565b60f8161590565b606060008260200151600b0b121561294e5761294e614eef565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b8160008151811061299957612999614bf7565b602002602001018181525050919050565b60008082600b0b13612a0a5760405162461bcd60e51b815260206004820152602360248201527f4346413a206e6f7420666f72206e6f6e2d706f73697469766520666c6f77207260448201526261746560e81b60648201526084016105ec565b60016001605f1b03612a2084600b85900b614f05565b1115612a675760405162461bcd60e51b81526020600482015260166024820152754346413a20666c6f77207261746520746f6f2062696760501b60448201526064016105ec565b6000612a7383856137aa565b90506104e285826137ee565b6040805180820190915260008082526020820152811580159190612aba5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612ac96143cc565b821580159250612aba5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612ba15760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b612bb384602001518560400151611a65565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612c425760405162461bcd60e51b81526020600482015260116024820152704346413a206e6f2073656c6620666c6f7760781b60448201526064016105ec565b60008160800151600b0b136115f75760405162461bcd60e51b81526020600482015260166024820152754346413a20696e76616c696420666c6f77207261746560501b60448201526064016105ec565b82612c9b614452565b6001600160a01b03891615612e84576000612d30898b8a600001518b602001518c60400151604051602001612ce69291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612d4657612d46614df0565b03612d5b5764010000000060c0820152612d90565b6001846002811115612d6f57612d6f614df0565b03612d845764040000000060c0820152612d90565b64100000000060c08201525b612d9a8187613804565b82526040850151610140860151612db491908b8b8b6139bb565b506080830152508451612dc8906001614f24565b60ff168160800151612dda9190614f05565b60808201526060870151612ded90611f4b565b60a08201526000846002811115612e0657612e06614df0565b03612e1b5764020000000060c0820152612e50565b6001846002811115612e2f57612e2f614df0565b03612e445764080000000060c0820152612e50565b64200000000060c08201525b612e5f81836000015185613d9f565b60408401919091528851909350612e77908a90611a8d565b602084015250612ea29050565b612e9a84604001518561014001518a8a8a6139bb565b602084015250505b6000816040015161010001511315612ee157612ed6612ed1612ecc83604001516101000151614008565b61405a565b611f4b565b604082015161010001525b6000612ef08760600151611f4b565b82604001516101000151612f049190614a28565b9050612f2a81612f1b846020015160400151611f4b565b612f259190614e06565b614008565b82602001516040018181525050612f4c81612f1b846020015160600151611f4b565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b91612f779061408e565b6040518363ffffffff1660e01b8152600401612f949291906149eb565b600060405180830381600087803b158015612fae57600080fd5b505af1158015612fc2573d6000803e3d6000fd5b50505050612fde89896020015160008460008a604001516140ff565b50612ff6898960400151600080858a604001516140ff565b506101408501516001600160a01b031615806130285750886001600160a01b03168561014001516001600160a01b0316145b156130a657602082015160409081015190516303c9790560e11b81523391630792f20a9161305c9187918690600401614f49565b6000604051808303816000875af115801561307b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130a39190810190614eba565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156130f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131149190614c47565b156133a257604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa158015613174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131989190614941565b509091505060008112156133a05760028560028111156131ba576131ba614df0565b03613345576040808a01519051635b92108f60e11b8152339163b724211e916131ea918891600c90600401614e8c565b6000604051808303816000875af1158015613209573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132319190810190614eba565b9350600061325961324183614f6e565b613254600061324f87614f6e565b61426b565b61427a565b90508a6001600160a01b031663cf97256d8b602001518361327990614f6e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156132bf57600080fd5b505af11580156132d3573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561332757600080fd5b505af115801561333b573d6000803e3d6000fd5b50505050506133a0565b60405162461bcd60e51b815260206004820152602a60248201527f4346413a204150505f52554c455f4e4f5f435249544943414c5f524543454956604482015269115497d050d0d3d5539560b21b60648201526084016105ec565b505b5050979650505050505050565b606083810151156133c2576133c2614eef565b60006133cc6143cc565b6133e284604001518561014001518a8a8a6139bb565b6101408701519294509250506001600160a01b03808a169116036134785760408082015190516303c9790560e11b81523391630792f20a9161342a9189918790600401614f49565b6000604051808303816000875af1158015613449573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134719190810190614eba565b925061347c565b8492505b505095945050505050565b602081015160ff1660031415806134b55750816001600160a01b03168161014001516001600160a01b031614155b1561359a5760608101516040808301519051633acd4df360e21b81526001600160a01b039283166004820152602481019190915260009184169063eb3537cc90604401606060405180830381865afa158015613515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135399190614941565b5050905060008112156135985760405162461bcd60e51b815260206004820152602160248201527f4346413a206e6f7420656e6f75676820617661696c61626c652062616c616e636044820152606560f81b60648201526084016105ec565b505b5050565b60006135ae8685602001516117e8565b91505060006135c08460400151611f4b565b905060006135d18360400151611f4b565b905060606000806135e2848b614e06565b90506000806135f08d6115fe565b915091506136008c878484611fb9565b93505050600081126136eb576000846136198388614a67565b6136239190614e47565b9050600183613633576001613636565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f6020015161368588614008565b61369189600019614a67565b6040518863ffffffff1660e01b81526004016136b39796959493929190614f8a565b600060405180830381600087803b1580156136cd57600080fd5b505af11580156136e1573d6000803e3d6000fd5b505050505061379d565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f6020015161373b88614008565b6137478a600019614a67565b6040518863ffffffff1660e01b81526004016137699796959493929190614f8a565b600060405180830381600087803b15801561378357600080fd5b505af1158015613797573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600082600b0b6000036137bf57506000611193565b60016001605f1b038211156137d6576137d6614eef565b6137e08284614fd7565b600b0b90506108c08161405a565b60008183116137fd57816108c0565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387c9190615071565b9194509250905082801561388e575081155b156139b257600061389f868861428f565b90508660c0015182166000036139a45760006138be8860c0015161430d565b88516040808b015160608c0151825160008152602081019093526138ea939230929190604481016150ad565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e029261395992918691641000000000919091149088906004016150f2565b6000604051808303816000875af1158015613978573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139a09190810190614eba565b9550505b6139af8660006143a4565b50505b50505092915050565b6000806139c66143cc565b60008060006139d4896115fe565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3b919061497a565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613a8e9033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614a04565b602060405180830381865afa158015613aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613acf9190614997565b9250613adf8960800151836137aa565b95505050613af08660600151611f4b565b613afd8760400151611f4b565b613b0686611f4b565b613b109190614a28565b613b1a9190614e06565b9450613b2d85612f1b8860400151611f4b565b91508082108015613b45575060008760800151600b0b135b15613b8757613b578660600151611f4b565b613b648760400151611f4b565b613b6d83611f4b565b613b779190614a28565b613b819190614e06565b94508091505b6001600160a01b03891615801590613bb15750876001600160a01b0316896001600160a01b031614155b15613bbb57600093505b604051806080016040528060008960800151600b0b13613bdc576000613bde565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613c1d8661408e565b6040518363ffffffff1660e01b8152600401613c3a9291906149eb565b600060405180830381600087803b158015613c5457600080fd5b505af1158015613c68573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613c88915050565b613cae88886020015189608001518960200151613ca591906148b0565b8860008f6140ff565b600b0b8152604087015160208701516080890151613cdd928b929091613cd491906148b0565b6000808f6140ff565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613d4394939290919061513b565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613d8a91815260200190565b60405180910390a25050955095509592505050565b613da76143f7565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1f9190615071565b88965091945092509050828015613e34575081155b15613ffd57613e43848961428f565b93508760c001518116600003613feb576000613e628960c0015161430d565b89516040808c015160608d015182516000815260208101909352613e909392309291908e9060448101615173565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a8492613eff9291869164200000000091909114908b906004016150f2565b6000604051808303816000875af1158015613f1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f469190810190614eba565b604051631fb6491d60e11b81529095503390633f6c923a90613f6c90889060040161460d565b600060405180830381865afa158015613f89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fb19190810190614ce9565b9550613fe3600061324f613fc88c60800151611f4b565b613254613fd88b60e00151611f4b565b8b610100015161426b565b610100870152505b613ffa868661010001516143a4565b93505b505050935093915050565b600080821215611fb55760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016105ec565b60008063ffffffff831661406f576000614072565b60015b60ff16905060206140858285831c6151cc565b901b9392505050565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b8160008151811061299957612999614bf7565b60008061410c88886117e8565b91505060008160200151600b0b61412c836000015186612ed19190614e75565b6141369190614a67565b905080156141a15760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561418857600080fd5b505af115801561419c573d6000803e3d6000fd5b505050505b8682602001516141b191906151e4565b600b0b602083015283825260408201516141d0908790612f1b90611f4b565b604083015260608201516141e9908690612f1b90611f4b565b60608301526001600160a01b03891663090c415e8960006142098661408e565b6040518463ffffffff1660e01b815260040161422793929190615233565b600060405180830381600087803b15801561424157600080fd5b505af1158015614255573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b60008183136137fd57816108c0565b600081831361428957826108c0565b50919050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb0946142c6948a9460040161525a565b6000604051808303816000875af11580156142e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c09190810190614eba565b6000640100000000820361432957506330d9c91560e01b919050565b64040000000082036143435750630221347d60e61b919050565b641000000000820361435d5750635f9e7d7760e01b919050565b6402000000008203614377575063d86ed3e560e01b919050565b6408000000008203614391575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906142c6908690869060040161529f565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b60405180606001604052806060815260200161446c6143cc565b81526020016144796143f7565b905290565b6001600160a01b03811681146107ed57600080fd5b6000806000606084860312156144a857600080fd5b83356144b38161447e565b925060208401356144c38161447e565b915060408401356144d38161447e565b809150509250925092565b600080604083850312156144f157600080fd5b82356144fc8161447e565b946020939093013593505050565b60008083601f84011261451c57600080fd5b50813567ffffffffffffffff81111561453457600080fd5b6020830191508360208285010111156115f757600080fd5b6000806000806060858703121561456257600080fd5b843561456d8161447e565b9350602085013561457d8161447e565b9250604085013567ffffffffffffffff81111561459957600080fd5b6145a58782880161450a565b95989497509550505050565b60005b838110156145cc5781810151838201526020016145b4565b838111156145db576000848401525b50505050565b600081518084526145f98160208601602086016145b1565b601f01601f19169290920160200192915050565b6020815260006108c060208301846145e1565b6000806040838503121561463357600080fd5b823561463e8161447e565b9150602083013561464e8161447e565b809150509250929050565b8035600b81900b811461439f57600080fd5b60008060008060008060a0878903121561468457600080fd5b863561468f8161447e565b9550602087013561469f8161447e565b945060408701356146af8161447e565b93506146bd60608801614659565b9250608087013567ffffffffffffffff8111156146d957600080fd5b6146e589828a0161450a565b979a9699509497509295939492505050565b60006020828403121561470957600080fd5b81356108c08161447e565b60008060006060848603121561472957600080fd5b83356147348161447e565b925060208401356147448161447e565b929592945050506040919091013590565b60008060008060006080868803121561476d57600080fd5b85356147788161447e565b945060208601356147888161447e565b935060408601356147988161447e565b9250606086013567ffffffffffffffff8111156147b457600080fd5b6147c08882890161450a565b969995985093965092949392505050565b6000806000806000608086880312156147e957600080fd5b85356147f48161447e565b945060208601356148048161447e565b935061479860408701614659565b60ff811681146107ed57600080fd5b60008060008060008060a0878903121561483a57600080fd5b86356148458161447e565b955060208701356148558161447e565b945060408701356146af81614812565b6000806040838503121561487857600080fd5b82356148838161447e565b915061489160208401614659565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600081600b0b83600b0b600081128160016001605f1b0319018312811516156148db576148db61489a565b8160016001605f1b030183138116156148f6576148f661489a565b5090039392505050565b60208082526021908201527f4346413a20455f4558434545445f464c4f575f524154455f414c4c4f57414e436040820152604560f81b606082015260800190565b60008060006060848603121561495657600080fd5b8351925060208401519150604084015190509250925092565b805161439f8161447e565b60006020828403121561498c57600080fd5b81516108c08161447e565b6000602082840312156149a957600080fd5b5051919050565b600081518084526020808501945080840160005b838110156149e0578151875295820195908201906001016149c4565b509495945050505050565b8281526040602082015260006104c960408301846149b0565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b850184121615614a4657614a4661489a565b6001600160ff1b0384018313811615614a6157614a6161489a565b50500390565b60006001600160ff1b0381841382841380821686840486111615614a8d57614a8d61489a565b600160ff1b6000871282811687830589121615614aac57614aac61489a565b60008712925087820587128484161615614ac857614ac861489a565b87850587128184161615614ade57614ade61489a565b505050929093029392505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614b2657614b26614aec565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b5557614b55614aec565b604052919050565b60006020808385031215614b7057600080fd5b825167ffffffffffffffff80821115614b8857600080fd5b818501915085601f830112614b9c57600080fd5b815181811115614bae57614bae614aec565b8060051b9150614bbf848301614b2c565b8181529183018401918481019088841115614bd957600080fd5b938501935b83851015610ce857845182529385019390850190614bde565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614c3257614c32614c0d565b500490565b8051801515811461439f57600080fd5b600060208284031215614c5957600080fd5b6108c082614c37565b805161439f81614812565b80516001600160e01b03198116811461439f57600080fd5b600082601f830112614c9657600080fd5b815167ffffffffffffffff811115614cb057614cb0614aec565b614cc3601f8201601f1916602001614b2c565b818152846020838601011115614cd857600080fd5b6104c98260208301602087016145b1565b600060208284031215614cfb57600080fd5b815167ffffffffffffffff80821115614d1357600080fd5b908301906101608286031215614d2857600080fd5b614d30614b02565b614d3983614c62565b8152614d4760208401614c62565b602082015260408301516040820152614d626060840161496f565b6060820152614d7360808401614c6d565b608082015260a083015182811115614d8a57600080fd5b614d9687828601614c85565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150614dcd82840161496f565b828201526101409150614de182840161496f565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600080821280156001600160ff1b0384900385131615614e2857614e2861489a565b600160ff1b8390038412811615614e4157614e4161489a565b50500190565b600082614e5657614e56614c0d565b600160ff1b821460001984141615614e7057614e7061489a565b500590565b600082821015614e8757614e8761489a565b500390565b606081526000614e9f60608301866145e1565b6001600160a01b039490941660208301525060400152919050565b600060208284031215614ecc57600080fd5b815167ffffffffffffffff811115614ee357600080fd5b6104c984828501614c85565b634e487b7160e01b600052600160045260246000fd5b6000816000190483118215151615614f1f57614f1f61489a565b500290565b600060ff821660ff84168060ff03821115614f4157614f4161489a565b019392505050565b606081526000614f5c60608301866145e1565b60208301949094525060400152919050565b6000600160ff1b8201614f8357614f8361489a565b5060000390565b87815260e060208201526000614fa360e08301896145e1565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600081600b0b83600b0b60016001605f1b036000821360008413838304851182821616156150075761500761489a565b6b7fffffffffffffffffffffff19600085128281168783058712161561502f5761502f61489a565b6000871292508582058712848416161561504b5761504b61489a565b858505871281841616156150615761506161489a565b5050509290910295945050505050565b60008060006060848603121561508657600080fd5b61508f84614c37565b925061509d60208501614c37565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906150e0908301856145e1565b8281036080840152610ce881856145e1565b6001600160a01b0385168152608060208201819052600090615116908301866145e1565b8415156040840152828103606084015261513081856145e1565b979650505050505050565b84600b0b815283600b0b602082015282600b0b604082015260806060820152600061516960808301846145e1565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906151a6908301866145e1565b82810360808401526151b881866145e1565b905082810360a084015261136c81856145e1565b600082198211156151df576151df61489a565b500190565b600081600b0b83600b0b600082128260016001605f1b030382138115161561520e5761520e61489a565b8260016001605f1b031903821281161561522a5761522a61489a565b50019392505050565b60018060a01b03841681528260208201526060604082015260006104e260608301846149b0565b60a08152600061526d60a08301886145e1565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b6040815260006152b260408301856145e1565b9050826020830152939250505056fea26469706673582212207948a69b198b07616fc08e079b66297a42497f1cb2066e1921d3c65c084c001164736f6c634300080d003360a06040523480156200001157600080fd5b506040516200543c3803806200543c833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516153a86200009460003960006110e201526153a86000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637730599e116100ad578063acf4a6c211610071578063acf4a6c21461030d578063b6dacdb814610320578063b96731c214610342578063cd7245c514610355578063d787840a146103ad57600080fd5b80637730599e146102635780637fbc763914610289578063899baaec1461029c5780639b2e48bc146102cc578063acafa1b8146102fa57600080fd5b806346951954116100f457806346951954146101d957806350d75d25146101ee57806352d1902d146101f65780635b5340511461020c5780636041ae961461025057600080fd5b8063232d2b581461012657806323fc23f31461014f5780632e5e74c6146101935780633fd4176a146101a6575b600080fd5b6101396101343660046143f8565b6103c0565b60405161014691906144df565b60405180910390f35b61016261015d3660046144f2565b610ae2565b6040805194151585526001600160801b03938416602086015291831691840191909152166060820152608001610146565b6101396101a136600461453d565b610b4d565b6101c173__SlotsBitmapLibrary____________________81565b6040516001600160a01b039091168152602001610146565b6101ec6101e7366004614591565b6110d7565b005b6101c161115b565b6101fe61118a565b604051908152602001610146565b61021f61021a3660046145ae565b6111ee565b6040516101469493929190931515845291151560208401526001600160801b03166040830152606082015260800190565b61013961025e36600461460a565b6112c4565b7f8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a6746101fe565b610139610297366004614685565b611718565b6102af6102aa3660046146c6565b611828565b604080519283526001600160801b03909116602083015201610146565b6102df6102da366004614717565b6118cc565b60408051938452602084019290925290820152606001610146565b61013961030836600461453d565b611ad7565b61013961031b36600461460a565b611f01565b61033361032e366004614758565b6124e1565b604051610146939291906147d5565b610139610350366004614872565b612736565b6103686103633660046148c7565b612836565b604080516001600160a01b03909616865263ffffffff9094166020860152911515928401929092526001600160801b039091166060830152608082015260a001610146565b6101396103bb3660046148f3565b612958565b60606001600160a01b0385166103f15760405162461bcd60e51b81526004016103e890614957565b60405180910390fd5b6103f9614250565b6104016142ae565b60606000806104468c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b90508060a00151925080606001519150506104658b828b8d6000612d03565b60808901521515602080890191909152606088019190915260408088018390529287528251908101909252600082526104a1918d918c91612e15565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050602086015191965050156105055764040000000060c08401526104fb8386612e43565b60a0850152610520565b64010000000060c084015261051a8386612e43565b60a08501525b8360200151801561053d575060808401515163ffffffff90811614155b156106185761058c8460800151608001516001600160801b0316896001600160801b03168660600151602001516001600160801b031661057d919061499a565b61058791906149b2565b612ffa565b6060850180516001600160801b03909216602090920191909152845190516001600160a01b038d169163a1b2bf8b916105c490613067565b6040518363ffffffff1660e01b81526004016105e19291906149f9565b600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b505050506107ff565b8360200151156106955761065d8460800151608001516001600160801b0316896001600160801b03168660600151604001516001600160801b031661057d919061499a565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916105c490613067565b6040518060a0016040528063ffffffff80168152602001826001600160a01b031681526020018b63ffffffff1681526020018560600151600001516001600160801b03168152602001896001600160801b031681525084608001819052508a6001600160a01b03166312a6a3f885604001516107148760800151613105565b6040518363ffffffff1660e01b81526004016107319291906149f9565b600060405180830381600087803b15801561074b57600080fd5b505af115801561075f573d6000803e3d6000fd5b50505050878460600151604001516107779190614a12565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916107af90613067565b6040518363ffffffff1660e01b81526004016107cc9291906149f9565b600060405180830381600087803b1580156107e657600080fd5b505af11580156107fa573d6000803e3d6000fd5b505050505b60008460800151608001516001600160801b031685608001516060015186606001516000015161082f9190614a3d565b6001600160801b03166108429190614a65565b905063ffffffff801685608001516000015163ffffffff16036108db576108728c8361086d84614aea565b6131ac565b6001600160a01b038c1663cf97256d8361088b84614aea565b6040518363ffffffff1660e01b81526004016108a8929190614b06565b600060405180830381600087803b1580156108c257600080fd5b505af11580156108d6573d6000803e3d6000fd5b505050505b60405163cf97256d60e01b81526001600160a01b038d169063cf97256d90610909908d908590600401614b06565b600060405180830381600087803b15801561092357600080fd5b505af1158015610937573d6000803e3d6000fd5b505050508460200151156109dd5760608086015151608080880180516001600160801b039384169401939093528251918c16910152604086015190516001600160a01b038e169163a1b2bf8b9161098d90613105565b6040518363ffffffff1660e01b81526004016109aa9291906149f9565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b505050505b846020015115610a0c5764080000000060c085015260a0850151610a03908590886132fa565b9650610a2c9050565b64020000000060c085015260a0850151610a28908590886132fa565b9650505b8a63ffffffff16826001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398d8d88604051610a7a93929190614b1f565b60405180910390a4896001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977848e8d88604051610acb9493929190614b5b565b60405180910390a350505050509695505050505050565b600080600080610b0b604080516060810182526000808252602082018190529181019190915290565b6000610b17888861356d565b9050610b2389826135d4565b90965091508515610b4257815160208301516040840151919650945092505b505093509350935093565b6060610b57614250565b610b5f6142ae565b600060606000610ba58c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b606081015160a0909101519093509150506001600160a01b038816610bdc5760405162461bcd60e51b81526004016103e890614957565b896001600160a01b0316826001600160a01b031614610c325760405162461bcd60e51b81526020600482015260126024820152711251104e881157d393d517d0531313d5d15160721b60448201526064016103e8565b610c408b8b8a8c6001612d03565b6080890152506060870152604080870182905291865281516020810190925260008252610c70918d918b91612e15565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c087015250909550610cc190508386612e43565b60a08501526080808501519081015160609182015191860151516000926001600160801b0390921691610cf391614a3d565b6001600160801b0316610d069190614a65565b60808601515190915063ffffffff90811614610d5357846080015160800151856060015160200151610d389190614a3d565b60608601516001600160801b03909116602090910152610d86565b846080015160800151856060015160400151610d6f9190614a3d565b60608601516001600160801b039091166040909101525b8b6001600160a01b031663a1b2bf8b8660000151610da78860600151613067565b6040518363ffffffff1660e01b8152600401610dc49291906149f9565b600060405180830381600087803b158015610dde57600080fd5b505af1158015610df2573d6000803e3d6000fd5b5050505060808501515163ffffffff90811614610e1c57610e1c8c8a8760800151600001516136e8565b60808501515163ffffffff1663fffffffe1901610eaa57610e418c8c61086d84614aea565b6001600160a01b038c1663cf97256d8c610e5a84614aea565b6040518363ffffffff1660e01b8152600401610e77929190614b06565b600060405180830381600087803b158015610e9157600080fd5b505af1158015610ea5573d6000803e3d6000fd5b505050505b6040858101519051632704839760e01b81526004810191909152600260248201526001600160a01b038d1690632704839790604401600060405180830381600087803b158015610ef957600080fd5b505af1158015610f0d573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038f16925063cf97256d9150610f3f908c908590600401614b06565b600060405180830381600087803b158015610f5957600080fd5b505af1158015610f6d573d6000803e3d6000fd5b505064200000000060c0870152505060a0850151610f8d908590886132fa565b9050809650508963ffffffff168b6001600160a01b03168d6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d1428c86604051610fdf929190614ba4565b60405180910390a4886001600160a01b03168c6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558d8d8660405161102e93929190614bc8565b60405180910390a38963ffffffff168b6001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398c60008760405161108593929190614b1f565b60405180910390a4886001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c1825249778d8d600087604051610acb9493929190614b5b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114f5760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016103e8565b61115881613773565b50565b60006111857f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614bf8565b60008060008060008061121a604080516060810182526000808252602082018190529181019190915290565b6112226142e9565b6112308c8c8b8d6000612d03565b909b509296509094509250905087611259576000806000809750975097509750505050506112b9565b8051608082015163ffffffff9182169091141597509550866112af5780608001516001600160801b0316816060015183600001516112979190614a3d565b6001600160801b03166112aa9190614c11565b6112b2565b60005b9450505050505b945094509450949050565b60606112ce614250565b6112d66142ae565b60006060600061131c8b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b9050806060015192508060a0015191505061133b8a8a848b6001612d03565b6080890181905260608901929092525060408701919091529085525163ffffffff1663fffffffe19016113b05760405162461bcd60e51b815260206004820152601860248201527f4944413a20455f535542535f4e4f545f415050524f564544000000000000000060448201526064016103e8565b6113cf8a8a866040015160405180602001604052806000815250612e15565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c08701525090955061142090508386612e43565b60a08501526080808501519081015160609182015191860151516000926001600160801b039092169161145291614a3d565b6001600160801b03166114659190614a65565b90508460800151608001518560600151602001516114839190614a3d565b6060860180516001600160801b0390921660209092019190915260808087015101519051604001516114b59190614a12565b6060860180516001600160801b03909216604090920191909152855190516001600160a01b038d169163a1b2bf8b916114ed90613067565b6040518363ffffffff1660e01b815260040161150a9291906149f9565b600060405180830381600087803b15801561152457600080fd5b505af1158015611538573d6000803e3d6000fd5b5050505061154f8b848760800151600001516136e8565b606080860151516080870180516001600160801b039092169190920152805163ffffffff9052604086015190516001600160a01b038d169163a1b2bf8b9161159690613105565b6040518363ffffffff1660e01b81526004016115b39291906149f9565b600060405180830381600087803b1580156115cd57600080fd5b505af11580156115e1573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506116139086908590600401614b06565b600060405180830381600087803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505064200000000060c0870152505060a0850151611661908590886132fa565b9050809650508863ffffffff168a6001600160a01b03168c6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d14286866040516116b3929190614ba4565b60405180910390a4826001600160a01b03168b6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558c8c8660405161170293929190614bc8565b60405180910390a3505050505095945050505050565b6060600061175c8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b60608101519091506000806117728a848b613981565b9150915080600001516001600160801b0316886001600160801b031610156117d05760405162461bcd60e51b81526020600482015260116024820152704944413a20455f494e4445585f47524f5760781b60448201526064016103e8565b6117e38a848b85858d8a60a001516139df565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929d9c50505050505050505050505050565b6000806000611837868661356d565b905060008061184689846135d4565b91509150816118675760405162461bcd60e51b81526004016103e890614c30565b60008160400151826020015161187d9190614a12565b6001600160801b031690506000611897610587838a614c59565b83519091506118a7908290614a12565b95506118bc826001600160801b038316614c11565b9650505050505094509492505050565b60008060006060806118de8888613c32565b909250905060005b81518163ffffffff161015611abb5760006118ff6142e9565b600080868563ffffffff168151811061191a5761191a614c7b565b6020026020010151905061194d8d878763ffffffff168151811061194057611940614c7b565b6020026020010151613d25565b90945092508361195f5761195f614c91565b8063ffffffff16836000015163ffffffff161461197e5761197e614c91565b6001600160a01b038d16634b61cc33308e6119a363ffffffff8616600160801b61499a565b60016040518563ffffffff1660e01b81526004016119c49493929190614ca7565b600060405180830381865afa1580156119e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a099190810190614dcd565b600081518110611a1b57611a1b614c7b565b6020026020010151915050611a49604080516060810182526000808252602082018190529181019190915290565b611a538d836135d4565b909450905083611a6557611a65614c91565b82608001516001600160801b031683606001518260000151611a879190614a3d565b6001600160801b0316611a9a9190614a65565b611aa4908b614e01565b99505050505080611ab490614e42565b90506118e6565b50611ac68888613e41565b935060009250505093509350939050565b6060611b198784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b506001600160a01b038416611b405760405162461bcd60e51b81526004016103e890614957565b611b48614250565b611b506142ae565b611b5e8989888a6001612d03565b6080870181905260608701929092525060408501919091529083525163ffffffff90811614611bc65760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b60008260800151608001516001600160801b0316836080015160600151846060015160000151611bf69190614a3d565b6001600160801b0316611c099190614c11565b9050611c2a8a8a856040015160405180602001604052806000815250612e15565b915085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505082159150611eba90505764040000000060c0830152611c828285612e43565b60a0840152611c958a8a61086d84614aea565b6001600160a01b038a1663cf97256d8a611cae84614aea565b6040518363ffffffff1660e01b8152600401611ccb929190614b06565b600060405180830381600087803b158015611ce557600080fd5b505af1158015611cf9573d6000803e3d6000fd5b50505050606083810151516080850180516001600160801b039092169190920152604084015190516001600160a01b038c169163a1b2bf8b91611d3b90613105565b6040518363ffffffff1660e01b8152600401611d589291906149f9565b600060405180830381600087803b158015611d7257600080fd5b505af1158015611d86573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038d16925063cf97256d9150611db8908a908590600401614b06565b600060405180830381600087803b158015611dd257600080fd5b505af1158015611de6573d6000803e3d6000fd5b505050508763ffffffff16896001600160a01b03168b6001600160a01b03167f467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb18a85604051611e36929190614b06565b60405180910390a4604080516001600160a01b038b8116825263ffffffff8b166020830152918101839052818916918c16907f48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea9060600160405180910390a364080000000060c083015260a0830151611eb1908390866132fa565b9450611ef49050565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b6060611f0b614250565b611f136142ae565b600060606000611f598b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b9050806060015192508060a00151915050611f788a8a848b6000612d03565b6080890152158015602089015260608801919091526040870191909152908552611fee5760808401515163ffffffff90811614611fee5760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040808a0151815160208101909252918152949950612047948f94508e9350909150612e15565b925083602001516121705764010000000060c08401526120678386612e43565b60a08086019190915260408051918201815260008083526001600160a01b038c16602084015263ffffffff8b1691830191909152606080870151516001600160801b03169083015260808083019190915285015283516120ca908b908490613eea565b60808501805163ffffffff909216909152604085015190516001600160a01b038c16916312a6a3f8916120fc90613105565b6040518363ffffffff1660e01b81526004016121199291906149f9565b600060405180830381600087803b15801561213357600080fd5b505af1158015612147573d6000803e3d6000fd5b505064020000000060c0860152505060a0840151612167908490876132fa565b95506124319050565b64040000000060c08401526121858386612e43565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916121b791614a3d565b6001600160801b03166121ca9190614a65565b905084608001516080015185606001516020018181516121ea9190614a12565b6001600160801b0316905250608080860151015160608601516040018051612213908390614a3d565b6001600160801b0316905250845160608601516001600160a01b038d169163a1b2bf8b9161224090613067565b6040518363ffffffff1660e01b815260040161225d9291906149f9565b600060405180830381600087803b15801561227757600080fd5b505af115801561228b573d6000803e3d6000fd5b5050505061229e8b8b8361086d90614aea565b6001600160a01b038b1663cf97256d8b6122b784614aea565b6040518363ffffffff1660e01b81526004016122d4929190614b06565b600060405180830381600087803b1580156122ee57600080fd5b505af1158015612302573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506123349086908590600401614b06565b600060405180830381600087803b15801561234e57600080fd5b505af1158015612362573d6000803e3d6000fd5b5050506060808701515160808801516001600160801b0390911691015250845161238f908c908590613eea565b60808601805163ffffffff909216909152604086015190516001600160a01b038d169163a1b2bf8b916123c190613105565b6040518363ffffffff1660e01b81526004016123de9291906149f9565b600060405180830381600087803b1580156123f857600080fd5b505af115801561240c573d6000803e3d6000fd5b505064080000000060c0870152505060a085015161242c908590886132fa565b965050505b8763ffffffff16896001600160a01b03168b6001600160a01b03167f492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c2858560405161247d929190614ba4565b60405180910390a4816001600160a01b03168a6001600160a01b03167fc0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b8b8b856040516124cc93929190614bc8565b60405180910390a35050505095945050505050565b60608060608060606124f38787613c32565b909250905060006125026142e9565b82516001600160401b0381111561251b5761251b614cd0565b604051908082528060200260200182016040528015612544578160200160208202803683370190505b50965082516001600160401b0381111561256057612560614cd0565b604051908082528060200260200182016040528015612589578160200160208202803683370190505b50955082516001600160401b038111156125a5576125a5614cd0565b6040519080825280602002602001820160405280156125ce578160200160208202803683370190505b50945060005b83518163ffffffff16101561272a576000858263ffffffff16815181106125fd576125fd614c7b565b602002602001015190506000858363ffffffff168151811061262157612621614c7b565b602002602001015190506126358c82613d25565b90955093508461264757612647614c91565b8163ffffffff16846000015163ffffffff161461266657612666614c91565b83602001518a8463ffffffff168151811061268357612683614c7b565b60200260200101906001600160a01b031690816001600160a01b0316815250508360400151898463ffffffff16815181106126c0576126c0614c7b565b602002602001019063ffffffff16908163ffffffff16815250508360800151888463ffffffff16815181106126f7576126f7614c7b565b60200260200101906001600160801b031690816001600160801b03168152505050508061272390614e42565b90506125d4565b50505050509250925092565b6060600061277a8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b60608101519091506000806127908a848b613981565b915091506000816040015182602001516127aa9190614a12565b6001600160801b0316905080156127f05760006127ca610587838c614c59565b90506127ee8c868d87878689600001516127e49190614a12565b8c60a001516139df565b505b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b6000806000806000806000612864604080516060810182526000808252602082018190529181019190915290565b61286c6142e9565b6128768b8b613d25565b9094509050836128b95760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b80602001519850806040015197506128d1898961356d565b92506128dd8b846135d4565b9094509150836128ef576128ef614c91565b8051608082015163ffffffff9182169091141597509550866129455780608001516001600160801b03168160600151836000015161292d9190614a3d565b6001600160801b03166129409190614c11565b612948565b60005b9450505050509295509295909350565b6060600061299c8685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b606081015190915060006129b0828861356d565b90506129bc8882613f91565b156129ff5760405162461bcd60e51b81526020600482015260136024820152724944413a20455f494e4445585f45584953545360681b60448201526064016103e8565b876001600160a01b03166312a6a3f882612a50604051806060016040528060006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815250613067565b6040518363ffffffff1660e01b8152600401612a6d9291906149f9565b600060405180830381600087803b158015612a8757600080fd5b505af1158015612a9b573d6000803e3d6000fd5b505050508663ffffffff16826001600160a01b0316896001600160a01b03167f01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da9218660a00151604051612aed91906144df565b60405180910390a485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929b9a5050505050505050505050565b612b40614317565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bac9190614e70565b6001600160a01b031614612bf65760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016103e8565b604051632fd0a1cd60e21b8152339063bf42873490612c199085906004016144df565b602060405180830381865afa158015612c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5a9190614e9d565b612c945760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016103e8565b604051631fb6491d60e11b81523390633f6c923a90612cb79085906004016144df565b600060405180830381865afa158015612cd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cfc9190810190614f44565b9392505050565b6040805160608101825260008082526020820181905291810182905281906000612d2b6142e9565b6000612d378a8961356d565b9550612d43898761403d565b9450612d4f8b876135d4565b9450905080612d705760405162461bcd60e51b81526004016103e890614c30565b612d7a8b86613d25565b90935091508615612e075782612dc35760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b896001600160a01b031682602001516001600160a01b031614612de857612de8614c91565b8763ffffffff16826040015163ffffffff1614612e0757612e07614c91565b509550955095509550959050565b612e1d6142ae565b6001600160a01b0394851681529290931660208301526040820152606081019190915290565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb919061504a565b91945092509050828015612ecd575081155b15612ff1576000612ede868861407e565b90508660c001518216600003612fe3576000612efd8860c001516140fc565b88516040808b015160608c015182516000815260208101909352612f2993923092919060448101615086565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292612f9892918691641000000000919091149088906004016150cb565b6000604051808303816000875af1158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf9190810190615114565b9550505b612fee866000614193565b50505b50505092915050565b60006001600160801b038211156130635760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016103e8565b5090565b604080516002808252606080830184529260208301908036833701905050905081600001516001600160801b0316600160801b1760001b816000815181106130b1576130b1614c7b565b602002602001018181525050608082604001516001600160801b0316901b82602001516001600160801b03161760001b816001815181106130f4576130f4614c7b565b602002602001018181525050919050565b6040805160028082526060808301845292602083019080368337019050509050816000015163ffffffff166020836040015163ffffffff16901b606084602001516001600160a01b0316901b171760001b8160008151811061316957613169614c7b565b602002602001018181525050608082608001516001600160801b0316901b82606001516001600160801b03161760001b816001815181106130f4576130f4614c7b565b806000036131b957505050565b604051634b61cc3360e01b81526000906001600160a01b03851690634b61cc33906131f4903090879064010000000090600190600401614ca7565b600060405180830381865afa158015613211573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132399190810190614dcd565b9050816132628260008151811061325257613252614c7b565b602002602001015160001c6141bb565b61326c9190614e01565b60001b8160008151811061328257613282614c7b565b602090810291909101015260405163048620af60e11b81526001600160a01b0385169063090c415e906132c2908690640100000000908690600401615148565b600060405180830381600087803b1580156132dc57600080fd5b505af11580156132f0573d6000803e3d6000fd5b5050505050505050565b613302614317565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337a919061504a565b8896509194509250905082801561338f575081155b156135625761339e848961407e565b93508760c0015181166000036135505760006133bd8960c001516140fc565b89516040808c015160608d0151825160008152602081019093526133eb9392309291908e906044810161516f565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a849261345a9291869164200000000091909114908b906004016150cb565b6000604051808303816000875af1158015613479573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134a19190810190615114565b604051631fb6491d60e11b81529095503390633f6c923a906134c79088906004016144df565b600060405180830381865afa1580156134e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261350c9190810190614f44565b955061354860006135436135238c608001516141bb565b61353e6135338b60e001516141bb565b8b6101000151614225565b61423b565b614225565b610100870152505b61355f86866101000151614193565b93505b505050935093915050565b60405168383ab13634b9b432b960b91b60208201526bffffffffffffffffffffffff19606084901b1660298201526001600160e01b031960e083901b16603d8201526000906041015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613645573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261366d9190810190614dcd565b905060008160008151811061368457613684614c7b565b602002602001015160001c90506000826001815181106136a6576136a6614c7b565b602002602001015160001c905060008211945084156136de576001600160801b03808316855281166020850152608081901c60408501525b5050509250929050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526000604482015263ffffffff8216606482015273__SlotsBitmapLibrary____________________9063a9472bf89060840160006040518083038186803b15801561375657600080fd5b505af415801561376a573d6000803e3d6000fd5b50505050505050565b600061379d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036137f35760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016103e8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138559190614bf8565b61385d61118a565b146138b65760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016103e8565b6001600160a01b038116300361390e5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016103e8565b613936817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc61395f61118a565b604080519182526001600160a01b03841660208301520160405180910390a150565b6040805160608101825260008082526020820181905291810182905260006139a9858561356d565b92506139b586846135d4565b92509050806139d65760405162461bcd60e51b81526004016103e890614c30565b50935093915050565b866001600160a01b031663cf97256d8785602001516001600160801b0316866000015186613a0d9190614a3d565b6001600160801b0316613a1f90614aea565b613a299190614a65565b6040518363ffffffff1660e01b8152600401613a46929190614b06565b600060405180830381600087803b158015613a6057600080fd5b505af1158015613a74573d6000803e3d6000fd5b50505050613aae878785604001516001600160801b0316866000015186613a9b9190614a3d565b6001600160801b031661086d9190614a65565b82516001600160801b03831684526001600160a01b03881663a1b2bf8b86613ad587613067565b6040518363ffffffff1660e01b8152600401613af29291906149f9565b600060405180830381600087803b158015613b0c57600080fd5b505af1158015613b20573d6000803e3d6000fd5b505050508563ffffffff16876001600160a01b0316896001600160a01b03167f81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3848789604001518a6020015189604051613b7e9594939291906151d5565b60405180910390a46040516379359f6f60e01b81526001600160a01b0388811660048301528916906379359f6f90602401602060405180830381865afa158015613bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf09190614e9d565b156132f05760405162461bcd60e51b81526020600482015260126024820152714944413a20455f4c4f575f42414c414e434560701b60448201526064016103e8565b60608073__SlotsBitmapLibrary____________________6306967a8c85856000600160801b6040518563ffffffff1660e01b8152600401613c779493929190614ca7565b600060405180830381865af4158015613c94573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cbc9190810190615211565b909250905060005b8151811015613d1d57613cf084838381518110613ce357613ce3614c7b565b602002602001015161403d565b828281518110613d0257613d02614c7b565b6020908102919091010152613d16816152d5565b9050613cc4565b509250929050565b6000613d2f6142e9565b604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613d84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dac9190810190614dcd565b9050600081600081518110613dc357613dc3614c7b565b602002602001015160001c9050600082600181518110613de557613de5614c7b565b602002602001015160001c905060008211945084156136de57606082811c60208087019190915283901c63ffffffff9081166040870152831685526001600160801b03821690850152608081811c908501525050509250929050565b600080836001600160a01b0316634b61cc33308564010000000060016040518563ffffffff1660e01b8152600401613e7c9493929190614ca7565b600060405180830381865afa158015613e99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ec19190810190614dcd565b905080600081518110613ed657613ed6614c7b565b602002602001015160001c91505092915050565b604051630a32470160e41b81526001600160a01b03808516600483015283166024820152600060448201819052600160801b6064830152608482018390529073__SlotsBitmapLibrary____________________9063a32470109060a401602060405180830381865af4158015613f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8991906152ee565b949350505050565b604051636c2d9f2f60e01b8152306004820152602481018290526002604482015260009081906001600160a01b03851690636c2d9f2f90606401600060405180830381865afa158015613fe8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140109190810190614dcd565b905060008160008151811061402757614027614c7b565b6020908102919091010151151595945050505050565b604080516b39bab139b1b934b83a34b7b760a11b6020820152606084811b6bffffffffffffffffffffffff1916602c830152918101839052600091016135b6565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb0946140b5948a9460040161530b565b6000604051808303816000875af11580156140d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cfc9190810190615114565b6000640100000000820361411857506330d9c91560e01b919050565b64040000000082036141325750630221347d60e61b919050565b641000000000820361414c5750635f9e7d7760e01b919050565b6402000000008203614166575063d86ed3e560e01b919050565b6408000000008203614180575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906140b59086908690600401615350565b60006001600160ff1b038211156130635760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016103e8565b60008183136142345781612cfc565b5090919050565b600081831361424a5782612cfc565b50919050565b6040805160c0810182526000808252602082018190529181019190915260608101614294604080516060810182526000808252602082018190529181019190915290565b81526020016142a16142e9565b8152602001606081525090565b6040805160e0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c081019190915290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b038116811461115857600080fd5b63ffffffff8116811461115857600080fd5b80356001600160801b038116811461418e57600080fd5b60008083601f8401126143c257600080fd5b5081356001600160401b038111156143d957600080fd5b6020830191508360208285010111156143f157600080fd5b9250929050565b60008060008060008060a0878903121561441157600080fd5b863561441c81614372565b9550602087013561442c81614387565b9450604087013561443c81614372565b935061444a60608801614399565b925060808701356001600160401b0381111561446557600080fd5b61447189828a016143b0565b979a9699509497509295939492505050565b60005b8381101561449e578181015183820152602001614486565b838111156144ad576000848401525b50505050565b600081518084526144cb816020860160208601614483565b601f01601f19169290920160200192915050565b602081526000612cfc60208301846144b3565b60008060006060848603121561450757600080fd5b833561451281614372565b9250602084013561452281614372565b9150604084013561453281614387565b809150509250925092565b60008060008060008060a0878903121561455657600080fd5b863561456181614372565b9550602087013561457181614372565b9450604087013561458181614387565b9350606087013561444a81614372565b6000602082840312156145a357600080fd5b8135612cfc81614372565b600080600080608085870312156145c457600080fd5b84356145cf81614372565b935060208501356145df81614372565b925060408501356145ef81614387565b915060608501356145ff81614372565b939692955090935050565b60008060008060006080868803121561462257600080fd5b853561462d81614372565b9450602086013561463d81614372565b9350604086013561464d81614387565b925060608601356001600160401b0381111561466857600080fd5b614674888289016143b0565b969995985093965092949392505050565b60008060008060006080868803121561469d57600080fd5b85356146a881614372565b945060208601356146b881614387565b935061464d60408701614399565b600080600080608085870312156146dc57600080fd5b84356146e781614372565b935060208501356146f781614372565b9250604085013561470781614387565b9396929550929360600135925050565b60008060006060848603121561472c57600080fd5b833561473781614372565b9250602084013561474781614372565b929592945050506040919091013590565b6000806040838503121561476b57600080fd5b823561477681614372565b9150602083013561478681614372565b809150509250929050565b600081518084526020808501945080840160005b838110156147ca5781516001600160801b0316875295820195908201906001016147a5565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156148175781516001600160a01b0316845292840192908401906001016147f2565b5050508381038285015285518082528683019183019060005b8181101561485257835163ffffffff1683529284019291840191600101614830565b505084810360408601526148668187614791565b98975050505050505050565b60008060008060006080868803121561488a57600080fd5b853561489581614372565b945060208601356148a581614387565b93506040860135925060608601356001600160401b0381111561466857600080fd5b600080604083850312156148da57600080fd5b82356148e581614372565b946020939093013593505050565b6000806000806060858703121561490957600080fd5b843561491481614372565b9350602085013561492481614387565b925060408501356001600160401b0381111561493f57600080fd5b61494b878288016143b0565b95989497509550505050565b6020808252601390820152724944413a20455f4e4f5f5a45524f5f5355425360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156149ad576149ad614984565b500190565b6000828210156149c4576149c4614984565b500390565b600081518084526020808501945080840160005b838110156147ca578151875295820195908201906001016149dd565b828152604060208201526000613f8960408301846149c9565b60006001600160801b03808316818516808303821115614a3457614a34614984565b01949350505050565b60006001600160801b0383811690831681811015614a5d57614a5d614984565b039392505050565b60006001600160ff1b0381841382841380821686840486111615614a8b57614a8b614984565b600160ff1b6000871282811687830589121615614aaa57614aaa614984565b60008712925087820587128484161615614ac657614ac6614984565b87850587128184161615614adc57614adc614984565b505050929093029392505050565b6000600160ff1b8201614aff57614aff614984565b5060000390565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03841681526001600160801b0383166020820152606060408201819052600090614b52908301846144b3565b95945050505050565b6001600160a01b038516815263ffffffff841660208201526001600160801b0383166040820152608060608201819052600090614b9a908301846144b3565b9695505050505050565b6001600160a01b0383168152604060208201819052600090613f89908301846144b3565b6001600160a01b038416815263ffffffff83166020820152606060408201819052600090614b52908301846144b3565b600060208284031215614c0a57600080fd5b5051919050565b6000816000190483118215151615614c2b57614c2b614984565b500290565b6020808252600f908201526e092888274408abe9c9ebe929c888ab608b1b604082015260600190565b600082614c7657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614d0957614d09614cd0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614d3757614d37614cd0565b604052919050565b60006001600160401b03821115614d5857614d58614cd0565b5060051b60200190565b600082601f830112614d7357600080fd5b81516020614d88614d8383614d3f565b614d0f565b82815260059290921b84018101918181019086841115614da757600080fd5b8286015b84811015614dc25780518352918301918301614dab565b509695505050505050565b600060208284031215614ddf57600080fd5b81516001600160401b03811115614df557600080fd5b613f8984828501614d62565b600080821280156001600160ff1b0384900385131615614e2357614e23614984565b600160ff1b8390038412811615614e3c57614e3c614984565b50500190565b600063ffffffff808316818103614e5b57614e5b614984565b6001019392505050565b805161418e81614372565b600060208284031215614e8257600080fd5b8151612cfc81614372565b8051801515811461418e57600080fd5b600060208284031215614eaf57600080fd5b612cfc82614e8d565b805160ff8116811461418e57600080fd5b80516001600160e01b03198116811461418e57600080fd5b600082601f830112614ef257600080fd5b81516001600160401b03811115614f0b57614f0b614cd0565b614f1e601f8201601f1916602001614d0f565b818152846020838601011115614f3357600080fd5b613f89826020830160208701614483565b600060208284031215614f5657600080fd5b81516001600160401b0380821115614f6d57600080fd5b908301906101608286031215614f8257600080fd5b614f8a614ce6565b614f9383614eb8565b8152614fa160208401614eb8565b602082015260408301516040820152614fbc60608401614e65565b6060820152614fcd60808401614ec9565b608082015260a083015182811115614fe457600080fd5b614ff087828601614ee1565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150615027828401614e65565b82820152610140915061503b828401614e65565b91810191909152949350505050565b60008060006060848603121561505f57600080fd5b61506884614e8d565b925061507660208501614e8d565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906150b9908301856144b3565b828103608084015261486681856144b3565b6001600160a01b03851681526080602082018190526000906150ef908301866144b3565b8415156040840152828103606084015261510981856144b3565b979650505050505050565b60006020828403121561512657600080fd5b81516001600160401b0381111561513c57600080fd5b613f8984828501614ee1565b60018060a01b0384168152826020820152606060408201526000614b5260608301846149c9565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906151a2908301866144b3565b82810360808401526151b481866144b3565b905082810360a08401526151c881856144b3565b9998505050505050505050565b60006001600160801b0380881683528087166020840152808616604084015280851660608401525060a0608083015261510960a08301846144b3565b6000806040838503121561522457600080fd5b82516001600160401b038082111561523b57600080fd5b818501915085601f83011261524f57600080fd5b8151602061525f614d8383614d3f565b82815260059290921b8401810191818101908984111561527e57600080fd5b948201945b838610156152a557855161529681614387565b82529482019490820190615283565b918801519196509093505050808211156152be57600080fd5b506152cb85828601614d62565b9150509250929050565b6000600182016152e7576152e7614984565b5060010190565b60006020828403121561530057600080fd5b8151612cfc81614387565b60a08152600061531e60a08301886144b3565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b60408152600061536360408301856144b3565b9050826020830152939250505056fea26469706673582212207ec96719b31a750b96557a86e8487a8e23f9dce3c210c0886ab36a6a7f5c522a64736f6c634300080d0033608060405234801561001057600080fd5b50614aba806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639ed9331814610030575b600080fd5b61004361003e3660046100ae565b61005f565b6040516001600160a01b03909116815260200160405180910390f35b60008160405161006e906100a1565b6001600160a01b039091168152602001604051809103906000f08015801561009a573d6000803e3d6000fd5b5092915050565b6149a6806100df83390190565b6000602082840312156100c057600080fd5b81356001600160a01b03811681146100d757600080fd5b939250505056fe60a06040523480156200001157600080fd5b50604051620049a6380380620049a6833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516148a9620000fd600039600081816103f701528181610a8101528181610aef01528181610d9301528181610eed01528181610fbc015281816111d301528181611321015281816114b50152818161179c0152818161185e015281816118e501528181612171015281816122080152818161335c01526135dc01526148a96000f3fe608060405234801561001057600080fd5b50600436106103275760003560e01c806362aa5287116101b8578063a9059cbb11610104578063d9d078d6116100a2578063ee719bc81161007c578063ee719bc81461076f578063fad8b32a14610780578063fc673c4f14610793578063fe9d9303146107a657600080fd5b8063d9d078d6146106f5578063dd62ed3e14610708578063eb3537cc1461074157600080fd5b8063c68d4283116100de578063c68d4283146106a9578063ca789464146106bc578063cf97256d146106cf578063d95b6371146106e257600080fd5b8063a9059cbb14610670578063b84cdd4a14610683578063bb0d196e1461069657600080fd5b8063959b8c3f116101715780639d8767411161014b5780639d87674114610624578063a1b2bf8b14610637578063a3a7e7f31461064a578063a457c2d71461065d57600080fd5b8063959b8c3f146105f657806395d89b41146106095780639bd9bbc61461061157600080fd5b806362aa52871461058457806362ad1b831461059757806366a12fb6146105aa5780636c2d9f2f146105bd57806370a08231146105d057806379359f6f146105e357600080fd5b80632ec8eec71161027757806345977d031161023057806350d75d251161020a57806350d75d251461053c57806352d1902d14610544578063556f0dc71461056a5780635b9d09cc1461057157600080fd5b806345977d03146104f657806346951954146105095780634b61cc331461051c57600080fd5b80632ec8eec714610468578063313ce5671461049b578063386fa221146104aa57806339509351146104bd57806341b706be146104d057806342fe0980146104e357600080fd5b806316d055d6116102e457806320bc4425116102be57806320bc4425146103f557806323b872dd1461042f578063245887fc14610442578063270483971461045557600080fd5b806316d055d6146103bd57806318160ddd146103d05780631863e809146103e257600080fd5b806306e485381461032c57806306fdde031461034a578063090c415e1461035f578063095ea7b31461037457806311bcc81e1461039757806312a6a3f8146103aa575b600080fd5b6103346107b9565b60405161034191906138bb565b60405180910390f35b6103526107ca565b6040516103419190613960565b61037261036d3660046139d3565b61085c565b005b610387610382366004613a2e565b610910565b6040519015158152602001610341565b6103726103a5366004613a5a565b610927565b6103726103b8366004613a73565b610955565b6103726103cb366004613abe565b610a7f565b6003545b604051908152602001610341565b6103726103f0366004613bd2565b610ada565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610341565b61038761043d366004613c64565b610d79565b610372610450366004613a2e565b610d91565b610372610463366004613ca5565b610e08565b61047b610476366004613cc7565b610ee5565b604080519485526020850193909352918301526060820152608001610341565b60405160128152602001610341565b6103346104b8366004613cc7565b610f88565b6103876104cb366004613a2e565b61102b565b6103726104de366004613abe565b611067565b6103726104f1366004613d25565b611092565b610372610504366004613a5a565b61119c565b610372610517366004613cc7565b6111c8565b61052f61052a366004613dbf565b611257565b6040516103419190613e05565b61041761129c565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb00196103d4565b60016103d4565b61037261057f366004613e3d565b6112c6565b610372610592366004613c64565b61131f565b6103726105a5366004613e8c565b611377565b6103726105b8366004613c64565b611424565b61052f6105cb366004613f2a565b611443565b6103d46105de366004613cc7565b611485565b6103876105f1366004613cc7565b6114ad565b610372610604366004613cc7565b611535565b610352611586565b61037261061f366004613e3d565b611595565b610372610632366004613f5f565b6115e9565b610372610645366004613a73565b611628565b610372610658366004613cc7565b6116d2565b61038761066b366004613a2e565b6116e6565b61038761067e366004613a2e565b611735565b610387610691366004613a2e565b611743565b6103876106a4366004613cc7565b611794565b6103726106b7366004613f5f565b61181c565b6103726106ca366004613a2e565b61185c565b6103726106dd366004613a2e565b6118d0565b6103876106f0366004613fb7565b6119b8565b610387610703366004613a2e565b6119c6565b6103d4610716366004613fb7565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b61075461074f366004613a2e565b6119e0565b60408051938452602084019290925290820152606001610341565b600e546001600160a01b0316610417565b61037261078e366004613cc7565b611b1c565b6103726107a1366004613ff0565b611b6d565b6103726107b4366004614037565b611c0c565b60606107c56012611c5c565b905090565b6060600f80546107d990614075565b80601f016020809104026020016040519081016040528092919081815260200182805461080590614075565b80156108525780601f1061082757610100808354040283529160200191610852565b820191906000526020600020905b81548152906001019060200180831161083557829003601f168201915b5050505050905090565b6000338585604051602001610873939291906140af565b6040516020818303038152906040528051906020012090506108c881848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc292505050565b6040518481526001600160a01b0386169033907f30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d5985906020015b60405180910390a35050505050565b600061091d338484611d03565b5060015b92915050565b6109523333836040518060200160405280600081525060405180602001604052806000815250611e2b565b50565b604051339060009061096d90839087906020016140f8565b60408051601f19818403018152919052805160209091012090506109918184612012565b156109f65760405162461bcd60e51b815260206004820152602a60248201527f5375706572666c756964546f6b656e3a2061677265656d656e7420616c726561604482015269191e4818dc99585d195960b21b60648201526084015b60405180910390fd5b610a3381858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc292505050565b816001600160a01b03167f770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d868686604051610a7093929190614135565b60405180910390a25050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610ac75760405162461bcd60e51b81526004016109ed90614179565b610ad38484848461204e565b5050505050565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906141c4565b610b7e5760405162461bcd60e51b81526004016109ed906141e1565b6000610b8861216c565b90506001600160a01b038116610b9b5750845b600085610ba85786610baa565b815b905060008313610c4757610bbd8361423e565b610bc6856122b1565b14610bd357610bd361425a565b610bdc846122b1565b6001600160a01b03821660009081526002602052604081208054909190610c04908490614270565b90915550506001600160a01b03851660009081526002602052604081208054859290610c31908490614270565b90915550610c42905085828661231f565b610d11565b8515610c5557610c5561425a565b82610c5f856122b1565b610c699190614270565b6001600160a01b03831660009081526002602052604081208054909190610c919084906142b1565b90915550610ca09050846122b1565b6001600160a01b03881660009081526002602052604081208054909190610cc8908490614270565b90915550506001600160a01b03851660009081526002602052604081208054859290610cf5908490614270565b90915550610d06905082888661231f565b610d1182868561231f565b846001600160a01b0316876001600160a01b0316336001600160a01b03167fb8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f8c8589898f604051610d669594939291906142f0565b60405180910390a4505050505050505050565b6000610d873385858561204e565b90505b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610dd95760405162461bcd60e51b81526004016109ed90614179565b610e043383836040518060200160405280600081525060405180602001604052806000815250611e2b565b5050565b6040513390600090610e2090839086906020016140f8565b604051602081830303815290604052805190602001209050610e428184612012565b610ea05760405162461bcd60e51b815260206004820152602960248201527f5375706572666c756964546f6b656e3a2061677265656d656e7420646f6573206044820152681b9bdd08195e1a5cdd60ba1b60648201526084016109ed565b610eaa8184612352565b60405184815233907f71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b9060200160405180910390a250505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190614323565b9050610f7985826119e0565b91979096509094509092509050565b6001600160a01b038181166000908152600160205260409081902054905163c56a069d60e01b8152901960048201526060917f0000000000000000000000000000000000000000000000000000000000000000169063c56a069d90602401600060405180830381865afa158015611003573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610921919081019061433c565b3360008181526011602090815260408083206001600160a01b0387168452909152812054909161091d9185906110629086906143ed565b611d03565b3330146110865760405162461bcd60e51b81526004016109ed90614405565b610ad38385848461204e565b600054610100900460ff166110ad5760005460ff16156110b1565b303b155b6111145760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109ed565b600054610100900460ff16158015611136576000805461ffff19166101011790555b600e805460ff8816600160a01b026001600160a81b03199091166001600160a01b038a161717905561116a600f868661382b565b506111776010848461382b565b5061118130612373565b8015611193576000805461ff00191690555b50505050505050565b6109523333338460405180602001604052806000815250604051806020016040528060008152506124a1565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461124e5760405162461bcd60e51b815260206004820152602560248201527f5375706572546f6b656e3a206f6e6c7920686f73742063616e2075706461746560448201526420636f646560d81b60648201526084016109ed565b610952816126a4565b60606000858585604051602001611270939291906140af565b60405160208183030381529060405280519060200120905061129281846128e4565b9695505050505050565b60006107c57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b611319333386866040518060200160405280600081525087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124a192505050565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146113675760405162461bcd60e51b81526004016109ed90614179565b611372838383611d03565b505050565b336113846012828a612973565b6113a05760405162461bcd60e51b81526004016109ed9061443c565b61141a8189898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525060019250612a1c915050565b5050505050505050565b3330146113675760405162461bcd60e51b81526004016109ed90614405565b60606000848460405160200161145a9291906140f8565b60405160208183030381529060405280519060200120905061147c81846128e4565b95945050505050565b60008061149183610ee5565b5050509050600081126114a45780610d8a565b60009392505050565b6000610921827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107039190614323565b3361154260128284612a93565b806001600160a01b0316826001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a35050565b6060601080546107d990614075565b6113193333868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152925060019150612a1c9050565b3330146116085760405162461bcd60e51b81526004016109ed90614405565b604080516000815260208101909152611372903390859085908590612b97565b604051339060009061164090839087906020016140f8565b60405160208183030381529060405280519060200120905061169581858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc292505050565b336001600160a01b03167f0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca868686604051610a7093929190614135565b610e043333836116e133611485565b61204e565b600061091d3384611062856040518060600160405280602a81526020016147fd602a91393360009081526011602090815260408083206001600160a01b038d1684529091529020549190612c8c565b6000610d8a3333858561204e565b60008060008061175386866119e0565b925092509250600061177b82841161176c5760006122b1565b611776838561448c565b6122b1565b6117859085614270565b60001315979650505050505050565b6000610921827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106919190614323565b33301461183b5760405162461bcd60e51b81526004016109ed90614405565b60408051600080825260208201909252611372913391869186918690612cb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146118a45760405162461bcd60e51b81526004016109ed90614179565b610e043383848460405180602001604052806000815250604051806020016040528060008152506124a1565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa158015611934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195891906141c4565b6119745760405162461bcd60e51b81526004016109ed906141e1565b6001600160a01b038216600090815260026020526040902054611998908290614270565b6001600160a01b0390921660009081526002602052604090209190915550565b6000610d8a60128484612973565b6000806119d384846119e0565b5050600013949350505050565b6001600160a01b038216600090815260026020526040812054908080611a0586610f88565b905060005b8151811015611b13576000806000848481518110611a2a57611a2a6144a3565b60209081029190910101516040516326cb922f60e21b81523060048201526001600160a01b038c81166024830152604482018c905290911690639b2e48bc90606401606060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad91906144b9565b91945092509050611abe82886143ed565b9650611aca81876143ed565b9550611ae7818311611add5760006122b1565b611776828461448c565b611af1848a614270565b611afb91906142b1565b97505050508080611b0b906144e7565b915050611a0a565b50509250925092565b33611b2960128284612daf565b806001600160a01b0316826001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a35050565b33611b7a60128289612973565b611b965760405162461bcd60e51b81526004016109ed9061443c565b61119381888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611e2b92505050565b61137233338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250611e2b915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015611cb657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c98575b50505050509050919050565b60005b8151811015611372576000828281518110611ce257611ce26144a3565b6020026020010151905080828501555080611cfc906144e7565b9050611cc5565b6001600160a01b038316611d675760405162461bcd60e51b815260206004820152602560248201527f5375706572546f6b656e3a20617070726f76652066726f6d207a65726f206164604482015264647265737360d81b60648201526084016109ed565b6001600160a01b038216611dc95760405162461bcd60e51b815260206004820152602360248201527f5375706572546f6b656e3a20617070726f766520746f207a65726f206164647260448201526265737360e81b60648201526084016109ed565b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600e546001600160a01b0316611e835760405162461bcd60e51b815260206004820152601f60248201527f5375706572546f6b656e3a206e6f20756e6465726c79696e6720746f6b656e0060448201526064016109ed565b600080611e8f85612ea7565b91509150611ea08787838787612b97565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d9190614323565b600e54909150611f27906001600160a01b03168885612f63565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f949190614323565b90506000611fa2828461448c565b9050808514611fc35760405162461bcd60e51b81526004016109ed90614500565b886001600160a01b03167f3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d85604051611ffe91815260200190565b60405180910390a250505050505050505050565b6000805b828110156120445783810154801561203357600192505050610921565b5061203d816144e7565b9050612016565b5060009392505050565b60006001600160a01b0384166120765760405162461bcd60e51b81526004016109ed9061455d565b6001600160a01b03831661209c5760405162461bcd60e51b81526004016109ed906145a3565b60003390506120cd818686866040518060200160405280600081525060405180602001604052806000815250612fc6565b846001600160a01b0316866001600160a01b031614612160576121608587611062866040518060600160405280602d8152602001614847602d9139601160008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c8c9092919063ffffffff16565b50600195945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f191906145e7565b604051638369a0f160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301527f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09604483015291925090821690638369a0f190606401602060405180830381865afa158015612287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ab91906145e7565b91505090565b60006001600160ff1b0382111561231b5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016109ed565b5090565b816001600160a01b0316836001600160a01b031660008051602061482783398151915283604051611e1e91815260200190565b60005b818110156113725760008382015561236c816144e7565b9050612355565b6040516329965a1d60e01b81526001600160a01b03821660048201527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce21770546024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156123f457600080fd5b505af1158015612408573d6000803e3d6000fd5b50506040516329965a1d60e01b81526001600160a01b03841660048201527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a6024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561248d57600080fd5b505af1158015610ad3573d6000803e3d6000fd5b600e546001600160a01b03166124f95760405162461bcd60e51b815260206004820152601f60248201527f5375706572546f6b656e3a206e6f20756e6465726c79696e6720746f6b656e0060448201526064016109ed565b60008061250585612ea7565b600e546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a9190614323565b600e54909150612595906001600160a01b0316893086613065565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156125de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126029190614323565b90506000612610838361448c565b90508085146126315760405162461bcd60e51b81526004016109ed90614500565b6126548b8a868c6001600160a01b03168e6001600160a01b031614158b8b612cb8565b886001600160a01b03167f25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df8560405161268f91815260200190565b60405180910390a25050505050505050505050565b60006126ce7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036127245760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016109ed565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127869190614323565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019146128005760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016109ed565b6001600160a01b03811630036128585760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016109ed565b612880817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019604080519182526001600160a01b03841660208301520160405180910390a150565b6060816001600160401b038111156128fe576128fe613b0f565b604051908082528060200260200182016040528015612927578160200160208202803683370190505b50905060005b8281101561296c57600081850154905080838381518110612950576129506144a3565b602090810291909101015250612965816144e7565b905061292d565b5092915050565b6000816001600160a01b0316836001600160a01b031614806129e257506001600160a01b038316600090815260018501602052604090205460ff1680156129e257506001600160a01b03808316600090815260038601602090815260408083209387168352929052205460ff16155b80610d8757506001600160a01b03808316600090815260028601602090815260408083209387168352929052205460ff1690509392505050565b6001600160a01b038616612a425760405162461bcd60e51b81526004016109ed9061455d565b6001600160a01b038516612a685760405162461bcd60e51b81526004016109ed906145a3565b612a7687878787878761309d565b612a84878787878787612fc6565b611193878787878787876131c4565b806001600160a01b0316826001600160a01b031603612b0a5760405162461bcd60e51b815260206004820152602d60248201527f4552433737374f70657261746f72733a20617574686f72697a696e672073656c60448201526c331030b99037b832b930ba37b960991b60648201526084016109ed565b6001600160a01b038116600090815260018401602052604090205460ff1615612b60576001600160a01b03918216600090815260039390930160209081526040808520929093168452529020805460ff19169055565b6001600160a01b0380831660009081526002850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b038416612bf85760405162461bcd60e51b815260206004820152602260248201527f5375706572546f6b656e3a206275726e2066726f6d207a65726f206164647265604482015261737360f01b60648201526084016109ed565b612c078585600086868661309d565b612c118484613354565b836001600160a01b0316856001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051612c5893929190614604565b60405180910390a36040518381526000906001600160a01b0386169060008051602061482783398151915290602001610901565b60008184841115612cb05760405162461bcd60e51b81526004016109ed9190613960565b505050900390565b6001600160a01b038516612d0e5760405162461bcd60e51b815260206004820181905260248201527f5375706572546f6b656e3a206d696e7420746f207a65726f206164647265737360448201526064016109ed565b612d1885856134a8565b612d2886600087878686896131c4565b846001600160a01b0316866001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868585604051612d6f93929190614604565b60405180910390a36040518481526001600160a01b03861690600090600080516020614827833981519152906020015b60405180910390a3505050505050565b336001600160a01b03821603612e1a5760405162461bcd60e51b815260206004820152602a60248201527f4552433737374f70657261746f72733a207265766f6b696e672073656c662061604482015269399037b832b930ba37b960b11b60648201526084016109ed565b6001600160a01b038116600090815260018401602052604090205460ff1615612e74576001600160a01b0380831660009081526003850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03918216600090815260029390930160209081526040808520929093168452529020805460ff19169055565b600e54600090819081906012600160a01b90910460ff161015612f0657600e54612edc90600160a01b900460ff16601261462f565b612ee790600a614736565b9050612ef38185614745565b9250612eff8184614767565b9150612f5d565b600e546012600160a01b90910460ff161115612f5657600e54612f3590601290600160a01b900460ff1661462f565b612f4090600a614736565b9050612f4c8185614767565b9250839150612f5d565b8391508192505b50915091565b6040516001600160a01b03831660248201526044810182905261137290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613502565b612fd98585612fd4866122b1565b6135d4565b836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc8261467798786868660405161302a93929190614604565b60405180910390a4836001600160a01b0316856001600160a01b031660008051602061482783398151915285604051612d9f91815260200190565b6040516001600160a01b03808516602483015283166044820152606481018290526113199085906323b872dd60e01b90608401612f8f565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa15801561311e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314291906145e7565b90506001600160a01b0381161561119357604051633ad5cbc160e11b81526001600160a01b038216906375ab978290613189908a908a908a908a908a908a90600401614786565b600060405180830381600087803b1580156131a357600080fd5b505af11580156131b7573d6000803e3d6000fd5b5050505050505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613245573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326991906145e7565b90506001600160a01b038116156132e5576040516223de2960e01b81526001600160a01b038216906223de29906132ae908b908b908b908b908b908b90600401614786565b600060405180830381600087803b1580156132c857600080fd5b505af11580156132dc573d6000803e3d6000fd5b5050505061141a565b811561141a576001600160a01b0386163b1561141a5760405162461bcd60e51b815260206004820152602860248201527f5375706572546f6b656e3a206e6f7420616e20455243373737546f6b656e73526044820152671958da5c1a595b9d60c21b60648201526084016109ed565b60006133dc837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074f9190614323565b505090506133e9826122b1565b81121561344d5760405162461bcd60e51b815260206004820152602c60248201527f5375706572666c756964546f6b656e3a206275726e20616d6f756e742065786360448201526b656564732062616c616e636560a01b60648201526084016109ed565b613456826122b1565b6001600160a01b03841660009081526002602052604090205461347991906142b1565b6001600160a01b0384166000908152600260205260409020556003546134a090839061448c565b600355505050565b6134b1816122b1565b6001600160a01b0383166000908152600260205260409020546134d49190614270565b6001600160a01b0383166000908152600260205260409020556003546134fb9082906143ed565b6003555050565b6000613557826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166137179092919063ffffffff16565b805190915015611372578080602001905181019061357591906141c4565b6113725760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109ed565b6000613638847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133b8573d6000803e3d6000fd5b50509050818112156136a15760405162461bcd60e51b815260206004820152602c60248201527f5375706572666c756964546f6b656e3a206d6f766520616d6f756e742065786360448201526b656564732062616c616e636560a01b60648201526084016109ed565b6001600160a01b0384166000908152600260205260409020546136c59083906142b1565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546136f5908390614270565b6001600160a01b03909316600090815260026020526040902092909255505050565b6060610d878484600085856001600160a01b0385163b6137795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109ed565b600080866001600160a01b0316858760405161379591906147e0565b60006040518083038185875af1925050503d80600081146137d2576040519150601f19603f3d011682016040523d82523d6000602084013e6137d7565b606091505b50915091506137e78282866137f2565b979650505050505050565b60608315613801575081610d8a565b8251156138115782518084602001fd5b8160405162461bcd60e51b81526004016109ed9190613960565b82805461383790614075565b90600052602060002090601f016020900481019282613859576000855561389f565b82601f106138725782800160ff1982351617855561389f565b8280016001018555821561389f579182015b8281111561389f578235825591602001919060010190613884565b5061231b9291505b8082111561231b57600081556001016138a7565b6020808252825182820181905260009190848201906040850190845b818110156138fc5783516001600160a01b0316835292840192918401916001016138d7565b50909695505050505050565b60005b8381101561392357818101518382015260200161390b565b838111156113195750506000910152565b6000815180845261394c816020860160208601613908565b601f01601f19169290920160200192915050565b602081526000610d8a6020830184613934565b6001600160a01b038116811461095257600080fd5b60008083601f84011261399a57600080fd5b5081356001600160401b038111156139b157600080fd5b6020830191508360208260051b85010111156139cc57600080fd5b9250929050565b600080600080606085870312156139e957600080fd5b84356139f481613973565b93506020850135925060408501356001600160401b03811115613a1657600080fd5b613a2287828801613988565b95989497509550505050565b60008060408385031215613a4157600080fd5b8235613a4c81613973565b946020939093013593505050565b600060208284031215613a6c57600080fd5b5035919050565b600080600060408486031215613a8857600080fd5b8335925060208401356001600160401b03811115613aa557600080fd5b613ab186828701613988565b9497909650939450505050565b60008060008060808587031215613ad457600080fd5b8435613adf81613973565b93506020850135613aef81613973565b92506040850135613aff81613973565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613b4d57613b4d613b0f565b604052919050565b600082601f830112613b6657600080fd5b81356001600160401b03811115613b7f57613b7f613b0f565b613b92601f8201601f1916602001613b25565b818152846020838601011115613ba757600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461095257600080fd5b600080600080600080600060e0888a031215613bed57600080fd5b8735965060208801356001600160401b03811115613c0a57600080fd5b613c168a828b01613b55565b9650506040880135613c2781613973565b94506060880135613c3781613bc4565b93506080880135613c4781613973565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613c7957600080fd5b8335613c8481613973565b92506020840135613c9481613973565b929592945050506040919091013590565b60008060408385031215613cb857600080fd5b50508035926020909101359150565b600060208284031215613cd957600080fd5b8135610d8a81613973565b60008083601f840112613cf657600080fd5b5081356001600160401b03811115613d0d57600080fd5b6020830191508360208285010111156139cc57600080fd5b60008060008060008060808789031215613d3e57600080fd5b8635613d4981613973565b9550602087013560ff81168114613d5f57600080fd5b945060408701356001600160401b0380821115613d7b57600080fd5b613d878a838b01613ce4565b90965094506060890135915080821115613da057600080fd5b50613dad89828a01613ce4565b979a9699509497509295939492505050565b60008060008060808587031215613dd557600080fd5b8435613de081613973565b93506020850135613df081613973565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b818110156138fc57835183529284019291840191600101613e21565b60008060008060608587031215613e5357600080fd5b8435613e5e81613973565b93506020850135925060408501356001600160401b03811115613e8057600080fd5b613a2287828801613ce4565b600080600080600080600060a0888a031215613ea757600080fd5b8735613eb281613973565b96506020880135613ec281613973565b95506040880135945060608801356001600160401b0380821115613ee557600080fd5b613ef18b838c01613ce4565b909650945060808a0135915080821115613f0a57600080fd5b50613f178a828b01613ce4565b989b979a50959850939692959293505050565b600080600060608486031215613f3f57600080fd5b8335613f4a81613973565b95602085013595506040909401359392505050565b600080600060608486031215613f7457600080fd5b8335613f7f81613973565b92506020840135915060408401356001600160401b03811115613fa157600080fd5b613fad86828701613b55565b9150509250925092565b60008060408385031215613fca57600080fd5b8235613fd581613973565b91506020830135613fe581613973565b809150509250929050565b6000806000806000806080878903121561400957600080fd5b863561401481613973565b95506020870135945060408701356001600160401b0380821115613d7b57600080fd5b60008060006040848603121561404c57600080fd5b8335925060208401356001600160401b0381111561406957600080fd5b613ab186828701613ce4565b600181811c9082168061408957607f821691505b6020821081036140a957634e487b7160e01b600052602260045260246000fd5b50919050565b6080808252600e908201526d41677265656d656e74537461746560901b60a08201526001600160a01b039384166020820152919092166040820152606081019190915260c00190565b6060808252600d908201526c41677265656d656e744461746160981b60808201526001600160a01b03929092166020830152604082015260a00190565b838152604060208201819052810182905260006001600160fb1b0383111561415c57600080fd5b8260051b8085606085013760009201606001918252509392505050565b6020808252602b908201527f5375706572666c756964546f6b656e3a204f6e6c7920686f737420636f6e747260408201526a1858dd08185b1b1bddd95960aa1b606082015260800190565b6000602082840312156141d657600080fd5b8151610d8a81613bc4565b60208082526027908201527f5375706572666c756964546f6b656e3a206f6e6c79206c6973746564206167726040820152661959595b595b9d60ca1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b820161425357614253614228565b5060000390565b634e487b7160e01b600052600160045260246000fd5b600080821280156001600160ff1b038490038513161561429257614292614228565b600160ff1b83900384128116156142ab576142ab614228565b50500190565b60008083128015600160ff1b8501841216156142cf576142cf614228565b6001600160ff1b03840183138116156142ea576142ea614228565b50500390565b85815260018060a01b038516602082015283604082015282606082015260a0608082015260006137e760a0830184613934565b60006020828403121561433557600080fd5b5051919050565b6000602080838503121561434f57600080fd5b82516001600160401b038082111561436657600080fd5b818501915085601f83011261437a57600080fd5b81518181111561438c5761438c613b0f565b8060051b915061439d848301613b25565b81815291830184019184810190888411156143b757600080fd5b938501935b838510156143e157845192506143d183613973565b82825293850193908501906143bc565b98975050505050505050565b6000821982111561440057614400614228565b500190565b6020808252601d908201527f5375706572546f6b656e3a206f6e6c792073656c6620616c6c6f776564000000604082015260600190565b60208082526030908201527f5375706572546f6b656e3a2063616c6c6572206973206e6f7420616e206f706560408201526f3930ba37b9103337b9103437b63232b960811b606082015260800190565b60008282101561449e5761449e614228565b500390565b634e487b7160e01b600052603260045260246000fd5b6000806000606084860312156144ce57600080fd5b8351925060208401519150604084015190509250925092565b6000600182016144f9576144f9614228565b5060010190565b6020808252603a908201527f5375706572546f6b656e3a20696e666c6174696f6e6172792f6465666c61746960408201527f6f6e61727920746f6b656e73206e6f7420737570706f72746564000000000000606082015260800190565b60208082526026908201527f5375706572546f6b656e3a207472616e736665722066726f6d207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526024908201527f5375706572546f6b656e3a207472616e7366657220746f207a65726f206164646040820152637265737360e01b606082015260800190565b6000602082840312156145f957600080fd5b8151610d8a81613973565b83815260606020820152600061461d6060830185613934565b82810360408401526112928185613934565b600060ff821660ff84168082101561464957614649614228565b90039392505050565b600181815b8085111561468d57816000190482111561467357614673614228565b8085161561468057918102915b93841c9390800290614657565b509250929050565b6000826146a457506001610921565b816146b157506000610921565b81600181146146c757600281146146d1576146ed565b6001915050610921565b60ff8411156146e2576146e2614228565b50506001821b610921565b5060208310610133831016604e8410600b8410161715614710575081810a610921565b61471a8383614652565b806000190482111561472e5761472e614228565b029392505050565b6000610d8a60ff841683614695565b60008261476257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561478157614781614228565b500290565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906147c190830185613934565b82810360a08401526147d38185613934565b9998505050505050505050565b600082516147f2818460208701613908565b919091019291505056fe5375706572546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5375706572546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122041147c921d8e2f6615d0932c000e2b63565345f5cf02aaa7708542cb2060207064736f6c634300080d0033a26469706673582212201de25eba71c7b88189d375f9db7aab0fbebee8128d83c02cef7ba7350a0a7bbd64736f6c634300080d003360c060405234801561001057600080fd5b5060405161138338038061138383398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a0516112b26100d160003960006102dd01526000818160a501528181610220015281816104c90152610a1601526112b26000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806352d1902d1161006657806352d1902d146101255780638129fc1c146101535780639470a5b21461015b578063a6d0c53414610172578063d412d3441461018557600080fd5b806320bc4425146100a3578063431f1481146100e257806346951954146100f55780634dcc4d791461010a57806350d75d251461011d575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100c56100f0366004610b6d565b610198565b610108610103366004610c00565b610215565b005b6100c5610118366004610c00565b6102bb565b6100c5610352565b6040517fb146a22bc9644a3313a7e28592f37d32718a2b618d3d136aa524b0d86b87b62081526020016100d9565b610108610381565b6000546201000090046001600160a01b03166100c5565b6100c5610180366004610c33565b610441565b610108610193366004610c00565b610721565b600061020a87886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102009190610cd9565b8888888888610441565b979650505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102a75760405162461bcd60e51b815260206004820152602c60248201527f5375706572546f6b656e466163746f72793a206f6e6c7920686f73742063616e60448201526b2075706461746520636f646560a01b60648201526084015b60405180910390fd5b6102b0816107bf565b6102b86109ff565b50565b6040516313db266360e31b81526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690639ed93318906024016020604051808303816000875af1158015610328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034c9190610cf6565b92915050565b600061037c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b600054610100900460ff1661039c5760005460ff16156103a0565b303b155b6104035760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161029e565b600054610100900460ff16158015610425576000805461ffff19166101011790555b61042d6109ff565b80156102b8576000805461ff001916905550565b60006001600160a01b0388166104995760405162461bcd60e51b815260206004820152601f60248201527f5375706572546f6b656e466163746f72793a207a65726f206164647265737300604482015260640161029e565b60008660028111156104ad576104ad610d13565b0361054357604051634dcc4d7960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201523090634dcc4d79906024016020604051808303816000875af1158015610518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053c9190610cf6565b905061067b565b600186600281111561055757610557610d13565b036105f757600060405161056a90610ae1565b604051809103906000f080158015610586573d6000803e3d6000fd5b50600054604051634a0687ef60e01b81526001600160a01b036201000090920482166004820152919250821690634a0687ef90602401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b505050508091505061067b565b600060405161060590610aee565b604051809103906000f080158015610621573d6000803e3d6000fd5b509050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561065f57600080fd5b505af1158015610673573d6000803e3d6000fd5b509293505050505b6040516285fc1360e71b81526001600160a01b038216906342fe0980906106b0908b908b908a908a908a908a90600401610d52565b600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b50506040516001600160a01b03841692507fb52c6d9d122e8c07769b96d7bb14e66db58ee03fdebaaa2f92547e9c7ef0e65f9150600090a2979650505050505050565b600054604051634a0687ef60e01b81526001600160a01b0362010000909204821660048201528291821690634a0687ef90602401600060405180830381600087803b15801561076f57600080fd5b505af1158015610783573d6000803e3d6000fd5b50506040516001600160a01b03851692507f437790724a6e97b75d23117f28cdd4b1beeafc34f7a0911ef256e9334f4369a59150600090a25050565b60006107e97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b03160361083f5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c65000000604482015260640161029e565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a19190610da0565b7fb146a22bc9644a3313a7e28592f37d32718a2b618d3d136aa524b0d86b87b6201461091b5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b606482015260840161029e565b6001600160a01b03811630036109735760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f7000000000000000604482015260640161029e565b61099b817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fb146a22bc9644a3313a7e28592f37d32718a2b618d3d136aa524b0d86b87b620604080519182526001600160a01b03841660208301520160405180910390a150565b604051634dcc4d7960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201523090634dcc4d79906024016020604051808303816000875af1158015610a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a899190610cf6565b6000805462010000600160b01b031916620100006001600160a01b03938416810291909117808355604051919004909216917fc13fb19d60857980e565bf5dae406b8802d3c1cec50c6156b30b12b8740297839190a2565b61024a80610dba83390190565b6102798061100483390190565b6001600160a01b03811681146102b857600080fd5b803560038110610b1f57600080fd5b919050565b60008083601f840112610b3657600080fd5b50813567ffffffffffffffff811115610b4e57600080fd5b602083019150836020828501011115610b6657600080fd5b9250929050565b60008060008060008060808789031215610b8657600080fd5b8635610b9181610afb565b9550610b9f60208801610b10565b9450604087013567ffffffffffffffff80821115610bbc57600080fd5b610bc88a838b01610b24565b90965094506060890135915080821115610be157600080fd5b50610bee89828a01610b24565b979a9699509497509295939492505050565b600060208284031215610c1257600080fd5b8135610c1d81610afb565b9392505050565b60ff811681146102b857600080fd5b600080600080600080600060a0888a031215610c4e57600080fd5b8735610c5981610afb565b96506020880135610c6981610c24565b9550610c7760408901610b10565b9450606088013567ffffffffffffffff80821115610c9457600080fd5b610ca08b838c01610b24565b909650945060808a0135915080821115610cb957600080fd5b50610cc68a828b01610b24565b989b979a50959850939692959293505050565b600060208284031215610ceb57600080fd5b8151610c1d81610c24565b600060208284031215610d0857600080fd5b8151610c1d81610afb565b634e487b7160e01b600052602160045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038716815260ff86166020820152608060408201819052600090610d809083018688610d29565b8281036060840152610d93818587610d29565b9998505050505050505050565b600060208284031215610db257600080fd5b505191905056fe608060405234801561001057600080fd5b5061022a806100206000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea264697066735822122055e86118ce2711c610170f2e930678ba3d15a2874e37c60b77b322eebc0ffc5f64736f6c634300080d0033608060405234801561001057600080fd5b50610259806100206000396000f3fe6080604052600436106100225760003560e01c80638129fc1c1461003957610031565b366100315761002f61004e565b005b61002f61004e565b34801561004557600080fd5b5061002f610060565b61005e6100596100fa565b6101cf565b565b7fb8fcd5719b3ddf8626f3664705a89b7fc476129a58c1aa5eda57c600cc1821a0546001600160a01b038116156100d45760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b60448201526064015b60405180910390fd5b50337fb8fcd5719b3ddf8626f3664705a89b7fc476129a58c1aa5eda57c600cc1821a055565b7fb8fcd5719b3ddf8626f3664705a89b7fc476129a58c1aa5eda57c600cc1821a0546000906001600160a01b0381166101675760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b60448201526064016100cb565b806001600160a01b0316639470a5b26040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c991906101f3565b91505090565b3660008037600080366000845af43d6000803e8080156101ee573d6000f35b3d6000fd5b60006020828403121561020557600080fd5b81516001600160a01b038116811461021c57600080fd5b939250505056fea26469706673582212208d3f496e50f3ba9eca2810bc6992a217d6eb694d3711c1bbbd5a38bb410dc2a964736f6c634300080d0033a2646970667358221220fc026e559d521c19c6874ece7a5acb8a15639348f6ef7186b19994189224b2d264736f6c634300080d0033",
115
- "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200003a5760003560e01c8063845531a4146200003f578063dfa98ad5146200007b575b600080fd5b620000566200005036600462000539565b62000160565b604080516001600160a01b039384168152929091166020830152015b60405180910390f35b620001516040805160e08101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810191909152506040805160e0810182526000546001600160a01b03908116825260015481166020808401829052600254831684860181905285518087018752838152808301919091526060850152600354831660808501819052855180870190965291855284015260a082019290925260045490911660c082015290565b604051620000729190620005ac565b600080858585856040516200017590620004df565b62000184949392919062000678565b604051809103906000f080158015620001a1573d6000803e3d6000fd5b509150816001600160a01b0316632f2ff15d836001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002189190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156200025857600080fd5b505af11580156200026d573d6000803e3d6000fd5b50505050816001600160a01b0316632f2ff15d836001600160a01b031663d53913936040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e59190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156200032557600080fd5b505af11580156200033a573d6000803e3d6000fd5b50505050816001600160a01b0316632f2ff15d836001600160a01b031663e63ab1e96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b29190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b158015620003f257600080fd5b505af115801562000407573d6000803e3d6000fd5b50506004546040516001600160a01b03909116925063431f1481915084906001906200043a908b908b90602001620006c8565b60405160208183030381529060405288886040516020016200045e929190620006c8565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016200048e94939291906200072e565b6020604051808303816000875af1158015620004ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d491906200078b565b905094509492505050565b611d9380620007be83390190565b60008083601f8401126200050057600080fd5b50813567ffffffffffffffff8111156200051957600080fd5b6020830191508360208285010111156200053257600080fd5b9250929050565b600080600080604085870312156200055057600080fd5b843567ffffffffffffffff808211156200056957600080fd5b6200057788838901620004ed565b909650945060208701359150808211156200059157600080fd5b50620005a087828801620004ed565b95989497509550505050565b81516001600160a01b03908116825260208084015182168184015260408085015183169084015260608085015180518416918501919091520151166080808301919091528201516101208201906200060f60a08401826001600160a01b03169052565b5060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c08301516001600160a01b0381166101008401525092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006200068e6040830186886200064f565b8281036020840152620006a38185876200064f565b979650505050505050565b600060208284031215620006c157600080fd5b5051919050565b81838237600f60fb1b9101908152600101919050565b6000815180845260005b818110156200070657602081850181015186830182015201620006e8565b8181111562000719576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03851681526000600385106200075b57634e487b7160e01b600052602160045260246000fd5b84602083015260806040830152620007776080830185620006de565b8281036060840152620006a38185620006de565b6000602082840312156200079e57600080fd5b81516001600160a01b0381168114620007b657600080fd5b939250505056fe60806040523480156200001157600080fd5b5060405162001d9338038062001d938339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045b565b620000e98282620000ed565b5050565b6200010482826200013060201b6200096e1760201c565b60008281526001602090815260409091206200012b918390620009f2620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b6020821081036200045557634e487b7160e01b600052602260045260246000fd5b50919050565b611928806200046b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e91461042257600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115cf565b610449565b60405190151581526020015b60405180910390f35b6101f9610474565b6040516101e89190611625565b6101dc610214366004611674565b610506565b6004545b6040519081526020016101e8565b6101dc61023936600461169e565b61051e565b61021d61024c3660046116da565b60009081526020819052604090206001015490565b61027461026f3660046116f3565b610542565b005b604051601281526020016101e8565b6102746102933660046116f3565b61056d565b6101dc6102a6366004611674565b6105f0565b61027461062f565b6102746102c1366004611674565b6106d5565b6102746102d43660046116da565b610774565b60075460ff166101dc565b61021d6102f236600461171f565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611674565b610781565b610274610796565b61033b61033636600461173a565b61083a565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116f3565b610859565b6101f9610882565b61021d600081565b6101dc610384366004611674565b610891565b6101dc610397366004611674565b610923565b61021d6103aa3660046116da565b610931565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116f3565b610948565b61021d6103f736600461175c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b148061046e575061046e82610a07565b92915050565b60606005805461048390611786565b80601f01602080910402602001604051908101604052809291908181526020018280546104af90611786565b80156104fc5780601f106104d1576101008083540402835291602001916104fc565b820191906000526020600020905b8154815290600101906020018083116104df57829003601f168201915b5050505050905090565b600033610514818585610a3c565b5060019392505050565b60003361052c858285610b60565b610537858585610bf2565b506001949350505050565b60008281526020819052604090206001015461055e8133610dcb565b6105688383610e2f565b505050565b6001600160a01b03811633146105e25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105ec8282610e51565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610514908290869061062a9087906117d6565b610a3c565b6106597f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610859565b6106cb5760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105d9565b6106d3610e73565b565b6106ff7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610859565b61076a5760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105d9565b6105ec8282610f06565b61077e3382610ff1565b50565b61078c823383610b60565b6105ec8282610ff1565b6107c07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610859565b6108325760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105d9565b6106d361114b565b600082815260016020526040812061085290836111c6565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461048390611786565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190838110156109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d9565b6105378286868403610a3c565b600033610514818585610bf2565b600081815260016020526040812061046e906111d2565b6000828152602081905260409020600101546109648133610dcb565b6105688383610e51565b6109788282610859565b6105ec576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556109ae3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610852836001600160a01b0384166111dc565b60006001600160e01b03198216637965db0b60e01b148061046e57506301ffc9a760e01b6001600160e01b031983161461046e565b6001600160a01b038316610a9e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d9565b6001600160a01b038216610aff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220546000198114610bec5781811015610bdf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d9565b610bec8484848403610a3c565b50505050565b6001600160a01b038316610c565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d9565b6001600160a01b038216610cb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d9565b610cc383838361122b565b6001600160a01b03831660009081526002602052604090205481811015610d3b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d9565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d729084906117d6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dbe91815260200190565b60405180910390a3610bec565b610dd58282610859565b6105ec57610ded816001600160a01b03166014611236565b610df8836020611236565b604051602001610e099291906117ee565b60408051601f198184030181529082905262461bcd60e51b82526105d991600401611625565b610e39828261096e565b600082815260016020526040902061056890826109f2565b610e5b82826113d2565b60008281526001602052604090206105689082611437565b60075460ff16610ebc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d9565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610f5c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d9565b610f686000838361122b565b8060046000828254610f7a91906117d6565b90915550506001600160a01b03821660009081526002602052604081208054839290610fa79084906117d6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166110515760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d9565b61105d8260008361122b565b6001600160a01b038216600090815260026020526040902054818110156110d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105d9565b6001600160a01b0383166000908152600260205260408120838303905560048054849290611100908490611863565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60075460ff16156111915760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ee93390565b6000610852838361144c565b600061046e825490565b60008181526001830160205260408120546112235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561046e565b50600061046e565b610568838383611476565b6060600061124583600261187a565b6112509060026117d6565b67ffffffffffffffff81111561126857611268611899565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600360fc1b816000815181106112ad576112ad6118af565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112dc576112dc6118af565b60200101906001600160f81b031916908160001a905350600061130084600261187a565b61130b9060016117d6565b90505b6001811115611383576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061133f5761133f6118af565b1a60f81b828281518110611355576113556118af565b60200101906001600160f81b031916908160001a90535060049490941c9361137c816118c5565b905061130e565b5083156108525760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d9565b6113dc8282610859565b156105ec576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610852836001600160a01b0384166114dc565b6000826000018281548110611463576114636118af565b9060005260206000200154905092915050565b60075460ff16156105685760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105d9565b600081815260018301602052604081205480156115c5576000611500600183611863565b855490915060009061151490600190611863565b9050818114611579576000866000018281548110611534576115346118af565b9060005260206000200154905080876000018481548110611557576115576118af565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061158a5761158a6118dc565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061046e565b600091505061046e565b6000602082840312156115e157600080fd5b81356001600160e01b03198116811461085257600080fd5b60005b838110156116145781810151838201526020016115fc565b83811115610bec5750506000910152565b60208152600082518060208401526116448160408501602087016115f9565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461166f57600080fd5b919050565b6000806040838503121561168757600080fd5b61169083611658565b946020939093013593505050565b6000806000606084860312156116b357600080fd5b6116bc84611658565b92506116ca60208501611658565b9150604084013590509250925092565b6000602082840312156116ec57600080fd5b5035919050565b6000806040838503121561170657600080fd5b8235915061171660208401611658565b90509250929050565b60006020828403121561173157600080fd5b61085282611658565b6000806040838503121561174d57600080fd5b50508035926020909101359150565b6000806040838503121561176f57600080fd5b61177883611658565b915061171660208401611658565b600181811c9082168061179a57607f821691505b6020821081036117ba57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117e9576117e96117c0565b500190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516118268160178501602088016115f9565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118578160288401602088016115f9565b01602801949350505050565b600082821015611875576118756117c0565b500390565b6000816000190483118215151615611894576118946117c0565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816118d4576118d46117c0565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220afe1caf1e01f9ffa2b2ee0f93fd3af8e01926b940b318b54a1ea7d0d8697587864736f6c634300080d0033a264697066735822122076be1833f8f8dea73e62ab1593f919fd9f7a43ccb2a51a1357e702e753eeb89164736f6c634300080d0033",
113
+ "metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"name\":\"deployWrapperSuperToken\",\"outputs\":[{\"internalType\":\"contract ERC20PresetMinterPauser\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract SuperToken\",\"name\":\"superToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFramework\",\"outputs\":[{\"components\":[{\"internalType\":\"contract TestGovernance\",\"name\":\"governance\",\"type\":\"address\"},{\"internalType\":\"contract Superfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract ConstantFlowAgreementV1\",\"name\":\"cfa\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract IConstantFlowAgreementV1\",\"name\":\"cfa\",\"type\":\"address\"}],\"internalType\":\"struct CFAv1Library.InitData\",\"name\":\"cfaLib\",\"type\":\"tuple\"},{\"internalType\":\"contract InstantDistributionAgreementV1\",\"name\":\"ida\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract ISuperfluid\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"contract IInstantDistributionAgreementV1\",\"name\":\"ida\",\"type\":\"address\"}],\"internalType\":\"struct IDAv1Library.InitData\",\"name\":\"idaLib\",\"type\":\"tuple\"},{\"internalType\":\"contract SuperTokenFactory\",\"name\":\"superTokenFactory\",\"type\":\"address\"}],\"internalType\":\"struct SuperfluidFrameworkDeployer.Framework\",\"name\":\"sf\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Superfluid Framework Deployer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Deploys everything... probably\"},\"deployWrapperSuperToken(string,string)\":{\"notice\":\"Deploy new wrapper super token\"},\"getFramework()\":{\"notice\":\"Fetches the framework contracts\"}},\"notice\":\"This is NOT for deploying public nets, but rather only for tesing envs\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/utils/SuperfluidFrameworkDeployer.sol\":\"SuperfluidFrameworkDeployer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/AccessControlEnumerable.sol\":{\"keccak256\":\"0x13f5e15f2a0650c0b6aaee2ef19e89eaf4870d6e79662d572a393334c1397247\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ee05f28f549a5d6515e152580716b87636ed4bfab9812499a6e3803df88288b\",\"dweb:/ipfs/QmeEnhdwY1t5Y3YU5a4ffzgXuToydH2PNdNxV9W7dEPRQJ\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/access/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xba4459ab871dfa300f5212c6c30178b63898c03533a1ede28436f11546626676\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dcc7b09bfa6e18aab262ca372f4a9b1fc82e294b430706a4e1378cf58e6a276\",\"dweb:/ipfs/QmT8oSAcesdctR15HMLhr2a1HRpXymxdjTfdtfTYJcj2N2\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x24e0364e503a9bbde94c715d26573a76f14cd2a202d45f96f52134ab806b67b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e12cbaa7378fd9b62280e4e1d164bedcb4399ce238f5f98fc0eefb7e50577981\",\"dweb:/ipfs/QmXRoFGUgfsaRkoPT5bxNMtSayKTQ8GZATLPXf69HcRA51\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0x0edeb16b9821ae2b16e9d69c383b38d3ad2fbb3e0c06cf809a0786d96e602551\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88adc865fb1bd8dab4c58096e1d5887713f62c0405f8d2d17294727a8f43d8f7\",\"dweb:/ipfs/QmUJ27zsjxCatfoTFWho4k4qdhuBTorMqLuJzWqUX4Sdmg\"]},\"@openzeppelin/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x4823752b07b8ea4ca971b217e39457930e7cb103c2c91e2a29729e5ca907e4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f319af26a9ade3e6cf3698bf1b84aa6213bdd7a76606ea9ba56ced163593934\",\"dweb:/ipfs/QmZ2u9zen5Htan4dSP1RZCY2XqB9HUwqkNCMzdn7aV2jWc\"]},\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0xe68ed7fb8766ed1e888291f881e36b616037f852b37d96877045319ad298ba87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d491a2ca79dbf44bc02e876e21a5847a2cbcc011188532ad8662cdc1c134a4e\",\"dweb:/ipfs/QmUQXhSV8ZvHLzfdG89ZNSh1nLrAYyjnNBLznJGwGcwVk8\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xdadd41acb749920eccf40aeaa8d291adf9751399a7343561bad13e7a8d99be0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12af4ac016f9fdf3be5d15824f4292272aa11f6b2e0192a0f7320f5ad49bbbf0\",\"dweb:/ipfs/QmRXMpdqCgA3TYuYxBodqs5p9jGbnMW6xa2gvjppvq4TWk\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0x0d19410453cda55960a818e02bd7c18952a5c8fe7a3036e81f0d599f34487a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c0f62d3d5bef22b5ca00cc3903e7de6152cb68d2d22401a463f373cda54c00f\",\"dweb:/ipfs/QmSfzjZux7LC7NW2f7rjCXTHeFMUCWERqDkhpCTBy7kxTe\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol\":{\"keccak256\":\"0x978847fbff92d66d27d8767402a90ba996970b1936b372406aa17f5492bd8dc5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1414cb92779420b50d3e796b47bad6ea800ef1805bc6f9bf35a3ccb4e17db3dc\",\"dweb:/ipfs/QmaMzwYqLiivfaWSgqeaAPboBtJjVD1hSrH48p7ExJZ7DG\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol\":{\"keccak256\":\"0x2cd54808b851c4db22f459065af0b7a952262741a85a73923e7a660767cd7baa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://750c4a78e953fe92317bba7166afd0a4b7725723e5822ea1b92ffd4e72d2d36b\",\"dweb:/ipfs/QmZNyCSrdYXGQfmB6LkbX8R6y4gGZRNh1d2pJobYBpkaRF\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xc3d946432c0ddbb1f846a0d3985be71299df331b91d06732152117f62f0be2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4632c341a06ba5c079b51ca5a915efab4e6ab57735b37839b3e8365ff806a43e\",\"dweb:/ipfs/QmTHT3xHYed2wajEoA5qu7ii2BxLpPhQZHwAhtLK5Z7ANK\"]},\"@openzeppelin/contracts/token/ERC777/IERC777.sol\":{\"keccak256\":\"0xe4e0b7e3f0265ffaa565d26acd2d45f2633f19127ed625e5a05a9f201a87a667\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1762b5bc15a009b5f092ccf547b81e0827c8705884f18e0623e497658514a7ed\",\"dweb:/ipfs/QmTtmVQYuynan3j2uVjdjjRJS1mr7LPRgxSZNnfqC7oxkz\"]},\"@openzeppelin/contracts/token/ERC777/IERC777Recipient.sol\":{\"keccak256\":\"0x1a5d61db2733202ba361e6d6741cd2e662380e22b80e987eacfc91973f2267dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04c0cd697050a6516b7779aa2343ad2d0e5217d8915ac2382681dfdf4e445be3\",\"dweb:/ipfs/QmPCBCZgm7pHBwwogE2F9NCN3UfTdLNhqc8UDEvw8kDzyA\"]},\"@openzeppelin/contracts/token/ERC777/IERC777Sender.sol\":{\"keccak256\":\"0x742e51d63b108240759794360637468d9fcbf072cbd357744790d356a87bb382\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://23912910ce2bb68e49ff83f43fcfa864210ee44580491e876db14922f8aecc18\",\"dweb:/ipfs/QmU6GnRQ51xvY8D57kPCV47oGeYozaz5AQZUCHxFfXdFZ4\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Create2.sol\":{\"keccak256\":\"0xebe3f8a59f0f1c96344a05edb984ef666ee4207e993cca99af3808f1de8771b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0db23062a52185cf06ad4202be0bfa4c7718c4b75f4526aeb456620ff2e737d4\",\"dweb:/ipfs/QmXtWdePeH6xpXf175YcnbwjsuLp35k6JxX8CjHzvHiyAi\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/introspection/IERC1820Registry.sol\":{\"keccak256\":\"0x6e306f9ab28416a9e5931f0b6e264676e8ac68fad184f9a9d8bb125c6ec23bc3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd7fe961c914caa1fcc8223d446c1582aec4f2a32d2f06cf09c938b72cf8ce11\",\"dweb:/ipfs/QmPfEfqtUh9SA86br28HfmMyVSBe22B3oPwF8iACCF4evY\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x5c6caab697d302ad7eb59c234a4d2dbc965c1bae87709bd2850060b7695b28c7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb62abcee612c175f1b9bc70e5dfe5bd23473c99987ade6e80e291f68dc60ff1\",\"dweb:/ipfs/QmZCMajhG7FtRYNDwBchXN89mXR6HLPVzr9732qfUdNf9E\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0xa2f576be637946f767aa56601c26d717f48a0aff44f82e46f13807eea1009a21\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://973868f808e88e21a1a0a01d4839314515ee337ad096286c88e41b74dcc11fc2\",\"dweb:/ipfs/QmfYuZxRfx2J2xdk4EXN7jKg4bUYEMTaYk9BAw9Bqn4o2Y\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"project:/contracts/agreements/AgreementBase.sol\":{\"keccak256\":\"0xa34a1b2dd83146a5ed280509f71a1c020ce1985e603da0fc3599eff71d234ab4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0c9e9eb4f857ddef830bd7bc9523151f7de82bf4ecfca1aeb9e8de1588e2e07d\",\"dweb:/ipfs/QmaFU7E1XGTYiHCQicCjLNSzYyBgEHdR5pcC64MzCCsNbC\"]},\"project:/contracts/agreements/AgreementLibrary.sol\":{\"keccak256\":\"0x4ad8252da82acdad4fe2b7a4fd1ebef8a7059b67c06f2af84ce86ded3ca531a4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2f1c14d9882316ab33e89329ca47449f2bb5a836df5a7abfb91a823fd428b546\",\"dweb:/ipfs/QmVJQxv5e4Ki19CzoVDHbqvuBrRM6XQa7igUmXTHBANcR4\"]},\"project:/contracts/agreements/ConstantFlowAgreementV1.sol\":{\"keccak256\":\"0xadae2b3519d14f50d79e6277f6305fa57557a63a223bc4e867730c499ea6b2a3\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://a4e30423c960d0e17fe8258b0904aa161751c5e99ded3f19f0aaa1dee6d3b278\",\"dweb:/ipfs/QmfGwPUCRsNENGF2EpsrqqEhkam3i6sz8D7HX54hersZBn\"]},\"project:/contracts/agreements/InstantDistributionAgreementV1.sol\":{\"keccak256\":\"0xc860edfc5243a6f0a32f41dd87501acc49645cf610b67ceeb2dc015451d3839f\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://db6999d46b894d9c04fbba3a5aa6dd26837ebea16b6ade3f14fd60dfddc92a2d\",\"dweb:/ipfs/QmRwkp2aDY91PwMFun3Fux5Ac6cYMr17DRnmUfSV5qxTsX\"]},\"project:/contracts/apps/CFAv1Library.sol\":{\"keccak256\":\"0x5384b9a56711ce7b72405c653ff8be3bb94131428919b380248e10f1ddb252de\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://979aa0e84f86851125d7ad79d7f974681c91680139e65ae426fee12671f81ca0\",\"dweb:/ipfs/QmVk59WkCeqaUVRBeiCfftVstSXugXgyXMurEeAicAx3du\"]},\"project:/contracts/apps/IDAv1Library.sol\":{\"keccak256\":\"0x6ea8462f8acd24e4f31aa1e0e78df01d6d47279cebf306ed2844114c06c99fca\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3a089417a435c8602e8100ac3365f4e447b1babf1a9ab226d4481fd698928783\",\"dweb:/ipfs/QmSbbrrojn4yZ5BEWd2uNLif6ifeJT1XPuyYp6529kM2RP\"]},\"project:/contracts/gov/SuperfluidGovernanceBase.sol\":{\"keccak256\":\"0x0809d6544bbc2535a8be017b78f134913d3451c2958a3421950df6b57c3499f1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://c726eacb51fe00e96e104d7d4271ca666dbadc0b2452c068d4d31898720c0b97\",\"dweb:/ipfs/QmRXFcCEdcX7pzKuAyQjGpNChRQQQuJw1SG57nGh3KugTR\"]},\"project:/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol\":{\"keccak256\":\"0x5da735cab1cf7114564ec7d81ed35037a56b6f216a60569aef6e65f3aaca5dd8\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://27a2ad0243469f7364d5e5a483493b16e2b57b9b36c24c6de0ea0e2c13465c71\",\"dweb:/ipfs/QmSfHTC7ewk8LA27TrDqojqFjdkkafCoZmWE1V6HEuFqox\"]},\"project:/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol\":{\"keccak256\":\"0x6ef345136a4f7507d08e657ac3f09539353704a2146b8116d9983878d3113d7e\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://360bb0f7e87f787e999c74ddaf2d91dd9e3ed4fc1f9642f4623c5baa4ad28471\",\"dweb:/ipfs/QmfH6a4PtzQQVk6cNAwM6jHLutFVuuW7NANGcWAX1nA4ch\"]},\"project:/contracts/interfaces/superfluid/Definitions.sol\":{\"keccak256\":\"0x199095781e4221b6015d859558da09977f79199f38d342ab4899c2cecdf8cec1\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://9fd3a5a8b16d8517e2af10e20390a9af5adbfa4e783e3a7dd89eb4588db98385\",\"dweb:/ipfs/QmPDtGR43DeMMVsHjUh7FYzMGsFKPpGriRkaahFpN5T5d3\"]},\"project:/contracts/interfaces/superfluid/ISuperAgreement.sol\":{\"keccak256\":\"0xc3a6a907245116bcecc70fe4b207454012e8ce4fa190228fb8bbe39e0b1bc5cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://83c116bdae48685d20e5a27c942111e685ec1ef6334e7ff6f6d9af66edbd8025\",\"dweb:/ipfs/QmTnVuNTaRFiDmkAmDk7NFYdfQTW1kqgBZiY2exC6k8jDx\"]},\"project:/contracts/interfaces/superfluid/ISuperApp.sol\":{\"keccak256\":\"0x42b604992cf67321cc12e8bed16543df0db4eaf125b8c1c82c330ebbeb20c014\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7c18b00caf7b8be7e11f75284fb96263ce48a3984d56f2a91ec44cae4413d2fc\",\"dweb:/ipfs/QmWVzdW9KnkwAVe9g5zRuMoqCf7N89AoBfzzRr8puw5d8a\"]},\"project:/contracts/interfaces/superfluid/ISuperToken.sol\":{\"keccak256\":\"0xcff22ed43df0f34a645e6cbe0d7c5fd08f204d769e9095bc59d7c2fe6d11b7d6\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://944b8c5a37839b40ec8ee1ccfecbaf007808a61ea16c7b1351a7184606772032\",\"dweb:/ipfs/QmbUKZqZtVfqZMKYnQUygE4svatKuN9kT2ibrnxMuWXR7n\"]},\"project:/contracts/interfaces/superfluid/ISuperTokenFactory.sol\":{\"keccak256\":\"0x68a466c978557e47bd7385b1d7d78f1c8fb07462a870efc5a791008e33a4f535\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d109879bdb7f022560a792af2ff481df729bf1b4b8e1831b8022f4d12892d41d\",\"dweb:/ipfs/QmRSWqHq8CP5XWgyV4mJpPxMg33s312s2K5ndHRHVqqZ8n\"]},\"project:/contracts/interfaces/superfluid/ISuperfluid.sol\":{\"keccak256\":\"0xf16efd1ba72322e77e0d936b723c0e71eb14c23e11cf69efae8c7caa407012cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://ff4bb321b72dc3332984346e5b66ad131c6132101658fe6707d7a9d043f981ab\",\"dweb:/ipfs/QmXmVD2mZ3LRb7wQZ2VcrpYhtjm21zUe5hPDDDJA1WXbFz\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidGovernance.sol\":{\"keccak256\":\"0xea33d20751ffea4f4446bc04f6c10194fb4da0803a988586d41d49cf4859731c\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7716b1f5eec0a7ac8780d82de4f0274ecd7059be4eec46c82b0b7adce110f10b\",\"dweb:/ipfs/QmWRQafvdCBsyfDYnevXSav1AAz8uZRRBwh2be5Z3vSfVN\"]},\"project:/contracts/interfaces/superfluid/ISuperfluidToken.sol\":{\"keccak256\":\"0x3eec5a3bf337cd319c1918fd1b16f350cf5f6850ac71f6859066fbf86e734ff4\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://cda19a2f5ca18e79c1e2300c8efac84c718df76c4fb313f59f84264a4c6b398a\",\"dweb:/ipfs/QmfQiwgDH5Q64w5ufBnDzVaeWv6WCZ6fLTrYu1FSYfBGhq\"]},\"project:/contracts/interfaces/tokens/ERC20WithTokenInfo.sol\":{\"keccak256\":\"0x66708dae3fcd06e6fc0a46f2959fc2d1e6b9361f28598337339d26af8eb8c0f9\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://77b80718cec21b81ef190c19fb9fbe73913a95c71f7e6715f671bbe8a224dafc\",\"dweb:/ipfs/QmUdsc6DF2Bgih5VZm7sfaECjhGmwE7tAx8pMkzGQgVKQw\"]},\"project:/contracts/interfaces/tokens/TokenInfo.sol\":{\"keccak256\":\"0x70e573644a0ff271c0ccef526809e9d9ab4950ec58755ca84e833cde3b8f3df0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://aea3709687cc37ba625f4cc882fbdb149a7bf5be5afe2b030203c8719641a77b\",\"dweb:/ipfs/QmVpvfR6ZheE5wNUK9CobaVBgVvEnEPkvjWF9cfwyZr7eQ\"]},\"project:/contracts/interfaces/utils/IRelayRecipient.sol\":{\"keccak256\":\"0x3f531ce91c165b7581483798cc920d38828d509df6cb9d427a10c922b4627790\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://c4b872da16464ec4a06422b2bf0e95594f0458cca02993cefdbc76b5f7b7a974\",\"dweb:/ipfs/Qma9nVTfu6kbLQ6y58ZnDRXX8YzKiyASWeCsdY8ue6rpdT\"]},\"project:/contracts/libs/BaseRelayRecipient.sol\":{\"keccak256\":\"0x80e88b2b66bfac6f42f06484203dbfceec079df45e13e382b8b924024e8ab0d0\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://e5bb938099012d66c0a9a6313c03d440f122b4b5cb2c845a2364a96b7d12e50a\",\"dweb:/ipfs/QmVZ3P4yWBFnLgJi5gsVTTtNMd5iB3NPHZ4J1DMBu6ys8x\"]},\"project:/contracts/libs/CallUtils.sol\":{\"keccak256\":\"0x837d399e50cda4e7dc97596419fbd14dcfa6c6d9a89d58edc299b6ff8e123ae8\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://4ea55c80d32200532641dc18acdbf9952be1b96dbc2788f73b845daa0e908c82\",\"dweb:/ipfs/QmdkjYBjq6r4Bft8aSouUTWtQZ3GBSiZ8EgES2ued3i25C\"]},\"project:/contracts/libs/ERC777Helper.sol\":{\"keccak256\":\"0x44aa72d63edfd7ec2ab69796dbe2d5c7113a798dc7189b7d4878267b1fbf1f73\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://b9da702f23af6dbc05c9a4b0fffff11fb707ebebf34983d35299c9e76f624e45\",\"dweb:/ipfs/QmdReo4yGy97CHLJXSFEFcqSHrbSzoMHp4yYuJK3KBHVDm\"]},\"project:/contracts/libs/EventsEmitter.sol\":{\"keccak256\":\"0x3e67a65d0a3f7808567e60be52e280999ed7ef3332bcba4aa23ea083553422bb\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://6a5b5bac9e108f3e12e3246d92b96c8fea259ebe8ba88acdff1034c5650441a3\",\"dweb:/ipfs/QmVUEMDpp79NaqEhZjLzdxWoLoBVAEdieuJA5pagYeH7Gd\"]},\"project:/contracts/libs/FixedSizeData.sol\":{\"keccak256\":\"0xdb6303086a323e98b5efa5e8d344d531c371ae707e1df4044ca90f3dca111b01\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://af01ce1e0ed1992f543293790d58fa97718a1aa5b85923eaa42455d24caa7906\",\"dweb:/ipfs/QmVKMv8BEjkFTcsHqvviB8pTsKbb4tP55pFLvF3vqGZtSH\"]},\"project:/contracts/libs/SlotsBitmapLibrary.sol\":{\"keccak256\":\"0xa66bd7f04a6d0c6dd821270dc4a07b8c72edc75289c95a7883d30506d44f4a5a\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://565c45111409fa46cb9630de78b8387ac41ac74877d4982e0812aa862046344a\",\"dweb:/ipfs/QmZqBiB1RzjxVLCWUmbjsZE6vNU86qNsQALAeRz96powtR\"]},\"project:/contracts/superfluid/FullUpgradableSuperTokenProxy.sol\":{\"keccak256\":\"0xd8762c876977d3417650ef425eb3829a2da7e54b24e0bfab265dee36dbe5923a\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://3e8ba627d3732d4794f4bbfa615e648c1f7385668ed7dc66c52e167bd5e46204\",\"dweb:/ipfs/QmVSw4WYnJpr7B1XEZgxNdarRDMDzfm1T43e8HZy4Sgg2m\"]},\"project:/contracts/superfluid/SuperToken.sol\":{\"keccak256\":\"0x9f5f13f68ab31fbfad3d9334501015a74c0b91e5b952c5d45d0624c179560278\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://7488b2b5f00a7c3e3136b3a46231fe0e5ce14d26f755d3bcf4eda75ca77556c2\",\"dweb:/ipfs/QmTgQ1bE7r1gA9TThTYKwdyeqtHcuU9cC5AVJgXtzDnosE\"]},\"project:/contracts/superfluid/SuperTokenFactory.sol\":{\"keccak256\":\"0x2ea39350cfe827ac930de94319d4b140d2c51be93a7e23b4849735d2e4a41735\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://0a84284448173d539ddb494d449305651aca6ba80b60982f807310c9c477b930\",\"dweb:/ipfs/QmVcBS3Tjf7DgZpDBndzCcnEuzR9cW5ci5eDpWSgd4rLcY\"]},\"project:/contracts/superfluid/Superfluid.sol\":{\"keccak256\":\"0x96ef07f834082d0cfd3e6d86a839a1edf97c215d55a7ba83070230c8dbb21b7a\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://642ea67f647d70bbed672609bed2064db11cf5294d6056b087aceac7859a5d3d\",\"dweb:/ipfs/QmPJGKoGwpNp9r9RrEGQRuZe4hsKWzqwdeLo8QMhHbvNJB\"]},\"project:/contracts/superfluid/SuperfluidToken.sol\":{\"keccak256\":\"0x011cf97f745ffbe4ba60da5c0752c369ab078787db7748ec01db45dde4cf77b3\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://8e5d4c6d27dcaea37545661bdb71caaa70580ff487ca6726f5a91f8e28dc4b9c\",\"dweb:/ipfs/QmYVBuQBREPBzVWonRZ6pqXYtjnmH1nxoDCNyEoVQEkX7V\"]},\"project:/contracts/upgradability/UUPSProxiable.sol\":{\"keccak256\":\"0xabe3beb46dff1433d7ae61fe470fc347967d5a5b09d48fa45f35ddb2735d61f2\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://ad0fdb3210d3b0ed62886decdeef62b43bdbdd59bd55fc5ea3d636e97fbfb65d\",\"dweb:/ipfs/QmPjd6ehqgoiHkrf2g2h9AZRxKakqxsGx1GTiy5DSwfYJg\"]},\"project:/contracts/upgradability/UUPSProxy.sol\":{\"keccak256\":\"0x2c651f24af9c4405c20e0a14907f76f8a0d81ff751c89ebbce48ae7aceab5f58\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://dbf209416f8af6df9949194e682a902c4cbce37520a940c5bd123d5ffb1b7b56\",\"dweb:/ipfs/QmWy7TuYgtpRddTJYCubfzthA7ex7rPrxbLuzcG6bbw7mL\"]},\"project:/contracts/upgradability/UUPSUtils.sol\":{\"keccak256\":\"0xe624225773a60f62c7a0687afb0536ba19a17e4e5605ae71e8af77a0287aca59\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://4294e5eb5b194477bca3b8ca04ca92a6fe72dd6cf8da8f0d942a4a86c41c1c7f\",\"dweb:/ipfs/QmdfPXZxJPaBjKNfC8joTcvEhWammJHzRACB1S18sFYfd7\"]},\"project:/contracts/utils/SuperfluidFrameworkDeployer.sol\":{\"keccak256\":\"0x80f96f7edcb0a6ed27ec54e590c933fe78581eb52f9f03efd46ae1cee59db4cf\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://2422b922c1e886e6f03b305d30fdd295bdaf249e6b56930069fe095de6c8911d\",\"dweb:/ipfs/QmZhDF1n3o6JzHhcZB8yGGjcgQmSnhA9HJxQW1fiWzayNE\"]},\"project:/contracts/utils/TestGovernance.sol\":{\"keccak256\":\"0x12bd3542eae63c908d37179089da815101cde431723ca93006c0fe94440ad678\",\"license\":\"AGPLv3\",\"urls\":[\"bzz-raw://d91a96c1d9f1126fb2b1e9898eb28787bfbfbda82092e189afeea6813464c0bb\",\"dweb:/ipfs/QmT8s45UbRMYWkf8cG7KUi128ZpqAfbGxcj1KaFXWw9qs5\"]}},\"version\":1}",
114
+ "bytecode": "0x60806040523480156200001157600080fd5b5060405162000020906200047b565b604051809103906000f0801580156200003d573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b039290921691909117815560405160019190620000709062000489565b911515825215156020820152604001604051809103906000f0801580156200009c573d6000803e3d6000fd5b50600180546001600160a01b0319166001600160a01b0392831690811790915560005460405163189acdbd60e31b8152921660048301529063c4d66de890602401600060405180830381600087803b158015620000f857600080fd5b505af11580156200010d573d6000803e3d6000fd5b50600092508291506200011d9050565b60405190808252806020026020018201604052801562000147578160200160208202803683370190505b50600054600154604051630b520f0360e31b81529293506001600160a01b0391821692635a907818926200018d9216906045906138409061070890889060040162000515565b600060405180830381600087803b158015620001a857600080fd5b505af1158015620001bd573d6000803e3d6000fd5b50506001546040516001600160a01b039091169250620001de915062000497565b6001600160a01b039091168152602001604051809103906000f0801580156200020b573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b0392831690811790915560005460015460405163cadf8f8560e01b8152908416600482015260248101929092529091169063cadf8f8590604401600060405180830381600087803b1580156200027657600080fd5b505af11580156200028b573d6000803e3d6000fd5b50506001546040516001600160a01b039091169250620002ac9150620004a5565b6001600160a01b039091168152602001604051809103906000f080158015620002d9573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b0392831690811790915560005460015460405163cadf8f8560e01b8152908416600482015260248101929092529091169063cadf8f8590604401600060405180830381600087803b1580156200034457600080fd5b505af115801562000359573d6000803e3d6000fd5b5050505060006040516200036d90620004b3565b604051809103906000f0801580156200038a573d6000803e3d6000fd5b506001546040519192506001600160a01b0316908290620003ab90620004c1565b6001600160a01b03928316815291166020820152604001604051809103906000f080158015620003df573d6000803e3d6000fd5b50600480546001600160a01b0319166001600160a01b039283169081179091556000805460015460408051848152602081019182905263109e50a960e21b9091529185169463427942a4946200043f94929091169290602482016200055c565b600060405180830381600087803b1580156200045a57600080fd5b505af11580156200046f573d6000803e3d6000fd5b5050505050506200059c565b6119968062002b3283390190565b61564a80620044c883390190565b61538b8062009b1283390190565b61543c806200ee9d83390190565b614ada80620142d983390190565b6113668062018db383390190565b600081518084526020808501945080840160005b838110156200050a5781516001600160a01b031687529582019590820190600101620004e3565b509495945050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200055190830184620004cf565b979650505050505050565b600060018060a01b038087168352808616602084015260806040840152620005886080840186620004cf565b915080841660608401525095945050505050565b61258680620005ac6000396000f3fe60806040523480156200001157600080fd5b50600436106200003a5760003560e01c8063845531a4146200003f578063dfa98ad5146200007b575b600080fd5b620000566200005036600462000539565b62000160565b604080516001600160a01b039384168152929091166020830152015b60405180910390f35b620001516040805160e08101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810191909152506040805160e0810182526000546001600160a01b03908116825260015481166020808401829052600254831684860181905285518087018752838152808301919091526060850152600354831660808501819052855180870190965291855284015260a082019290925260045490911660c082015290565b604051620000729190620005ac565b600080858585856040516200017590620004df565b62000184949392919062000678565b604051809103906000f080158015620001a1573d6000803e3d6000fd5b509150816001600160a01b0316632f2ff15d836001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002189190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156200025857600080fd5b505af11580156200026d573d6000803e3d6000fd5b50505050816001600160a01b0316632f2ff15d836001600160a01b031663d53913936040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e59190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156200032557600080fd5b505af11580156200033a573d6000803e3d6000fd5b50505050816001600160a01b0316632f2ff15d836001600160a01b031663e63ab1e96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b29190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b158015620003f257600080fd5b505af115801562000407573d6000803e3d6000fd5b50506004546040516001600160a01b03909116925063431f1481915084906001906200043a908b908b90602001620006c8565b60405160208183030381529060405288886040516020016200045e929190620006c8565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016200048e94939291906200072e565b6020604051808303816000875af1158015620004ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d491906200078b565b905094509492505050565b611d9380620007be83390190565b60008083601f8401126200050057600080fd5b50813567ffffffffffffffff8111156200051957600080fd5b6020830191508360208285010111156200053257600080fd5b9250929050565b600080600080604085870312156200055057600080fd5b843567ffffffffffffffff808211156200056957600080fd5b6200057788838901620004ed565b909650945060208701359150808211156200059157600080fd5b50620005a087828801620004ed565b95989497509550505050565b81516001600160a01b03908116825260208084015182168184015260408085015183169084015260608085015180518416918501919091520151166080808301919091528201516101208201906200060f60a08401826001600160a01b03169052565b5060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c08301516001600160a01b0381166101008401525092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006200068e6040830186886200064f565b8281036020840152620006a38185876200064f565b979650505050505050565b600060208284031215620006c157600080fd5b5051919050565b81838237600f60fb1b9101908152600101919050565b6000815180845260005b818110156200070657602081850181015186830182015201620006e8565b8181111562000719576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03851681526000600385106200075b57634e487b7160e01b600052602160045260246000fd5b84602083015260806040830152620007776080830185620006de565b8281036060840152620006a38185620006de565b6000602082840312156200079e57600080fd5b81516001600160a01b0381168114620007b657600080fd5b939250505056fe60806040523480156200001157600080fd5b5060405162001d9338038062001d938339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045b565b620000e98282620000ed565b5050565b6200010482826200013060201b6200096e1760201c565b60008281526001602090815260409091206200012b918390620009f2620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b6020821081036200045557634e487b7160e01b600052602260045260246000fd5b50919050565b611928806200046b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e91461042257600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115cf565b610449565b60405190151581526020015b60405180910390f35b6101f9610474565b6040516101e89190611625565b6101dc610214366004611674565b610506565b6004545b6040519081526020016101e8565b6101dc61023936600461169e565b61051e565b61021d61024c3660046116da565b60009081526020819052604090206001015490565b61027461026f3660046116f3565b610542565b005b604051601281526020016101e8565b6102746102933660046116f3565b61056d565b6101dc6102a6366004611674565b6105f0565b61027461062f565b6102746102c1366004611674565b6106d5565b6102746102d43660046116da565b610774565b60075460ff166101dc565b61021d6102f236600461171f565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611674565b610781565b610274610796565b61033b61033636600461173a565b61083a565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116f3565b610859565b6101f9610882565b61021d600081565b6101dc610384366004611674565b610891565b6101dc610397366004611674565b610923565b61021d6103aa3660046116da565b610931565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116f3565b610948565b61021d6103f736600461175c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b148061046e575061046e82610a07565b92915050565b60606005805461048390611786565b80601f01602080910402602001604051908101604052809291908181526020018280546104af90611786565b80156104fc5780601f106104d1576101008083540402835291602001916104fc565b820191906000526020600020905b8154815290600101906020018083116104df57829003601f168201915b5050505050905090565b600033610514818585610a3c565b5060019392505050565b60003361052c858285610b60565b610537858585610bf2565b506001949350505050565b60008281526020819052604090206001015461055e8133610dcb565b6105688383610e2f565b505050565b6001600160a01b03811633146105e25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105ec8282610e51565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610514908290869061062a9087906117d6565b610a3c565b6106597f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610859565b6106cb5760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105d9565b6106d3610e73565b565b6106ff7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610859565b61076a5760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105d9565b6105ec8282610f06565b61077e3382610ff1565b50565b61078c823383610b60565b6105ec8282610ff1565b6107c07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610859565b6108325760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105d9565b6106d361114b565b600082815260016020526040812061085290836111c6565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461048390611786565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190838110156109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d9565b6105378286868403610a3c565b600033610514818585610bf2565b600081815260016020526040812061046e906111d2565b6000828152602081905260409020600101546109648133610dcb565b6105688383610e51565b6109788282610859565b6105ec576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556109ae3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610852836001600160a01b0384166111dc565b60006001600160e01b03198216637965db0b60e01b148061046e57506301ffc9a760e01b6001600160e01b031983161461046e565b6001600160a01b038316610a9e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d9565b6001600160a01b038216610aff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220546000198114610bec5781811015610bdf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d9565b610bec8484848403610a3c565b50505050565b6001600160a01b038316610c565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d9565b6001600160a01b038216610cb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d9565b610cc383838361122b565b6001600160a01b03831660009081526002602052604090205481811015610d3b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d9565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d729084906117d6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dbe91815260200190565b60405180910390a3610bec565b610dd58282610859565b6105ec57610ded816001600160a01b03166014611236565b610df8836020611236565b604051602001610e099291906117ee565b60408051601f198184030181529082905262461bcd60e51b82526105d991600401611625565b610e39828261096e565b600082815260016020526040902061056890826109f2565b610e5b82826113d2565b60008281526001602052604090206105689082611437565b60075460ff16610ebc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d9565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610f5c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d9565b610f686000838361122b565b8060046000828254610f7a91906117d6565b90915550506001600160a01b03821660009081526002602052604081208054839290610fa79084906117d6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166110515760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d9565b61105d8260008361122b565b6001600160a01b038216600090815260026020526040902054818110156110d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105d9565b6001600160a01b0383166000908152600260205260408120838303905560048054849290611100908490611863565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60075460ff16156111915760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ee93390565b6000610852838361144c565b600061046e825490565b60008181526001830160205260408120546112235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561046e565b50600061046e565b610568838383611476565b6060600061124583600261187a565b6112509060026117d6565b67ffffffffffffffff81111561126857611268611899565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600360fc1b816000815181106112ad576112ad6118af565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112dc576112dc6118af565b60200101906001600160f81b031916908160001a905350600061130084600261187a565b61130b9060016117d6565b90505b6001811115611383576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061133f5761133f6118af565b1a60f81b828281518110611355576113556118af565b60200101906001600160f81b031916908160001a90535060049490941c9361137c816118c5565b905061130e565b5083156108525760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d9565b6113dc8282610859565b156105ec576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610852836001600160a01b0384166114dc565b6000826000018281548110611463576114636118af565b9060005260206000200154905092915050565b60075460ff16156105685760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105d9565b600081815260018301602052604081205480156115c5576000611500600183611863565b855490915060009061151490600190611863565b9050818114611579576000866000018281548110611534576115346118af565b9060005260206000200154905080876000018481548110611557576115576118af565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061158a5761158a6118dc565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061046e565b600091505061046e565b6000602082840312156115e157600080fd5b81356001600160e01b03198116811461085257600080fd5b60005b838110156116145781810151838201526020016115fc565b83811115610bec5750506000910152565b60208152600082518060208401526116448160408501602087016115f9565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461166f57600080fd5b919050565b6000806040838503121561168757600080fd5b61169083611658565b946020939093013593505050565b6000806000606084860312156116b357600080fd5b6116bc84611658565b92506116ca60208501611658565b9150604084013590509250925092565b6000602082840312156116ec57600080fd5b5035919050565b6000806040838503121561170657600080fd5b8235915061171660208401611658565b90509250929050565b60006020828403121561173157600080fd5b61085282611658565b6000806040838503121561174d57600080fd5b50508035926020909101359150565b6000806040838503121561176f57600080fd5b61177883611658565b915061171660208401611658565b600181811c9082168061179a57607f821691505b6020821081036117ba57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117e9576117e96117c0565b500190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516118268160178501602088016115f9565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118578160288401602088016115f9565b01602801949350505050565b600082821015611875576118756117c0565b500390565b6000816000190483118215151615611894576118946117c0565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816118d4576118d46117c0565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212201cda3ee43ced36b00650ddf1bf60dda0947b890a6d7a3b65c628d221608c954d64736f6c634300080e0033a264697066735822122056c3ade6a74b2231fc74e683519e3d8a50a6dae135828be1ef211596cdb6848164736f6c634300080e0033608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6119188061007e6000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80637f0558e4116101045780638da5cb5b116100a2578063e447cc1d11610071578063e447cc1d1461040c578063f047a2d91461041f578063f2fde38b14610432578063f79a8e631461044557600080fd5b80638da5cb5b146103c25780638ecbd87b146103d3578063ab846f1a146103e6578063cadf8f85146103f957600080fd5b80638a7ff2f7116100de5780638a7ff2f7146103665780638abe04e9146103795780638b93b3f51461039c5780638ce93379146103af57600080fd5b80637f0558e41461032457806380f70cba146103375780638369a0f11461035857600080fd5b8063427942a41161017c578063640b6cc91161014b578063640b6cc9146102e3578063715018a6146102f657806378707cb8146102fe5780637dce4f811461031157600080fd5b8063427942a41461028257806344864b251461029557806345228235146102a85780635a907818146102d057600080fd5b806321964473116101b8578063219644731461023657806325c955c314610249578063325529081461025c57806342148deb1461026f57600080fd5b806286d555146101de57806301a06b97146101f357806319df62ab14610206575b600080fd5b6101f16101ec36600461144d565b610458565b005b6101f1610201366004611493565b610573565b610219610214366004611493565b6105f2565b6040516001600160a01b0390911681526020015b60405180910390f35b6101f1610244366004611518565b610626565b6101f1610257366004611493565b6106ef565b6101f161026a3660046115ab565b610703565b6101f161027d3660046115f6565b61077f565b6101f161029036600461164b565b610834565b6101f16102a3366004611493565b6109c7565b6102bb6102b6366004611493565b610a32565b6040805192835260208301919091520161022d565b6101f16102de3660046116de565b610a7a565b6101f16102f13660046117de565b610b31565b6101f1610b3c565b6101f161030c36600461181f565b610ba2565b6101f161031f3660046115ab565b610bae565b6101f16103323660046117de565b610c1e565b61034a6103453660046117de565b610c94565b60405190815260200161022d565b6102196103453660046117de565b61034a610374366004611493565b610d05565b61038c610387366004611493565b610d32565b604051901515815260200161022d565b6101f16103aa366004611493565b610d4d565b6101f16103bd3660046115ab565b610dbd565b6000546001600160a01b0316610219565b6101f16103e1366004611493565b610e1c565b6101f16103f43660046115ab565b610e90565b6101f1610407366004611493565b610eec565b6101f161041a366004611493565b610f24565b61038c61042d3660046115ab565b610f98565b6101f1610440366004611872565b610fb3565b6101f161045336600461144d565b61107e565b808211801561046a575063ffffffff82105b8015610479575063ffffffff81105b6104e65760405162461bcd60e51b815260206004820152603360248201527f5346476f763a20496e76616c6964206c69717569646174696f6e506572696f64604482015272081bdc881c185d1c9a58da585b94195c9a5bd9606a1b60648201526084015b60405180910390fd5b6040805160018152602081018490529081018290526001600160a01b0380851691908616907f60a59221512cd8cbfb226200f7ba6f20dc4b38a3cf04993d17ea4e56d26aa1869060600160405180910390a3602082901b811761056b85857fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f7884611086565b505b50505050565b604080516000808252602082018190528183015290516001600160a01b0383811692908516917f60a59221512cd8cbfb226200f7ba6f20dc4b38a3cf04993d17ea4e56d26aa1869181900360600190a36105ee82827fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78611139565b5050565b600061061f83837f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09610c94565b9392505050565b8281146106835760405162461bcd60e51b815260206004820152602560248201527f5346476f763a2061727261797320617265206e6f74207468652073616d65206c6044820152640cadccee8d60db1b60648201526084016104dd565b60005b818110156106e7576106d7868686848181106106a4576106a461188f565b90506020020160208101906106b99190611872565b8585858181106106cb576106cb61188f565b90506020020135610c1e565b6106e0816118a5565b9050610686565b505050505050565b6105ee8260006106fe846111fa565b611139565b60408051600181526001600160a01b03838116602083015280851692908616917f14e12f219a4f9023456dc7832e10119ab768b8ccefc8cb79bc6de0419781eeeb910160405180910390a361077a83837f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d098461128d565b505050565b8261078981611342565b60005b8281101561056b57846001600160a01b031663787afde78585848181106107b5576107b561188f565b90506020020160208101906107ca9190611872565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050508061082d906118a5565b905061078c565b8461083e81611342565b6001600160a01b038516156108a9576040516311a5465560e21b81526001600160a01b038681166004830152871690634695195490602401600060405180830381600087803b15801561089057600080fd5b505af11580156108a4573d6000803e3d6000fd5b505050505b60005b8381101561095457866001600160a01b03166306cecba88686848181106108d5576108d561188f565b90506020020160208101906108ea9190611872565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b15801561092b57600080fd5b505af115801561093f573d6000803e3d6000fd5b505050508061094d906118a5565b90506108ac565b506001600160a01b038216156106e7576040516354fbc49360e01b81526001600160a01b0383811660048301528716906354fbc49390602401600060405180830381600087803b1580156109a757600080fd5b505af11580156109bb573d6000803e3d6000fd5b50505050505050505050565b816109d181611342565b604051631ca0c40360e21b81526001600160a01b038381166004830152841690637283100c906024015b600060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b50505050505050565b6000806000610a6285857fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f78610c94565b63ffffffff602082901c811697911695509350505050565b6001600160a01b038516610a9057610a906118cc565b6002546001600160a01b031615610aa957610aa96118cc565b600280546001600160a01b0319166001600160a01b038716908117909155610ad390600086610703565b610ae08560008585610458565b60005b81518110156106e7576002548251610b21916001600160a01b031690600090859085908110610b1457610b1461188f565b6020026020010151610e90565b610b2a816118a5565b9050610ae3565b61077a838383611139565b6000546001600160a01b03163314610b965760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dd565b610ba06000611379565b565b61056d8484848461128d565b610bc38383610bbc846113c9565b6000611086565b60408051600181526001600160a01b038381166020830152600092820192909252818416918516907f168da2dec91b2e06e30d49955479383e76f71ba185807a8a5b75e2ed563e1d27906060015b60405180910390a3505050565b6040805160018152602081018390526001600160a01b0380851692908616917fc055c4a3853372c08a98805545379133f00f7261d956b9197729d67f37a82a53910160405180910390a361077a83837feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc484611086565b6001600160a01b03808416600090815260016020908152604080832093861683529281528282208483529052908120805460ff16610cf957506001600160a01b0384166000908152600160209081526040808320838052825280832085845290915290205b60010154949350505050565b600061061f83837feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4610c94565b6000610d43836000610345856111fa565b6001149392505050565b803b80610da65760405162461bcd60e51b815260206004820152602160248201527f5346476f763a20666163746f7279206d757374206265206120636f6e747261636044820152601d60fa1b60648201526084016104dd565b506105ee826000610db6846111fa565b6001611086565b6040805160008082526001600160a01b03848116602084015292820152818416918516907f168da2dec91b2e06e30d49955479383e76f71ba185807a8a5b75e2ed563e1d279060600160405180910390a361077a83836106fe846113c9565b60408051600080825260208201526001600160a01b0380841692908516917fc055c4a3853372c08a98805545379133f00f7261d956b9197729d67f37a82a53910160405180910390a36105ee82827feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc4611139565b610e9e8383610db6846113c9565b6040805160018082526001600160a01b03848116602084015292820152818416918516907f168da2dec91b2e06e30d49955479383e76f71ba185807a8a5b75e2ed563e1d2790606001610c11565b81610ef681611342565b6040516315a024e160e01b81526001600160a01b0383811660048301528416906315a024e1906024016109fb565b60408051600080825260208201526001600160a01b0380841692908516917f14e12f219a4f9023456dc7832e10119ab768b8ccefc8cb79bc6de0419781eeeb910160405180910390a36105ee82827f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09611139565b6000610fa88484610345856113c9565b600114949350505050565b6000546001600160a01b0316331461100d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104dd565b6001600160a01b0381166110725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104dd565b61107b81611379565b50565b61056d848484845b8361109081611342565b60408051848152600160208201529081018390526001600160a01b0380861691908716907f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e3909060600160405180910390a350604080518082018252600180825260208083019485526001600160a01b039788166000908152828252848120979098168852958652828720948752939094529093209151825460ff19169015151782559151910155565b8261114381611342565b826001600160a01b0316846001600160a01b03167f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e3908460008060405161119c939291909283529015156020830152604082015260600190565b60405180910390a350604080518082018252600080825260208083018281526001600160a01b03978816835260018083528584209790981683529581528382209482529390935291209051815460ff19169015151781559051910155565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b8361129781611342565b60408051848152600160208201526001600160a01b03848116828401529151868316928816917f33afe19ae6902b933890ff48190fabdc4cf7f5ab499be9c4d9d98e3b4562e390919081900360600190a35060408051808201825260018082526001600160a01b03938416602080840191825297851660009081528289528481209790951685529587528284209484529390955290209251835460ff19169015151783559051910155565b6002546001600160a01b0382811691161461135f5761135f6118cc565b6000546001600160a01b0316331461107b5761107b6118cc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c001611270565b6001600160a01b038116811461107b57600080fd5b6000806000806080858703121561146357600080fd5b843561146e81611438565b9350602085013561147e81611438565b93969395505050506040820135916060013590565b600080604083850312156114a657600080fd5b82356114b181611438565b915060208301356114c181611438565b809150509250929050565b60008083601f8401126114de57600080fd5b50813567ffffffffffffffff8111156114f657600080fd5b6020830191508360208260051b850101111561151157600080fd5b9250929050565b60008060008060006060868803121561153057600080fd5b853561153b81611438565b9450602086013567ffffffffffffffff8082111561155857600080fd5b61156489838a016114cc565b9096509450604088013591508082111561157d57600080fd5b5061158a888289016114cc565b969995985093965092949392505050565b80356115a681611438565b919050565b6000806000606084860312156115c057600080fd5b83356115cb81611438565b925060208401356115db81611438565b915060408401356115eb81611438565b809150509250925092565b60008060006040848603121561160b57600080fd5b833561161681611438565b9250602084013567ffffffffffffffff81111561163257600080fd5b61163e868287016114cc565b9497909650939450505050565b60008060008060006080868803121561166357600080fd5b853561166e81611438565b9450602086013561167e81611438565b9350604086013567ffffffffffffffff81111561169a57600080fd5b6116a6888289016114cc565b90945092505060608601356116ba81611438565b809150509295509295909350565b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156116f657600080fd5b853561170181611438565b945060208681013561171281611438565b94506040870135935060608701359250608087013567ffffffffffffffff8082111561173d57600080fd5b818901915089601f83011261175157600080fd5b813581811115611763576117636116c8565b8060051b604051601f19603f83011681018181108582111715611788576117886116c8565b60405291825284820192508381018501918c8311156117a657600080fd5b938501935b828510156117cb576117bc8561159b565b845293850193928501926117ab565b8096505050505050509295509295909350565b6000806000606084860312156117f357600080fd5b83356117fe81611438565b9250602084013561180e81611438565b929592945050506040919091013590565b6000806000806080858703121561183557600080fd5b843561184081611438565b9350602085013561185081611438565b925060408501359150606085013561186781611438565b939692955090935050565b60006020828403121561188457600080fd5b813561061f81611438565b634e487b7160e01b600052603260045260246000fd5b6000600182016118c557634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052600160045260246000fdfea2646970667358221220b130387291aea4e7b4f5f5ae4b5552cbccde57b4677afd7ec039e1639777769364736f6c634300080e0033610100604052600160c052622dc6c060e0523480156200001e57600080fd5b506040516200564a3803806200564a833981016040819052620000419162000068565b901515608052151560a052620000a0565b805180151581146200006357600080fd5b919050565b600080604083850312156200007c57600080fd5b620000878362000052565b9150620000976020840162000052565b90509250929050565b60805160a05160c05160e05161551c6200012e6000396000818161037101528181612cb80152612d460152600081816107020152612af501526000818161058501528181611f390152818161254201526129720152600081816106b9015281816107aa01528181610bd0015281816112a60152818161141d0152818161157c0152612875015261551c6000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c806374041e0211610167578063bbe4fd50116100ce578063cd312ec411610087578063cd312ec4146106b4578063e8dccb7d146106db578063f213bb02146106fd578063f2e55caf14610724578063f37330521461072c578063f9f522f41461073f57600080fd5b8063bbe4fd5014610642578063bced3ddc14610648578063bd1c448b1461065b578063bf4287341461066e578063c4d66de814610681578063c56a069d1461069457600080fd5b8063a5dbbbcd11610120578063a5dbbbcd146105a7578063ad3915c8146105ba578063b6d200de146105cd578063b724211e146105e0578063ba48b5f8146105f3578063bb84cfa11461060657600080fd5b806374041e0214610521578063768fabb014610534578063787afde7146105475780638ca484841461055a578063989b0c3e1461056d5780639d297e301461058057600080fd5b8063469519541161020b578063572b6c05116101c4578063572b6c05146104b1578063670e77e3146104c45780636ad3ca7d146104d75780636b4f3335146104ea5780637283100c146104fd578063731aed6e1461051057600080fd5b80634695195414610422578063486ff0cd1461043557806350d75d251461045357806352d1902d1461045b57806354fbc4931461048b57806357121e0c1461049e57600080fd5b8063289b3c0d1161025d578063289b3c0d1461034157806333d608f11461036c57806339255d5b146103ab5780633ca3ad4e146103be5780633f6c923a146103e15780634329d2931461040157600080fd5b806306cecba8146102a55780630792f20a146102ba57806313349046146102e357806315a024e1146103085780631e6d0a841461031b5780631e855cf31461032e575b600080fd5b6102b86102b3366004614283565b61076f565b005b6102cd6102c83660046142e8565b61094c565b6040516102da9190614390565b60405180910390f35b6102f66102f1366004614283565b610a44565b60405160ff90911681526020016102da565b6102b8610316366004614283565b610a67565b6102cd6103293660046143b1565b610d33565b6102cd61033c366004614532565b610fa1565b6000546201000090046001600160a01b03165b6040516001600160a01b0390911681526020016102da565b6103937f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160401b0390911681526020016102da565b6102cd6103b9366004614581565b610fb5565b6103d16103cc366004614283565b610fcb565b60405190151581526020016102da565b6103f46103ef3660046145f6565b610fe8565b6040516102da919061462a565b61041461040f36600461470b565b610ff9565b6040516102da9291906147b7565b6102b8610430366004614283565b611274565b604080518082019091526002815261763160f01b60208201526102cd565b6103546113ac565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba745b6040519081526020016102da565b6102b8610499366004614283565b6113db565b6102b86104ac366004614283565b61165c565b6103d16104bf366004614283565b6117b2565b6102b86104d23660046147dc565b61183c565b6102b86104e53660046147dc565b61184d565b6103d16104f8366004614283565b611857565b6102b861050b366004614283565b61187b565b6003546001600160a01b0316610354565b6102cd61052f3660046143b1565b611922565b6102cd6105423660046148f5565b611a9c565b6102b8610555366004614283565b611c54565b6103d1610568366004614283565b611d96565b6102cd61057b366004614970565b611e5b565b6103d17f000000000000000000000000000000000000000000000000000000000000000081565b61047d6105b53660046149bb565b611eee565b6102b86105c83660046149dd565b611f37565b6103546105db3660046149dd565b611fc2565b6102cd6105ee3660046149f6565b612028565b6102cd610601366004614a52565b6120e8565b6103d1610614366004614ad4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b4261047d565b61047d6106563660046149bb565b6124b4565b6102b8610669366004614b0d565b6124fc565b6103d161067c366004614b58565b612651565b6102b861068f366004614283565b612692565b6106a76106a23660046149dd565b61276e565b6040516102da9190614b99565b6103d17f000000000000000000000000000000000000000000000000000000000000000081565b6103d16106e93660046149dd565b600090815260026020526040902054151590565b61047d7f000000000000000000000000000000000000000000000000000000000000000081565b610354612858565b6102b861073a366004614be6565b612920565b61075261074d366004614283565b612a82565b6040805193151584529115156020840152908201526060016102da565b6000546201000090046001600160a01b031633146107a85760405162461bcd60e51b815260040161079f90614c12565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000156107e65760405162461bcd60e51b815260040161079f90614c49565b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610826573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084a9190614c75565b60008181526002602052604081205491925081900361087b5760405162461bcd60e51b815260040161079f90614c8e565b600060016108898184614ce6565b8154811061089957610899614cfd565b6000918252602090912001546040516311a5465560e21b81526001600160a01b03868116600483015290911691508190634695195490602401600060405180830381600087803b1580156108ec57600080fd5b505af1158015610900573d6000803e3d6000fd5b5050604080518681526001600160a01b03881660208201527f9279aa773f2b588996032d8de89911555039f28b13a11a7c17074330bc082d9a935001905060405180910390a150505050565b606061095733611d96565b6109735760405162461bcd60e51b815260040161079f90614d13565b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109b59250839150612ad19050565b6109c1576109c1614d56565b6000610a0287878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b9050848160e00151610a149190614d6c565b60e0820152610100810151610a2a908590614d84565b610100820152610a3981612af1565b979650505050505050565b6001600160a01b03811660009081526004602052604081205460ff165b92915050565b6000546201000090046001600160a01b03163314610a975760405162461bcd60e51b815260040161079f90614c12565b6000816001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afb9190614c75565b60008181526002602052604090205490915015610b695760405162461bcd60e51b815260206004820152602660248201527f53463a2061677265656d656e7420636c61737320616c726561647920726567696044820152651cdd195c995960d21b606482015260840161079f565b60015461010011610bcc5760405162461bcd60e51b815260206004820152602760248201527f53463a20737570706f727420757020746f203235362061677265656d656e7420604482015266636c617373657360c81b606482015260840161079f565b60007f0000000000000000000000000000000000000000000000000000000000000000610c86576000604051610c0190614206565b604051809103906000f080158015610c1d573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03868116600483015291925090821690634a0687ef90602401600060405180830381600087803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b5050505080915050610c89565b50815b6001805480820182557fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0384166001600160a01b0319909116179055546000838152600260205260409081902091909155517f878135063a6cfb3bc333e534b1fdc83f4f12221cad6705c31c0567048a8bd3d190610d2690849086909182526001600160a01b0316602082015260400190565b60405180910390a1505050565b6060610d3e33611d96565b610d5a5760405162461bcd60e51b815260040161079f90614d13565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d9c9250839150612ad19050565b610da857610da8614d56565b600080610e228a6000898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612c7b92505050565b915091508115610f5a57610e3581612e42565b15610ec65780806020019051810190610e4e9190614e0a565b9350610e5984612ad1565b610ec15786610e7a5760405162461bcd60e51b815260040161079f90614e3e565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929650610ec192508c915060149050612e96565b610f94565b86610f135760405162461bcd60e51b815260206004820152601f60248201527f53463a204150505f52554c455f4354585f49535f4d414c464f524d4154454400604482015260640161079f565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929650610ec192508c915060169050612e96565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b6060610fae338484612f0b565b9392505050565b6060610fc3338585856131e9565b949350505050565b6001600160a01b0316600090815260046020526040902054151590565b610ff0614213565b610a618261333c565b60608083838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061103e9250839150612ad19050565b61108a5760405162461bcd60e51b815260206004820152601d60248201527f53463a204150505f52554c455f4354585f49535f4e4f545f56414c4944000000604482015260640161079f565b8961109481611d96565b6110b05760405162461bcd60e51b815260040161079f90614e75565b60006110f187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b6101208101519091506001600160a01b031633146111695760405162461bcd60e51b815260206004820152602f60248201527f53463a2063616c6c41677265656d656e7457697468436f6e746578742066726f60448201526e6d2077726f6e67206164647265737360881b606482015260840161079f565b60608101805133909152604080516020601f8c018190048102820181019092528a8152908b908b908190840183828082843760009201919091525050505060a08301526111b582612af1565b955060006111fb8e8e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c9250613407915050565b96509050801561125a57858060200190518101906112199190614e0a565b965061122487612ad1565b61123057611230614d56565b61123987610fe8565b6001600160a01b0383166060820152925061125383612af1565b9650611263565b611263866134ec565b505050505097509795505050505050565b6000546201000090046001600160a01b031633146112a45760405162461bcd60e51b815260040161079f90614c12565b7f0000000000000000000000000000000000000000000000000000000000000000156112e25760405162461bcd60e51b815260040161079f90614c49565b806001600160a01b031663cd312ec46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611320573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113449190614eb7565b156113a05760405162461bcd60e51b815260206004820152602660248201527f53463a2063616e6e6f7420646f776e677261646520746f206e6f6e2075706772604482015265616461626c6560d01b606482015260840161079f565b6113a9816135f7565b50565b60006113d67f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000546201000090046001600160a01b0316331461140b5760405162461bcd60e51b815260040161079f90614c12565b6003546001600160a01b031661157a577f00000000000000000000000000000000000000000000000000000000000000006114f157600060405161144e90614206565b604051809103906000f08015801561146a573d6000803e3d6000fd5b50604051634a0687ef60e01b81526001600160a01b03848116600483015291925090821690634a0687ef90602401600060405180830381600087803b1580156114b257600080fd5b505af11580156114c6573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b0394909416939093179092555061150d9050565b600380546001600160a01b0319166001600160a01b0383161790555b600360009054906101000a90046001600160a01b03166001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561155d57600080fd5b505af1158015611571573d6000803e3d6000fd5b50505050611618565b7f0000000000000000000000000000000000000000000000000000000000000000156115b85760405162461bcd60e51b815260040161079f90614c49565b6003546040516311a5465560e21b81526001600160a01b03838116600483015290911690634695195490602401600060405180830381600087803b1580156115ff57600080fd5b505af1158015611613573d6000803e3d6000fd5b505050505b6003546040516001600160a01b0390911681527fce13a9895a1719ad4493b2ac1a9bfb36070566161abab408e7ecbe586da8d499906020015b60405180910390a150565b3361166681610fcb565b6116b25760405162461bcd60e51b815260206004820152601860248201527f53463a2073656e646572206973206e6f7420616e206170700000000000000000604482015260640161079f565b6116bb82610fcb565b6117075760405162461bcd60e51b815260206004820152601860248201527f53463a20746172676574206973206e6f7420616e206170700000000000000000604482015260640161079f565b61171082610a44565b60ff1661171c82610a44565b60ff16116117805760405162461bcd60e51b815260206004820152602b60248201527f53463a20736f75726365206170702073686f756c64206861766520686967686560448201526a1c88185c1c081b195d995b60aa1b606482015260840161079f565b503360009081526005602090815260408083206001600160a01b0394909416835292905220805460ff19166001179055565b600080546201000090046001600160a01b03166380f70cba30836117d586613831565b6040518463ffffffff1660e01b81526004016117f393929190614ed4565b602060405180830381865afa158015611810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118349190614c75565b151592915050565b6113a96118476138b9565b82613921565b6113a93382613921565b6001600160a01b038116600090815260046020526040812054618000161515610a61565b6000546201000090046001600160a01b031633146118ab5760405162461bcd60e51b815260040161079f90614c12565b600054604080516001600160a01b03620100009093048316815291831660208301527f13abda02e63c790d0e2818b251282cfe5cbe0a8abd69c54bf5d2260c0907bd2e910160405180910390a1600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b606061192d33611d96565b6119495760405162461bcd60e51b815260040161079f90614d13565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061198b9250839150612ad19050565b61199757611997614d56565b600080611a118a6001898c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612c7b92505050565b915091508115610f9457611a2481612e42565b15611a445780806020019051810190611a3d9190614e0a565b9350610f94565b86611a915760405162461bcd60e51b815260206004820152601f60248201527f53463a204150505f52554c455f4354585f49535f4d414c464f524d4154454400604482015260640161079f565b610f948a6016612e96565b6060611aa733611d96565b611ac35760405162461bcd60e51b815260040161079f90614d13565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b059250839150612ad19050565b611b1157611b11614d56565b6000611b5289898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b9050611b618160600151610fcb565b15611bf65760608101516001600160a01b039081166000908152600560209081526040808320938b168352929052205460ff16611bf65760405162461bcd60e51b815260206004820152602d60248201527f53463a204150505f52554c455f434f4d504f534954455f4150505f49535f4e4f60448201526c1517d5d2125511531254d51151609a1b606482015260840161079f565b805181611c0282614ef8565b60ff169052506003602082015260c08101869052600060e082015261010081018590526001600160a01b038088166101208301528416610140820152611c4781612af1565b9998505050505050505050565b6000546201000090046001600160a01b03163314611c845760405162461bcd60e51b815260040161079f90614c12565b60035460408051634a3852d960e11b815290516000926001600160a01b031691639470a5b29160048083019260209291908290030181865afa158015611cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cf29190614f17565b6040516311a5465560e21b81526001600160a01b03808316600483015291925090831690634695195490602401600060405180830381600087803b158015611d3957600080fd5b505af1158015611d4d573d6000803e3d6000fd5b50506040516001600160a01b038481168252851692507f840acbd291b38534819f47f875839277e502f40e1c7bfea2c5fc2c8017442cd391506020015b60405180910390a25050565b600080826001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfb9190614c75565b6000818152600260205260409020549091508015801590610fc357506001600160a01b0384166001611e2d8184614ce6565b81548110611e3d57611e3d614cfd565b6000918252602090912001546001600160a01b031614949350505050565b6060611e6633611d96565b611e825760405162461bcd60e51b815260040161079f90614d13565b6000611ec385858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b905082816101000151611ed69190614d84565b610100820152611ee581612af1565b95945050505050565b600081815260026020526040812054808203611f1c5760405162461bcd60e51b815260040161079f90614c8e565b611f27600182614ce6565b6001901b19841691505092915050565b7f000000000000000000000000000000000000000000000000000000000000000015611fb65760405162461bcd60e51b815260206004820152602860248201527f53463a2061707020726567697374726174696f6e2072657175697265732070656044820152673936b4b9b9b4b7b760c11b606482015260840161079f565b6113a981336001613d65565b600081815260026020526040812054808203611ff05760405162461bcd60e51b815260040161079f90614c8e565b6001611ffc8183614ce6565b8154811061200c5761200c614cfd565b6000918252602090912001546001600160a01b03169392505050565b606061203333611d96565b61204f5760405162461bcd60e51b815260040161079f90614d13565b84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120919250839150612ad19050565b61209d5761209d614d56565b6120a78484612e96565b85858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929998505050505050505050565b606082828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061212c9250839150612ad19050565b6121785760405162461bcd60e51b815260206004820152601d60248201527f53463a204150505f52554c455f4354585f49535f4e4f545f56414c4944000000604482015260640161079f565b6001600160a01b0387166000908152600460205260409020548790806121d65760405162461bcd60e51b8152602060048201526013602482015272053463a206e6f7420612073757065722061707606c1b604482015260640161079f565b61800081161561221c5760405162461bcd60e51b815260206004820152601160248201527014d18e88185c1c081a5cc81a985a5b1959607a1b604482015260640161079f565b87878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061225d9150839050613f5c565b90506001600160e01b031981166330d9c91560e01b148061228e57506001600160e01b0319811663d86ed3e560e01b145b806122a957506001600160e01b03198116630221347d60e61b145b806122c457506001600160e01b0319811663230dbd2960e01b145b806122df57506001600160e01b03198116635f9e7d7760e01b145b806122fa57506001600160e01b031981166353c11f9960e01b145b156123175760405162461bcd60e51b815260040161079f90614f34565b600061235889898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610fe892505050565b6101208101519091506001600160a01b031633146123d05760405162461bcd60e51b815260206004820152602f60248201527f53463a2063616c6c417070416374696f6e57697468436f6e746578742066726f60448201526e6d2077726f6e67206164647265737360881b606482015260840161079f565b606081018051339091526123e382612af1565b975060008061242a8f8f8f8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f9250613407915050565b91509150811561249957808060200190518101906124489190614e0a565b99506124538a612ad1565b61246f5760405162461bcd60e51b815260040161079f90614e3e565b6124788a610fe8565b6001600160a01b0384166060820152935061249284612af1565b99506124a2565b6124a2816134ec565b50505050505050505095945050505050565b6000818152600260205260408120548082036124e25760405162461bcd60e51b815260040161079f90614c8e565b6124ed600182614ce6565b6001901b841791505092915050565b600061253e3284848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613fb892505050565b90507f00000000000000000000000000000000000000000000000000000000000000001561263f576000805460405163407b865d60e11b81524292620100009092046001600160a01b0316916380f70cba916125a09130918790600401614ed4565b602060405180830381865afa1580156125bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e19190614c75565b101561263f5760405162461bcd60e51b815260206004820152602760248201527f53463a20696e76616c6964206f72206578706972656420726567697374726174604482015266696f6e206b657960c81b606482015260840161079f565b61264b84336001613d65565b50505050565b6000610fae83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ad192505050565b600054610100900460ff166126ad5760005460ff16156126b1565b303b155b6127145760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161079f565b600054610100900460ff16158015612736576000805461ffff19166101011790555b6000805462010000600160b01b031916620100006001600160a01b03851602179055801561276a576000805461ff00191690555b5050565b60606000806001805490506001600160401b0381111561279057612790614447565b6040519080825280602002602001820160405280156127b9578160200160208202803683370190505b50925060009050600091505b600154821015612850576001821b84161561284057600182815481106127ed576127ed614cfd565b6000918252602090912001546001600160a01b0316838261280d81614f78565b93508151811061281f5761281f614cfd565b60200260200101906001600160a01b031690816001600160a01b0316815250505b61284982614f78565b91506127c5565b825250919050565b6003546000906001600160a01b031661287357612873614d56565b7f0000000000000000000000000000000000000000000000000000000000000000156128a957506003546001600160a01b031690565b600360009054906101000a90046001600160a01b03166001600160a01b03166350d75d256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d69190614f17565b333b8061296f5760405162461bcd60e51b815260206004820152601e60248201527f53463a20666163746f7279206d757374206265206120636f6e74726163740000604482015260640161079f565b507f000000000000000000000000000000000000000000000000000000000000000015612a765760006129a133613feb565b6000805460405163407b865d60e11b81529293509091620100009091046001600160a01b0316906380f70cba906129e090309085908790600401614ed4565b602060405180830381865afa1580156129fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a219190614c75565b600114905080612a735760405162461bcd60e51b815260206004820152601f60248201527f53463a20617574686f72697a656420666163746f727920726571756972656400604482015260640161079f565b50505b61276a81836000613d65565b6001600160a01b038116600090815260046020908152604080832081519283019091525480825215801592918291612ac957805161800081161515935064ff000000001691505b509193909250565b60008151600014158015610a615750600654825160208401201492915050565b60607f0000000000000000000000000000000000000000000000000000000000000000826000015160ff161115612b755760405162461bcd60e51b815260206004820152602260248201527f53463a204150505f52554c455f4d41585f4150505f4c4556454c5f5245414348604482015261115160f21b606482015260840161079f565b815160208084015160009260ff1664ff000000009190921b1617905060006080612ba28560e00151614065565b6001600160801b0316901b612bba8560c00151614065565b6001600160801b0316179050818460400151856060015186608001518760a00151604051602001612bef959493929190614f91565b60408051601f1981840301815282825261010087015161012088015161014089015160208601879052938501919091526001600160a01b03908116606085015290911660808301529060a00160408051601f1981840301815290829052612c5992916020016147b7565b60408051601f1981840301815291905280516020820120600655949350505050565b600060606001600160a01b038716612c9557612c95614d56565b612c9f84846140d2565b935060005a90508615612d3a57876001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160401b031686604051612cee9190614fd2565b6000604051808303818686fa925050503d8060008114612d2a576040519150601f19603f3d011682016040523d82523d6000602084013e612d2f565b606091505b509093509150612dc6565b876001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160401b031686604051612d7c9190614fd2565b60006040518083038160008787f1925050503d8060008114612dba576040519150601f19603f3d011682016040523d82523d6000602084013e612dbf565b606091505b5090935091505b82612e3757612dd6603f82614fee565b5a1115612dfb5785612df057612deb826134ec565b612e37565b612deb88600a612e96565b60405162461bcd60e51b815260206004820152601160248201527053463a206e656564206d6f72652067617360781b604482015260640161079f565b509550959350505050565b6000604082511015612e5657506000919050565b602082810151906000908214612e70575060009392505050565b506040830151612e7f816141cd565b612e8a906040614d6c565b84511492505050919050565b6001600160a01b03821660009081526004602052604081205461800016900361276a576001600160a01b038216600081815260046020526040908190208054618000179055517fbe3aa33bd245135e4e26b223d79d14ea479a47bff09f2b03c53838af1edbb14b90611d8a9084815260200190565b60065460609015612f5e5760405162461bcd60e51b815260206004820152601d60248201527f53463a204150505f52554c455f4354585f49535f4e4f545f434c45414e000000604482015260640161079f565b6001600160a01b038316600090815260046020526040902054839080612fbc5760405162461bcd60e51b8152602060048201526013602482015272053463a206e6f7420612073757065722061707606c1b604482015260640161079f565b6180008116156130025760405162461bcd60e51b815260206004820152601160248201527014d18e88185c1c081a5cc81a985a5b1959607a1b604482015260640161079f565b83600061300e82613f5c565b90506001600160e01b031981166330d9c91560e01b148061303f57506001600160e01b0319811663d86ed3e560e01b145b8061305a57506001600160e01b03198116630221347d60e61b145b8061307557506001600160e01b0319811663230dbd2960e01b145b8061309057506001600160e01b03198116635f9e7d7760e01b145b806130ab57506001600160e01b031981166353c11f9960e01b145b156130c85760405162461bcd60e51b815260040161079f90614f34565b60006131746040518061016001604052806130e28c610fcb565b6130ed5760006130f0565b60015b60ff168152600260208201526040014281526020018b6001600160a01b03168152602001600060e01b6001600160e01b03191681526020016040518060200160405280600081525081526020016000815260200160008152602001600081526020018a6001600160a01b0316815260200160006001600160a01b0316815250612af1565b90506000613183898984613407565b9750905080156131cd57868060200190518101906131a19190614e0a565b91506131ac82612ad1565b6131c85760405162461bcd60e51b815260040161079f90614e3e565b6131d6565b6131d6876134ec565b5050600060065550929695505050505050565b6006546060901561323c5760405162461bcd60e51b815260206004820152601d60248201527f53463a204150505f52554c455f4354585f49535f4e4f545f434c45414e000000604482015260640161079f565b8361324681611d96565b6132625760405162461bcd60e51b815260040161079f90614e75565b600061326d85613f5c565b905060006133096040518061016001604052806132898b610fcb565b613294576000613297565b60015b60ff168152600160208201526040014281526020018a6001600160a01b03168152602001846001600160e01b031916815260200187815260200160008152602001600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b0316815250612af1565b90506000613318888884613407565b955090508061332a5761332a856134ec565b50506000600655509095945050505050565b613344614213565b6060808380602001905181019061335b9190615010565b815191935091506000906133789084016020908101908501615069565b60a08901526001600160e01b03191660808801526001600160a01b031660608701526040860152602081811c600f168187015260ff90911685528251600092506133c99190840181019084016150ed565b6001600160a01b03908116610140890152166101208701526101008601526001600160801b03811660c086015260801c60e085015250919392505050565b600060606001600160a01b03851661342157613421614d56565b61342b84846140d2565b9350846001600160a01b0316846040516134459190614fd2565b6000604051808303816000865af19150503d8060008114613482576040519150601f19603f3d011682016040523d82523d6000602084013e613487565b606091505b50909250905081156134e45760008151116134e45760405162461bcd60e51b815260206004820152601960248201527f53463a204150505f52554c455f4354585f49535f454d50545900000000000000604482015260640161079f565b935093915050565b60048151101561353e5760405162461bcd60e51b815260206004820152601a60248201527f43616c6c5574696c733a20746172676574207265766572742829000000000000604482015260640161079f565b602081015163b1b7848f60e01b6001600160e01b03198216016135ee5760408051808201825260208082527f43616c6c5574696c733a207461726765742070616e69636b65643a2030785f5f90820190815260248501517f43616c6c5574696c733a207461726765742070616e69636b65643a2030780000600482811c600f908116603090810160081b918516011791909117909252925162461bcd60e51b815291929161079f91849101614390565b81518060208401fd5b60006136217f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036136775760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c65000000604482015260640161079f565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d99190614c75565b7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74146137535760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b606482015260840161079f565b6001600160a01b03811630036137ab5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f7000000000000000604482015260640161079f565b6137d3817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fcd355cae2c435f8c5e0c626c4691d22fd85aa7422a424c6f0bced6e64c7aba74604080519182526001600160a01b038416602083015201611651565b6040805160208101829052603260608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527132173a393ab9ba32b22337b93bb0b93232b960711b60a08201526001600160a01b0383169181019190915260009060c0015b604051602081830303815290604052805190602001209050919050565b6000601836108015906138d057506138d0336117b2565b6139145760405162461bcd60e51b81526020600482015260156024820152742737ba103a393ab9ba32b2103337b93bb0b93232b960591b604482015260640161079f565b5060131936013560601c90565b60005b8151811015613d6057600082828151811061394157613941614cfd565b6020026020010151600001519050600163ffffffff168163ffffffff1603613a215760008084848151811061397857613978614cfd565b6020026020010151604001518060200190518101906139979190615138565b915091508484815181106139ad576139ad614cfd565b6020026020010151602001516001600160a01b03166362aa52878784846040518463ffffffff1660e01b81526004016139e893929190614ed4565b600060405180830381600087803b158015613a0257600080fd5b505af1158015613a16573d6000803e3d6000fd5b505050505050613d4d565b60011963ffffffff821601613b07576000806000858581518110613a4757613a47614cfd565b602002602001015160400151806020019051810190613a669190615166565b925092509250858581518110613a7e57613a7e614cfd565b6020908102919091018101510151604051630b682aeb60e11b81526001600160a01b0389811660048301528581166024830152848116604483015260648201849052909116906316d055d690608401600060405180830381600087803b158015613ae757600080fd5b505af1158015613afb573d6000803e3d6000fd5b50505050505050613d4d565b60641963ffffffff821601613bd757828281518110613b2857613b28614cfd565b6020026020010151602001516001600160a01b031663ca78946485858581518110613b5557613b55614cfd565b602002602001015160400151806020019051810190613b749190614c75565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015613bba57600080fd5b505af1158015613bce573d6000803e3d6000fd5b50505050613d4d565b60651963ffffffff821601613c2557828281518110613bf857613bf8614cfd565b6020026020010151602001516001600160a01b031663245887fc85858581518110613b5557613b55614cfd565b60c81963ffffffff821601613c9d57600080848481518110613c4957613c49614cfd565b602002602001015160400151806020019051810190613c689190615010565b91509150613c9586868681518110613c8257613c82614cfd565b60200260200101516020015184846131e9565b505050613d4d565b60c91963ffffffff821601613cf757613cf184848481518110613cc257613cc2614cfd565b602002602001015160200151858581518110613ce057613ce0614cfd565b602002602001015160400151612f0b565b50613d4d565b60405162461bcd60e51b815260206004820152602560248201527f53463a20756e6b6e6f776e2062617463682063616c6c206f7065726174696f6e604482015264207479706560d81b606482015260840161079f565b5080613d5881614f78565b915050613924565b505050565b323303613dc05760405162461bcd60e51b8152602060048201526024808201527f53463a204150505f52554c455f4e4f5f524547495354524154494f4e5f464f526044820152635f454f4160e01b606482015260840161079f565b8015613e2e57813b8015613e2c5760405162461bcd60e51b815260206004820152602d60248201527f53463a204150505f52554c455f524547495354524154494f4e5f4f4e4c595f4960448201526c272fa1a7a729aa292aa1aa27a960991b606482015260840161079f565b505b64ff000080ff198316158015613e46575060ff831615155b8015613e5457506180008316155b613ea05760405162461bcd60e51b815260206004820152601760248201527f53463a20696e76616c696420636f6e66696720776f7264000000000000000000604482015260640161079f565b6001600160a01b03821660009081526004602052604090205415613f065760405162461bcd60e51b815260206004820152601a60248201527f53463a2061707020616c72656164792072656769737465726564000000000000604482015260640161079f565b60408051602080820183528582526001600160a01b038516600081815260049092528382209251909255915190917f0d540ad8f39e07d19909687352b9fa017405d93c91a6760981fbae9cf28bfef791a2505050565b6000600482511015613fb05760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e76616c69642063616c6c446174610000000000604482015260640161079f565b506020015190565b60008282604051602001613fcd9291906151a9565b60405160208183030381529060405280519060200120905092915050565b6040805160208101829052603960608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e666163746f72790000000000000060a08201526001600160a01b0383169181019190915260009060c00161389c565b60006001600160801b038211156140ce5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b606482015260840161079f565b5090565b81518083015160609190801561413f5760405162461bcd60e51b815260206004820152602c60248201527f53463a20706c61636572686f6c646572206374782073686f756c64206861766560448201526b040f4cae4de40d8cadccee8d60a31b606482015260840161079f565b50601f1981018452825184908481614156816141cd565b6141609190614ce6565b6001600160401b0381111561417757614177614447565b6040519080825280601f01601f1916602001820160405280156141a1576020820181803683370190505b506040516020016141b5949392919061522e565b60405160208183030381529060405291505092915050565b60008082601f16116141e05760006141e3565b60015b60ff166141f1602084614fee565b6141fb9190614d6c565b610a6190602061527d565b61024a8061529d83390190565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b03811681146113a957600080fd5b60006020828403121561429557600080fd5b8135610fae8161426e565b60008083601f8401126142b257600080fd5b5081356001600160401b038111156142c957600080fd5b6020830191508360208285010111156142e157600080fd5b9250929050565b600080600080606085870312156142fe57600080fd5b84356001600160401b0381111561431457600080fd5b614320878288016142a0565b90989097506020870135966040013595509350505050565b60005b8381101561435357818101518382015260200161433b565b8381111561264b5750506000910152565b6000815180845261437c816020860160208601614338565b601f01601f19169290920160200192915050565b602081526000610fae6020830184614364565b80151581146113a957600080fd5b600080600080600080608087890312156143ca57600080fd5b86356143d58161426e565b955060208701356001600160401b03808211156143f157600080fd5b6143fd8a838b016142a0565b909750955060408901359150614412826143a3565b9093506060880135908082111561442857600080fd5b5061443589828a016142a0565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561447f5761447f614447565b60405290565b604051601f8201601f191681016001600160401b03811182821017156144ad576144ad614447565b604052919050565b60006001600160401b038211156144ce576144ce614447565b50601f01601f191660200190565b600082601f8301126144ed57600080fd5b81356145006144fb826144b5565b614485565b81815284602083860101111561451557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561454557600080fd5b82356145508161426e565b915060208301356001600160401b0381111561456b57600080fd5b614577858286016144dc565b9150509250929050565b60008060006060848603121561459657600080fd5b83356145a18161426e565b925060208401356001600160401b03808211156145bd57600080fd5b6145c9878388016144dc565b935060408601359150808211156145df57600080fd5b506145ec868287016144dc565b9150509250925092565b60006020828403121561460857600080fd5b81356001600160401b0381111561461e57600080fd5b610fc3848285016144dc565b6020815261463e60208201835160ff169052565b60006020830151614654604084018260ff169052565b5060408301516060830152606083015161467960808401826001600160a01b03169052565b5060808301516001600160e01b0319811660a08401525060a08301516101608060c08501526146ac610180850183614364565b915060c085015160e085015260e08501516101008181870152808701519150506101208181870152808701519150506101406146f2818701836001600160a01b03169052565b909501516001600160a01b031693019290925250919050565b60008060008060008060006080888a03121561472657600080fd5b87356147318161426e565b965060208801356001600160401b038082111561474d57600080fd5b6147598b838c016142a0565b909850965060408a013591508082111561477257600080fd5b61477e8b838c016142a0565b909650945060608a013591508082111561479757600080fd5b506147a48a828b016142a0565b989b979a50959850939692959293505050565b6040815260006147ca6040830185614364565b8281036020840152611ee58185614364565b600060208083850312156147ef57600080fd5b82356001600160401b038082111561480657600080fd5b818501915085601f83011261481a57600080fd5b81358181111561482c5761482c614447565b8060051b61483b858201614485565b918252838101850191858101908984111561485557600080fd5b86860192505b83831015611c47578235858111156148735760008081fd5b86016060818c03601f190181131561488b5760008081fd5b61489361445d565b8983013563ffffffff811681146148aa5760008081fd5b81526040838101356148bb8161426e565b828c01529183013591888311156148d25760008081fd5b6148e08e8c858701016144dc565b9082015284525050918601919086019061485b565b60008060008060008060a0878903121561490e57600080fd5b86356001600160401b0381111561492457600080fd5b61493089828a016142a0565b90975095505060208701356149448161426e565b9350604087013592506060870135915060808701356149628161426e565b809150509295509295509295565b60008060006040848603121561498557600080fd5b83356001600160401b0381111561499b57600080fd5b6149a7868287016142a0565b909790965060209590950135949350505050565b600080604083850312156149ce57600080fd5b50508035926020909101359150565b6000602082840312156149ef57600080fd5b5035919050565b60008060008060608587031215614a0c57600080fd5b84356001600160401b03811115614a2257600080fd5b614a2e878288016142a0565b9095509350506020850135614a428161426e565b9396929550929360400135925050565b600080600080600060608688031215614a6a57600080fd5b8535614a758161426e565b945060208601356001600160401b0380821115614a9157600080fd5b614a9d89838a016142a0565b90965094506040880135915080821115614ab657600080fd5b50614ac3888289016142a0565b969995985093965092949392505050565b60008060408385031215614ae757600080fd5b8235614af28161426e565b91506020830135614b028161426e565b809150509250929050565b600080600060408486031215614b2257600080fd5b8335925060208401356001600160401b03811115614b3f57600080fd5b614b4b868287016142a0565b9497909650939450505050565b60008060208385031215614b6b57600080fd5b82356001600160401b03811115614b8157600080fd5b614b8d858286016142a0565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015614bda5783516001600160a01b031683529284019291840191600101614bb5565b50909695505050505050565b60008060408385031215614bf957600080fd5b8235614c048161426e565b946020939093013593505050565b6020808252601b908201527f53463a206f6e6c7920676f7665726e616e636520616c6c6f7765640000000000604082015260600190565b60208082526012908201527153463a206e6f6e2075706772616461626c6560701b604082015260600190565b600060208284031215614c8757600080fd5b5051919050565b60208082526022908201527f53463a2061677265656d656e7420636c617373206e6f74207265676973746572604082015261195960f21b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082821015614cf857614cf8614cd0565b500390565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f53463a2073656e646572206973206e6f74206c6973746564206167726565656d604082015262195b9d60ea1b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b60008219821115614d7f57614d7f614cd0565b500190565b600080821280156001600160ff1b0384900385131615614da657614da6614cd0565b600160ff1b8390038412811615614dbf57614dbf614cd0565b50500190565b600082601f830112614dd657600080fd5b8151614de46144fb826144b5565b818152846020838601011115614df957600080fd5b610fc3826020830160208701614338565b600060208284031215614e1c57600080fd5b81516001600160401b03811115614e3257600080fd5b610fc384828501614dc5565b6020808252601c908201527f53463a204150505f52554c455f4354585f49535f524541444f4e4c5900000000604082015260600190565b60208082526022908201527f53463a206f6e6c79206c6973746564206167726565656d656e7420616c6c6f77604082015261195960f21b606082015260800190565b600060208284031215614ec957600080fd5b8151610fae816143a3565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600060ff821660ff8103614f0e57614f0e614cd0565b60010192915050565b600060208284031215614f2957600080fd5b8151610fae8161426e565b60208082526024908201527f53463a2061677265656d656e742063616c6c6261636b206973206e6f742061636040820152633a34b7b760e11b606082015260800190565b600060018201614f8a57614f8a614cd0565b5060010190565b858152602081018590526001600160a01b03841660408201526001600160e01b03198316606082015260a060808201819052600090610a3990830184614364565b60008251614fe4818460208701614338565b9190910192915050565b60008261500b57634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561502357600080fd5b82516001600160401b038082111561503a57600080fd5b61504686838701614dc5565b9350602085015191508082111561505c57600080fd5b5061457785828601614dc5565b600080600080600060a0868803121561508157600080fd5b8551945060208601519350604086015161509a8161426e565b60608701519093506001600160e01b0319811681146150b857600080fd5b60808701519092506001600160401b038111156150d457600080fd5b6150e088828901614dc5565b9150509295509295909350565b6000806000806080858703121561510357600080fd5b8451935060208501519250604085015161511c8161426e565b606086015190925061512d8161426e565b939692955090935050565b6000806040838503121561514b57600080fd5b82516151568161426e565b6020939093015192949293505050565b60008060006060848603121561517b57600080fd5b83516151868161426e565b60208501519093506151978161426e565b80925050604084015190509250925092565b60608152604160608201527f6f72672e7375706572666c7569642d66696e616e63652e7375706572666c756960808201527f642e61707057686974654c697374696e672e726567697374726174696f6e4b6560a0820152607960f81b60c082015260018060a01b038316602082015260e060408201526000610fc360e0830184614364565b6000855160206152418285838b01614338565b8184019150868252855161525a81838501848a01614338565b855192019161526e81838501848901614338565b91909101019695505050505050565b600081600019048311821515161561529757615297614cd0565b50029056fe608060405234801561001057600080fd5b5061022a806100206000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea264697066735822122086b1fc3a42d3af20b0ab5b46a7113da519907b8dce59f9a2b801e27095423bbc64736f6c634300080e0033a264697066735822122059f0a0071f959a271ecaab63758663dabcce218faad3dfcafb6e9201f3c9760664736f6c634300080e003360a06040523480156200001157600080fd5b506040516200538b3803806200538b833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516152f762000094600039600061077701526152f76000f3fe608060405234801561001057600080fd5b50600436106101a85760003560e01c806350d75d25116100f957806394229ecb11610097578063aabd266811610071578063aabd26681461042e578063b4b333c614610441578063e6a1e88814610454578063e8e7e2d11461046757600080fd5b806394229ecb146103ed5780639b2e48bc146104005780639cb28b72146102aa57600080fd5b806362fc305e116100d357806362fc305e1461038e5780637730599e146103a1578063811b3d40146103c75780638d997f6e146103da57600080fd5b806350d75d251461035357806352d1902d1461037357806354b770e31461037b57600080fd5b806326b0f536116101665780634b839e0b116101405780634b839e0b146102e05780634c8b181f146103035780634fe9c2911461031657806350209a621461034057600080fd5b806326b0f536146102aa578063354b9590146102b857806346951954146102cb57600080fd5b8062422bbe146101ad57806304aafa49146101e55780630602f7db146101ff578063062e56ec1461022557806309d256ef146102455780630f1ac49514610274575b600080fd5b6101c06101bb366004614493565b61047a565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b6101f164010000000081565b6040519081526020016101dc565b61021261020d3660046144de565b6104b0565b604051600b9190910b81526020016101dc565b61023861023336600461454c565b6104d1565b6040516101dc919061460d565b6102586102533660046144de565b6104eb565b6040805160ff9093168352600b9190910b6020830152016101dc565b610287610282366004614620565b61050f565b60408051948552600b9390930b60208501529183015260608201526080016101dc565b6101f160016001605f1b0381565b6102386102c636600461466b565b610545565b6102de6102d93660046146f7565b61076c565b005b6102f36102ee366004614714565b6107f0565b60405190151581526020016101dc565b610238610311366004614755565b6108c7565b610329610324366004614620565b6109e1565b6040805192151583526020830191909152016101dc565b61023861034e3660046147d1565b610ac3565b61035b610b96565b6040516001600160a01b0390911681526020016101dc565b6101f1610bc5565b61023861038936600461454c565b610c29565b61023861039c3660046147d1565b610c41565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd36101f1565b6102386103d5366004614821565b610cf4565b6101f16103e8366004614865565b610f7e565b6102386103fb36600461466b565b611199565b61041361040e366004614714565b611379565b604080519384526020840192909252908201526060016101dc565b61028761043c3660046144de565b6113d3565b61023861044f366004614755565b6113e5565b610287610462366004614493565b611479565b610212610475366004614620565b6114b4565b600080600061048985856114ce565b925060006104978785611539565b8051602090910151959990985094965093945050505050565b6000806104bc846115fe565b5090506104c98184611779565b949350505050565b60606104e285856000808787610cf4565b95945050505050565b60008060006104fa8585611539565b80516020909101519097909650945050505050565b600080600080600061052187876117e8565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006105898885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036105f55760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f55504441544500000000000000000060448201526064015b60405180910390fd5b60008061060b8a6106068b8b611a65565b611a8d565b9150915060008060006106238d8d886060015161047a565b925092509250610634826001611ad4565b6106805760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f5550444154455f464c4f570000000000000060448201526064016105ec565b6000600b82900b60016001605f1b0314806106a557508a600b0b8560200151600b0b12155b6106c75760208501516106b8908c6148b0565b6106c290836148b0565b6106c9565b815b9050600081600b0b12156106ef5760405162461bcd60e51b81526004016105ec90614900565b6106fb8e858584611b2f565b5050505061072960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b606082015261075d8183858a8a89611bb8565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e45760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016105ec565b6107ed81611d3d565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108669190614941565b505090506000811261087c5760019150506108c0565b600080610888876115fe565b91509150600061089888886117e8565b91505060006108aa8260400151611f4b565b90506108b885828686611fb9565b955050505050505b9392505050565b6060600061090b8785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061091e8888846060015161047a565b50915050600061092f826002611ad4565b90508061097e5760405162461bcd60e51b815260206004820152601960248201527f455f4e4f5f4f50455241544f525f44454c4554455f464c4f570000000000000060448201526064016105ec565b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109d38183898988611ff6565b9a9950505050505050505050565b6000806000846001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a48919061497a565b9050806001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac9190614997565b9150610ab98585846107f0565b9250509250929050565b60606000610b078785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610b3360408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610b7191611a65565b9050600080610b84846000015184611a8d565b9150915061075d8482848b8b8a611bb8565b6000610bc07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc09190614997565b60606104e28585600760016001605f1b038787610cf4565b60606000610c858785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050610cb160408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610ce88186868561278d565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610d3b925087915061292d9050565b610d875760405162461bcd60e51b815260206004820152601860248201527f4346413a20556e636c65616e207065726d697373696f6e73000000000000000060448201526064016105ec565b6000610dc98885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b031603610e305760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f53454e4445525f464c4f575f4f50455241544f52000060448201526064016105ec565b600085600b0b1215610e845760405162461bcd60e51b815260206004820152601c60248201527f4346413a20455f4e4f5f4e454741544956455f414c4c4f57414e43450000000060448201526064016105ec565b6040805180820190915260ff87168152600b86900b60208201526060820151600090610eb0908a6114ce565b9050896001600160a01b031663a1b2bf8b82610ecb85612934565b6040518363ffffffff1660e01b8152600401610ee89291906149eb565b600060405180830381600087803b158015610f0257600080fd5b505af1158015610f16573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600080836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe3919061497a565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611025573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611049919061497a565b90506000816001600160a01b03166380f70cba84887feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161109d93929190614a04565b602060405180830381865afa1580156110ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110de9190614997565b90506000826001600160a01b03166380f70cba85897fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161113293929190614a04565b602060405180830381865afa15801561114f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111739190614997565b9050602081901c63ffffffff1661118b8382896129aa565b955050505050505b92915050565b606060006111dd8885858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050866001600160a01b031681606001516001600160a01b0316036112445760405162461bcd60e51b815260206004820152601760248201527f4346413a20455f4e4f5f53454e4445525f43524541544500000000000000000060448201526064016105ec565b60008060006112588b8b866060015161047a565b925092509250611269826000611ad4565b6112b55760405162461bcd60e51b815260206004820152601e60248201527f4346413a20455f4e4f5f4f50455241544f525f4352454154455f464c4f57000060448201526064016105ec565b6000600b82900b60016001605f1b03146112d8576112d389836148b0565b6112da565b815b9050600081600b0b12156113005760405162461bcd60e51b81526004016105ec90614900565b61130c8c858584611b2f565b5050505061133a60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b606082015261136c8186868561278d565b9998505050505050505050565b600080600080600061138b88886117e8565b9150915081156113c8578060200151600b0b8160000151876113ad9190614a28565b6113b79190614a67565b945080604001519350806060015192505b505093509350939050565b60008060008060006105218787611a8d565b606060006114298785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506118a192505050565b9050600061143c8888846060015161047a565b50915050600061144d826002611ad4565b90506109a360408051608081018252600080825260208201819052918101829052606081019190915290565b600080600080600061148f886106068989611a65565b805160208201516040830151606090930151919c909b50919950975095505050505050565b6000806114c184846117e8565b6020015195945050505050565b6000828260405160200161151b9291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156115a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115c99190810190614b5d565b90506115f1816000815181106115e1576115e1614bf7565b602002602001015160001c612a7f565b92509250505b9250929050565b6000806000836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611641573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611665919061497a565b90506000816001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116cb919061497a565b90506000816001600160a01b03166380f70cba84887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161171f93929190614a04565b602060405180830381865afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190614997565b63ffffffff602082901c81169891169650945050505050565b600060016001605f1b038211156117d25760405162461bcd60e51b815260206004820152601b60248201527f4346413a206465706f736974206e756d62657220746f6f20626967000000000060448201526064016105ec565b63ffffffff198216915060006104c98484614c23565b60006117f26143cc565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611851573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118799190810190614b5d565b90506115f18160008151811061189157611891614bf7565b602002602001015160001c612abf565b6118a96143f7565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611915919061497a565b6001600160a01b03161461195f5760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016105ec565b604051632fd0a1cd60e21b8152339063bf4287349061198290859060040161460d565b602060405180830381865afa15801561199f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c39190614c47565b6119fd5760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016105ec565b604051631fb6491d60e11b81523390633f6c923a90611a2090859060040161460d565b600060405180830381865afa158015611a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c09190810190614ce9565b604080516001600160a01b03808516602083015283169181019190915260009060600161151b565b6000611a976143cc565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611834565b600080826002811115611ae957611ae9614df0565b03611afa5750600182811614611193565b6001826002811115611b0e57611b0e614df0565b03611b215750600182811c811614611193565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611b6284612934565b6040518363ffffffff1660e01b8152600401611b7f9291906149eb565b600060405180830381600087803b158015611b9957600080fd5b505af1158015611bad573d6000803e3d6000fd5b505050505050505050565b60606000611bc68884612b1f565b91505085611c115760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7f9190614c47565b15611cdb57611cd488604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612c929050565b9150611d26565b611d238860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a92506133af915050565b91505b8751611d329084613487565b509695505050505050565b6000611d677f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611dbd5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016105ec565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190614997565b611e27610bc5565b14611e805760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016105ec565b6001600160a01b0381163003611ed85760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016105ec565b611f00817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc611f29610bc5565b604080519182526001600160a01b03841660208301520160405180910390a150565b60006001600160ff1b03821115611fb55760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016105ec565b5090565b600080611fc68587614e06565b90506000611fd48587614e47565b9050611fe08486614e75565b611fea8284614e47565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b03166120795760405162461bcd60e51b81526020600482015260136024820152724346413a2073656e646572206973207a65726f60681b60448201526064016105ec565b60408701516001600160a01b03166120cb5760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b6120dd87602001518860400151611a65565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a0808601519084015288519091829161213391611a8d565b915091508161217f5760405162461bcd60e51b815260206004820152601860248201527710d1904e88199b1bddc8191bd95cc81b9bdd08195e1a5cdd60421b60448201526064016105ec565b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc926121cb926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa1580156121e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061220c9190614941565b5050905089602001516001600160a01b031686606001516001600160a01b031614158015612254575089604001516001600160a01b031686606001516001600160a01b031614155b801561225e575088155b156123aa5760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156122ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d19190614c47565b158015612349575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa158015612323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123479190614c47565b155b156123aa57600081126123aa5760405162461bcd60e51b815260206004820152602360248201527f4346413a2073656e646572206163636f756e74206973206e6f7420637269746960448201526218d85b60ea1b60648201526084016105ec565b60008112156123c8576123c88a600001518286858a6060015161359e565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036124be5760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248b9190614c47565b156124af576124a88a604001518b600001518685898b6002612c92565b9450612780565b89516124a8908584888a6133af565b89604001516001600160a01b031686606001516001600160a01b0316036125f25760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612529573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254d9190614c47565b1561256a576124a88a602001518b600001518685898b6002612c92565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d89190614c47565b156124af576124a860008b600001518685898b6002612c92565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561263c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126609190614c47565b801561266c5750600081125b156126e65760208a0151604051635b92108f60e11b8152339163b724211e9161269c918991600b90600401614e8c565b6000604051808303816000875af11580156126bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126e39190810190614eba565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127549190614c47565b15612771576124a88a604001518b600001518685898b6002612c92565b89516109d3908584888a6133af565b5050505095945050505050565b606060008061279c8785612b1f565b915091506000806127b1896000015185611a8d565b9150915081156128035760405162461bcd60e51b815260206004820152601760248201527f4346413a20666c6f7720616c726561647920657869737400000000000000000060448201526064016105ec565b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa15801561284d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128719190614c47565b156128ca576128c389604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612c929050565b9450612915565b612912896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92506133af915050565b94505b88516129219087613487565b50505050949350505050565b60f8161590565b606060008260200151600b0b121561294e5761294e614eef565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b8160008151811061299957612999614bf7565b602002602001018181525050919050565b60008082600b0b13612a0a5760405162461bcd60e51b815260206004820152602360248201527f4346413a206e6f7420666f72206e6f6e2d706f73697469766520666c6f77207260448201526261746560e81b60648201526084016105ec565b60016001605f1b03612a2084600b85900b614f05565b1115612a675760405162461bcd60e51b81526020600482015260166024820152754346413a20666c6f77207261746520746f6f2062696760501b60448201526064016105ec565b6000612a7383856137aa565b90506104e285826137ee565b6040805180820190915260008082526020820152811580159190612aba5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612ac96143cc565b821580159250612aba5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612ba15760405162461bcd60e51b81526020600482015260156024820152744346413a207265636569766572206973207a65726f60581b60448201526064016105ec565b612bb384602001518560400151611a65565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612c425760405162461bcd60e51b81526020600482015260116024820152704346413a206e6f2073656c6620666c6f7760781b60448201526064016105ec565b60008160800151600b0b136115f75760405162461bcd60e51b81526020600482015260166024820152754346413a20696e76616c696420666c6f77207261746560501b60448201526064016105ec565b82612c9b614452565b6001600160a01b03891615612e84576000612d30898b8a600001518b602001518c60400151604051602001612ce69291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612d4657612d46614df0565b03612d5b5764010000000060c0820152612d90565b6001846002811115612d6f57612d6f614df0565b03612d845764040000000060c0820152612d90565b64100000000060c08201525b612d9a8187613804565b82526040850151610140860151612db491908b8b8b6139bb565b506080830152508451612dc8906001614f24565b60ff168160800151612dda9190614f05565b60808201526060870151612ded90611f4b565b60a08201526000846002811115612e0657612e06614df0565b03612e1b5764020000000060c0820152612e50565b6001846002811115612e2f57612e2f614df0565b03612e445764080000000060c0820152612e50565b64200000000060c08201525b612e5f81836000015185613d9f565b60408401919091528851909350612e77908a90611a8d565b602084015250612ea29050565b612e9a84604001518561014001518a8a8a6139bb565b602084015250505b6000816040015161010001511315612ee157612ed6612ed1612ecc83604001516101000151614008565b61405a565b611f4b565b604082015161010001525b6000612ef08760600151611f4b565b82604001516101000151612f049190614a28565b9050612f2a81612f1b846020015160400151611f4b565b612f259190614e06565b614008565b82602001516040018181525050612f4c81612f1b846020015160600151611f4b565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b91612f779061408e565b6040518363ffffffff1660e01b8152600401612f949291906149eb565b600060405180830381600087803b158015612fae57600080fd5b505af1158015612fc2573d6000803e3d6000fd5b50505050612fde89896020015160008460008a604001516140ff565b50612ff6898960400151600080858a604001516140ff565b506101408501516001600160a01b031615806130285750886001600160a01b03168561014001516001600160a01b0316145b156130a657602082015160409081015190516303c9790560e11b81523391630792f20a9161305c9187918690600401614f49565b6000604051808303816000875af115801561307b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130a39190810190614eba565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156130f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131149190614c47565b156133a257604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa158015613174573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131989190614941565b509091505060008112156133a05760028560028111156131ba576131ba614df0565b03613345576040808a01519051635b92108f60e11b8152339163b724211e916131ea918891600c90600401614e8c565b6000604051808303816000875af1158015613209573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132319190810190614eba565b9350600061325961324183614f6e565b613254600061324f87614f6e565b61426b565b61427a565b90508a6001600160a01b031663cf97256d8b602001518361327990614f6e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156132bf57600080fd5b505af11580156132d3573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561332757600080fd5b505af115801561333b573d6000803e3d6000fd5b50505050506133a0565b60405162461bcd60e51b815260206004820152602a60248201527f4346413a204150505f52554c455f4e4f5f435249544943414c5f524543454956604482015269115497d050d0d3d5539560b21b60648201526084016105ec565b505b5050979650505050505050565b606083810151156133c2576133c2614eef565b60006133cc6143cc565b6133e284604001518561014001518a8a8a6139bb565b6101408701519294509250506001600160a01b03808a169116036134785760408082015190516303c9790560e11b81523391630792f20a9161342a9189918790600401614f49565b6000604051808303816000875af1158015613449573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134719190810190614eba565b925061347c565b8492505b505095945050505050565b602081015160ff1660031415806134b55750816001600160a01b03168161014001516001600160a01b031614155b1561359a5760608101516040808301519051633acd4df360e21b81526001600160a01b039283166004820152602481019190915260009184169063eb3537cc90604401606060405180830381865afa158015613515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135399190614941565b5050905060008112156135985760405162461bcd60e51b815260206004820152602160248201527f4346413a206e6f7420656e6f75676820617661696c61626c652062616c616e636044820152606560f81b60648201526084016105ec565b505b5050565b60006135ae8685602001516117e8565b91505060006135c08460400151611f4b565b905060006135d18360400151611f4b565b905060606000806135e2848b614e06565b90506000806135f08d6115fe565b915091506136008c878484611fb9565b93505050600081126136eb576000846136198388614a67565b6136239190614e47565b9050600183613633576001613636565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f6020015161368588614008565b61369189600019614a67565b6040518863ffffffff1660e01b81526004016136b39796959493929190614f8a565b600060405180830381600087803b1580156136cd57600080fd5b505af11580156136e1573d6000803e3d6000fd5b505050505061379d565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f6020015161373b88614008565b6137478a600019614a67565b6040518863ffffffff1660e01b81526004016137699796959493929190614f8a565b600060405180830381600087803b15801561378357600080fd5b505af1158015613797573d6000803e3d6000fd5b50505050505b5050505050505050505050565b600082600b0b6000036137bf57506000611193565b60016001605f1b038211156137d6576137d6614eef565b6137e08284614fd7565b600b0b90506108c08161405a565b60008183116137fd57816108c0565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613858573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061387c9190615071565b9194509250905082801561388e575081155b156139b257600061389f868861428f565b90508660c0015182166000036139a45760006138be8860c0015161430d565b88516040808b015160608c0151825160008152602081019093526138ea939230929190604481016150ad565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e029261395992918691641000000000919091149088906004016150f2565b6000604051808303816000875af1158015613978573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526139a09190810190614eba565b9550505b6139af8660006143a4565b50505b50505092915050565b6000806139c66143cc565b60008060006139d4896115fe565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3b919061497a565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613a8e9033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614a04565b602060405180830381865afa158015613aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613acf9190614997565b9250613adf8960800151836137aa565b95505050613af08660600151611f4b565b613afd8760400151611f4b565b613b0686611f4b565b613b109190614a28565b613b1a9190614e06565b9450613b2d85612f1b8860400151611f4b565b91508082108015613b45575060008760800151600b0b135b15613b8757613b578660600151611f4b565b613b648760400151611f4b565b613b6d83611f4b565b613b779190614a28565b613b819190614e06565b94508091505b6001600160a01b03891615801590613bb15750876001600160a01b0316896001600160a01b031614155b15613bbb57600093505b604051806080016040528060008960800151600b0b13613bdc576000613bde565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613c1d8661408e565b6040518363ffffffff1660e01b8152600401613c3a9291906149eb565b600060405180830381600087803b158015613c5457600080fd5b505af1158015613c68573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613c88915050565b613cae88886020015189608001518960200151613ca591906148b0565b8860008f6140ff565b600b0b8152604087015160208701516080890151613cdd928b929091613cd491906148b0565b6000808f6140ff565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613d4394939290919061513b565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613d8a91815260200190565b60405180910390a25050955095509592505050565b613da76143f7565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1f9190615071565b88965091945092509050828015613e34575081155b15613ffd57613e43848961428f565b93508760c001518116600003613feb576000613e628960c0015161430d565b89516040808c015160608d015182516000815260208101909352613e909392309291908e9060448101615173565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a8492613eff9291869164200000000091909114908b906004016150f2565b6000604051808303816000875af1158015613f1e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f469190810190614eba565b604051631fb6491d60e11b81529095503390633f6c923a90613f6c90889060040161460d565b600060405180830381865afa158015613f89573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613fb19190810190614ce9565b9550613fe3600061324f613fc88c60800151611f4b565b613254613fd88b60e00151611f4b565b8b610100015161426b565b610100870152505b613ffa868661010001516143a4565b93505b505050935093915050565b600080821215611fb55760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f73697469766560448201526064016105ec565b60008063ffffffff831661406f576000614072565b60015b60ff16905060206140858285831c6151cc565b901b9392505050565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b8160008151811061299957612999614bf7565b60008061410c88886117e8565b91505060008160200151600b0b61412c836000015186612ed19190614e75565b6141369190614a67565b905080156141a15760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561418857600080fd5b505af115801561419c573d6000803e3d6000fd5b505050505b8682602001516141b191906151e4565b600b0b602083015283825260408201516141d0908790612f1b90611f4b565b604083015260608201516141e9908690612f1b90611f4b565b60608301526001600160a01b03891663090c415e8960006142098661408e565b6040518463ffffffff1660e01b815260040161422793929190615233565b600060405180830381600087803b15801561424157600080fd5b505af1158015614255573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b60008183136137fd57816108c0565b600081831361428957826108c0565b50919050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb0946142c6948a9460040161525a565b6000604051808303816000875af11580156142e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108c09190810190614eba565b6000640100000000820361432957506330d9c91560e01b919050565b64040000000082036143435750630221347d60e61b919050565b641000000000820361435d5750635f9e7d7760e01b919050565b6402000000008203614377575063d86ed3e560e01b919050565b6408000000008203614391575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906142c6908690869060040161529f565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b60405180606001604052806060815260200161446c6143cc565b81526020016144796143f7565b905290565b6001600160a01b03811681146107ed57600080fd5b6000806000606084860312156144a857600080fd5b83356144b38161447e565b925060208401356144c38161447e565b915060408401356144d38161447e565b809150509250925092565b600080604083850312156144f157600080fd5b82356144fc8161447e565b946020939093013593505050565b60008083601f84011261451c57600080fd5b50813567ffffffffffffffff81111561453457600080fd5b6020830191508360208285010111156115f757600080fd5b6000806000806060858703121561456257600080fd5b843561456d8161447e565b9350602085013561457d8161447e565b9250604085013567ffffffffffffffff81111561459957600080fd5b6145a58782880161450a565b95989497509550505050565b60005b838110156145cc5781810151838201526020016145b4565b838111156145db576000848401525b50505050565b600081518084526145f98160208601602086016145b1565b601f01601f19169290920160200192915050565b6020815260006108c060208301846145e1565b6000806040838503121561463357600080fd5b823561463e8161447e565b9150602083013561464e8161447e565b809150509250929050565b8035600b81900b811461439f57600080fd5b60008060008060008060a0878903121561468457600080fd5b863561468f8161447e565b9550602087013561469f8161447e565b945060408701356146af8161447e565b93506146bd60608801614659565b9250608087013567ffffffffffffffff8111156146d957600080fd5b6146e589828a0161450a565b979a9699509497509295939492505050565b60006020828403121561470957600080fd5b81356108c08161447e565b60008060006060848603121561472957600080fd5b83356147348161447e565b925060208401356147448161447e565b929592945050506040919091013590565b60008060008060006080868803121561476d57600080fd5b85356147788161447e565b945060208601356147888161447e565b935060408601356147988161447e565b9250606086013567ffffffffffffffff8111156147b457600080fd5b6147c08882890161450a565b969995985093965092949392505050565b6000806000806000608086880312156147e957600080fd5b85356147f48161447e565b945060208601356148048161447e565b935061479860408701614659565b60ff811681146107ed57600080fd5b60008060008060008060a0878903121561483a57600080fd5b86356148458161447e565b955060208701356148558161447e565b945060408701356146af81614812565b6000806040838503121561487857600080fd5b82356148838161447e565b915061489160208401614659565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600081600b0b83600b0b600081128160016001605f1b0319018312811516156148db576148db61489a565b8160016001605f1b030183138116156148f6576148f661489a565b5090039392505050565b60208082526021908201527f4346413a20455f4558434545445f464c4f575f524154455f414c4c4f57414e436040820152604560f81b606082015260800190565b60008060006060848603121561495657600080fd5b8351925060208401519150604084015190509250925092565b805161439f8161447e565b60006020828403121561498c57600080fd5b81516108c08161447e565b6000602082840312156149a957600080fd5b5051919050565b600081518084526020808501945080840160005b838110156149e0578151875295820195908201906001016149c4565b509495945050505050565b8281526040602082015260006104c960408301846149b0565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008083128015600160ff1b850184121615614a4657614a4661489a565b6001600160ff1b0384018313811615614a6157614a6161489a565b50500390565b60006001600160ff1b0381841382841380821686840486111615614a8d57614a8d61489a565b600160ff1b6000871282811687830589121615614aac57614aac61489a565b60008712925087820587128484161615614ac857614ac861489a565b87850587128184161615614ade57614ade61489a565b505050929093029392505050565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614b2657614b26614aec565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614b5557614b55614aec565b604052919050565b60006020808385031215614b7057600080fd5b825167ffffffffffffffff80821115614b8857600080fd5b818501915085601f830112614b9c57600080fd5b815181811115614bae57614bae614aec565b8060051b9150614bbf848301614b2c565b8181529183018401918481019088841115614bd957600080fd5b938501935b83851015610ce857845182529385019390850190614bde565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614c3257614c32614c0d565b500490565b8051801515811461439f57600080fd5b600060208284031215614c5957600080fd5b6108c082614c37565b805161439f81614812565b80516001600160e01b03198116811461439f57600080fd5b600082601f830112614c9657600080fd5b815167ffffffffffffffff811115614cb057614cb0614aec565b614cc3601f8201601f1916602001614b2c565b818152846020838601011115614cd857600080fd5b6104c98260208301602087016145b1565b600060208284031215614cfb57600080fd5b815167ffffffffffffffff80821115614d1357600080fd5b908301906101608286031215614d2857600080fd5b614d30614b02565b614d3983614c62565b8152614d4760208401614c62565b602082015260408301516040820152614d626060840161496f565b6060820152614d7360808401614c6d565b608082015260a083015182811115614d8a57600080fd5b614d9687828601614c85565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150614dcd82840161496f565b828201526101409150614de182840161496f565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b600080821280156001600160ff1b0384900385131615614e2857614e2861489a565b600160ff1b8390038412811615614e4157614e4161489a565b50500190565b600082614e5657614e56614c0d565b600160ff1b821460001984141615614e7057614e7061489a565b500590565b600082821015614e8757614e8761489a565b500390565b606081526000614e9f60608301866145e1565b6001600160a01b039490941660208301525060400152919050565b600060208284031215614ecc57600080fd5b815167ffffffffffffffff811115614ee357600080fd5b6104c984828501614c85565b634e487b7160e01b600052600160045260246000fd5b6000816000190483118215151615614f1f57614f1f61489a565b500290565b600060ff821660ff84168060ff03821115614f4157614f4161489a565b019392505050565b606081526000614f5c60608301866145e1565b60208301949094525060400152919050565b6000600160ff1b8201614f8357614f8361489a565b5060000390565b87815260e060208201526000614fa360e08301896145e1565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600081600b0b83600b0b60016001605f1b036000821360008413838304851182821616156150075761500761489a565b6b7fffffffffffffffffffffff19600085128281168783058712161561502f5761502f61489a565b6000871292508582058712848416161561504b5761504b61489a565b858505871281841616156150615761506161489a565b5050509290910295945050505050565b60008060006060848603121561508657600080fd5b61508f84614c37565b925061509d60208501614c37565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906150e0908301856145e1565b8281036080840152610ce881856145e1565b6001600160a01b0385168152608060208201819052600090615116908301866145e1565b8415156040840152828103606084015261513081856145e1565b979650505050505050565b84600b0b815283600b0b602082015282600b0b604082015260806060820152600061516960808301846145e1565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906151a6908301866145e1565b82810360808401526151b881866145e1565b905082810360a084015261136c81856145e1565b600082198211156151df576151df61489a565b500190565b600081600b0b83600b0b600082128260016001605f1b030382138115161561520e5761520e61489a565b8260016001605f1b031903821281161561522a5761522a61489a565b50019392505050565b60018060a01b03841681528260208201526060604082015260006104e260608301846149b0565b60a08152600061526d60a08301886145e1565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b6040815260006152b260408301856145e1565b9050826020830152939250505056fea264697066735822122076418c61ebec88bbc869733ccd3b7d51db9ab7eb6cf6426c327d897e84c12dbb64736f6c634300080e003360a06040523480156200001157600080fd5b506040516200543c3803806200543c833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516153a86200009460003960006110e201526153a86000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637730599e116100ad578063acf4a6c211610071578063acf4a6c21461030d578063b6dacdb814610320578063b96731c214610342578063cd7245c514610355578063d787840a146103ad57600080fd5b80637730599e146102635780637fbc763914610289578063899baaec1461029c5780639b2e48bc146102cc578063acafa1b8146102fa57600080fd5b806346951954116100f457806346951954146101d957806350d75d25146101ee57806352d1902d146101f65780635b5340511461020c5780636041ae961461025057600080fd5b8063232d2b581461012657806323fc23f31461014f5780632e5e74c6146101935780633fd4176a146101a6575b600080fd5b6101396101343660046143f8565b6103c0565b60405161014691906144df565b60405180910390f35b61016261015d3660046144f2565b610ae2565b6040805194151585526001600160801b03938416602086015291831691840191909152166060820152608001610146565b6101396101a136600461453d565b610b4d565b6101c173__SlotsBitmapLibrary____________________81565b6040516001600160a01b039091168152602001610146565b6101ec6101e7366004614591565b6110d7565b005b6101c161115b565b6101fe61118a565b604051908152602001610146565b61021f61021a3660046145ae565b6111ee565b6040516101469493929190931515845291151560208401526001600160801b03166040830152606082015260800190565b61013961025e36600461460a565b6112c4565b7f8aedc3b5d4bf031e11a7e2940f7251c005698405d58e02e1c247fed3b1b3a6746101fe565b610139610297366004614685565b611718565b6102af6102aa3660046146c6565b611828565b604080519283526001600160801b03909116602083015201610146565b6102df6102da366004614717565b6118cc565b60408051938452602084019290925290820152606001610146565b61013961030836600461453d565b611ad7565b61013961031b36600461460a565b611f01565b61033361032e366004614758565b6124e1565b604051610146939291906147d5565b610139610350366004614872565b612736565b6103686103633660046148c7565b612836565b604080516001600160a01b03909616865263ffffffff9094166020860152911515928401929092526001600160801b039091166060830152608082015260a001610146565b6101396103bb3660046148f3565b612958565b60606001600160a01b0385166103f15760405162461bcd60e51b81526004016103e890614957565b60405180910390fd5b6103f9614250565b6104016142ae565b60606000806104468c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b90508060a00151925080606001519150506104658b828b8d6000612d03565b60808901521515602080890191909152606088019190915260408088018390529287528251908101909252600082526104a1918d918c91612e15565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050602086015191965050156105055764040000000060c08401526104fb8386612e43565b60a0850152610520565b64010000000060c084015261051a8386612e43565b60a08501525b8360200151801561053d575060808401515163ffffffff90811614155b156106185761058c8460800151608001516001600160801b0316896001600160801b03168660600151602001516001600160801b031661057d919061499a565b61058791906149b2565b612ffa565b6060850180516001600160801b03909216602090920191909152845190516001600160a01b038d169163a1b2bf8b916105c490613067565b6040518363ffffffff1660e01b81526004016105e19291906149f9565b600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b505050506107ff565b8360200151156106955761065d8460800151608001516001600160801b0316896001600160801b03168660600151604001516001600160801b031661057d919061499a565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916105c490613067565b6040518060a0016040528063ffffffff80168152602001826001600160a01b031681526020018b63ffffffff1681526020018560600151600001516001600160801b03168152602001896001600160801b031681525084608001819052508a6001600160a01b03166312a6a3f885604001516107148760800151613105565b6040518363ffffffff1660e01b81526004016107319291906149f9565b600060405180830381600087803b15801561074b57600080fd5b505af115801561075f573d6000803e3d6000fd5b50505050878460600151604001516107779190614a12565b6060850180516001600160801b03909216604090920191909152845190516001600160a01b038d169163a1b2bf8b916107af90613067565b6040518363ffffffff1660e01b81526004016107cc9291906149f9565b600060405180830381600087803b1580156107e657600080fd5b505af11580156107fa573d6000803e3d6000fd5b505050505b60008460800151608001516001600160801b031685608001516060015186606001516000015161082f9190614a3d565b6001600160801b03166108429190614a65565b905063ffffffff801685608001516000015163ffffffff16036108db576108728c8361086d84614aea565b6131ac565b6001600160a01b038c1663cf97256d8361088b84614aea565b6040518363ffffffff1660e01b81526004016108a8929190614b06565b600060405180830381600087803b1580156108c257600080fd5b505af11580156108d6573d6000803e3d6000fd5b505050505b60405163cf97256d60e01b81526001600160a01b038d169063cf97256d90610909908d908590600401614b06565b600060405180830381600087803b15801561092357600080fd5b505af1158015610937573d6000803e3d6000fd5b505050508460200151156109dd5760608086015151608080880180516001600160801b039384169401939093528251918c16910152604086015190516001600160a01b038e169163a1b2bf8b9161098d90613105565b6040518363ffffffff1660e01b81526004016109aa9291906149f9565b600060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b505050505b846020015115610a0c5764080000000060c085015260a0850151610a03908590886132fa565b9650610a2c9050565b64020000000060c085015260a0850151610a28908590886132fa565b9650505b8a63ffffffff16826001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398d8d88604051610a7a93929190614b1f565b60405180910390a4896001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c182524977848e8d88604051610acb9493929190614b5b565b60405180910390a350505050509695505050505050565b600080600080610b0b604080516060810182526000808252602082018190529181019190915290565b6000610b17888861356d565b9050610b2389826135d4565b90965091508515610b4257815160208301516040840151919650945092505b505093509350935093565b6060610b57614250565b610b5f6142ae565b600060606000610ba58c89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b606081015160a0909101519093509150506001600160a01b038816610bdc5760405162461bcd60e51b81526004016103e890614957565b896001600160a01b0316826001600160a01b031614610c325760405162461bcd60e51b81526020600482015260126024820152711251104e881157d393d517d0531313d5d15160721b60448201526064016103e8565b610c408b8b8a8c6001612d03565b6080890152506060870152604080870182905291865281516020810190925260008252610c70918d918b91612e15565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c087015250909550610cc190508386612e43565b60a08501526080808501519081015160609182015191860151516000926001600160801b0390921691610cf391614a3d565b6001600160801b0316610d069190614a65565b60808601515190915063ffffffff90811614610d5357846080015160800151856060015160200151610d389190614a3d565b60608601516001600160801b03909116602090910152610d86565b846080015160800151856060015160400151610d6f9190614a3d565b60608601516001600160801b039091166040909101525b8b6001600160a01b031663a1b2bf8b8660000151610da78860600151613067565b6040518363ffffffff1660e01b8152600401610dc49291906149f9565b600060405180830381600087803b158015610dde57600080fd5b505af1158015610df2573d6000803e3d6000fd5b5050505060808501515163ffffffff90811614610e1c57610e1c8c8a8760800151600001516136e8565b60808501515163ffffffff1663fffffffe1901610eaa57610e418c8c61086d84614aea565b6001600160a01b038c1663cf97256d8c610e5a84614aea565b6040518363ffffffff1660e01b8152600401610e77929190614b06565b600060405180830381600087803b158015610e9157600080fd5b505af1158015610ea5573d6000803e3d6000fd5b505050505b6040858101519051632704839760e01b81526004810191909152600260248201526001600160a01b038d1690632704839790604401600060405180830381600087803b158015610ef957600080fd5b505af1158015610f0d573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038f16925063cf97256d9150610f3f908c908590600401614b06565b600060405180830381600087803b158015610f5957600080fd5b505af1158015610f6d573d6000803e3d6000fd5b505064200000000060c0870152505060a0850151610f8d908590886132fa565b9050809650508963ffffffff168b6001600160a01b03168d6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d1428c86604051610fdf929190614ba4565b60405180910390a4886001600160a01b03168c6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558d8d8660405161102e93929190614bc8565b60405180910390a38963ffffffff168b6001600160a01b03168d6001600160a01b03167f0115987243fd19d615b5ea62a80372a06a2b37fec378b148ee7a507c5c4c0a398c60008760405161108593929190614b1f565b60405180910390a4886001600160a01b03168c6001600160a01b03167fe0707ac7efb8b59c22189af8d004ed17dc9e4379e71b9066119b62c1825249778d8d600087604051610acb9493929190614b5b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461114f5760405162461bcd60e51b815260206004820152601960248201527f6f6e6c7920686f73742063616e2075706461746520636f64650000000000000060448201526064016103e8565b61115881613773565b50565b60006111857f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614bf8565b60008060008060008061121a604080516060810182526000808252602082018190529181019190915290565b6112226142e9565b6112308c8c8b8d6000612d03565b909b509296509094509250905087611259576000806000809750975097509750505050506112b9565b8051608082015163ffffffff9182169091141597509550866112af5780608001516001600160801b0316816060015183600001516112979190614a3d565b6001600160801b03166112aa9190614c11565b6112b2565b60005b9450505050505b945094509450949050565b60606112ce614250565b6112d66142ae565b60006060600061131c8b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b9050806060015192508060a0015191505061133b8a8a848b6001612d03565b6080890181905260608901929092525060408701919091529085525163ffffffff1663fffffffe19016113b05760405162461bcd60e51b815260206004820152601860248201527f4944413a20455f535542535f4e4f545f415050524f564544000000000000000060448201526064016103e8565b6113cf8a8a866040015160405180602001604052806000815250612e15565b925086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505064100000000060c08701525090955061142090508386612e43565b60a08501526080808501519081015160609182015191860151516000926001600160801b039092169161145291614a3d565b6001600160801b03166114659190614a65565b90508460800151608001518560600151602001516114839190614a3d565b6060860180516001600160801b0390921660209092019190915260808087015101519051604001516114b59190614a12565b6060860180516001600160801b03909216604090920191909152855190516001600160a01b038d169163a1b2bf8b916114ed90613067565b6040518363ffffffff1660e01b815260040161150a9291906149f9565b600060405180830381600087803b15801561152457600080fd5b505af1158015611538573d6000803e3d6000fd5b5050505061154f8b848760800151600001516136e8565b606080860151516080870180516001600160801b039092169190920152805163ffffffff9052604086015190516001600160a01b038d169163a1b2bf8b9161159690613105565b6040518363ffffffff1660e01b81526004016115b39291906149f9565b600060405180830381600087803b1580156115cd57600080fd5b505af11580156115e1573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506116139086908590600401614b06565b600060405180830381600087803b15801561162d57600080fd5b505af1158015611641573d6000803e3d6000fd5b505064200000000060c0870152505060a0850151611661908590886132fa565b9050809650508863ffffffff168a6001600160a01b03168c6001600160a01b03167fe1f8e9cd8061e5b251769965bda6ca9ef1674bc6541fb9131039fa53f024d14286866040516116b3929190614ba4565b60405180910390a4826001600160a01b03168b6001600160a01b03167f9e02127550b99adc8cc6ee332a36f31338facdbc396cebefce9a047247cd04558c8c8660405161170293929190614bc8565b60405180910390a3505050505095945050505050565b6060600061175c8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b60608101519091506000806117728a848b613981565b9150915080600001516001600160801b0316886001600160801b031610156117d05760405162461bcd60e51b81526020600482015260116024820152704944413a20455f494e4445585f47524f5760781b60448201526064016103e8565b6117e38a848b85858d8a60a001516139df565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929d9c50505050505050505050505050565b6000806000611837868661356d565b905060008061184689846135d4565b91509150816118675760405162461bcd60e51b81526004016103e890614c30565b60008160400151826020015161187d9190614a12565b6001600160801b031690506000611897610587838a614c59565b83519091506118a7908290614a12565b95506118bc826001600160801b038316614c11565b9650505050505094509492505050565b60008060006060806118de8888613c32565b909250905060005b81518163ffffffff161015611abb5760006118ff6142e9565b600080868563ffffffff168151811061191a5761191a614c7b565b6020026020010151905061194d8d878763ffffffff168151811061194057611940614c7b565b6020026020010151613d25565b90945092508361195f5761195f614c91565b8063ffffffff16836000015163ffffffff161461197e5761197e614c91565b6001600160a01b038d16634b61cc33308e6119a363ffffffff8616600160801b61499a565b60016040518563ffffffff1660e01b81526004016119c49493929190614ca7565b600060405180830381865afa1580156119e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a099190810190614dcd565b600081518110611a1b57611a1b614c7b565b6020026020010151915050611a49604080516060810182526000808252602082018190529181019190915290565b611a538d836135d4565b909450905083611a6557611a65614c91565b82608001516001600160801b031683606001518260000151611a879190614a3d565b6001600160801b0316611a9a9190614a65565b611aa4908b614e01565b99505050505080611ab490614e42565b90506118e6565b50611ac68888613e41565b935060009250505093509350939050565b6060611b198784848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b506001600160a01b038416611b405760405162461bcd60e51b81526004016103e890614957565b611b48614250565b611b506142ae565b611b5e8989888a6001612d03565b6080870181905260608701929092525060408501919091529083525163ffffffff90811614611bc65760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b60008260800151608001516001600160801b0316836080015160600151846060015160000151611bf69190614a3d565b6001600160801b0316611c099190614c11565b9050611c2a8a8a856040015160405180602001604052806000815250612e15565b915085858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505082159150611eba90505764040000000060c0830152611c828285612e43565b60a0840152611c958a8a61086d84614aea565b6001600160a01b038a1663cf97256d8a611cae84614aea565b6040518363ffffffff1660e01b8152600401611ccb929190614b06565b600060405180830381600087803b158015611ce557600080fd5b505af1158015611cf9573d6000803e3d6000fd5b50505050606083810151516080850180516001600160801b039092169190920152604084015190516001600160a01b038c169163a1b2bf8b91611d3b90613105565b6040518363ffffffff1660e01b8152600401611d589291906149f9565b600060405180830381600087803b158015611d7257600080fd5b505af1158015611d86573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038d16925063cf97256d9150611db8908a908590600401614b06565b600060405180830381600087803b158015611dd257600080fd5b505af1158015611de6573d6000803e3d6000fd5b505050508763ffffffff16896001600160a01b03168b6001600160a01b03167f467eccd248ef31c8bcef16d94856855799a8783aeef10f3759e43614059a6bb18a85604051611e36929190614b06565b60405180910390a4604080516001600160a01b038b8116825263ffffffff8b166020830152918101839052818916918c16907f48a3d91d4a07e4982b081260e24f922bd33bb965882772d6de19c922c3eabdea9060600160405180910390a364080000000060c083015260a0830151611eb1908390866132fa565b9450611ef49050565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509296505050505b5050509695505050505050565b6060611f0b614250565b611f136142ae565b600060606000611f598b89898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b9050806060015192508060a00151915050611f788a8a848b6000612d03565b6080890152158015602089015260608801919091526040870191909152908552611fee5760808401515163ffffffff90811614611fee5760405162461bcd60e51b81526020600482015260146024820152731251104e881157d4d55094d7d054141493d5915160621b60448201526064016103e8565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040808a0151815160208101909252918152949950612047948f94508e9350909150612e15565b925083602001516121705764010000000060c08401526120678386612e43565b60a08086019190915260408051918201815260008083526001600160a01b038c16602084015263ffffffff8b1691830191909152606080870151516001600160801b03169083015260808083019190915285015283516120ca908b908490613eea565b60808501805163ffffffff909216909152604085015190516001600160a01b038c16916312a6a3f8916120fc90613105565b6040518363ffffffff1660e01b81526004016121199291906149f9565b600060405180830381600087803b15801561213357600080fd5b505af1158015612147573d6000803e3d6000fd5b505064020000000060c0860152505060a0840151612167908490876132fa565b95506124319050565b64040000000060c08401526121858386612e43565b60a08501526080808501519081015160609182015191860151516000926001600160801b03909216916121b791614a3d565b6001600160801b03166121ca9190614a65565b905084608001516080015185606001516020018181516121ea9190614a12565b6001600160801b0316905250608080860151015160608601516040018051612213908390614a3d565b6001600160801b0316905250845160608601516001600160a01b038d169163a1b2bf8b9161224090613067565b6040518363ffffffff1660e01b815260040161225d9291906149f9565b600060405180830381600087803b15801561227757600080fd5b505af115801561228b573d6000803e3d6000fd5b5050505061229e8b8b8361086d90614aea565b6001600160a01b038b1663cf97256d8b6122b784614aea565b6040518363ffffffff1660e01b81526004016122d4929190614b06565b600060405180830381600087803b1580156122ee57600080fd5b505af1158015612302573d6000803e3d6000fd5b505060405163cf97256d60e01b81526001600160a01b038e16925063cf97256d91506123349086908590600401614b06565b600060405180830381600087803b15801561234e57600080fd5b505af1158015612362573d6000803e3d6000fd5b5050506060808701515160808801516001600160801b0390911691015250845161238f908c908590613eea565b60808601805163ffffffff909216909152604086015190516001600160a01b038d169163a1b2bf8b916123c190613105565b6040518363ffffffff1660e01b81526004016123de9291906149f9565b600060405180830381600087803b1580156123f857600080fd5b505af115801561240c573d6000803e3d6000fd5b505064080000000060c0870152505060a085015161242c908590886132fa565b965050505b8763ffffffff16896001600160a01b03168b6001600160a01b03167f492d2641617cfaf24ac7328f85bc5bdf5113537d78dc7671afa4f49a73f053c2858560405161247d929190614ba4565b60405180910390a4816001600160a01b03168a6001600160a01b03167fc0b8396b655615cdb85fe462a9a1792480816f909cd46d9517a940b386dfbf6b8b8b856040516124cc93929190614bc8565b60405180910390a35050505095945050505050565b60608060608060606124f38787613c32565b909250905060006125026142e9565b82516001600160401b0381111561251b5761251b614cd0565b604051908082528060200260200182016040528015612544578160200160208202803683370190505b50965082516001600160401b0381111561256057612560614cd0565b604051908082528060200260200182016040528015612589578160200160208202803683370190505b50955082516001600160401b038111156125a5576125a5614cd0565b6040519080825280602002602001820160405280156125ce578160200160208202803683370190505b50945060005b83518163ffffffff16101561272a576000858263ffffffff16815181106125fd576125fd614c7b565b602002602001015190506000858363ffffffff168151811061262157612621614c7b565b602002602001015190506126358c82613d25565b90955093508461264757612647614c91565b8163ffffffff16846000015163ffffffff161461266657612666614c91565b83602001518a8463ffffffff168151811061268357612683614c7b565b60200260200101906001600160a01b031690816001600160a01b0316815250508360400151898463ffffffff16815181106126c0576126c0614c7b565b602002602001019063ffffffff16908163ffffffff16815250508360800151888463ffffffff16815181106126f7576126f7614c7b565b60200260200101906001600160801b031690816001600160801b03168152505050508061272390614e42565b90506125d4565b50505050509250925092565b6060600061277a8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b60608101519091506000806127908a848b613981565b915091506000816040015182602001516127aa9190614a12565b6001600160801b0316905080156127f05760006127ca610587838c614c59565b90506127ee8c868d87878689600001516127e49190614a12565b8c60a001516139df565b505b87878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929e9d5050505050505050505050505050565b6000806000806000806000612864604080516060810182526000808252602082018190529181019190915290565b61286c6142e9565b6128768b8b613d25565b9094509050836128b95760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b80602001519850806040015197506128d1898961356d565b92506128dd8b846135d4565b9094509150836128ef576128ef614c91565b8051608082015163ffffffff9182169091141597509550866129455780608001516001600160801b03168160600151836000015161292d9190614a3d565b6001600160801b03166129409190614c11565b612948565b60005b9450505050509295509295909350565b6060600061299c8685858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612b3892505050565b606081015190915060006129b0828861356d565b90506129bc8882613f91565b156129ff5760405162461bcd60e51b81526020600482015260136024820152724944413a20455f494e4445585f45584953545360681b60448201526064016103e8565b876001600160a01b03166312a6a3f882612a50604051806060016040528060006001600160801b0316815260200160006001600160801b0316815260200160006001600160801b0316815250613067565b6040518363ffffffff1660e01b8152600401612a6d9291906149f9565b600060405180830381600087803b158015612a8757600080fd5b505af1158015612a9b573d6000803e3d6000fd5b505050508663ffffffff16826001600160a01b0316896001600160a01b03167f01ab8663165edfb7390d9e5f75d960a66dacf4f01fa9787e3a731c870d0da9218660a00151604051612aed91906144df565b60405180910390a485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929b9a5050505050505050505050565b612b40614317565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bac9190614e70565b6001600160a01b031614612bf65760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b60448201526064016103e8565b604051632fd0a1cd60e21b8152339063bf42873490612c199085906004016144df565b602060405180830381865afa158015612c36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5a9190614e9d565b612c945760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b60448201526064016103e8565b604051631fb6491d60e11b81523390633f6c923a90612cb79085906004016144df565b600060405180830381865afa158015612cd4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cfc9190810190614f44565b9392505050565b6040805160608101825260008082526020820181905291810182905281906000612d2b6142e9565b6000612d378a8961356d565b9550612d43898761403d565b9450612d4f8b876135d4565b9450905080612d705760405162461bcd60e51b81526004016103e890614c30565b612d7a8b86613d25565b90935091508615612e075782612dc35760405162461bcd60e51b815260206004820152600e60248201526d4944413a20455f4e4f5f5355425360901b60448201526064016103e8565b896001600160a01b031682602001516001600160a01b031614612de857612de8614c91565b8763ffffffff16826040015163ffffffff1614612e0757612e07614c91565b509550955095509550959050565b612e1d6142ae565b6001600160a01b0394851681529290931660208301526040820152606081019190915290565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015612e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebb919061504a565b91945092509050828015612ecd575081155b15612ff1576000612ede868861407e565b90508660c001518216600003612fe3576000612efd8860c001516140fc565b88516040808b015160608c015182516000815260208101909352612f2993923092919060448101615086565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292612f9892918691641000000000919091149088906004016150cb565b6000604051808303816000875af1158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf9190810190615114565b9550505b612fee866000614193565b50505b50505092915050565b60006001600160801b038211156130635760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20316044820152663238206269747360c81b60648201526084016103e8565b5090565b604080516002808252606080830184529260208301908036833701905050905081600001516001600160801b0316600160801b1760001b816000815181106130b1576130b1614c7b565b602002602001018181525050608082604001516001600160801b0316901b82602001516001600160801b03161760001b816001815181106130f4576130f4614c7b565b602002602001018181525050919050565b6040805160028082526060808301845292602083019080368337019050509050816000015163ffffffff166020836040015163ffffffff16901b606084602001516001600160a01b0316901b171760001b8160008151811061316957613169614c7b565b602002602001018181525050608082608001516001600160801b0316901b82606001516001600160801b03161760001b816001815181106130f4576130f4614c7b565b806000036131b957505050565b604051634b61cc3360e01b81526000906001600160a01b03851690634b61cc33906131f4903090879064010000000090600190600401614ca7565b600060405180830381865afa158015613211573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526132399190810190614dcd565b9050816132628260008151811061325257613252614c7b565b602002602001015160001c6141bb565b61326c9190614e01565b60001b8160008151811061328257613282614c7b565b602090810291909101015260405163048620af60e11b81526001600160a01b0385169063090c415e906132c2908690640100000000908690600401615148565b600060405180830381600087803b1580156132dc57600080fd5b505af11580156132f0573d6000803e3d6000fd5b5050505050505050565b613302614317565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613356573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337a919061504a565b8896509194509250905082801561338f575081155b156135625761339e848961407e565b93508760c0015181166000036135505760006133bd8960c001516140fc565b89516040808c015160608d0151825160008152602081019093526133eb9392309291908e906044810161516f565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a849261345a9291869164200000000091909114908b906004016150cb565b6000604051808303816000875af1158015613479573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134a19190810190615114565b604051631fb6491d60e11b81529095503390633f6c923a906134c79088906004016144df565b600060405180830381865afa1580156134e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261350c9190810190614f44565b955061354860006135436135238c608001516141bb565b61353e6135338b60e001516141bb565b8b6101000151614225565b61423b565b614225565b610100870152505b61355f86866101000151614193565b93505b505050935093915050565b60405168383ab13634b9b432b960b91b60208201526bffffffffffffffffffffffff19606084901b1660298201526001600160e01b031960e083901b16603d8201526000906041015b60405160208183030381529060405280519060200120905092915050565b60408051606081018252600080825260208201819052918101829052604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613645573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261366d9190810190614dcd565b905060008160008151811061368457613684614c7b565b602002602001015160001c90506000826001815181106136a6576136a6614c7b565b602002602001015160001c905060008211945084156136de576001600160801b03808316855281166020850152608081901c60408501525b5050509250929050565b604051631528e57f60e31b81526001600160a01b038085166004830152831660248201526000604482015263ffffffff8216606482015273__SlotsBitmapLibrary____________________9063a9472bf89060840160006040518083038186803b15801561375657600080fd5b505af415801561376a573d6000803e3d6000fd5b50505050505050565b600061379d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036137f35760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016103e8565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138559190614bf8565b61385d61118a565b146138b65760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016103e8565b6001600160a01b038116300361390e5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016103e8565b613936817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc61395f61118a565b604080519182526001600160a01b03841660208301520160405180910390a150565b6040805160608101825260008082526020820181905291810182905260006139a9858561356d565b92506139b586846135d4565b92509050806139d65760405162461bcd60e51b81526004016103e890614c30565b50935093915050565b866001600160a01b031663cf97256d8785602001516001600160801b0316866000015186613a0d9190614a3d565b6001600160801b0316613a1f90614aea565b613a299190614a65565b6040518363ffffffff1660e01b8152600401613a46929190614b06565b600060405180830381600087803b158015613a6057600080fd5b505af1158015613a74573d6000803e3d6000fd5b50505050613aae878785604001516001600160801b0316866000015186613a9b9190614a3d565b6001600160801b031661086d9190614a65565b82516001600160801b03831684526001600160a01b03881663a1b2bf8b86613ad587613067565b6040518363ffffffff1660e01b8152600401613af29291906149f9565b600060405180830381600087803b158015613b0c57600080fd5b505af1158015613b20573d6000803e3d6000fd5b505050508563ffffffff16876001600160a01b0316896001600160a01b03167f81e37f3d9f16cbf29a62d6a1c21d79b23ef29b54124ec44af43a50fffb9304f3848789604001518a6020015189604051613b7e9594939291906151d5565b60405180910390a46040516379359f6f60e01b81526001600160a01b0388811660048301528916906379359f6f90602401602060405180830381865afa158015613bcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf09190614e9d565b156132f05760405162461bcd60e51b81526020600482015260126024820152714944413a20455f4c4f575f42414c414e434560701b60448201526064016103e8565b60608073__SlotsBitmapLibrary____________________6306967a8c85856000600160801b6040518563ffffffff1660e01b8152600401613c779493929190614ca7565b600060405180830381865af4158015613c94573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613cbc9190810190615211565b909250905060005b8151811015613d1d57613cf084838381518110613ce357613ce3614c7b565b602002602001015161403d565b828281518110613d0257613d02614c7b565b6020908102919091010152613d16816152d5565b9050613cc4565b509250929050565b6000613d2f6142e9565b604051636c2d9f2f60e01b815230600482015260248101849052600260448201526000906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa158015613d84573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613dac9190810190614dcd565b9050600081600081518110613dc357613dc3614c7b565b602002602001015160001c9050600082600181518110613de557613de5614c7b565b602002602001015160001c905060008211945084156136de57606082811c60208087019190915283901c63ffffffff9081166040870152831685526001600160801b03821690850152608081811c908501525050509250929050565b600080836001600160a01b0316634b61cc33308564010000000060016040518563ffffffff1660e01b8152600401613e7c9493929190614ca7565b600060405180830381865afa158015613e99573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613ec19190810190614dcd565b905080600081518110613ed657613ed6614c7b565b602002602001015160001c91505092915050565b604051630a32470160e41b81526001600160a01b03808516600483015283166024820152600060448201819052600160801b6064830152608482018390529073__SlotsBitmapLibrary____________________9063a32470109060a401602060405180830381865af4158015613f65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8991906152ee565b949350505050565b604051636c2d9f2f60e01b8152306004820152602481018290526002604482015260009081906001600160a01b03851690636c2d9f2f90606401600060405180830381865afa158015613fe8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140109190810190614dcd565b905060008160008151811061402757614027614c7b565b6020908102919091010151151595945050505050565b604080516b39bab139b1b934b83a34b7b760a11b6020820152606084811b6bffffffffffffffffffffffff1916602c830152918101839052600091016135b6565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb0946140b5948a9460040161530b565b6000604051808303816000875af11580156140d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612cfc9190810190615114565b6000640100000000820361411857506330d9c91560e01b919050565b64040000000082036141325750630221347d60e61b919050565b641000000000820361414c5750635f9e7d7760e01b919050565b6402000000008203614166575063d86ed3e560e01b919050565b6408000000008203614180575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e906140b59086908690600401615350565b60006001600160ff1b038211156130635760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016103e8565b60008183136142345781612cfc565b5090919050565b600081831361424a5782612cfc565b50919050565b6040805160c0810182526000808252602082018190529181019190915260608101614294604080516060810182526000808252602082018190529181019190915290565b81526020016142a16142e9565b8152602001606081525090565b6040805160e0810182526000808252602082018190529181018290526060808201526080810182905260a0810182905260c081019190915290565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6001600160a01b038116811461115857600080fd5b63ffffffff8116811461115857600080fd5b80356001600160801b038116811461418e57600080fd5b60008083601f8401126143c257600080fd5b5081356001600160401b038111156143d957600080fd5b6020830191508360208285010111156143f157600080fd5b9250929050565b60008060008060008060a0878903121561441157600080fd5b863561441c81614372565b9550602087013561442c81614387565b9450604087013561443c81614372565b935061444a60608801614399565b925060808701356001600160401b0381111561446557600080fd5b61447189828a016143b0565b979a9699509497509295939492505050565b60005b8381101561449e578181015183820152602001614486565b838111156144ad576000848401525b50505050565b600081518084526144cb816020860160208601614483565b601f01601f19169290920160200192915050565b602081526000612cfc60208301846144b3565b60008060006060848603121561450757600080fd5b833561451281614372565b9250602084013561452281614372565b9150604084013561453281614387565b809150509250925092565b60008060008060008060a0878903121561455657600080fd5b863561456181614372565b9550602087013561457181614372565b9450604087013561458181614387565b9350606087013561444a81614372565b6000602082840312156145a357600080fd5b8135612cfc81614372565b600080600080608085870312156145c457600080fd5b84356145cf81614372565b935060208501356145df81614372565b925060408501356145ef81614387565b915060608501356145ff81614372565b939692955090935050565b60008060008060006080868803121561462257600080fd5b853561462d81614372565b9450602086013561463d81614372565b9350604086013561464d81614387565b925060608601356001600160401b0381111561466857600080fd5b614674888289016143b0565b969995985093965092949392505050565b60008060008060006080868803121561469d57600080fd5b85356146a881614372565b945060208601356146b881614387565b935061464d60408701614399565b600080600080608085870312156146dc57600080fd5b84356146e781614372565b935060208501356146f781614372565b9250604085013561470781614387565b9396929550929360600135925050565b60008060006060848603121561472c57600080fd5b833561473781614372565b9250602084013561474781614372565b929592945050506040919091013590565b6000806040838503121561476b57600080fd5b823561477681614372565b9150602083013561478681614372565b809150509250929050565b600081518084526020808501945080840160005b838110156147ca5781516001600160801b0316875295820195908201906001016147a5565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156148175781516001600160a01b0316845292840192908401906001016147f2565b5050508381038285015285518082528683019183019060005b8181101561485257835163ffffffff1683529284019291840191600101614830565b505084810360408601526148668187614791565b98975050505050505050565b60008060008060006080868803121561488a57600080fd5b853561489581614372565b945060208601356148a581614387565b93506040860135925060608601356001600160401b0381111561466857600080fd5b600080604083850312156148da57600080fd5b82356148e581614372565b946020939093013593505050565b6000806000806060858703121561490957600080fd5b843561491481614372565b9350602085013561492481614387565b925060408501356001600160401b0381111561493f57600080fd5b61494b878288016143b0565b95989497509550505050565b6020808252601390820152724944413a20455f4e4f5f5a45524f5f5355425360681b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156149ad576149ad614984565b500190565b6000828210156149c4576149c4614984565b500390565b600081518084526020808501945080840160005b838110156147ca578151875295820195908201906001016149dd565b828152604060208201526000613f8960408301846149c9565b60006001600160801b03808316818516808303821115614a3457614a34614984565b01949350505050565b60006001600160801b0383811690831681811015614a5d57614a5d614984565b039392505050565b60006001600160ff1b0381841382841380821686840486111615614a8b57614a8b614984565b600160ff1b6000871282811687830589121615614aaa57614aaa614984565b60008712925087820587128484161615614ac657614ac6614984565b87850587128184161615614adc57614adc614984565b505050929093029392505050565b6000600160ff1b8201614aff57614aff614984565b5060000390565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03841681526001600160801b0383166020820152606060408201819052600090614b52908301846144b3565b95945050505050565b6001600160a01b038516815263ffffffff841660208201526001600160801b0383166040820152608060608201819052600090614b9a908301846144b3565b9695505050505050565b6001600160a01b0383168152604060208201819052600090613f89908301846144b3565b6001600160a01b038416815263ffffffff83166020820152606060408201819052600090614b52908301846144b3565b600060208284031215614c0a57600080fd5b5051919050565b6000816000190483118215151615614c2b57614c2b614984565b500290565b6020808252600f908201526e092888274408abe9c9ebe929c888ab608b1b604082015260600190565b600082614c7657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b0381118282101715614d0957614d09614cd0565b60405290565b604051601f8201601f191681016001600160401b0381118282101715614d3757614d37614cd0565b604052919050565b60006001600160401b03821115614d5857614d58614cd0565b5060051b60200190565b600082601f830112614d7357600080fd5b81516020614d88614d8383614d3f565b614d0f565b82815260059290921b84018101918181019086841115614da757600080fd5b8286015b84811015614dc25780518352918301918301614dab565b509695505050505050565b600060208284031215614ddf57600080fd5b81516001600160401b03811115614df557600080fd5b613f8984828501614d62565b600080821280156001600160ff1b0384900385131615614e2357614e23614984565b600160ff1b8390038412811615614e3c57614e3c614984565b50500190565b600063ffffffff808316818103614e5b57614e5b614984565b6001019392505050565b805161418e81614372565b600060208284031215614e8257600080fd5b8151612cfc81614372565b8051801515811461418e57600080fd5b600060208284031215614eaf57600080fd5b612cfc82614e8d565b805160ff8116811461418e57600080fd5b80516001600160e01b03198116811461418e57600080fd5b600082601f830112614ef257600080fd5b81516001600160401b03811115614f0b57614f0b614cd0565b614f1e601f8201601f1916602001614d0f565b818152846020838601011115614f3357600080fd5b613f89826020830160208701614483565b600060208284031215614f5657600080fd5b81516001600160401b0380821115614f6d57600080fd5b908301906101608286031215614f8257600080fd5b614f8a614ce6565b614f9383614eb8565b8152614fa160208401614eb8565b602082015260408301516040820152614fbc60608401614e65565b6060820152614fcd60808401614ec9565b608082015260a083015182811115614fe457600080fd5b614ff087828601614ee1565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150615027828401614e65565b82820152610140915061503b828401614e65565b91810191909152949350505050565b60008060006060848603121561505f57600080fd5b61506884614e8d565b925061507660208501614e8d565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906150b9908301856144b3565b828103608084015261486681856144b3565b6001600160a01b03851681526080602082018190526000906150ef908301866144b3565b8415156040840152828103606084015261510981856144b3565b979650505050505050565b60006020828403121561512657600080fd5b81516001600160401b0381111561513c57600080fd5b613f8984828501614ee1565b60018060a01b0384168152826020820152606060408201526000614b5260608301846149c9565b6001600160a01b038781168252861660208201526040810185905260c0606082018190526000906151a2908301866144b3565b82810360808401526151b481866144b3565b905082810360a08401526151c881856144b3565b9998505050505050505050565b60006001600160801b0380881683528087166020840152808616604084015280851660608401525060a0608083015261510960a08301846144b3565b6000806040838503121561522457600080fd5b82516001600160401b038082111561523b57600080fd5b818501915085601f83011261524f57600080fd5b8151602061525f614d8383614d3f565b82815260059290921b8401810191818101908984111561527e57600080fd5b948201945b838610156152a557855161529681614387565b82529482019490820190615283565b918801519196509093505050808211156152be57600080fd5b506152cb85828601614d62565b9150509250929050565b6000600182016152e7576152e7614984565b5060010190565b60006020828403121561530057600080fd5b8151612cfc81614387565b60a08152600061531e60a08301886144b3565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b60408152600061536360408301856144b3565b9050826020830152939250505056fea2646970667358221220e49ca08a4ebd6ff840fca023302eace4ca2cc236879573a77c3b33f089cb0fa664736f6c634300080e0033608060405234801561001057600080fd5b50614aba806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639ed9331814610030575b600080fd5b61004361003e3660046100ae565b61005f565b6040516001600160a01b03909116815260200160405180910390f35b60008160405161006e906100a1565b6001600160a01b039091168152602001604051809103906000f08015801561009a573d6000803e3d6000fd5b5092915050565b6149a6806100df83390190565b6000602082840312156100c057600080fd5b81356001600160a01b03811681146100d757600080fd5b939250505056fe60a06040523480156200001157600080fd5b50604051620049a6380380620049a6833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b6080516148a9620000fd600039600081816103f701528181610a8101528181610aef01528181610d9301528181610eed01528181610fbc015281816111d301528181611321015281816114b50152818161179c0152818161185e015281816118e501528181612171015281816122080152818161335c01526135dc01526148a96000f3fe608060405234801561001057600080fd5b50600436106103275760003560e01c806362aa5287116101b8578063a9059cbb11610104578063d9d078d6116100a2578063ee719bc81161007c578063ee719bc81461076f578063fad8b32a14610780578063fc673c4f14610793578063fe9d9303146107a657600080fd5b8063d9d078d6146106f5578063dd62ed3e14610708578063eb3537cc1461074157600080fd5b8063c68d4283116100de578063c68d4283146106a9578063ca789464146106bc578063cf97256d146106cf578063d95b6371146106e257600080fd5b8063a9059cbb14610670578063b84cdd4a14610683578063bb0d196e1461069657600080fd5b8063959b8c3f116101715780639d8767411161014b5780639d87674114610624578063a1b2bf8b14610637578063a3a7e7f31461064a578063a457c2d71461065d57600080fd5b8063959b8c3f146105f657806395d89b41146106095780639bd9bbc61461061157600080fd5b806362aa52871461058457806362ad1b831461059757806366a12fb6146105aa5780636c2d9f2f146105bd57806370a08231146105d057806379359f6f146105e357600080fd5b80632ec8eec71161027757806345977d031161023057806350d75d251161020a57806350d75d251461053c57806352d1902d14610544578063556f0dc71461056a5780635b9d09cc1461057157600080fd5b806345977d03146104f657806346951954146105095780634b61cc331461051c57600080fd5b80632ec8eec714610468578063313ce5671461049b578063386fa221146104aa57806339509351146104bd57806341b706be146104d057806342fe0980146104e357600080fd5b806316d055d6116102e457806320bc4425116102be57806320bc4425146103f557806323b872dd1461042f578063245887fc14610442578063270483971461045557600080fd5b806316d055d6146103bd57806318160ddd146103d05780631863e809146103e257600080fd5b806306e485381461032c57806306fdde031461034a578063090c415e1461035f578063095ea7b31461037457806311bcc81e1461039757806312a6a3f8146103aa575b600080fd5b6103346107b9565b60405161034191906138bb565b60405180910390f35b6103526107ca565b6040516103419190613960565b61037261036d3660046139d3565b61085c565b005b610387610382366004613a2e565b610910565b6040519015158152602001610341565b6103726103a5366004613a5a565b610927565b6103726103b8366004613a73565b610955565b6103726103cb366004613abe565b610a7f565b6003545b604051908152602001610341565b6103726103f0366004613bd2565b610ada565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610341565b61038761043d366004613c64565b610d79565b610372610450366004613a2e565b610d91565b610372610463366004613ca5565b610e08565b61047b610476366004613cc7565b610ee5565b604080519485526020850193909352918301526060820152608001610341565b60405160128152602001610341565b6103346104b8366004613cc7565b610f88565b6103876104cb366004613a2e565b61102b565b6103726104de366004613abe565b611067565b6103726104f1366004613d25565b611092565b610372610504366004613a5a565b61119c565b610372610517366004613cc7565b6111c8565b61052f61052a366004613dbf565b611257565b6040516103419190613e05565b61041761129c565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb00196103d4565b60016103d4565b61037261057f366004613e3d565b6112c6565b610372610592366004613c64565b61131f565b6103726105a5366004613e8c565b611377565b6103726105b8366004613c64565b611424565b61052f6105cb366004613f2a565b611443565b6103d46105de366004613cc7565b611485565b6103876105f1366004613cc7565b6114ad565b610372610604366004613cc7565b611535565b610352611586565b61037261061f366004613e3d565b611595565b610372610632366004613f5f565b6115e9565b610372610645366004613a73565b611628565b610372610658366004613cc7565b6116d2565b61038761066b366004613a2e565b6116e6565b61038761067e366004613a2e565b611735565b610387610691366004613a2e565b611743565b6103876106a4366004613cc7565b611794565b6103726106b7366004613f5f565b61181c565b6103726106ca366004613a2e565b61185c565b6103726106dd366004613a2e565b6118d0565b6103876106f0366004613fb7565b6119b8565b610387610703366004613a2e565b6119c6565b6103d4610716366004613fb7565b6001600160a01b03918216600090815260116020908152604080832093909416825291909152205490565b61075461074f366004613a2e565b6119e0565b60408051938452602084019290925290820152606001610341565b600e546001600160a01b0316610417565b61037261078e366004613cc7565b611b1c565b6103726107a1366004613ff0565b611b6d565b6103726107b4366004614037565b611c0c565b60606107c56012611c5c565b905090565b6060600f80546107d990614075565b80601f016020809104026020016040519081016040528092919081815260200182805461080590614075565b80156108525780601f1061082757610100808354040283529160200191610852565b820191906000526020600020905b81548152906001019060200180831161083557829003601f168201915b5050505050905090565b6000338585604051602001610873939291906140af565b6040516020818303038152906040528051906020012090506108c881848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc292505050565b6040518481526001600160a01b0386169033907f30f416fa68fca014a0f334464c64b000ba53e99b6d2afdea9d5ca756372d5985906020015b60405180910390a35050505050565b600061091d338484611d03565b5060015b92915050565b6109523333836040518060200160405280600081525060405180602001604052806000815250611e2b565b50565b604051339060009061096d90839087906020016140f8565b60408051601f19818403018152919052805160209091012090506109918184612012565b156109f65760405162461bcd60e51b815260206004820152602a60248201527f5375706572666c756964546f6b656e3a2061677265656d656e7420616c726561604482015269191e4818dc99585d195960b21b60648201526084015b60405180910390fd5b610a3381858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc292505050565b816001600160a01b03167f770ea40a13a4644573ed785e5c7116890709947918747febc5add46feb531e2d868686604051610a7093929190614135565b60405180910390a25050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610ac75760405162461bcd60e51b81526004016109ed90614179565b610ad38484848461204e565b5050505050565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa158015610b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6291906141c4565b610b7e5760405162461bcd60e51b81526004016109ed906141e1565b6000610b8861216c565b90506001600160a01b038116610b9b5750845b600085610ba85786610baa565b815b905060008313610c4757610bbd8361423e565b610bc6856122b1565b14610bd357610bd361425a565b610bdc846122b1565b6001600160a01b03821660009081526002602052604081208054909190610c04908490614270565b90915550506001600160a01b03851660009081526002602052604081208054859290610c31908490614270565b90915550610c42905085828661231f565b610d11565b8515610c5557610c5561425a565b82610c5f856122b1565b610c699190614270565b6001600160a01b03831660009081526002602052604081208054909190610c919084906142b1565b90915550610ca09050846122b1565b6001600160a01b03881660009081526002602052604081208054909190610cc8908490614270565b90915550506001600160a01b03851660009081526002602052604081208054859290610cf5908490614270565b90915550610d06905082888661231f565b610d1182868561231f565b846001600160a01b0316876001600160a01b0316336001600160a01b03167fb8381a3ce157650e06186e3e8f4dd4dc29236f2688b6eed1893d0a60d7c6386f8c8589898f604051610d669594939291906142f0565b60405180910390a4505050505050505050565b6000610d873385858561204e565b90505b9392505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163314610dd95760405162461bcd60e51b81526004016109ed90614179565b610e043383836040518060200160405280600081525060405180602001604052806000815250611e2b565b5050565b6040513390600090610e2090839086906020016140f8565b604051602081830303815290604052805190602001209050610e428184612012565b610ea05760405162461bcd60e51b815260206004820152602960248201527f5375706572666c756964546f6b656e3a2061677265656d656e7420646f6573206044820152681b9bdd08195e1a5cdd60ba1b60648201526084016109ed565b610eaa8184612352565b60405184815233907f71a63dc095de07aa5512ad57a7596a39516317e316981a1cd71000057be1537b9060200160405180910390a250505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190614323565b9050610f7985826119e0565b91979096509094509092509050565b6001600160a01b038181166000908152600160205260409081902054905163c56a069d60e01b8152901960048201526060917f0000000000000000000000000000000000000000000000000000000000000000169063c56a069d90602401600060405180830381865afa158015611003573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610921919081019061433c565b3360008181526011602090815260408083206001600160a01b0387168452909152812054909161091d9185906110629086906143ed565b611d03565b3330146110865760405162461bcd60e51b81526004016109ed90614405565b610ad38385848461204e565b600054610100900460ff166110ad5760005460ff16156110b1565b303b155b6111145760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109ed565b600054610100900460ff16158015611136576000805461ffff19166101011790555b600e805460ff8816600160a01b026001600160a81b03199091166001600160a01b038a161717905561116a600f868661382b565b506111776010848461382b565b5061118130612373565b8015611193576000805461ff00191690555b50505050505050565b6109523333338460405180602001604052806000815250604051806020016040528060008152506124a1565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461124e5760405162461bcd60e51b815260206004820152602560248201527f5375706572546f6b656e3a206f6e6c7920686f73742063616e2075706461746560448201526420636f646560d81b60648201526084016109ed565b610952816126a4565b60606000858585604051602001611270939291906140af565b60405160208183030381529060405280519060200120905061129281846128e4565b9695505050505050565b60006107c57f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b611319333386866040518060200160405280600081525087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506124a192505050565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146113675760405162461bcd60e51b81526004016109ed90614179565b611372838383611d03565b505050565b336113846012828a612973565b6113a05760405162461bcd60e51b81526004016109ed9061443c565b61141a8189898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a908190840183828082843760009201919091525060019250612a1c915050565b5050505050505050565b3330146113675760405162461bcd60e51b81526004016109ed90614405565b60606000848460405160200161145a9291906140f8565b60405160208183030381529060405280519060200120905061147c81846128e4565b95945050505050565b60008061149183610ee5565b5050509050600081126114a45780610d8a565b60009392505050565b6000610921827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015611511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107039190614323565b3361154260128284612a93565b806001600160a01b0316826001600160a01b03167ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f960405160405180910390a35050565b6060601080546107d990614075565b6113193333868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805160208101909152908152925060019150612a1c9050565b3330146116085760405162461bcd60e51b81526004016109ed90614405565b604080516000815260208101909152611372903390859085908590612b97565b604051339060009061164090839087906020016140f8565b60405160208183030381529060405280519060200120905061169581858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611cc292505050565b336001600160a01b03167f0c4c547b3a4fcaa5be8353b3111472b124155bccc86de811d4a481c9e6e9faca868686604051610a7093929190614135565b610e043333836116e133611485565b61204e565b600061091d3384611062856040518060600160405280602a81526020016147fd602a91393360009081526011602090815260408083206001600160a01b038d1684529091529020549190612c8c565b6000610d8a3333858561204e565b60008060008061175386866119e0565b925092509250600061177b82841161176c5760006122b1565b611776838561448c565b6122b1565b6117859085614270565b60001315979650505050505050565b6000610921827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106919190614323565b33301461183b5760405162461bcd60e51b81526004016109ed90614405565b60408051600080825260208201909252611372913391869186918690612cb8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146118a45760405162461bcd60e51b81526004016109ed90614179565b610e043383848460405180602001604052806000815250604051806020016040528060008152506124a1565b604051632329212160e21b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690638ca4848490602401602060405180830381865afa158015611934573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195891906141c4565b6119745760405162461bcd60e51b81526004016109ed906141e1565b6001600160a01b038216600090815260026020526040902054611998908290614270565b6001600160a01b0390921660009081526002602052604090209190915550565b6000610d8a60128484612973565b6000806119d384846119e0565b5050600013949350505050565b6001600160a01b038216600090815260026020526040812054908080611a0586610f88565b905060005b8151811015611b13576000806000848481518110611a2a57611a2a6144a3565b60209081029190910101516040516326cb922f60e21b81523060048201526001600160a01b038c81166024830152604482018c905290911690639b2e48bc90606401606060405180830381865afa158015611a89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aad91906144b9565b91945092509050611abe82886143ed565b9650611aca81876143ed565b9550611ae7818311611add5760006122b1565b611776828461448c565b611af1848a614270565b611afb91906142b1565b97505050508080611b0b906144e7565b915050611a0a565b50509250925092565b33611b2960128284612daf565b806001600160a01b0316826001600160a01b03167f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa160405160405180910390a35050565b33611b7a60128289612973565b611b965760405162461bcd60e51b81526004016109ed9061443c565b61119381888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250611e2b92505050565b61137233338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051602081019091529081529250611e2b915050565b606081600001805480602002602001604051908101604052809291908181526020018280548015611cb657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611c98575b50505050509050919050565b60005b8151811015611372576000828281518110611ce257611ce26144a3565b6020026020010151905080828501555080611cfc906144e7565b9050611cc5565b6001600160a01b038316611d675760405162461bcd60e51b815260206004820152602560248201527f5375706572546f6b656e3a20617070726f76652066726f6d207a65726f206164604482015264647265737360d81b60648201526084016109ed565b6001600160a01b038216611dc95760405162461bcd60e51b815260206004820152602360248201527f5375706572546f6b656e3a20617070726f766520746f207a65726f206164647260448201526265737360e81b60648201526084016109ed565b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600e546001600160a01b0316611e835760405162461bcd60e51b815260206004820152601f60248201527f5375706572546f6b656e3a206e6f20756e6465726c79696e6720746f6b656e0060448201526064016109ed565b600080611e8f85612ea7565b91509150611ea08787838787612b97565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ee9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0d9190614323565b600e54909150611f27906001600160a01b03168885612f63565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f949190614323565b90506000611fa2828461448c565b9050808514611fc35760405162461bcd60e51b81526004016109ed90614500565b886001600160a01b03167f3bc27981aebbb57f9247dc00fde9d6cd91e4b230083fec3238fedbcba1f9ab3d85604051611ffe91815260200190565b60405180910390a250505050505050505050565b6000805b828110156120445783810154801561203357600192505050610921565b5061203d816144e7565b9050612016565b5060009392505050565b60006001600160a01b0384166120765760405162461bcd60e51b81526004016109ed9061455d565b6001600160a01b03831661209c5760405162461bcd60e51b81526004016109ed906145a3565b60003390506120cd818686866040518060200160405280600081525060405180602001604052806000815250612fc6565b846001600160a01b0316866001600160a01b031614612160576121608587611062866040518060600160405280602d8152602001614847602d9139601160008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054612c8c9092919063ffffffff16565b50600195945050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f191906145e7565b604051638369a0f160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301527f9f60ae461adf056670e03ae602566409933242392cb06744f5747c9f38b05d09604483015291925090821690638369a0f190606401602060405180830381865afa158015612287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ab91906145e7565b91505090565b60006001600160ff1b0382111561231b5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b60648201526084016109ed565b5090565b816001600160a01b0316836001600160a01b031660008051602061482783398151915283604051611e1e91815260200190565b60005b818110156113725760008382015561236c816144e7565b9050612355565b6040516329965a1d60e01b81526001600160a01b03821660048201527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce21770546024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156123f457600080fd5b505af1158015612408573d6000803e3d6000fd5b50506040516329965a1d60e01b81526001600160a01b03841660048201527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a6024820152306044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b15801561248d57600080fd5b505af1158015610ad3573d6000803e3d6000fd5b600e546001600160a01b03166124f95760405162461bcd60e51b815260206004820152601f60248201527f5375706572546f6b656e3a206e6f20756e6465726c79696e6720746f6b656e0060448201526064016109ed565b60008061250585612ea7565b600e546040516370a0823160e01b81523060048201529294509092506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612556573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257a9190614323565b600e54909150612595906001600160a01b0316893086613065565b600e546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156125de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126029190614323565b90506000612610838361448c565b90508085146126315760405162461bcd60e51b81526004016109ed90614500565b6126548b8a868c6001600160a01b03168e6001600160a01b031614158b8b612cb8565b886001600160a01b03167f25ca84076773b0455db53621c459ddc84fe40840e4932a62706a032566f399df8560405161268f91815260200190565b60405180910390a25050505050505050505050565b60006126ce7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036127245760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016109ed565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127869190614323565b7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019146128005760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016109ed565b6001600160a01b03811630036128585760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016109ed565b612880817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7f6bfbb132610e56cb96575dba244667b9d6dbfeffe22b68a79fa16f2d18eb0019604080519182526001600160a01b03841660208301520160405180910390a150565b6060816001600160401b038111156128fe576128fe613b0f565b604051908082528060200260200182016040528015612927578160200160208202803683370190505b50905060005b8281101561296c57600081850154905080838381518110612950576129506144a3565b602090810291909101015250612965816144e7565b905061292d565b5092915050565b6000816001600160a01b0316836001600160a01b031614806129e257506001600160a01b038316600090815260018501602052604090205460ff1680156129e257506001600160a01b03808316600090815260038601602090815260408083209387168352929052205460ff16155b80610d8757506001600160a01b03808316600090815260028601602090815260408083209387168352929052205460ff1690509392505050565b6001600160a01b038616612a425760405162461bcd60e51b81526004016109ed9061455d565b6001600160a01b038516612a685760405162461bcd60e51b81526004016109ed906145a3565b612a7687878787878761309d565b612a84878787878787612fc6565b611193878787878787876131c4565b806001600160a01b0316826001600160a01b031603612b0a5760405162461bcd60e51b815260206004820152602d60248201527f4552433737374f70657261746f72733a20617574686f72697a696e672073656c60448201526c331030b99037b832b930ba37b960991b60648201526084016109ed565b6001600160a01b038116600090815260018401602052604090205460ff1615612b60576001600160a01b03918216600090815260039390930160209081526040808520929093168452529020805460ff19169055565b6001600160a01b0380831660009081526002850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b038416612bf85760405162461bcd60e51b815260206004820152602260248201527f5375706572546f6b656e3a206275726e2066726f6d207a65726f206164647265604482015261737360f01b60648201526084016109ed565b612c078585600086868661309d565b612c118484613354565b836001600160a01b0316856001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098858585604051612c5893929190614604565b60405180910390a36040518381526000906001600160a01b0386169060008051602061482783398151915290602001610901565b60008184841115612cb05760405162461bcd60e51b81526004016109ed9190613960565b505050900390565b6001600160a01b038516612d0e5760405162461bcd60e51b815260206004820181905260248201527f5375706572546f6b656e3a206d696e7420746f207a65726f206164647265737360448201526064016109ed565b612d1885856134a8565b612d2886600087878686896131c4565b846001600160a01b0316866001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d868585604051612d6f93929190614604565b60405180910390a36040518481526001600160a01b03861690600090600080516020614827833981519152906020015b60405180910390a3505050505050565b336001600160a01b03821603612e1a5760405162461bcd60e51b815260206004820152602a60248201527f4552433737374f70657261746f72733a207265766f6b696e672073656c662061604482015269399037b832b930ba37b960b11b60648201526084016109ed565b6001600160a01b038116600090815260018401602052604090205460ff1615612e74576001600160a01b0380831660009081526003850160209081526040808320938516835292905220805460ff19166001179055505050565b6001600160a01b03918216600090815260029390930160209081526040808520929093168452529020805460ff19169055565b600e54600090819081906012600160a01b90910460ff161015612f0657600e54612edc90600160a01b900460ff16601261462f565b612ee790600a614736565b9050612ef38185614745565b9250612eff8184614767565b9150612f5d565b600e546012600160a01b90910460ff161115612f5657600e54612f3590601290600160a01b900460ff1661462f565b612f4090600a614736565b9050612f4c8185614767565b9250839150612f5d565b8391508192505b50915091565b6040516001600160a01b03831660248201526044810182905261137290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613502565b612fd98585612fd4866122b1565b6135d4565b836001600160a01b0316856001600160a01b0316876001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc8261467798786868660405161302a93929190614604565b60405180910390a4836001600160a01b0316856001600160a01b031660008051602061482783398151915285604051612d9f91815260200190565b6040516001600160a01b03808516602483015283166044820152606481018290526113199085906323b872dd60e01b90608401612f8f565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa15801561311e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314291906145e7565b90506001600160a01b0381161561119357604051633ad5cbc160e11b81526001600160a01b038216906375ab978290613189908a908a908a908a908a908a90600401614786565b600060405180830381600087803b1580156131a357600080fd5b505af11580156131b7573d6000803e3d6000fd5b5050505050505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015613245573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326991906145e7565b90506001600160a01b038116156132e5576040516223de2960e01b81526001600160a01b038216906223de29906132ae908b908b908b908b908b908b90600401614786565b600060405180830381600087803b1580156132c857600080fd5b505af11580156132dc573d6000803e3d6000fd5b5050505061141a565b811561141a576001600160a01b0386163b1561141a5760405162461bcd60e51b815260206004820152602860248201527f5375706572546f6b656e3a206e6f7420616e20455243373737546f6b656e73526044820152671958da5c1a595b9d60c21b60648201526084016109ed565b60006133dc837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133b8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074f9190614323565b505090506133e9826122b1565b81121561344d5760405162461bcd60e51b815260206004820152602c60248201527f5375706572666c756964546f6b656e3a206275726e20616d6f756e742065786360448201526b656564732062616c616e636560a01b60648201526084016109ed565b613456826122b1565b6001600160a01b03841660009081526002602052604090205461347991906142b1565b6001600160a01b0384166000908152600260205260409020556003546134a090839061448c565b600355505050565b6134b1816122b1565b6001600160a01b0383166000908152600260205260409020546134d49190614270565b6001600160a01b0383166000908152600260205260409020556003546134fb9082906143ed565b6003555050565b6000613557826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166137179092919063ffffffff16565b805190915015611372578080602001905181019061357591906141c4565b6113725760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109ed565b6000613638847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa1580156133b8573d6000803e3d6000fd5b50509050818112156136a15760405162461bcd60e51b815260206004820152602c60248201527f5375706572666c756964546f6b656e3a206d6f766520616d6f756e742065786360448201526b656564732062616c616e636560a01b60648201526084016109ed565b6001600160a01b0384166000908152600260205260409020546136c59083906142b1565b6001600160a01b0380861660009081526002602052604080822093909355908516815220546136f5908390614270565b6001600160a01b03909316600090815260026020526040902092909255505050565b6060610d878484600085856001600160a01b0385163b6137795760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109ed565b600080866001600160a01b0316858760405161379591906147e0565b60006040518083038185875af1925050503d80600081146137d2576040519150601f19603f3d011682016040523d82523d6000602084013e6137d7565b606091505b50915091506137e78282866137f2565b979650505050505050565b60608315613801575081610d8a565b8251156138115782518084602001fd5b8160405162461bcd60e51b81526004016109ed9190613960565b82805461383790614075565b90600052602060002090601f016020900481019282613859576000855561389f565b82601f106138725782800160ff1982351617855561389f565b8280016001018555821561389f579182015b8281111561389f578235825591602001919060010190613884565b5061231b9291505b8082111561231b57600081556001016138a7565b6020808252825182820181905260009190848201906040850190845b818110156138fc5783516001600160a01b0316835292840192918401916001016138d7565b50909695505050505050565b60005b8381101561392357818101518382015260200161390b565b838111156113195750506000910152565b6000815180845261394c816020860160208601613908565b601f01601f19169290920160200192915050565b602081526000610d8a6020830184613934565b6001600160a01b038116811461095257600080fd5b60008083601f84011261399a57600080fd5b5081356001600160401b038111156139b157600080fd5b6020830191508360208260051b85010111156139cc57600080fd5b9250929050565b600080600080606085870312156139e957600080fd5b84356139f481613973565b93506020850135925060408501356001600160401b03811115613a1657600080fd5b613a2287828801613988565b95989497509550505050565b60008060408385031215613a4157600080fd5b8235613a4c81613973565b946020939093013593505050565b600060208284031215613a6c57600080fd5b5035919050565b600080600060408486031215613a8857600080fd5b8335925060208401356001600160401b03811115613aa557600080fd5b613ab186828701613988565b9497909650939450505050565b60008060008060808587031215613ad457600080fd5b8435613adf81613973565b93506020850135613aef81613973565b92506040850135613aff81613973565b9396929550929360600135925050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613b4d57613b4d613b0f565b604052919050565b600082601f830112613b6657600080fd5b81356001600160401b03811115613b7f57613b7f613b0f565b613b92601f8201601f1916602001613b25565b818152846020838601011115613ba757600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461095257600080fd5b600080600080600080600060e0888a031215613bed57600080fd5b8735965060208801356001600160401b03811115613c0a57600080fd5b613c168a828b01613b55565b9650506040880135613c2781613973565b94506060880135613c3781613bc4565b93506080880135613c4781613973565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215613c7957600080fd5b8335613c8481613973565b92506020840135613c9481613973565b929592945050506040919091013590565b60008060408385031215613cb857600080fd5b50508035926020909101359150565b600060208284031215613cd957600080fd5b8135610d8a81613973565b60008083601f840112613cf657600080fd5b5081356001600160401b03811115613d0d57600080fd5b6020830191508360208285010111156139cc57600080fd5b60008060008060008060808789031215613d3e57600080fd5b8635613d4981613973565b9550602087013560ff81168114613d5f57600080fd5b945060408701356001600160401b0380821115613d7b57600080fd5b613d878a838b01613ce4565b90965094506060890135915080821115613da057600080fd5b50613dad89828a01613ce4565b979a9699509497509295939492505050565b60008060008060808587031215613dd557600080fd5b8435613de081613973565b93506020850135613df081613973565b93969395505050506040820135916060013590565b6020808252825182820181905260009190848201906040850190845b818110156138fc57835183529284019291840191600101613e21565b60008060008060608587031215613e5357600080fd5b8435613e5e81613973565b93506020850135925060408501356001600160401b03811115613e8057600080fd5b613a2287828801613ce4565b600080600080600080600060a0888a031215613ea757600080fd5b8735613eb281613973565b96506020880135613ec281613973565b95506040880135945060608801356001600160401b0380821115613ee557600080fd5b613ef18b838c01613ce4565b909650945060808a0135915080821115613f0a57600080fd5b50613f178a828b01613ce4565b989b979a50959850939692959293505050565b600080600060608486031215613f3f57600080fd5b8335613f4a81613973565b95602085013595506040909401359392505050565b600080600060608486031215613f7457600080fd5b8335613f7f81613973565b92506020840135915060408401356001600160401b03811115613fa157600080fd5b613fad86828701613b55565b9150509250925092565b60008060408385031215613fca57600080fd5b8235613fd581613973565b91506020830135613fe581613973565b809150509250929050565b6000806000806000806080878903121561400957600080fd5b863561401481613973565b95506020870135945060408701356001600160401b0380821115613d7b57600080fd5b60008060006040848603121561404c57600080fd5b8335925060208401356001600160401b0381111561406957600080fd5b613ab186828701613ce4565b600181811c9082168061408957607f821691505b6020821081036140a957634e487b7160e01b600052602260045260246000fd5b50919050565b6080808252600e908201526d41677265656d656e74537461746560901b60a08201526001600160a01b039384166020820152919092166040820152606081019190915260c00190565b6060808252600d908201526c41677265656d656e744461746160981b60808201526001600160a01b03929092166020830152604082015260a00190565b838152604060208201819052810182905260006001600160fb1b0383111561415c57600080fd5b8260051b8085606085013760009201606001918252509392505050565b6020808252602b908201527f5375706572666c756964546f6b656e3a204f6e6c7920686f737420636f6e747260408201526a1858dd08185b1b1bddd95960aa1b606082015260800190565b6000602082840312156141d657600080fd5b8151610d8a81613bc4565b60208082526027908201527f5375706572666c756964546f6b656e3a206f6e6c79206c6973746564206167726040820152661959595b595b9d60ca1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b820161425357614253614228565b5060000390565b634e487b7160e01b600052600160045260246000fd5b600080821280156001600160ff1b038490038513161561429257614292614228565b600160ff1b83900384128116156142ab576142ab614228565b50500190565b60008083128015600160ff1b8501841216156142cf576142cf614228565b6001600160ff1b03840183138116156142ea576142ea614228565b50500390565b85815260018060a01b038516602082015283604082015282606082015260a0608082015260006137e760a0830184613934565b60006020828403121561433557600080fd5b5051919050565b6000602080838503121561434f57600080fd5b82516001600160401b038082111561436657600080fd5b818501915085601f83011261437a57600080fd5b81518181111561438c5761438c613b0f565b8060051b915061439d848301613b25565b81815291830184019184810190888411156143b757600080fd5b938501935b838510156143e157845192506143d183613973565b82825293850193908501906143bc565b98975050505050505050565b6000821982111561440057614400614228565b500190565b6020808252601d908201527f5375706572546f6b656e3a206f6e6c792073656c6620616c6c6f776564000000604082015260600190565b60208082526030908201527f5375706572546f6b656e3a2063616c6c6572206973206e6f7420616e206f706560408201526f3930ba37b9103337b9103437b63232b960811b606082015260800190565b60008282101561449e5761449e614228565b500390565b634e487b7160e01b600052603260045260246000fd5b6000806000606084860312156144ce57600080fd5b8351925060208401519150604084015190509250925092565b6000600182016144f9576144f9614228565b5060010190565b6020808252603a908201527f5375706572546f6b656e3a20696e666c6174696f6e6172792f6465666c61746960408201527f6f6e61727920746f6b656e73206e6f7420737570706f72746564000000000000606082015260800190565b60208082526026908201527f5375706572546f6b656e3a207472616e736665722066726f6d207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526024908201527f5375706572546f6b656e3a207472616e7366657220746f207a65726f206164646040820152637265737360e01b606082015260800190565b6000602082840312156145f957600080fd5b8151610d8a81613973565b83815260606020820152600061461d6060830185613934565b82810360408401526112928185613934565b600060ff821660ff84168082101561464957614649614228565b90039392505050565b600181815b8085111561468d57816000190482111561467357614673614228565b8085161561468057918102915b93841c9390800290614657565b509250929050565b6000826146a457506001610921565b816146b157506000610921565b81600181146146c757600281146146d1576146ed565b6001915050610921565b60ff8411156146e2576146e2614228565b50506001821b610921565b5060208310610133831016604e8410600b8410161715614710575081810a610921565b61471a8383614652565b806000190482111561472e5761472e614228565b029392505050565b6000610d8a60ff841683614695565b60008261476257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561478157614781614228565b500290565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906147c190830185613934565b82810360a08401526147d38185613934565b9998505050505050505050565b600082516147f2818460208701613908565b919091019291505056fe5375706572546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5375706572546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ecf4bd0d1cff764e160fe231c4a08cbcd44558c2658a68da784e4662ad11a8b464736f6c634300080e0033a264697066735822122095ec25ee9f1bffd2adb596069ad46183967a317e41359e9626ba030656d8d25f64736f6c634300080e003360c060405234801561001057600080fd5b5060405161136638038061136683398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a0516112956100d160003960006102dd01526000818160a501528181610220015281816104c90152610a1601526112956000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806352d1902d1161006657806352d1902d146101255780638129fc1c146101535780639470a5b21461015b578063a6d0c53414610172578063d412d3441461018557600080fd5b806320bc4425146100a3578063431f1481146100e257806346951954146100f55780634dcc4d791461010a57806350d75d251461011d575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100c56100f0366004610b6d565b610198565b610108610103366004610c00565b610215565b005b6100c5610118366004610c00565b6102bb565b6100c5610352565b6040517fb146a22bc9644a3313a7e28592f37d32718a2b618d3d136aa524b0d86b87b62081526020016100d9565b610108610381565b6000546201000090046001600160a01b03166100c5565b6100c5610180366004610c33565b610441565b610108610193366004610c00565b610721565b600061020a87886001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102009190610cd9565b8888888888610441565b979650505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102a75760405162461bcd60e51b815260206004820152602c60248201527f5375706572546f6b656e466163746f72793a206f6e6c7920686f73742063616e60448201526b2075706461746520636f646560a01b60648201526084015b60405180910390fd5b6102b0816107bf565b6102b86109ff565b50565b6040516313db266360e31b81526001600160a01b0382811660048301526000917f000000000000000000000000000000000000000000000000000000000000000090911690639ed93318906024016020604051808303816000875af1158015610328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034c9190610cf6565b92915050565b600061037c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b600054610100900460ff1661039c5760005460ff16156103a0565b303b155b6104035760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161029e565b600054610100900460ff16158015610425576000805461ffff19166101011790555b61042d6109ff565b80156102b8576000805461ff001916905550565b60006001600160a01b0388166104995760405162461bcd60e51b815260206004820152601f60248201527f5375706572546f6b656e466163746f72793a207a65726f206164647265737300604482015260640161029e565b60008660028111156104ad576104ad610d13565b0361054357604051634dcc4d7960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201523090634dcc4d79906024016020604051808303816000875af1158015610518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053c9190610cf6565b905061067b565b600186600281111561055757610557610d13565b036105f757600060405161056a90610ae1565b604051809103906000f080158015610586573d6000803e3d6000fd5b50600054604051634a0687ef60e01b81526001600160a01b036201000090920482166004820152919250821690634a0687ef90602401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b505050508091505061067b565b600060405161060590610aee565b604051809103906000f080158015610621573d6000803e3d6000fd5b509050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561065f57600080fd5b505af1158015610673573d6000803e3d6000fd5b509293505050505b6040516285fc1360e71b81526001600160a01b038216906342fe0980906106b0908b908b908a908a908a908a90600401610d52565b600060405180830381600087803b1580156106ca57600080fd5b505af11580156106de573d6000803e3d6000fd5b50506040516001600160a01b03841692507fb52c6d9d122e8c07769b96d7bb14e66db58ee03fdebaaa2f92547e9c7ef0e65f9150600090a2979650505050505050565b600054604051634a0687ef60e01b81526001600160a01b0362010000909204821660048201528291821690634a0687ef90602401600060405180830381600087803b15801561076f57600080fd5b505af1158015610783573d6000803e3d6000fd5b50506040516001600160a01b03851692507f437790724a6e97b75d23117f28cdd4b1beeafc34f7a0911ef256e9334f4369a59150600090a25050565b60006107e97f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b03160361083f5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c65000000604482015260640161029e565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a19190610da0565b7fb146a22bc9644a3313a7e28592f37d32718a2b618d3d136aa524b0d86b87b6201461091b5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b606482015260840161029e565b6001600160a01b03811630036109735760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f7000000000000000604482015260640161029e565b61099b817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7fb146a22bc9644a3313a7e28592f37d32718a2b618d3d136aa524b0d86b87b620604080519182526001600160a01b03841660208301520160405180910390a150565b604051634dcc4d7960e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048201523090634dcc4d79906024016020604051808303816000875af1158015610a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a899190610cf6565b6000805462010000600160b01b031916620100006001600160a01b03938416810291909117808355604051919004909216917fc13fb19d60857980e565bf5dae406b8802d3c1cec50c6156b30b12b8740297839190a2565b61024a80610dba83390190565b61025c8061100483390190565b6001600160a01b03811681146102b857600080fd5b803560038110610b1f57600080fd5b919050565b60008083601f840112610b3657600080fd5b50813567ffffffffffffffff811115610b4e57600080fd5b602083019150836020828501011115610b6657600080fd5b9250929050565b60008060008060008060808789031215610b8657600080fd5b8635610b9181610afb565b9550610b9f60208801610b10565b9450604087013567ffffffffffffffff80821115610bbc57600080fd5b610bc88a838b01610b24565b90965094506060890135915080821115610be157600080fd5b50610bee89828a01610b24565b979a9699509497509295939492505050565b600060208284031215610c1257600080fd5b8135610c1d81610afb565b9392505050565b60ff811681146102b857600080fd5b600080600080600080600060a0888a031215610c4e57600080fd5b8735610c5981610afb565b96506020880135610c6981610c24565b9550610c7760408901610b10565b9450606088013567ffffffffffffffff80821115610c9457600080fd5b610ca08b838c01610b24565b909650945060808a0135915080821115610cb957600080fd5b50610cc68a828b01610b24565b989b979a50959850939692959293505050565b600060208284031215610ceb57600080fd5b8151610c1d81610c24565b600060208284031215610d0857600080fd5b8151610c1d81610afb565b634e487b7160e01b600052602160045260246000fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038716815260ff86166020820152608060408201819052600090610d809083018688610d29565b8281036060840152610d93818587610d29565b9998505050505050505050565b600060208284031215610db257600080fd5b505191905056fe608060405234801561001057600080fd5b5061022a806100206000396000f3fe6080604052600436106100225760003560e01c80634a0687ef1461003957610031565b366100315761002f610059565b005b61002f610059565b34801561004557600080fd5b5061002f6100543660046101c4565b61006b565b610069610064610171565b6101a0565b565b6001600160a01b0381166100c65760405162461bcd60e51b815260206004820152601760248201527f5555505350726f78793a207a65726f206164647265737300000000000000000060448201526064015b60405180910390fd5b60006100f07f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316146101465760405162461bcd60e51b815260206004820152601e60248201527f5555505350726f78793a20616c726561647920696e697469616c697a6564000060448201526064016100bd565b61016e817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b50565b600061019b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b3660008037600080366000845af43d6000803e8080156101bf573d6000f35b3d6000fd5b6000602082840312156101d657600080fd5b81356001600160a01b03811681146101ed57600080fd5b939250505056fea264697066735822122086b1fc3a42d3af20b0ab5b46a7113da519907b8dce59f9a2b801e27095423bbc64736f6c634300080e0033608060405234801561001057600080fd5b5061023c806100206000396000f3fe6080604052600436106100225760003560e01c80638129fc1c1461003957610031565b366100315761002f61004e565b005b61002f61004e565b34801561004557600080fd5b5061002f610060565b61005e6100596100f9565b61019c565b565b7fb8fcd5719b3ddf8626f3664705a89b7fc476129a58c1aa5eda57c600cc1821a0546001600160a01b038116156100d35760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640160405180910390fd5b50337fb8fcd5719b3ddf8626f3664705a89b7fc476129a58c1aa5eda57c600cc1821a055565b7fb8fcd5719b3ddf8626f3664705a89b7fc476129a58c1aa5eda57c600cc1821a0546000906001600160a01b038116610134576101346101c0565b806001600160a01b0316639470a5b26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610172573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019691906101d6565b91505090565b3660008037600080366000845af43d6000803e8080156101bb573d6000f35b3d6000fd5b634e487b7160e01b600052600160045260246000fd5b6000602082840312156101e857600080fd5b81516001600160a01b03811681146101ff57600080fd5b939250505056fea26469706673582212207043e53497a533e70c116d93df021028be97de44d238f19564ab53cf1fa1eeab64736f6c634300080e0033a2646970667358221220d111e3f79f930dfdf48b511f39be0cb11fc8a2ab862e56a99a232a380a5a4b0264736f6c634300080e0033",
115
+ "deployedBytecode": "0x60806040523480156200001157600080fd5b50600436106200003a5760003560e01c8063845531a4146200003f578063dfa98ad5146200007b575b600080fd5b620000566200005036600462000539565b62000160565b604080516001600160a01b039384168152929091166020830152015b60405180910390f35b620001516040805160e08101825260008082526020808301829052828401829052835180850185528281528082018390526060840152608083018290528351808501909452818452830181905260a082019290925260c0810191909152506040805160e0810182526000546001600160a01b03908116825260015481166020808401829052600254831684860181905285518087018752838152808301919091526060850152600354831660808501819052855180870190965291855284015260a082019290925260045490911660c082015290565b604051620000729190620005ac565b600080858585856040516200017590620004df565b62000184949392919062000678565b604051809103906000f080158015620001a1573d6000803e3d6000fd5b509150816001600160a01b0316632f2ff15d836001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002189190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156200025857600080fd5b505af11580156200026d573d6000803e3d6000fd5b50505050816001600160a01b0316632f2ff15d836001600160a01b031663d53913936040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e59190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b1580156200032557600080fd5b505af11580156200033a573d6000803e3d6000fd5b50505050816001600160a01b0316632f2ff15d836001600160a01b031663e63ab1e96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b29190620006ae565b6040516001600160e01b031960e084901b1681526004810191909152336024820152604401600060405180830381600087803b158015620003f257600080fd5b505af115801562000407573d6000803e3d6000fd5b50506004546040516001600160a01b03909116925063431f1481915084906001906200043a908b908b90602001620006c8565b60405160208183030381529060405288886040516020016200045e929190620006c8565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016200048e94939291906200072e565b6020604051808303816000875af1158015620004ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d491906200078b565b905094509492505050565b611d9380620007be83390190565b60008083601f8401126200050057600080fd5b50813567ffffffffffffffff8111156200051957600080fd5b6020830191508360208285010111156200053257600080fd5b9250929050565b600080600080604085870312156200055057600080fd5b843567ffffffffffffffff808211156200056957600080fd5b6200057788838901620004ed565b909650945060208701359150808211156200059157600080fd5b50620005a087828801620004ed565b95989497509550505050565b81516001600160a01b03908116825260208084015182168184015260408085015183169084015260608085015180518416918501919091520151166080808301919091528201516101208201906200060f60a08401826001600160a01b03169052565b5060a083015180516001600160a01b0390811660c085015260208201511660e08401525060c08301516001600160a01b0381166101008401525092915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006200068e6040830186886200064f565b8281036020840152620006a38185876200064f565b979650505050505050565b600060208284031215620006c157600080fd5b5051919050565b81838237600f60fb1b9101908152600101919050565b6000815180845260005b818110156200070657602081850181015186830182015201620006e8565b8181111562000719576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03851681526000600385106200075b57634e487b7160e01b600052602160045260246000fd5b84602083015260806040830152620007776080830185620006de565b8281036060840152620006a38185620006de565b6000602082840312156200079e57600080fd5b81516001600160a01b0381168114620007b657600080fd5b939250505056fe60806040523480156200001157600080fd5b5060405162001d9338038062001d938339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045b565b620000e98282620000ed565b5050565b6200010482826200013060201b6200096e1760201c565b60008281526001602090815260409091206200012b918390620009f2620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b6020821081036200045557634e487b7160e01b600052602260045260246000fd5b50919050565b611928806200046b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e91461042257600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046115cf565b610449565b60405190151581526020015b60405180910390f35b6101f9610474565b6040516101e89190611625565b6101dc610214366004611674565b610506565b6004545b6040519081526020016101e8565b6101dc61023936600461169e565b61051e565b61021d61024c3660046116da565b60009081526020819052604090206001015490565b61027461026f3660046116f3565b610542565b005b604051601281526020016101e8565b6102746102933660046116f3565b61056d565b6101dc6102a6366004611674565b6105f0565b61027461062f565b6102746102c1366004611674565b6106d5565b6102746102d43660046116da565b610774565b60075460ff166101dc565b61021d6102f236600461171f565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611674565b610781565b610274610796565b61033b61033636600461173a565b61083a565b6040516001600160a01b0390911681526020016101e8565b6101dc6103613660046116f3565b610859565b6101f9610882565b61021d600081565b6101dc610384366004611674565b610891565b6101dc610397366004611674565b610923565b61021d6103aa3660046116da565b610931565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e43660046116f3565b610948565b61021d6103f736600461175c565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b148061046e575061046e82610a07565b92915050565b60606005805461048390611786565b80601f01602080910402602001604051908101604052809291908181526020018280546104af90611786565b80156104fc5780601f106104d1576101008083540402835291602001916104fc565b820191906000526020600020905b8154815290600101906020018083116104df57829003601f168201915b5050505050905090565b600033610514818585610a3c565b5060019392505050565b60003361052c858285610b60565b610537858585610bf2565b506001949350505050565b60008281526020819052604090206001015461055e8133610dcb565b6105688383610e2f565b505050565b6001600160a01b03811633146105e25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105ec8282610e51565b5050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190610514908290869061062a9087906117d6565b610a3c565b6106597f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610859565b6106cb5760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105d9565b6106d3610e73565b565b6106ff7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610859565b61076a5760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105d9565b6105ec8282610f06565b61077e3382610ff1565b50565b61078c823383610b60565b6105ec8282610ff1565b6107c07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610859565b6108325760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105d9565b6106d361114b565b600082815260016020526040812061085290836111c6565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461048390611786565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909190838110156109165760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105d9565b6105378286868403610a3c565b600033610514818585610bf2565b600081815260016020526040812061046e906111d2565b6000828152602081905260409020600101546109648133610dcb565b6105688383610e51565b6109788282610859565b6105ec576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556109ae3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610852836001600160a01b0384166111dc565b60006001600160e01b03198216637965db0b60e01b148061046e57506301ffc9a760e01b6001600160e01b031983161461046e565b6001600160a01b038316610a9e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d9565b6001600160a01b038216610aff5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d9565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600360209081526040808320938616835292905220546000198114610bec5781811015610bdf5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105d9565b610bec8484848403610a3c565b50505050565b6001600160a01b038316610c565760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d9565b6001600160a01b038216610cb85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d9565b610cc383838361122b565b6001600160a01b03831660009081526002602052604090205481811015610d3b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105d9565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610d729084906117d6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610dbe91815260200190565b60405180910390a3610bec565b610dd58282610859565b6105ec57610ded816001600160a01b03166014611236565b610df8836020611236565b604051602001610e099291906117ee565b60408051601f198184030181529082905262461bcd60e51b82526105d991600401611625565b610e39828261096e565b600082815260016020526040902061056890826109f2565b610e5b82826113d2565b60008281526001602052604090206105689082611437565b60075460ff16610ebc5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d9565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610f5c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105d9565b610f686000838361122b565b8060046000828254610f7a91906117d6565b90915550506001600160a01b03821660009081526002602052604081208054839290610fa79084906117d6565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166110515760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105d9565b61105d8260008361122b565b6001600160a01b038216600090815260026020526040902054818110156110d15760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105d9565b6001600160a01b0383166000908152600260205260408120838303905560048054849290611100908490611863565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60075460ff16156111915760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d9565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ee93390565b6000610852838361144c565b600061046e825490565b60008181526001830160205260408120546112235750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561046e565b50600061046e565b610568838383611476565b6060600061124583600261187a565b6112509060026117d6565b67ffffffffffffffff81111561126857611268611899565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600360fc1b816000815181106112ad576112ad6118af565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112dc576112dc6118af565b60200101906001600160f81b031916908160001a905350600061130084600261187a565b61130b9060016117d6565b90505b6001811115611383576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061133f5761133f6118af565b1a60f81b828281518110611355576113556118af565b60200101906001600160f81b031916908160001a90535060049490941c9361137c816118c5565b905061130e565b5083156108525760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d9565b6113dc8282610859565b156105ec576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610852836001600160a01b0384166114dc565b6000826000018281548110611463576114636118af565b9060005260206000200154905092915050565b60075460ff16156105685760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105d9565b600081815260018301602052604081205480156115c5576000611500600183611863565b855490915060009061151490600190611863565b9050818114611579576000866000018281548110611534576115346118af565b9060005260206000200154905080876000018481548110611557576115576118af565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061158a5761158a6118dc565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061046e565b600091505061046e565b6000602082840312156115e157600080fd5b81356001600160e01b03198116811461085257600080fd5b60005b838110156116145781810151838201526020016115fc565b83811115610bec5750506000910152565b60208152600082518060208401526116448160408501602087016115f9565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461166f57600080fd5b919050565b6000806040838503121561168757600080fd5b61169083611658565b946020939093013593505050565b6000806000606084860312156116b357600080fd5b6116bc84611658565b92506116ca60208501611658565b9150604084013590509250925092565b6000602082840312156116ec57600080fd5b5035919050565b6000806040838503121561170657600080fd5b8235915061171660208401611658565b90509250929050565b60006020828403121561173157600080fd5b61085282611658565b6000806040838503121561174d57600080fd5b50508035926020909101359150565b6000806040838503121561176f57600080fd5b61177883611658565b915061171660208401611658565b600181811c9082168061179a57607f821691505b6020821081036117ba57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117e9576117e96117c0565b500190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516118268160178501602088016115f9565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118578160288401602088016115f9565b01602801949350505050565b600082821015611875576118756117c0565b500390565b6000816000190483118215151615611894576118946117c0565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816118d4576118d46117c0565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212201cda3ee43ced36b00650ddf1bf60dda0947b890a6d7a3b65c628d221608c954d64736f6c634300080e0033a264697066735822122056c3ade6a74b2231fc74e683519e3d8a50a6dae135828be1ef211596cdb6848164736f6c634300080e0033",
116
116
  "immutableReferences": {},
117
117
  "generatedSources": [
118
118
  {
@@ -430,7 +430,7 @@
430
430
  }
431
431
  ]
432
432
  },
433
- "name": "abi_encode_tuple_t_contract$_TestGovernance_$36827__to_t_address__fromStack_reversed",
433
+ "name": "abi_encode_tuple_t_contract$_TestGovernance_$36846__to_t_address__fromStack_reversed",
434
434
  "nodeType": "YulFunctionDefinition",
435
435
  "parameters": [
436
436
  {
@@ -1350,7 +1350,7 @@
1350
1350
  }
1351
1351
  ]
1352
1352
  },
1353
- "name": "abi_encode_tuple_t_contract$_Superfluid_$33474_t_address_t_rational_14400_by_1_t_rational_1800_by_1_t_array$_t_address_$dyn_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
1353
+ "name": "abi_encode_tuple_t_contract$_Superfluid_$33493_t_address_t_rational_14400_by_1_t_rational_1800_by_1_t_array$_t_address_$dyn_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
1354
1354
  "nodeType": "YulFunctionDefinition",
1355
1355
  "parameters": [
1356
1356
  {
@@ -1520,7 +1520,7 @@
1520
1520
  }
1521
1521
  ]
1522
1522
  },
1523
- "name": "abi_encode_tuple_t_contract$_Superfluid_$33474__to_t_address__fromStack_reversed",
1523
+ "name": "abi_encode_tuple_t_contract$_Superfluid_$33493__to_t_address__fromStack_reversed",
1524
1524
  "nodeType": "YulFunctionDefinition",
1525
1525
  "parameters": [
1526
1526
  {
@@ -1742,7 +1742,7 @@
1742
1742
  }
1743
1743
  ]
1744
1744
  },
1745
- "name": "abi_encode_tuple_t_contract$_Superfluid_$33474_t_address__to_t_address_t_address__fromStack_reversed",
1745
+ "name": "abi_encode_tuple_t_contract$_Superfluid_$33493_t_address__to_t_address_t_address__fromStack_reversed",
1746
1746
  "nodeType": "YulFunctionDefinition",
1747
1747
  "parameters": [
1748
1748
  {
@@ -1970,7 +1970,7 @@
1970
1970
  }
1971
1971
  ]
1972
1972
  },
1973
- "name": "abi_encode_tuple_t_contract$_Superfluid_$33474_t_contract$_SuperTokenFactoryHelper_$30506__to_t_address_t_address__fromStack_reversed",
1973
+ "name": "abi_encode_tuple_t_contract$_Superfluid_$33493_t_contract$_SuperTokenFactoryHelper_$30528__to_t_address_t_address__fromStack_reversed",
1974
1974
  "nodeType": "YulFunctionDefinition",
1975
1975
  "parameters": [
1976
1976
  {
@@ -2318,7 +2318,7 @@
2318
2318
  }
2319
2319
  ]
2320
2320
  },
2321
- "name": "abi_encode_tuple_t_contract$_Superfluid_$33474_t_address_t_array$_t_address_$dyn_memory_ptr_t_address__to_t_address_t_address_t_array$_t_address_$dyn_memory_ptr_t_address__fromStack_reversed",
2321
+ "name": "abi_encode_tuple_t_contract$_Superfluid_$33493_t_address_t_array$_t_address_$dyn_memory_ptr_t_address__to_t_address_t_address_t_array$_t_address_$dyn_memory_ptr_t_address__fromStack_reversed",
2322
2322
  "nodeType": "YulFunctionDefinition",
2323
2323
  "parameters": [
2324
2324
  {
@@ -2364,7 +2364,7 @@
2364
2364
  }
2365
2365
  ]
2366
2366
  },
2367
- "contents": "{\n { }\n function abi_encode_tuple_t_bool_t_bool__to_t_bool_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, iszero(iszero(value0)))\n mstore(add(headStart, 32), iszero(iszero(value1)))\n }\n function abi_encode_tuple_t_contract$_TestGovernance_$36827__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_encode_array_address_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, _1)\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n end := pos\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33474_t_address_t_rational_14400_by_1_t_rational_1800_by_1_t_array$_t_address_$dyn_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), 160)\n tail := abi_encode_array_address_dyn(value4, add(headStart, 160))\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33474__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33474_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33474_t_contract$_SuperTokenFactoryHelper_$30506__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33474_t_address_t_array$_t_address_$dyn_memory_ptr_t_address__to_t_address_t_address_t_array$_t_address_$dyn_memory_ptr_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 128)\n tail := abi_encode_array_address_dyn(value2, add(headStart, 128))\n mstore(add(headStart, 96), and(value3, _1))\n }\n}",
2367
+ "contents": "{\n { }\n function abi_encode_tuple_t_bool_t_bool__to_t_bool_t_bool__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, iszero(iszero(value0)))\n mstore(add(headStart, 32), iszero(iszero(value1)))\n }\n function abi_encode_tuple_t_contract$_TestGovernance_$36846__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_encode_array_address_dyn(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, _1)\n let srcPtr := add(value, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n end := pos\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33493_t_address_t_rational_14400_by_1_t_rational_1800_by_1_t_array$_t_address_$dyn_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), 160)\n tail := abi_encode_array_address_dyn(value4, add(headStart, 160))\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33493__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33493_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33493_t_contract$_SuperTokenFactoryHelper_$30528__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_contract$_Superfluid_$33493_t_address_t_array$_t_address_$dyn_memory_ptr_t_address__to_t_address_t_address_t_array$_t_address_$dyn_memory_ptr_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), 128)\n tail := abi_encode_array_address_dyn(value2, add(headStart, 128))\n mstore(add(headStart, 96), and(value3, _1))\n }\n}",
2368
2368
  "id": 105,
2369
2369
  "language": "Yul",
2370
2370
  "name": "#utility.yul"
@@ -3542,7 +3542,7 @@
3542
3542
  }
3543
3543
  ]
3544
3544
  },
3545
- "name": "abi_encode_tuple_t_contract$_ERC20PresetMinterPauser_$1762_t_contract$_SuperToken_$30169__to_t_address_t_address__fromStack_reversed",
3545
+ "name": "abi_encode_tuple_t_contract$_ERC20PresetMinterPauser_$1762_t_contract$_SuperToken_$30191__to_t_address_t_address__fromStack_reversed",
3546
3546
  "nodeType": "YulFunctionDefinition",
3547
3547
  "parameters": [
3548
3548
  {
@@ -4589,7 +4589,7 @@
4589
4589
  }
4590
4590
  ]
4591
4591
  },
4592
- "name": "abi_encode_tuple_t_struct$_Framework_$35488_memory_ptr__to_t_struct$_Framework_$35488_memory_ptr__fromStack_reversed",
4592
+ "name": "abi_encode_tuple_t_struct$_Framework_$35507_memory_ptr__to_t_struct$_Framework_$35507_memory_ptr__fromStack_reversed",
4593
4593
  "nodeType": "YulFunctionDefinition",
4594
4594
  "parameters": [
4595
4595
  {
@@ -6892,7 +6892,7 @@
6892
6892
  }
6893
6893
  ]
6894
6894
  },
6895
- "contents": "{\n { }\n function abi_decode_string_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_calldata_ptrt_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_string_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\n }\n function abi_encode_contract_ERC20PresetMinterPauser(value, pos)\n {\n mstore(pos, and(value, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_contract$_ERC20PresetMinterPauser_$1762_t_contract$_SuperToken_$30169__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_struct_InitData(value, pos)\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(pos, and(mload(value), _1))\n mstore(add(pos, 0x20), and(mload(add(value, 0x20)), _1))\n }\n function abi_encode_tuple_t_struct$_Framework_$35488_memory_ptr__to_t_struct$_Framework_$35488_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 288)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(mload(value0), _1))\n mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), _1))\n mstore(add(headStart, 0x40), and(mload(add(value0, 0x40)), _1))\n let memberValue0 := mload(add(value0, 0x60))\n mstore(add(headStart, 0x60), and(mload(memberValue0), _1))\n mstore(add(headStart, 128), and(mload(add(memberValue0, 0x20)), _1))\n let memberValue0_1 := mload(add(value0, 128))\n abi_encode_contract_ERC20PresetMinterPauser(memberValue0_1, add(headStart, 0xa0))\n let memberValue0_2 := mload(add(value0, 0xa0))\n abi_encode_struct_InitData(memberValue0_2, add(headStart, 0xc0))\n let memberValue0_3 := mload(add(value0, 0xc0))\n abi_encode_contract_ERC20PresetMinterPauser(memberValue0_3, add(headStart, 0x0100))\n }\n function abi_encode_string_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_calldata_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_string_calldata(value0, value1, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_string_calldata(value2, value3, tail_1)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_packed_t_string_calldata_ptr_t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83__to_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n calldatacopy(pos, value0, value1)\n let _1 := add(pos, value1)\n mstore(_1, \"x\")\n end := add(_1, 1)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(pos, length), 0x20), 0)\n }\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_contract$_ERC20WithTokenInfo_$18733_t_enum$_Upgradability_$17790_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint8_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n if iszero(lt(value1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), 128)\n let tail_1 := abi_encode_string(value2, add(headStart, 128))\n mstore(add(headStart, 96), sub(tail_1, headStart))\n tail := abi_encode_string(value3, tail_1)\n }\n function abi_decode_tuple_t_contract$_ISuperToken_$17761_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}",
6895
+ "contents": "{\n { }\n function abi_decode_string_calldata(offset, end) -> arrayPos, length\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n arrayPos := add(offset, 0x20)\n if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_calldata_ptrt_string_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(0, 0) }\n let value0_1, value1_1 := abi_decode_string_calldata(add(headStart, offset), dataEnd)\n value0 := value0_1\n value1 := value1_1\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n let value2_1, value3_1 := abi_decode_string_calldata(add(headStart, offset_1), dataEnd)\n value2 := value2_1\n value3 := value3_1\n }\n function abi_encode_contract_ERC20PresetMinterPauser(value, pos)\n {\n mstore(pos, and(value, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_contract$_ERC20PresetMinterPauser_$1762_t_contract$_SuperToken_$30191__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_struct_InitData(value, pos)\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(pos, and(mload(value), _1))\n mstore(add(pos, 0x20), and(mload(add(value, 0x20)), _1))\n }\n function abi_encode_tuple_t_struct$_Framework_$35507_memory_ptr__to_t_struct$_Framework_$35507_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 288)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(mload(value0), _1))\n mstore(add(headStart, 0x20), and(mload(add(value0, 0x20)), _1))\n mstore(add(headStart, 0x40), and(mload(add(value0, 0x40)), _1))\n let memberValue0 := mload(add(value0, 0x60))\n mstore(add(headStart, 0x60), and(mload(memberValue0), _1))\n mstore(add(headStart, 128), and(mload(add(memberValue0, 0x20)), _1))\n let memberValue0_1 := mload(add(value0, 128))\n abi_encode_contract_ERC20PresetMinterPauser(memberValue0_1, add(headStart, 0xa0))\n let memberValue0_2 := mload(add(value0, 0xa0))\n abi_encode_struct_InitData(memberValue0_2, add(headStart, 0xc0))\n let memberValue0_3 := mload(add(value0, 0xc0))\n abi_encode_contract_ERC20PresetMinterPauser(memberValue0_3, add(headStart, 0x0100))\n }\n function abi_encode_string_calldata(start, length, pos) -> end\n {\n mstore(pos, length)\n calldatacopy(add(pos, 0x20), start, length)\n mstore(add(add(pos, length), 0x20), 0)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_calldata_ptr_t_string_calldata_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_string_calldata(value0, value1, add(headStart, 64))\n mstore(add(headStart, 32), sub(tail_1, headStart))\n tail := abi_encode_string_calldata(value2, value3, tail_1)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_packed_t_string_calldata_ptr_t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83__to_t_string_memory_ptr_t_bytes1__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n calldatacopy(pos, value0, value1)\n let _1 := add(pos, value1)\n mstore(_1, \"x\")\n end := add(_1, 1)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := 0\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(pos, length), 0x20), 0)\n }\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_contract$_ERC20WithTokenInfo_$18733_t_enum$_Upgradability_$17790_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_uint8_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n if iszero(lt(value1, 3))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), 128)\n let tail_1 := abi_encode_string(value2, add(headStart, 128))\n mstore(add(headStart, 96), sub(tail_1, headStart))\n tail := abi_encode_string(value3, tail_1)\n }\n function abi_decode_tuple_t_contract$_ISuperToken_$17761_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n }\n}",
6896
6896
  "id": 105,
6897
6897
  "language": "Yul",
6898
6898
  "name": "#utility.yul"
@@ -6939,33 +6939,33 @@
6939
6939
  12168
6940
6940
  ],
6941
6941
  "SuperToken": [
6942
- 30169
6942
+ 30191
6943
6943
  ],
6944
6944
  "SuperTokenFactory": [
6945
- 30544
6945
+ 30566
6946
6946
  ],
6947
6947
  "SuperTokenFactoryHelper": [
6948
- 30506
6948
+ 30528
6949
6949
  ],
6950
6950
  "Superfluid": [
6951
- 33474
6951
+ 33493
6952
6952
  ],
6953
6953
  "SuperfluidFrameworkDeployer": [
6954
- 35743
6954
+ 35762
6955
6955
  ],
6956
6956
  "TestGovernance": [
6957
- 36827
6957
+ 36846
6958
6958
  ],
6959
6959
  "UUPSProxy": [
6960
- 34895
6960
+ 34914
6961
6961
  ]
6962
6962
  },
6963
- "id": 35744,
6963
+ "id": 35763,
6964
6964
  "license": "AGPLv3",
6965
6965
  "nodeType": "SourceUnit",
6966
6966
  "nodes": [
6967
6967
  {
6968
- "id": 35444,
6968
+ "id": 35463,
6969
6969
  "literals": [
6970
6970
  "solidity",
6971
6971
  "^",
@@ -6978,16 +6978,16 @@
6978
6978
  {
6979
6979
  "absolutePath": "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol",
6980
6980
  "file": "@openzeppelin/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol",
6981
- "id": 35446,
6981
+ "id": 35465,
6982
6982
  "nameLocation": "-1:-1:-1",
6983
6983
  "nodeType": "ImportDirective",
6984
- "scope": 35744,
6984
+ "scope": 35763,
6985
6985
  "sourceUnit": 1763,
6986
6986
  "src": "60:112:99",
6987
6987
  "symbolAliases": [
6988
6988
  {
6989
6989
  "foreign": {
6990
- "id": 35445,
6990
+ "id": 35464,
6991
6991
  "name": "ERC20PresetMinterPauser",
6992
6992
  "nodeType": "Identifier",
6993
6993
  "overloadedDeclarations": [],
@@ -7003,20 +7003,20 @@
7003
7003
  {
7004
7004
  "absolutePath": "project:/contracts/upgradability/UUPSProxy.sol",
7005
7005
  "file": "../upgradability/UUPSProxy.sol",
7006
- "id": 35448,
7006
+ "id": 35467,
7007
7007
  "nameLocation": "-1:-1:-1",
7008
7008
  "nodeType": "ImportDirective",
7009
- "scope": 35744,
7010
- "sourceUnit": 34896,
7009
+ "scope": 35763,
7010
+ "sourceUnit": 34915,
7011
7011
  "src": "174:57:99",
7012
7012
  "symbolAliases": [
7013
7013
  {
7014
7014
  "foreign": {
7015
- "id": 35447,
7015
+ "id": 35466,
7016
7016
  "name": "UUPSProxy",
7017
7017
  "nodeType": "Identifier",
7018
7018
  "overloadedDeclarations": [],
7019
- "referencedDeclaration": 34895,
7019
+ "referencedDeclaration": 34914,
7020
7020
  "src": "182:9:99",
7021
7021
  "typeDescriptions": {}
7022
7022
  },
@@ -7028,20 +7028,20 @@
7028
7028
  {
7029
7029
  "absolutePath": "project:/contracts/superfluid/Superfluid.sol",
7030
7030
  "file": "../superfluid/Superfluid.sol",
7031
- "id": 35450,
7031
+ "id": 35469,
7032
7032
  "nameLocation": "-1:-1:-1",
7033
7033
  "nodeType": "ImportDirective",
7034
- "scope": 35744,
7035
- "sourceUnit": 33475,
7034
+ "scope": 35763,
7035
+ "sourceUnit": 33494,
7036
7036
  "src": "233:56:99",
7037
7037
  "symbolAliases": [
7038
7038
  {
7039
7039
  "foreign": {
7040
- "id": 35449,
7040
+ "id": 35468,
7041
7041
  "name": "Superfluid",
7042
7042
  "nodeType": "Identifier",
7043
7043
  "overloadedDeclarations": [],
7044
- "referencedDeclaration": 33474,
7044
+ "referencedDeclaration": 33493,
7045
7045
  "src": "241:10:99",
7046
7046
  "typeDescriptions": {}
7047
7047
  },
@@ -7053,20 +7053,20 @@
7053
7053
  {
7054
7054
  "absolutePath": "project:/contracts/utils/TestGovernance.sol",
7055
7055
  "file": "./TestGovernance.sol",
7056
- "id": 35452,
7056
+ "id": 35471,
7057
7057
  "nameLocation": "-1:-1:-1",
7058
7058
  "nodeType": "ImportDirective",
7059
- "scope": 35744,
7060
- "sourceUnit": 36828,
7059
+ "scope": 35763,
7060
+ "sourceUnit": 36847,
7061
7061
  "src": "290:52:99",
7062
7062
  "symbolAliases": [
7063
7063
  {
7064
7064
  "foreign": {
7065
- "id": 35451,
7065
+ "id": 35470,
7066
7066
  "name": "TestGovernance",
7067
7067
  "nodeType": "Identifier",
7068
7068
  "overloadedDeclarations": [],
7069
- "referencedDeclaration": 36827,
7069
+ "referencedDeclaration": 36846,
7070
7070
  "src": "298:14:99",
7071
7071
  "typeDescriptions": {}
7072
7072
  },
@@ -7078,16 +7078,16 @@
7078
7078
  {
7079
7079
  "absolutePath": "project:/contracts/agreements/ConstantFlowAgreementV1.sol",
7080
7080
  "file": "../agreements/ConstantFlowAgreementV1.sol",
7081
- "id": 35454,
7081
+ "id": 35473,
7082
7082
  "nameLocation": "-1:-1:-1",
7083
7083
  "nodeType": "ImportDirective",
7084
- "scope": 35744,
7084
+ "scope": 35763,
7085
7085
  "sourceUnit": 8775,
7086
7086
  "src": "343:82:99",
7087
7087
  "symbolAliases": [
7088
7088
  {
7089
7089
  "foreign": {
7090
- "id": 35453,
7090
+ "id": 35472,
7091
7091
  "name": "ConstantFlowAgreementV1",
7092
7092
  "nodeType": "Identifier",
7093
7093
  "overloadedDeclarations": [],
@@ -7103,16 +7103,16 @@
7103
7103
  {
7104
7104
  "absolutePath": "project:/contracts/agreements/InstantDistributionAgreementV1.sol",
7105
7105
  "file": "../agreements/InstantDistributionAgreementV1.sol",
7106
- "id": 35456,
7106
+ "id": 35475,
7107
7107
  "nameLocation": "-1:-1:-1",
7108
7108
  "nodeType": "ImportDirective",
7109
- "scope": 35744,
7109
+ "scope": 35763,
7110
7110
  "sourceUnit": 12169,
7111
7111
  "src": "426:96:99",
7112
7112
  "symbolAliases": [
7113
7113
  {
7114
7114
  "foreign": {
7115
- "id": 35455,
7115
+ "id": 35474,
7116
7116
  "name": "InstantDistributionAgreementV1",
7117
7117
  "nodeType": "Identifier",
7118
7118
  "overloadedDeclarations": [],
@@ -7128,16 +7128,16 @@
7128
7128
  {
7129
7129
  "absolutePath": "project:/contracts/superfluid/SuperTokenFactory.sol",
7130
7130
  "file": "../superfluid/SuperTokenFactory.sol",
7131
- "id": 35461,
7131
+ "id": 35480,
7132
7132
  "nameLocation": "-1:-1:-1",
7133
7133
  "nodeType": "ImportDirective",
7134
- "scope": 35744,
7135
- "sourceUnit": 30545,
7134
+ "scope": 35763,
7135
+ "sourceUnit": 30567,
7136
7136
  "src": "523:153:99",
7137
7137
  "symbolAliases": [
7138
7138
  {
7139
7139
  "foreign": {
7140
- "id": 35457,
7140
+ "id": 35476,
7141
7141
  "name": "ISuperTokenFactory",
7142
7142
  "nodeType": "Identifier",
7143
7143
  "overloadedDeclarations": [],
@@ -7149,11 +7149,11 @@
7149
7149
  },
7150
7150
  {
7151
7151
  "foreign": {
7152
- "id": 35458,
7152
+ "id": 35477,
7153
7153
  "name": "SuperTokenFactory",
7154
7154
  "nodeType": "Identifier",
7155
7155
  "overloadedDeclarations": [],
7156
- "referencedDeclaration": 30544,
7156
+ "referencedDeclaration": 30566,
7157
7157
  "src": "560:17:99",
7158
7158
  "typeDescriptions": {}
7159
7159
  },
@@ -7161,11 +7161,11 @@
7161
7161
  },
7162
7162
  {
7163
7163
  "foreign": {
7164
- "id": 35459,
7164
+ "id": 35478,
7165
7165
  "name": "SuperTokenFactoryHelper",
7166
7166
  "nodeType": "Identifier",
7167
7167
  "overloadedDeclarations": [],
7168
- "referencedDeclaration": 30506,
7168
+ "referencedDeclaration": 30528,
7169
7169
  "src": "583:23:99",
7170
7170
  "typeDescriptions": {}
7171
7171
  },
@@ -7173,7 +7173,7 @@
7173
7173
  },
7174
7174
  {
7175
7175
  "foreign": {
7176
- "id": 35460,
7176
+ "id": 35479,
7177
7177
  "name": "ERC20WithTokenInfo",
7178
7178
  "nodeType": "Identifier",
7179
7179
  "overloadedDeclarations": [],
@@ -7189,20 +7189,20 @@
7189
7189
  {
7190
7190
  "absolutePath": "project:/contracts/superfluid/SuperToken.sol",
7191
7191
  "file": "../superfluid/SuperToken.sol",
7192
- "id": 35463,
7192
+ "id": 35482,
7193
7193
  "nameLocation": "-1:-1:-1",
7194
7194
  "nodeType": "ImportDirective",
7195
- "scope": 35744,
7196
- "sourceUnit": 30170,
7195
+ "scope": 35763,
7196
+ "sourceUnit": 30192,
7197
7197
  "src": "677:56:99",
7198
7198
  "symbolAliases": [
7199
7199
  {
7200
7200
  "foreign": {
7201
- "id": 35462,
7201
+ "id": 35481,
7202
7202
  "name": "SuperToken",
7203
7203
  "nodeType": "Identifier",
7204
7204
  "overloadedDeclarations": [],
7205
- "referencedDeclaration": 30169,
7205
+ "referencedDeclaration": 30191,
7206
7206
  "src": "685:10:99",
7207
7207
  "typeDescriptions": {}
7208
7208
  },
@@ -7214,10 +7214,10 @@
7214
7214
  {
7215
7215
  "absolutePath": "project:/contracts/apps/CFAv1Library.sol",
7216
7216
  "file": "../apps/CFAv1Library.sol",
7217
- "id": 35464,
7217
+ "id": 35483,
7218
7218
  "nameLocation": "-1:-1:-1",
7219
7219
  "nodeType": "ImportDirective",
7220
- "scope": 35744,
7220
+ "scope": 35763,
7221
7221
  "sourceUnit": 13349,
7222
7222
  "src": "734:34:99",
7223
7223
  "symbolAliases": [],
@@ -7226,10 +7226,10 @@
7226
7226
  {
7227
7227
  "absolutePath": "project:/contracts/apps/IDAv1Library.sol",
7228
7228
  "file": "../apps/IDAv1Library.sol",
7229
- "id": 35465,
7229
+ "id": 35484,
7230
7230
  "nameLocation": "-1:-1:-1",
7231
7231
  "nodeType": "ImportDirective",
7232
- "scope": 35744,
7232
+ "scope": 35763,
7233
7233
  "sourceUnit": 14704,
7234
7234
  "src": "769:34:99",
7235
7235
  "symbolAliases": [],
@@ -7243,22 +7243,22 @@
7243
7243
  1762,
7244
7244
  8774,
7245
7245
  12168,
7246
- 30506,
7247
- 30544,
7248
- 33474,
7249
- 36827
7246
+ 30528,
7247
+ 30566,
7248
+ 33493,
7249
+ 36846
7250
7250
  ],
7251
7251
  "contractKind": "contract",
7252
7252
  "documentation": {
7253
- "id": 35466,
7253
+ "id": 35485,
7254
7254
  "nodeType": "StructuredDocumentation",
7255
7255
  "src": "806:124:99",
7256
7256
  "text": "@title Superfluid Framework Deployer\n @notice This is NOT for deploying public nets, but rather only for tesing envs"
7257
7257
  },
7258
7258
  "fullyImplemented": true,
7259
- "id": 35743,
7259
+ "id": 35762,
7260
7260
  "linearizedBaseContracts": [
7261
- 35743
7261
+ 35762
7262
7262
  ],
7263
7263
  "name": "SuperfluidFrameworkDeployer",
7264
7264
  "nameLocation": "939:27:99",
@@ -7266,37 +7266,37 @@
7266
7266
  "nodes": [
7267
7267
  {
7268
7268
  "canonicalName": "SuperfluidFrameworkDeployer.Framework",
7269
- "id": 35488,
7269
+ "id": 35507,
7270
7270
  "members": [
7271
7271
  {
7272
7272
  "constant": false,
7273
- "id": 35469,
7273
+ "id": 35488,
7274
7274
  "mutability": "mutable",
7275
7275
  "name": "governance",
7276
7276
  "nameLocation": "1016:10:99",
7277
7277
  "nodeType": "VariableDeclaration",
7278
- "scope": 35488,
7278
+ "scope": 35507,
7279
7279
  "src": "1001:25:99",
7280
7280
  "stateVariable": false,
7281
7281
  "storageLocation": "default",
7282
7282
  "typeDescriptions": {
7283
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7283
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7284
7284
  "typeString": "contract TestGovernance"
7285
7285
  },
7286
7286
  "typeName": {
7287
- "id": 35468,
7287
+ "id": 35487,
7288
7288
  "nodeType": "UserDefinedTypeName",
7289
7289
  "pathNode": {
7290
- "id": 35467,
7290
+ "id": 35486,
7291
7291
  "name": "TestGovernance",
7292
7292
  "nodeType": "IdentifierPath",
7293
- "referencedDeclaration": 36827,
7293
+ "referencedDeclaration": 36846,
7294
7294
  "src": "1001:14:99"
7295
7295
  },
7296
- "referencedDeclaration": 36827,
7296
+ "referencedDeclaration": 36846,
7297
7297
  "src": "1001:14:99",
7298
7298
  "typeDescriptions": {
7299
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7299
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7300
7300
  "typeString": "contract TestGovernance"
7301
7301
  }
7302
7302
  },
@@ -7304,33 +7304,33 @@
7304
7304
  },
7305
7305
  {
7306
7306
  "constant": false,
7307
- "id": 35472,
7307
+ "id": 35491,
7308
7308
  "mutability": "mutable",
7309
7309
  "name": "host",
7310
7310
  "nameLocation": "1047:4:99",
7311
7311
  "nodeType": "VariableDeclaration",
7312
- "scope": 35488,
7312
+ "scope": 35507,
7313
7313
  "src": "1036:15:99",
7314
7314
  "stateVariable": false,
7315
7315
  "storageLocation": "default",
7316
7316
  "typeDescriptions": {
7317
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7317
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7318
7318
  "typeString": "contract Superfluid"
7319
7319
  },
7320
7320
  "typeName": {
7321
- "id": 35471,
7321
+ "id": 35490,
7322
7322
  "nodeType": "UserDefinedTypeName",
7323
7323
  "pathNode": {
7324
- "id": 35470,
7324
+ "id": 35489,
7325
7325
  "name": "Superfluid",
7326
7326
  "nodeType": "IdentifierPath",
7327
- "referencedDeclaration": 33474,
7327
+ "referencedDeclaration": 33493,
7328
7328
  "src": "1036:10:99"
7329
7329
  },
7330
- "referencedDeclaration": 33474,
7330
+ "referencedDeclaration": 33493,
7331
7331
  "src": "1036:10:99",
7332
7332
  "typeDescriptions": {
7333
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7333
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7334
7334
  "typeString": "contract Superfluid"
7335
7335
  }
7336
7336
  },
@@ -7338,12 +7338,12 @@
7338
7338
  },
7339
7339
  {
7340
7340
  "constant": false,
7341
- "id": 35475,
7341
+ "id": 35494,
7342
7342
  "mutability": "mutable",
7343
7343
  "name": "cfa",
7344
7344
  "nameLocation": "1085:3:99",
7345
7345
  "nodeType": "VariableDeclaration",
7346
- "scope": 35488,
7346
+ "scope": 35507,
7347
7347
  "src": "1061:27:99",
7348
7348
  "stateVariable": false,
7349
7349
  "storageLocation": "default",
@@ -7352,10 +7352,10 @@
7352
7352
  "typeString": "contract ConstantFlowAgreementV1"
7353
7353
  },
7354
7354
  "typeName": {
7355
- "id": 35474,
7355
+ "id": 35493,
7356
7356
  "nodeType": "UserDefinedTypeName",
7357
7357
  "pathNode": {
7358
- "id": 35473,
7358
+ "id": 35492,
7359
7359
  "name": "ConstantFlowAgreementV1",
7360
7360
  "nodeType": "IdentifierPath",
7361
7361
  "referencedDeclaration": 8774,
@@ -7372,12 +7372,12 @@
7372
7372
  },
7373
7373
  {
7374
7374
  "constant": false,
7375
- "id": 35478,
7375
+ "id": 35497,
7376
7376
  "mutability": "mutable",
7377
7377
  "name": "cfaLib",
7378
7378
  "nameLocation": "1120:6:99",
7379
7379
  "nodeType": "VariableDeclaration",
7380
- "scope": 35488,
7380
+ "scope": 35507,
7381
7381
  "src": "1098:28:99",
7382
7382
  "stateVariable": false,
7383
7383
  "storageLocation": "default",
@@ -7386,10 +7386,10 @@
7386
7386
  "typeString": "struct CFAv1Library.InitData"
7387
7387
  },
7388
7388
  "typeName": {
7389
- "id": 35477,
7389
+ "id": 35496,
7390
7390
  "nodeType": "UserDefinedTypeName",
7391
7391
  "pathNode": {
7392
- "id": 35476,
7392
+ "id": 35495,
7393
7393
  "name": "CFAv1Library.InitData",
7394
7394
  "nodeType": "IdentifierPath",
7395
7395
  "referencedDeclaration": 12183,
@@ -7406,12 +7406,12 @@
7406
7406
  },
7407
7407
  {
7408
7408
  "constant": false,
7409
- "id": 35481,
7409
+ "id": 35500,
7410
7410
  "mutability": "mutable",
7411
7411
  "name": "ida",
7412
7412
  "nameLocation": "1167:3:99",
7413
7413
  "nodeType": "VariableDeclaration",
7414
- "scope": 35488,
7414
+ "scope": 35507,
7415
7415
  "src": "1136:34:99",
7416
7416
  "stateVariable": false,
7417
7417
  "storageLocation": "default",
@@ -7420,10 +7420,10 @@
7420
7420
  "typeString": "contract InstantDistributionAgreementV1"
7421
7421
  },
7422
7422
  "typeName": {
7423
- "id": 35480,
7423
+ "id": 35499,
7424
7424
  "nodeType": "UserDefinedTypeName",
7425
7425
  "pathNode": {
7426
- "id": 35479,
7426
+ "id": 35498,
7427
7427
  "name": "InstantDistributionAgreementV1",
7428
7428
  "nodeType": "IdentifierPath",
7429
7429
  "referencedDeclaration": 12168,
@@ -7440,12 +7440,12 @@
7440
7440
  },
7441
7441
  {
7442
7442
  "constant": false,
7443
- "id": 35484,
7443
+ "id": 35503,
7444
7444
  "mutability": "mutable",
7445
7445
  "name": "idaLib",
7446
7446
  "nameLocation": "1202:6:99",
7447
7447
  "nodeType": "VariableDeclaration",
7448
- "scope": 35488,
7448
+ "scope": 35507,
7449
7449
  "src": "1180:28:99",
7450
7450
  "stateVariable": false,
7451
7451
  "storageLocation": "default",
@@ -7454,10 +7454,10 @@
7454
7454
  "typeString": "struct IDAv1Library.InitData"
7455
7455
  },
7456
7456
  "typeName": {
7457
- "id": 35483,
7457
+ "id": 35502,
7458
7458
  "nodeType": "UserDefinedTypeName",
7459
7459
  "pathNode": {
7460
- "id": 35482,
7460
+ "id": 35501,
7461
7461
  "name": "IDAv1Library.InitData",
7462
7462
  "nodeType": "IdentifierPath",
7463
7463
  "referencedDeclaration": 13364,
@@ -7474,33 +7474,33 @@
7474
7474
  },
7475
7475
  {
7476
7476
  "constant": false,
7477
- "id": 35487,
7477
+ "id": 35506,
7478
7478
  "mutability": "mutable",
7479
7479
  "name": "superTokenFactory",
7480
7480
  "nameLocation": "1236:17:99",
7481
7481
  "nodeType": "VariableDeclaration",
7482
- "scope": 35488,
7482
+ "scope": 35507,
7483
7483
  "src": "1218:35:99",
7484
7484
  "stateVariable": false,
7485
7485
  "storageLocation": "default",
7486
7486
  "typeDescriptions": {
7487
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
7487
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
7488
7488
  "typeString": "contract SuperTokenFactory"
7489
7489
  },
7490
7490
  "typeName": {
7491
- "id": 35486,
7491
+ "id": 35505,
7492
7492
  "nodeType": "UserDefinedTypeName",
7493
7493
  "pathNode": {
7494
- "id": 35485,
7494
+ "id": 35504,
7495
7495
  "name": "SuperTokenFactory",
7496
7496
  "nodeType": "IdentifierPath",
7497
- "referencedDeclaration": 30544,
7497
+ "referencedDeclaration": 30566,
7498
7498
  "src": "1218:17:99"
7499
7499
  },
7500
- "referencedDeclaration": 30544,
7500
+ "referencedDeclaration": 30566,
7501
7501
  "src": "1218:17:99",
7502
7502
  "typeDescriptions": {
7503
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
7503
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
7504
7504
  "typeString": "contract SuperTokenFactory"
7505
7505
  }
7506
7506
  },
@@ -7510,39 +7510,39 @@
7510
7510
  "name": "Framework",
7511
7511
  "nameLocation": "981:9:99",
7512
7512
  "nodeType": "StructDefinition",
7513
- "scope": 35743,
7513
+ "scope": 35762,
7514
7514
  "src": "974:286:99",
7515
7515
  "visibility": "public"
7516
7516
  },
7517
7517
  {
7518
7518
  "constant": false,
7519
- "id": 35491,
7519
+ "id": 35510,
7520
7520
  "mutability": "mutable",
7521
7521
  "name": "governance",
7522
7522
  "nameLocation": "1290:10:99",
7523
7523
  "nodeType": "VariableDeclaration",
7524
- "scope": 35743,
7524
+ "scope": 35762,
7525
7525
  "src": "1266:34:99",
7526
7526
  "stateVariable": true,
7527
7527
  "storageLocation": "default",
7528
7528
  "typeDescriptions": {
7529
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7529
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7530
7530
  "typeString": "contract TestGovernance"
7531
7531
  },
7532
7532
  "typeName": {
7533
- "id": 35490,
7533
+ "id": 35509,
7534
7534
  "nodeType": "UserDefinedTypeName",
7535
7535
  "pathNode": {
7536
- "id": 35489,
7536
+ "id": 35508,
7537
7537
  "name": "TestGovernance",
7538
7538
  "nodeType": "IdentifierPath",
7539
- "referencedDeclaration": 36827,
7539
+ "referencedDeclaration": 36846,
7540
7540
  "src": "1266:14:99"
7541
7541
  },
7542
- "referencedDeclaration": 36827,
7542
+ "referencedDeclaration": 36846,
7543
7543
  "src": "1266:14:99",
7544
7544
  "typeDescriptions": {
7545
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7545
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7546
7546
  "typeString": "contract TestGovernance"
7547
7547
  }
7548
7548
  },
@@ -7550,33 +7550,33 @@
7550
7550
  },
7551
7551
  {
7552
7552
  "constant": false,
7553
- "id": 35494,
7553
+ "id": 35513,
7554
7554
  "mutability": "mutable",
7555
7555
  "name": "host",
7556
7556
  "nameLocation": "1326:4:99",
7557
7557
  "nodeType": "VariableDeclaration",
7558
- "scope": 35743,
7558
+ "scope": 35762,
7559
7559
  "src": "1306:24:99",
7560
7560
  "stateVariable": true,
7561
7561
  "storageLocation": "default",
7562
7562
  "typeDescriptions": {
7563
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7563
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7564
7564
  "typeString": "contract Superfluid"
7565
7565
  },
7566
7566
  "typeName": {
7567
- "id": 35493,
7567
+ "id": 35512,
7568
7568
  "nodeType": "UserDefinedTypeName",
7569
7569
  "pathNode": {
7570
- "id": 35492,
7570
+ "id": 35511,
7571
7571
  "name": "Superfluid",
7572
7572
  "nodeType": "IdentifierPath",
7573
- "referencedDeclaration": 33474,
7573
+ "referencedDeclaration": 33493,
7574
7574
  "src": "1306:10:99"
7575
7575
  },
7576
- "referencedDeclaration": 33474,
7576
+ "referencedDeclaration": 33493,
7577
7577
  "src": "1306:10:99",
7578
7578
  "typeDescriptions": {
7579
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7579
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7580
7580
  "typeString": "contract Superfluid"
7581
7581
  }
7582
7582
  },
@@ -7584,12 +7584,12 @@
7584
7584
  },
7585
7585
  {
7586
7586
  "constant": false,
7587
- "id": 35497,
7587
+ "id": 35516,
7588
7588
  "mutability": "mutable",
7589
7589
  "name": "cfa",
7590
7590
  "nameLocation": "1369:3:99",
7591
7591
  "nodeType": "VariableDeclaration",
7592
- "scope": 35743,
7592
+ "scope": 35762,
7593
7593
  "src": "1336:36:99",
7594
7594
  "stateVariable": true,
7595
7595
  "storageLocation": "default",
@@ -7598,10 +7598,10 @@
7598
7598
  "typeString": "contract ConstantFlowAgreementV1"
7599
7599
  },
7600
7600
  "typeName": {
7601
- "id": 35496,
7601
+ "id": 35515,
7602
7602
  "nodeType": "UserDefinedTypeName",
7603
7603
  "pathNode": {
7604
- "id": 35495,
7604
+ "id": 35514,
7605
7605
  "name": "ConstantFlowAgreementV1",
7606
7606
  "nodeType": "IdentifierPath",
7607
7607
  "referencedDeclaration": 8774,
@@ -7618,12 +7618,12 @@
7618
7618
  },
7619
7619
  {
7620
7620
  "constant": false,
7621
- "id": 35500,
7621
+ "id": 35519,
7622
7622
  "mutability": "mutable",
7623
7623
  "name": "ida",
7624
7624
  "nameLocation": "1418:3:99",
7625
7625
  "nodeType": "VariableDeclaration",
7626
- "scope": 35743,
7626
+ "scope": 35762,
7627
7627
  "src": "1378:43:99",
7628
7628
  "stateVariable": true,
7629
7629
  "storageLocation": "default",
@@ -7632,10 +7632,10 @@
7632
7632
  "typeString": "contract InstantDistributionAgreementV1"
7633
7633
  },
7634
7634
  "typeName": {
7635
- "id": 35499,
7635
+ "id": 35518,
7636
7636
  "nodeType": "UserDefinedTypeName",
7637
7637
  "pathNode": {
7638
- "id": 35498,
7638
+ "id": 35517,
7639
7639
  "name": "InstantDistributionAgreementV1",
7640
7640
  "nodeType": "IdentifierPath",
7641
7641
  "referencedDeclaration": 12168,
@@ -7652,33 +7652,33 @@
7652
7652
  },
7653
7653
  {
7654
7654
  "constant": false,
7655
- "id": 35503,
7655
+ "id": 35522,
7656
7656
  "mutability": "mutable",
7657
7657
  "name": "superTokenFactory",
7658
7658
  "nameLocation": "1454:17:99",
7659
7659
  "nodeType": "VariableDeclaration",
7660
- "scope": 35743,
7660
+ "scope": 35762,
7661
7661
  "src": "1427:44:99",
7662
7662
  "stateVariable": true,
7663
7663
  "storageLocation": "default",
7664
7664
  "typeDescriptions": {
7665
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
7665
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
7666
7666
  "typeString": "contract SuperTokenFactory"
7667
7667
  },
7668
7668
  "typeName": {
7669
- "id": 35502,
7669
+ "id": 35521,
7670
7670
  "nodeType": "UserDefinedTypeName",
7671
7671
  "pathNode": {
7672
- "id": 35501,
7672
+ "id": 35520,
7673
7673
  "name": "SuperTokenFactory",
7674
7674
  "nodeType": "IdentifierPath",
7675
- "referencedDeclaration": 30544,
7675
+ "referencedDeclaration": 30566,
7676
7676
  "src": "1427:17:99"
7677
7677
  },
7678
- "referencedDeclaration": 30544,
7678
+ "referencedDeclaration": 30566,
7679
7679
  "src": "1427:17:99",
7680
7680
  "typeDescriptions": {
7681
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
7681
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
7682
7682
  "typeString": "contract SuperTokenFactory"
7683
7683
  }
7684
7684
  },
@@ -7686,26 +7686,26 @@
7686
7686
  },
7687
7687
  {
7688
7688
  "body": {
7689
- "id": 35625,
7689
+ "id": 35644,
7690
7690
  "nodeType": "Block",
7691
7691
  "src": "1539:2043:99",
7692
7692
  "statements": [
7693
7693
  {
7694
7694
  "expression": {
7695
- "id": 35512,
7695
+ "id": 35531,
7696
7696
  "isConstant": false,
7697
7697
  "isLValue": false,
7698
7698
  "isPure": false,
7699
7699
  "lValueRequested": false,
7700
7700
  "leftHandSide": {
7701
- "id": 35507,
7701
+ "id": 35526,
7702
7702
  "name": "governance",
7703
7703
  "nodeType": "Identifier",
7704
7704
  "overloadedDeclarations": [],
7705
- "referencedDeclaration": 35491,
7705
+ "referencedDeclaration": 35510,
7706
7706
  "src": "2134:10:99",
7707
7707
  "typeDescriptions": {
7708
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7708
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7709
7709
  "typeString": "contract TestGovernance"
7710
7710
  }
7711
7711
  },
@@ -7715,7 +7715,7 @@
7715
7715
  "arguments": [],
7716
7716
  "expression": {
7717
7717
  "argumentTypes": [],
7718
- "id": 35510,
7718
+ "id": 35529,
7719
7719
  "isConstant": false,
7720
7720
  "isLValue": false,
7721
7721
  "isPure": false,
@@ -7723,28 +7723,28 @@
7723
7723
  "nodeType": "NewExpression",
7724
7724
  "src": "2147:18:99",
7725
7725
  "typeDescriptions": {
7726
- "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_TestGovernance_$36827_$",
7726
+ "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_TestGovernance_$36846_$",
7727
7727
  "typeString": "function () returns (contract TestGovernance)"
7728
7728
  },
7729
7729
  "typeName": {
7730
- "id": 35509,
7730
+ "id": 35528,
7731
7731
  "nodeType": "UserDefinedTypeName",
7732
7732
  "pathNode": {
7733
- "id": 35508,
7733
+ "id": 35527,
7734
7734
  "name": "TestGovernance",
7735
7735
  "nodeType": "IdentifierPath",
7736
- "referencedDeclaration": 36827,
7736
+ "referencedDeclaration": 36846,
7737
7737
  "src": "2151:14:99"
7738
7738
  },
7739
- "referencedDeclaration": 36827,
7739
+ "referencedDeclaration": 36846,
7740
7740
  "src": "2151:14:99",
7741
7741
  "typeDescriptions": {
7742
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7742
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7743
7743
  "typeString": "contract TestGovernance"
7744
7744
  }
7745
7745
  }
7746
7746
  },
7747
- "id": 35511,
7747
+ "id": 35530,
7748
7748
  "isConstant": false,
7749
7749
  "isLValue": false,
7750
7750
  "isPure": false,
@@ -7755,36 +7755,36 @@
7755
7755
  "src": "2147:20:99",
7756
7756
  "tryCall": false,
7757
7757
  "typeDescriptions": {
7758
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7758
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7759
7759
  "typeString": "contract TestGovernance"
7760
7760
  }
7761
7761
  },
7762
7762
  "src": "2134:33:99",
7763
7763
  "typeDescriptions": {
7764
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7764
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7765
7765
  "typeString": "contract TestGovernance"
7766
7766
  }
7767
7767
  },
7768
- "id": 35513,
7768
+ "id": 35532,
7769
7769
  "nodeType": "ExpressionStatement",
7770
7770
  "src": "2134:33:99"
7771
7771
  },
7772
7772
  {
7773
7773
  "expression": {
7774
- "id": 35521,
7774
+ "id": 35540,
7775
7775
  "isConstant": false,
7776
7776
  "isLValue": false,
7777
7777
  "isPure": false,
7778
7778
  "lValueRequested": false,
7779
7779
  "leftHandSide": {
7780
- "id": 35514,
7780
+ "id": 35533,
7781
7781
  "name": "host",
7782
7782
  "nodeType": "Identifier",
7783
7783
  "overloadedDeclarations": [],
7784
- "referencedDeclaration": 35494,
7784
+ "referencedDeclaration": 35513,
7785
7785
  "src": "2207:4:99",
7786
7786
  "typeDescriptions": {
7787
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7787
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7788
7788
  "typeString": "contract Superfluid"
7789
7789
  }
7790
7790
  },
@@ -7794,7 +7794,7 @@
7794
7794
  "arguments": [
7795
7795
  {
7796
7796
  "hexValue": "74727565",
7797
- "id": 35518,
7797
+ "id": 35537,
7798
7798
  "isConstant": false,
7799
7799
  "isLValue": false,
7800
7800
  "isPure": true,
@@ -7810,7 +7810,7 @@
7810
7810
  },
7811
7811
  {
7812
7812
  "hexValue": "66616c7365",
7813
- "id": 35519,
7813
+ "id": 35538,
7814
7814
  "isConstant": false,
7815
7815
  "isLValue": false,
7816
7816
  "isPure": true,
@@ -7836,7 +7836,7 @@
7836
7836
  "typeString": "bool"
7837
7837
  }
7838
7838
  ],
7839
- "id": 35517,
7839
+ "id": 35536,
7840
7840
  "isConstant": false,
7841
7841
  "isLValue": false,
7842
7842
  "isPure": false,
@@ -7844,28 +7844,28 @@
7844
7844
  "nodeType": "NewExpression",
7845
7845
  "src": "2214:14:99",
7846
7846
  "typeDescriptions": {
7847
- "typeIdentifier": "t_function_creation_nonpayable$_t_bool_$_t_bool_$returns$_t_contract$_Superfluid_$33474_$",
7847
+ "typeIdentifier": "t_function_creation_nonpayable$_t_bool_$_t_bool_$returns$_t_contract$_Superfluid_$33493_$",
7848
7848
  "typeString": "function (bool,bool) returns (contract Superfluid)"
7849
7849
  },
7850
7850
  "typeName": {
7851
- "id": 35516,
7851
+ "id": 35535,
7852
7852
  "nodeType": "UserDefinedTypeName",
7853
7853
  "pathNode": {
7854
- "id": 35515,
7854
+ "id": 35534,
7855
7855
  "name": "Superfluid",
7856
7856
  "nodeType": "IdentifierPath",
7857
- "referencedDeclaration": 33474,
7857
+ "referencedDeclaration": 33493,
7858
7858
  "src": "2218:10:99"
7859
7859
  },
7860
- "referencedDeclaration": 33474,
7860
+ "referencedDeclaration": 33493,
7861
7861
  "src": "2218:10:99",
7862
7862
  "typeDescriptions": {
7863
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7863
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7864
7864
  "typeString": "contract Superfluid"
7865
7865
  }
7866
7866
  }
7867
7867
  },
7868
- "id": 35520,
7868
+ "id": 35539,
7869
7869
  "isConstant": false,
7870
7870
  "isLValue": false,
7871
7871
  "isPure": false,
@@ -7876,17 +7876,17 @@
7876
7876
  "src": "2214:27:99",
7877
7877
  "tryCall": false,
7878
7878
  "typeDescriptions": {
7879
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7879
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7880
7880
  "typeString": "contract Superfluid"
7881
7881
  }
7882
7882
  },
7883
7883
  "src": "2207:34:99",
7884
7884
  "typeDescriptions": {
7885
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7885
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7886
7886
  "typeString": "contract Superfluid"
7887
7887
  }
7888
7888
  },
7889
- "id": 35522,
7889
+ "id": 35541,
7890
7890
  "nodeType": "ExpressionStatement",
7891
7891
  "src": "2207:34:99"
7892
7892
  },
@@ -7894,14 +7894,14 @@
7894
7894
  "expression": {
7895
7895
  "arguments": [
7896
7896
  {
7897
- "id": 35526,
7897
+ "id": 35545,
7898
7898
  "name": "governance",
7899
7899
  "nodeType": "Identifier",
7900
7900
  "overloadedDeclarations": [],
7901
- "referencedDeclaration": 35491,
7901
+ "referencedDeclaration": 35510,
7902
7902
  "src": "2325:10:99",
7903
7903
  "typeDescriptions": {
7904
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7904
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7905
7905
  "typeString": "contract TestGovernance"
7906
7906
  }
7907
7907
  }
@@ -7909,37 +7909,37 @@
7909
7909
  "expression": {
7910
7910
  "argumentTypes": [
7911
7911
  {
7912
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
7912
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
7913
7913
  "typeString": "contract TestGovernance"
7914
7914
  }
7915
7915
  ],
7916
7916
  "expression": {
7917
- "id": 35523,
7917
+ "id": 35542,
7918
7918
  "name": "host",
7919
7919
  "nodeType": "Identifier",
7920
7920
  "overloadedDeclarations": [],
7921
- "referencedDeclaration": 35494,
7921
+ "referencedDeclaration": 35513,
7922
7922
  "src": "2309:4:99",
7923
7923
  "typeDescriptions": {
7924
- "typeIdentifier": "t_contract$_Superfluid_$33474",
7924
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
7925
7925
  "typeString": "contract Superfluid"
7926
7926
  }
7927
7927
  },
7928
- "id": 35525,
7928
+ "id": 35544,
7929
7929
  "isConstant": false,
7930
7930
  "isLValue": false,
7931
7931
  "isPure": false,
7932
7932
  "lValueRequested": false,
7933
7933
  "memberName": "initialize",
7934
7934
  "nodeType": "MemberAccess",
7935
- "referencedDeclaration": 30664,
7935
+ "referencedDeclaration": 30686,
7936
7936
  "src": "2309:15:99",
7937
7937
  "typeDescriptions": {
7938
7938
  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ISuperfluidGovernance_$18447_$returns$__$",
7939
7939
  "typeString": "function (contract ISuperfluidGovernance) external"
7940
7940
  }
7941
7941
  },
7942
- "id": 35527,
7942
+ "id": 35546,
7943
7943
  "isConstant": false,
7944
7944
  "isLValue": false,
7945
7945
  "isPure": false,
@@ -7954,23 +7954,23 @@
7954
7954
  "typeString": "tuple()"
7955
7955
  }
7956
7956
  },
7957
- "id": 35528,
7957
+ "id": 35547,
7958
7958
  "nodeType": "ExpressionStatement",
7959
7959
  "src": "2309:27:99"
7960
7960
  },
7961
7961
  {
7962
7962
  "assignments": [
7963
- 35533
7963
+ 35552
7964
7964
  ],
7965
7965
  "declarations": [
7966
7966
  {
7967
7967
  "constant": false,
7968
- "id": 35533,
7968
+ "id": 35552,
7969
7969
  "mutability": "mutable",
7970
7970
  "name": "trustedForarders",
7971
7971
  "nameLocation": "2397:16:99",
7972
7972
  "nodeType": "VariableDeclaration",
7973
- "scope": 35625,
7973
+ "scope": 35644,
7974
7974
  "src": "2380:33:99",
7975
7975
  "stateVariable": false,
7976
7976
  "storageLocation": "memory",
@@ -7980,7 +7980,7 @@
7980
7980
  },
7981
7981
  "typeName": {
7982
7982
  "baseType": {
7983
- "id": 35531,
7983
+ "id": 35550,
7984
7984
  "name": "address",
7985
7985
  "nodeType": "ElementaryTypeName",
7986
7986
  "src": "2380:7:99",
@@ -7989,7 +7989,7 @@
7989
7989
  "typeString": "address"
7990
7990
  }
7991
7991
  },
7992
- "id": 35532,
7992
+ "id": 35551,
7993
7993
  "nodeType": "ArrayTypeName",
7994
7994
  "src": "2380:9:99",
7995
7995
  "typeDescriptions": {
@@ -8000,12 +8000,12 @@
8000
8000
  "visibility": "internal"
8001
8001
  }
8002
8002
  ],
8003
- "id": 35539,
8003
+ "id": 35558,
8004
8004
  "initialValue": {
8005
8005
  "arguments": [
8006
8006
  {
8007
8007
  "hexValue": "30",
8008
- "id": 35537,
8008
+ "id": 35556,
8009
8009
  "isConstant": false,
8010
8010
  "isLValue": false,
8011
8011
  "isPure": true,
@@ -8027,7 +8027,7 @@
8027
8027
  "typeString": "int_const 0"
8028
8028
  }
8029
8029
  ],
8030
- "id": 35536,
8030
+ "id": 35555,
8031
8031
  "isConstant": false,
8032
8032
  "isLValue": false,
8033
8033
  "isPure": true,
@@ -8040,7 +8040,7 @@
8040
8040
  },
8041
8041
  "typeName": {
8042
8042
  "baseType": {
8043
- "id": 35534,
8043
+ "id": 35553,
8044
8044
  "name": "address",
8045
8045
  "nodeType": "ElementaryTypeName",
8046
8046
  "src": "2420:7:99",
@@ -8050,7 +8050,7 @@
8050
8050
  "typeString": "address"
8051
8051
  }
8052
8052
  },
8053
- "id": 35535,
8053
+ "id": 35554,
8054
8054
  "nodeType": "ArrayTypeName",
8055
8055
  "src": "2420:9:99",
8056
8056
  "typeDescriptions": {
@@ -8059,7 +8059,7 @@
8059
8059
  }
8060
8060
  }
8061
8061
  },
8062
- "id": 35538,
8062
+ "id": 35557,
8063
8063
  "isConstant": false,
8064
8064
  "isLValue": false,
8065
8065
  "isPure": true,
@@ -8081,14 +8081,14 @@
8081
8081
  "expression": {
8082
8082
  "arguments": [
8083
8083
  {
8084
- "id": 35543,
8084
+ "id": 35562,
8085
8085
  "name": "host",
8086
8086
  "nodeType": "Identifier",
8087
8087
  "overloadedDeclarations": [],
8088
- "referencedDeclaration": 35494,
8088
+ "referencedDeclaration": 35513,
8089
8089
  "src": "2477:4:99",
8090
8090
  "typeDescriptions": {
8091
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8091
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8092
8092
  "typeString": "contract Superfluid"
8093
8093
  }
8094
8094
  },
@@ -8096,7 +8096,7 @@
8096
8096
  "arguments": [
8097
8097
  {
8098
8098
  "hexValue": "3639",
8099
- "id": 35546,
8099
+ "id": 35565,
8100
8100
  "isConstant": false,
8101
8101
  "isLValue": false,
8102
8102
  "isPure": true,
@@ -8118,7 +8118,7 @@
8118
8118
  "typeString": "int_const 69"
8119
8119
  }
8120
8120
  ],
8121
- "id": 35545,
8121
+ "id": 35564,
8122
8122
  "isConstant": false,
8123
8123
  "isLValue": false,
8124
8124
  "isPure": true,
@@ -8130,14 +8130,14 @@
8130
8130
  "typeString": "type(address)"
8131
8131
  },
8132
8132
  "typeName": {
8133
- "id": 35544,
8133
+ "id": 35563,
8134
8134
  "name": "address",
8135
8135
  "nodeType": "ElementaryTypeName",
8136
8136
  "src": "2495:7:99",
8137
8137
  "typeDescriptions": {}
8138
8138
  }
8139
8139
  },
8140
- "id": 35547,
8140
+ "id": 35566,
8141
8141
  "isConstant": false,
8142
8142
  "isLValue": false,
8143
8143
  "isPure": true,
@@ -8154,7 +8154,7 @@
8154
8154
  },
8155
8155
  {
8156
8156
  "hexValue": "34",
8157
- "id": 35548,
8157
+ "id": 35567,
8158
8158
  "isConstant": false,
8159
8159
  "isLValue": false,
8160
8160
  "isPure": true,
@@ -8171,7 +8171,7 @@
8171
8171
  },
8172
8172
  {
8173
8173
  "hexValue": "3330",
8174
- "id": 35549,
8174
+ "id": 35568,
8175
8175
  "isConstant": false,
8176
8176
  "isLValue": false,
8177
8177
  "isPure": true,
@@ -8187,11 +8187,11 @@
8187
8187
  "value": "30"
8188
8188
  },
8189
8189
  {
8190
- "id": 35550,
8190
+ "id": 35569,
8191
8191
  "name": "trustedForarders",
8192
8192
  "nodeType": "Identifier",
8193
8193
  "overloadedDeclarations": [],
8194
- "referencedDeclaration": 35533,
8194
+ "referencedDeclaration": 35552,
8195
8195
  "src": "2565:16:99",
8196
8196
  "typeDescriptions": {
8197
8197
  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
@@ -8202,7 +8202,7 @@
8202
8202
  "expression": {
8203
8203
  "argumentTypes": [
8204
8204
  {
8205
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8205
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8206
8206
  "typeString": "contract Superfluid"
8207
8207
  },
8208
8208
  {
@@ -8223,32 +8223,32 @@
8223
8223
  }
8224
8224
  ],
8225
8225
  "expression": {
8226
- "id": 35540,
8226
+ "id": 35559,
8227
8227
  "name": "governance",
8228
8228
  "nodeType": "Identifier",
8229
8229
  "overloadedDeclarations": [],
8230
- "referencedDeclaration": 35491,
8230
+ "referencedDeclaration": 35510,
8231
8231
  "src": "2442:10:99",
8232
8232
  "typeDescriptions": {
8233
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
8233
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
8234
8234
  "typeString": "contract TestGovernance"
8235
8235
  }
8236
8236
  },
8237
- "id": 35542,
8237
+ "id": 35561,
8238
8238
  "isConstant": false,
8239
8239
  "isLValue": false,
8240
8240
  "isPure": false,
8241
8241
  "lValueRequested": false,
8242
8242
  "memberName": "initialize",
8243
8243
  "nodeType": "MemberAccess",
8244
- "referencedDeclaration": 36804,
8244
+ "referencedDeclaration": 36823,
8245
8245
  "src": "2442:21:99",
8246
8246
  "typeDescriptions": {
8247
8247
  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ISuperfluid_$18324_$_t_address_$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$",
8248
8248
  "typeString": "function (contract ISuperfluid,address,uint256,uint256,address[] memory) external"
8249
8249
  }
8250
8250
  },
8251
- "id": 35551,
8251
+ "id": 35570,
8252
8252
  "isConstant": false,
8253
8253
  "isLValue": false,
8254
8254
  "isPure": false,
@@ -8263,23 +8263,23 @@
8263
8263
  "typeString": "tuple()"
8264
8264
  }
8265
8265
  },
8266
- "id": 35552,
8266
+ "id": 35571,
8267
8267
  "nodeType": "ExpressionStatement",
8268
8268
  "src": "2442:149:99"
8269
8269
  },
8270
8270
  {
8271
8271
  "expression": {
8272
- "id": 35559,
8272
+ "id": 35578,
8273
8273
  "isConstant": false,
8274
8274
  "isLValue": false,
8275
8275
  "isPure": false,
8276
8276
  "lValueRequested": false,
8277
8277
  "leftHandSide": {
8278
- "id": 35553,
8278
+ "id": 35572,
8279
8279
  "name": "cfa",
8280
8280
  "nodeType": "Identifier",
8281
8281
  "overloadedDeclarations": [],
8282
- "referencedDeclaration": 35497,
8282
+ "referencedDeclaration": 35516,
8283
8283
  "src": "2644:3:99",
8284
8284
  "typeDescriptions": {
8285
8285
  "typeIdentifier": "t_contract$_ConstantFlowAgreementV1_$8774",
@@ -8291,14 +8291,14 @@
8291
8291
  "rightHandSide": {
8292
8292
  "arguments": [
8293
8293
  {
8294
- "id": 35557,
8294
+ "id": 35576,
8295
8295
  "name": "host",
8296
8296
  "nodeType": "Identifier",
8297
8297
  "overloadedDeclarations": [],
8298
- "referencedDeclaration": 35494,
8298
+ "referencedDeclaration": 35513,
8299
8299
  "src": "2678:4:99",
8300
8300
  "typeDescriptions": {
8301
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8301
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8302
8302
  "typeString": "contract Superfluid"
8303
8303
  }
8304
8304
  }
@@ -8306,11 +8306,11 @@
8306
8306
  "expression": {
8307
8307
  "argumentTypes": [
8308
8308
  {
8309
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8309
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8310
8310
  "typeString": "contract Superfluid"
8311
8311
  }
8312
8312
  ],
8313
- "id": 35556,
8313
+ "id": 35575,
8314
8314
  "isConstant": false,
8315
8315
  "isLValue": false,
8316
8316
  "isPure": false,
@@ -8322,10 +8322,10 @@
8322
8322
  "typeString": "function (contract ISuperfluid) returns (contract ConstantFlowAgreementV1)"
8323
8323
  },
8324
8324
  "typeName": {
8325
- "id": 35555,
8325
+ "id": 35574,
8326
8326
  "nodeType": "UserDefinedTypeName",
8327
8327
  "pathNode": {
8328
- "id": 35554,
8328
+ "id": 35573,
8329
8329
  "name": "ConstantFlowAgreementV1",
8330
8330
  "nodeType": "IdentifierPath",
8331
8331
  "referencedDeclaration": 8774,
@@ -8339,7 +8339,7 @@
8339
8339
  }
8340
8340
  }
8341
8341
  },
8342
- "id": 35558,
8342
+ "id": 35577,
8343
8343
  "isConstant": false,
8344
8344
  "isLValue": false,
8345
8345
  "isPure": false,
@@ -8360,7 +8360,7 @@
8360
8360
  "typeString": "contract ConstantFlowAgreementV1"
8361
8361
  }
8362
8362
  },
8363
- "id": 35560,
8363
+ "id": 35579,
8364
8364
  "nodeType": "ExpressionStatement",
8365
8365
  "src": "2644:39:99"
8366
8366
  },
@@ -8368,25 +8368,25 @@
8368
8368
  "expression": {
8369
8369
  "arguments": [
8370
8370
  {
8371
- "id": 35564,
8371
+ "id": 35583,
8372
8372
  "name": "host",
8373
8373
  "nodeType": "Identifier",
8374
8374
  "overloadedDeclarations": [],
8375
- "referencedDeclaration": 35494,
8375
+ "referencedDeclaration": 35513,
8376
8376
  "src": "2787:4:99",
8377
8377
  "typeDescriptions": {
8378
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8378
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8379
8379
  "typeString": "contract Superfluid"
8380
8380
  }
8381
8381
  },
8382
8382
  {
8383
8383
  "arguments": [
8384
8384
  {
8385
- "id": 35567,
8385
+ "id": 35586,
8386
8386
  "name": "cfa",
8387
8387
  "nodeType": "Identifier",
8388
8388
  "overloadedDeclarations": [],
8389
- "referencedDeclaration": 35497,
8389
+ "referencedDeclaration": 35516,
8390
8390
  "src": "2801:3:99",
8391
8391
  "typeDescriptions": {
8392
8392
  "typeIdentifier": "t_contract$_ConstantFlowAgreementV1_$8774",
@@ -8401,7 +8401,7 @@
8401
8401
  "typeString": "contract ConstantFlowAgreementV1"
8402
8402
  }
8403
8403
  ],
8404
- "id": 35566,
8404
+ "id": 35585,
8405
8405
  "isConstant": false,
8406
8406
  "isLValue": false,
8407
8407
  "isPure": true,
@@ -8413,14 +8413,14 @@
8413
8413
  "typeString": "type(address)"
8414
8414
  },
8415
8415
  "typeName": {
8416
- "id": 35565,
8416
+ "id": 35584,
8417
8417
  "name": "address",
8418
8418
  "nodeType": "ElementaryTypeName",
8419
8419
  "src": "2793:7:99",
8420
8420
  "typeDescriptions": {}
8421
8421
  }
8422
8422
  },
8423
- "id": 35568,
8423
+ "id": 35587,
8424
8424
  "isConstant": false,
8425
8425
  "isLValue": false,
8426
8426
  "isPure": false,
@@ -8439,7 +8439,7 @@
8439
8439
  "expression": {
8440
8440
  "argumentTypes": [
8441
8441
  {
8442
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8442
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8443
8443
  "typeString": "contract Superfluid"
8444
8444
  },
8445
8445
  {
@@ -8448,18 +8448,18 @@
8448
8448
  }
8449
8449
  ],
8450
8450
  "expression": {
8451
- "id": 35561,
8451
+ "id": 35580,
8452
8452
  "name": "governance",
8453
8453
  "nodeType": "Identifier",
8454
8454
  "overloadedDeclarations": [],
8455
- "referencedDeclaration": 35491,
8455
+ "referencedDeclaration": 35510,
8456
8456
  "src": "2753:10:99",
8457
8457
  "typeDescriptions": {
8458
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
8458
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
8459
8459
  "typeString": "contract TestGovernance"
8460
8460
  }
8461
8461
  },
8462
- "id": 35563,
8462
+ "id": 35582,
8463
8463
  "isConstant": false,
8464
8464
  "isLValue": false,
8465
8465
  "isPure": false,
@@ -8473,7 +8473,7 @@
8473
8473
  "typeString": "function (contract ISuperfluid,address) external"
8474
8474
  }
8475
8475
  },
8476
- "id": 35569,
8476
+ "id": 35588,
8477
8477
  "isConstant": false,
8478
8478
  "isLValue": false,
8479
8479
  "isPure": false,
@@ -8488,23 +8488,23 @@
8488
8488
  "typeString": "tuple()"
8489
8489
  }
8490
8490
  },
8491
- "id": 35570,
8491
+ "id": 35589,
8492
8492
  "nodeType": "ExpressionStatement",
8493
8493
  "src": "2753:53:99"
8494
8494
  },
8495
8495
  {
8496
8496
  "expression": {
8497
- "id": 35577,
8497
+ "id": 35596,
8498
8498
  "isConstant": false,
8499
8499
  "isLValue": false,
8500
8500
  "isPure": false,
8501
8501
  "lValueRequested": false,
8502
8502
  "leftHandSide": {
8503
- "id": 35571,
8503
+ "id": 35590,
8504
8504
  "name": "ida",
8505
8505
  "nodeType": "Identifier",
8506
8506
  "overloadedDeclarations": [],
8507
- "referencedDeclaration": 35500,
8507
+ "referencedDeclaration": 35519,
8508
8508
  "src": "2866:3:99",
8509
8509
  "typeDescriptions": {
8510
8510
  "typeIdentifier": "t_contract$_InstantDistributionAgreementV1_$12168",
@@ -8516,14 +8516,14 @@
8516
8516
  "rightHandSide": {
8517
8517
  "arguments": [
8518
8518
  {
8519
- "id": 35575,
8519
+ "id": 35594,
8520
8520
  "name": "host",
8521
8521
  "nodeType": "Identifier",
8522
8522
  "overloadedDeclarations": [],
8523
- "referencedDeclaration": 35494,
8523
+ "referencedDeclaration": 35513,
8524
8524
  "src": "2907:4:99",
8525
8525
  "typeDescriptions": {
8526
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8526
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8527
8527
  "typeString": "contract Superfluid"
8528
8528
  }
8529
8529
  }
@@ -8531,11 +8531,11 @@
8531
8531
  "expression": {
8532
8532
  "argumentTypes": [
8533
8533
  {
8534
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8534
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8535
8535
  "typeString": "contract Superfluid"
8536
8536
  }
8537
8537
  ],
8538
- "id": 35574,
8538
+ "id": 35593,
8539
8539
  "isConstant": false,
8540
8540
  "isLValue": false,
8541
8541
  "isPure": false,
@@ -8547,10 +8547,10 @@
8547
8547
  "typeString": "function (contract ISuperfluid) returns (contract InstantDistributionAgreementV1)"
8548
8548
  },
8549
8549
  "typeName": {
8550
- "id": 35573,
8550
+ "id": 35592,
8551
8551
  "nodeType": "UserDefinedTypeName",
8552
8552
  "pathNode": {
8553
- "id": 35572,
8553
+ "id": 35591,
8554
8554
  "name": "InstantDistributionAgreementV1",
8555
8555
  "nodeType": "IdentifierPath",
8556
8556
  "referencedDeclaration": 12168,
@@ -8564,7 +8564,7 @@
8564
8564
  }
8565
8565
  }
8566
8566
  },
8567
- "id": 35576,
8567
+ "id": 35595,
8568
8568
  "isConstant": false,
8569
8569
  "isLValue": false,
8570
8570
  "isPure": false,
@@ -8585,7 +8585,7 @@
8585
8585
  "typeString": "contract InstantDistributionAgreementV1"
8586
8586
  }
8587
8587
  },
8588
- "id": 35578,
8588
+ "id": 35597,
8589
8589
  "nodeType": "ExpressionStatement",
8590
8590
  "src": "2866:46:99"
8591
8591
  },
@@ -8593,25 +8593,25 @@
8593
8593
  "expression": {
8594
8594
  "arguments": [
8595
8595
  {
8596
- "id": 35582,
8596
+ "id": 35601,
8597
8597
  "name": "host",
8598
8598
  "nodeType": "Identifier",
8599
8599
  "overloadedDeclarations": [],
8600
- "referencedDeclaration": 35494,
8600
+ "referencedDeclaration": 35513,
8601
8601
  "src": "3024:4:99",
8602
8602
  "typeDescriptions": {
8603
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8603
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8604
8604
  "typeString": "contract Superfluid"
8605
8605
  }
8606
8606
  },
8607
8607
  {
8608
8608
  "arguments": [
8609
8609
  {
8610
- "id": 35585,
8610
+ "id": 35604,
8611
8611
  "name": "ida",
8612
8612
  "nodeType": "Identifier",
8613
8613
  "overloadedDeclarations": [],
8614
- "referencedDeclaration": 35500,
8614
+ "referencedDeclaration": 35519,
8615
8615
  "src": "3038:3:99",
8616
8616
  "typeDescriptions": {
8617
8617
  "typeIdentifier": "t_contract$_InstantDistributionAgreementV1_$12168",
@@ -8626,7 +8626,7 @@
8626
8626
  "typeString": "contract InstantDistributionAgreementV1"
8627
8627
  }
8628
8628
  ],
8629
- "id": 35584,
8629
+ "id": 35603,
8630
8630
  "isConstant": false,
8631
8631
  "isLValue": false,
8632
8632
  "isPure": true,
@@ -8638,14 +8638,14 @@
8638
8638
  "typeString": "type(address)"
8639
8639
  },
8640
8640
  "typeName": {
8641
- "id": 35583,
8641
+ "id": 35602,
8642
8642
  "name": "address",
8643
8643
  "nodeType": "ElementaryTypeName",
8644
8644
  "src": "3030:7:99",
8645
8645
  "typeDescriptions": {}
8646
8646
  }
8647
8647
  },
8648
- "id": 35586,
8648
+ "id": 35605,
8649
8649
  "isConstant": false,
8650
8650
  "isLValue": false,
8651
8651
  "isPure": false,
@@ -8664,7 +8664,7 @@
8664
8664
  "expression": {
8665
8665
  "argumentTypes": [
8666
8666
  {
8667
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8667
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8668
8668
  "typeString": "contract Superfluid"
8669
8669
  },
8670
8670
  {
@@ -8673,18 +8673,18 @@
8673
8673
  }
8674
8674
  ],
8675
8675
  "expression": {
8676
- "id": 35579,
8676
+ "id": 35598,
8677
8677
  "name": "governance",
8678
8678
  "nodeType": "Identifier",
8679
8679
  "overloadedDeclarations": [],
8680
- "referencedDeclaration": 35491,
8680
+ "referencedDeclaration": 35510,
8681
8681
  "src": "2990:10:99",
8682
8682
  "typeDescriptions": {
8683
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
8683
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
8684
8684
  "typeString": "contract TestGovernance"
8685
8685
  }
8686
8686
  },
8687
- "id": 35581,
8687
+ "id": 35600,
8688
8688
  "isConstant": false,
8689
8689
  "isLValue": false,
8690
8690
  "isPure": false,
@@ -8698,7 +8698,7 @@
8698
8698
  "typeString": "function (contract ISuperfluid,address) external"
8699
8699
  }
8700
8700
  },
8701
- "id": 35587,
8701
+ "id": 35606,
8702
8702
  "isConstant": false,
8703
8703
  "isLValue": false,
8704
8704
  "isPure": false,
@@ -8713,56 +8713,56 @@
8713
8713
  "typeString": "tuple()"
8714
8714
  }
8715
8715
  },
8716
- "id": 35588,
8716
+ "id": 35607,
8717
8717
  "nodeType": "ExpressionStatement",
8718
8718
  "src": "2990:53:99"
8719
8719
  },
8720
8720
  {
8721
8721
  "assignments": [
8722
- 35591
8722
+ 35610
8723
8723
  ],
8724
8724
  "declarations": [
8725
8725
  {
8726
8726
  "constant": false,
8727
- "id": 35591,
8727
+ "id": 35610,
8728
8728
  "mutability": "mutable",
8729
8729
  "name": "superTokenFactoryHelper",
8730
8730
  "nameLocation": "3120:23:99",
8731
8731
  "nodeType": "VariableDeclaration",
8732
- "scope": 35625,
8732
+ "scope": 35644,
8733
8733
  "src": "3096:47:99",
8734
8734
  "stateVariable": false,
8735
8735
  "storageLocation": "default",
8736
8736
  "typeDescriptions": {
8737
- "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30506",
8737
+ "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30528",
8738
8738
  "typeString": "contract SuperTokenFactoryHelper"
8739
8739
  },
8740
8740
  "typeName": {
8741
- "id": 35590,
8741
+ "id": 35609,
8742
8742
  "nodeType": "UserDefinedTypeName",
8743
8743
  "pathNode": {
8744
- "id": 35589,
8744
+ "id": 35608,
8745
8745
  "name": "SuperTokenFactoryHelper",
8746
8746
  "nodeType": "IdentifierPath",
8747
- "referencedDeclaration": 30506,
8747
+ "referencedDeclaration": 30528,
8748
8748
  "src": "3096:23:99"
8749
8749
  },
8750
- "referencedDeclaration": 30506,
8750
+ "referencedDeclaration": 30528,
8751
8751
  "src": "3096:23:99",
8752
8752
  "typeDescriptions": {
8753
- "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30506",
8753
+ "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30528",
8754
8754
  "typeString": "contract SuperTokenFactoryHelper"
8755
8755
  }
8756
8756
  },
8757
8757
  "visibility": "internal"
8758
8758
  }
8759
8759
  ],
8760
- "id": 35596,
8760
+ "id": 35615,
8761
8761
  "initialValue": {
8762
8762
  "arguments": [],
8763
8763
  "expression": {
8764
8764
  "argumentTypes": [],
8765
- "id": 35594,
8765
+ "id": 35613,
8766
8766
  "isConstant": false,
8767
8767
  "isLValue": false,
8768
8768
  "isPure": false,
@@ -8770,28 +8770,28 @@
8770
8770
  "nodeType": "NewExpression",
8771
8771
  "src": "3146:27:99",
8772
8772
  "typeDescriptions": {
8773
- "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_SuperTokenFactoryHelper_$30506_$",
8773
+ "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_SuperTokenFactoryHelper_$30528_$",
8774
8774
  "typeString": "function () returns (contract SuperTokenFactoryHelper)"
8775
8775
  },
8776
8776
  "typeName": {
8777
- "id": 35593,
8777
+ "id": 35612,
8778
8778
  "nodeType": "UserDefinedTypeName",
8779
8779
  "pathNode": {
8780
- "id": 35592,
8780
+ "id": 35611,
8781
8781
  "name": "SuperTokenFactoryHelper",
8782
8782
  "nodeType": "IdentifierPath",
8783
- "referencedDeclaration": 30506,
8783
+ "referencedDeclaration": 30528,
8784
8784
  "src": "3150:23:99"
8785
8785
  },
8786
- "referencedDeclaration": 30506,
8786
+ "referencedDeclaration": 30528,
8787
8787
  "src": "3150:23:99",
8788
8788
  "typeDescriptions": {
8789
- "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30506",
8789
+ "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30528",
8790
8790
  "typeString": "contract SuperTokenFactoryHelper"
8791
8791
  }
8792
8792
  }
8793
8793
  },
8794
- "id": 35595,
8794
+ "id": 35614,
8795
8795
  "isConstant": false,
8796
8796
  "isLValue": false,
8797
8797
  "isPure": false,
@@ -8802,7 +8802,7 @@
8802
8802
  "src": "3146:29:99",
8803
8803
  "tryCall": false,
8804
8804
  "typeDescriptions": {
8805
- "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30506",
8805
+ "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30528",
8806
8806
  "typeString": "contract SuperTokenFactoryHelper"
8807
8807
  }
8808
8808
  },
@@ -8811,20 +8811,20 @@
8811
8811
  },
8812
8812
  {
8813
8813
  "expression": {
8814
- "id": 35604,
8814
+ "id": 35623,
8815
8815
  "isConstant": false,
8816
8816
  "isLValue": false,
8817
8817
  "isPure": false,
8818
8818
  "lValueRequested": false,
8819
8819
  "leftHandSide": {
8820
- "id": 35597,
8820
+ "id": 35616,
8821
8821
  "name": "superTokenFactory",
8822
8822
  "nodeType": "Identifier",
8823
8823
  "overloadedDeclarations": [],
8824
- "referencedDeclaration": 35503,
8824
+ "referencedDeclaration": 35522,
8825
8825
  "src": "3222:17:99",
8826
8826
  "typeDescriptions": {
8827
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
8827
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
8828
8828
  "typeString": "contract SuperTokenFactory"
8829
8829
  }
8830
8830
  },
@@ -8833,26 +8833,26 @@
8833
8833
  "rightHandSide": {
8834
8834
  "arguments": [
8835
8835
  {
8836
- "id": 35601,
8836
+ "id": 35620,
8837
8837
  "name": "host",
8838
8838
  "nodeType": "Identifier",
8839
8839
  "overloadedDeclarations": [],
8840
- "referencedDeclaration": 35494,
8840
+ "referencedDeclaration": 35513,
8841
8841
  "src": "3277:4:99",
8842
8842
  "typeDescriptions": {
8843
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8843
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8844
8844
  "typeString": "contract Superfluid"
8845
8845
  }
8846
8846
  },
8847
8847
  {
8848
- "id": 35602,
8848
+ "id": 35621,
8849
8849
  "name": "superTokenFactoryHelper",
8850
8850
  "nodeType": "Identifier",
8851
8851
  "overloadedDeclarations": [],
8852
- "referencedDeclaration": 35591,
8852
+ "referencedDeclaration": 35610,
8853
8853
  "src": "3295:23:99",
8854
8854
  "typeDescriptions": {
8855
- "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30506",
8855
+ "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30528",
8856
8856
  "typeString": "contract SuperTokenFactoryHelper"
8857
8857
  }
8858
8858
  }
@@ -8860,15 +8860,15 @@
8860
8860
  "expression": {
8861
8861
  "argumentTypes": [
8862
8862
  {
8863
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8863
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8864
8864
  "typeString": "contract Superfluid"
8865
8865
  },
8866
8866
  {
8867
- "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30506",
8867
+ "typeIdentifier": "t_contract$_SuperTokenFactoryHelper_$30528",
8868
8868
  "typeString": "contract SuperTokenFactoryHelper"
8869
8869
  }
8870
8870
  ],
8871
- "id": 35600,
8871
+ "id": 35619,
8872
8872
  "isConstant": false,
8873
8873
  "isLValue": false,
8874
8874
  "isPure": false,
@@ -8876,28 +8876,28 @@
8876
8876
  "nodeType": "NewExpression",
8877
8877
  "src": "3242:21:99",
8878
8878
  "typeDescriptions": {
8879
- "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_ISuperfluid_$18324_$_t_contract$_SuperTokenFactoryHelper_$30506_$returns$_t_contract$_SuperTokenFactory_$30544_$",
8879
+ "typeIdentifier": "t_function_creation_nonpayable$_t_contract$_ISuperfluid_$18324_$_t_contract$_SuperTokenFactoryHelper_$30528_$returns$_t_contract$_SuperTokenFactory_$30566_$",
8880
8880
  "typeString": "function (contract ISuperfluid,contract SuperTokenFactoryHelper) returns (contract SuperTokenFactory)"
8881
8881
  },
8882
8882
  "typeName": {
8883
- "id": 35599,
8883
+ "id": 35618,
8884
8884
  "nodeType": "UserDefinedTypeName",
8885
8885
  "pathNode": {
8886
- "id": 35598,
8886
+ "id": 35617,
8887
8887
  "name": "SuperTokenFactory",
8888
8888
  "nodeType": "IdentifierPath",
8889
- "referencedDeclaration": 30544,
8889
+ "referencedDeclaration": 30566,
8890
8890
  "src": "3246:17:99"
8891
8891
  },
8892
- "referencedDeclaration": 30544,
8892
+ "referencedDeclaration": 30566,
8893
8893
  "src": "3246:17:99",
8894
8894
  "typeDescriptions": {
8895
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
8895
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
8896
8896
  "typeString": "contract SuperTokenFactory"
8897
8897
  }
8898
8898
  }
8899
8899
  },
8900
- "id": 35603,
8900
+ "id": 35622,
8901
8901
  "isConstant": false,
8902
8902
  "isLValue": false,
8903
8903
  "isPure": false,
@@ -8908,17 +8908,17 @@
8908
8908
  "src": "3242:86:99",
8909
8909
  "tryCall": false,
8910
8910
  "typeDescriptions": {
8911
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
8911
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
8912
8912
  "typeString": "contract SuperTokenFactory"
8913
8913
  }
8914
8914
  },
8915
8915
  "src": "3222:106:99",
8916
8916
  "typeDescriptions": {
8917
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
8917
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
8918
8918
  "typeString": "contract SuperTokenFactory"
8919
8919
  }
8920
8920
  },
8921
- "id": 35605,
8921
+ "id": 35624,
8922
8922
  "nodeType": "ExpressionStatement",
8923
8923
  "src": "3222:106:99"
8924
8924
  },
@@ -8926,14 +8926,14 @@
8926
8926
  "expression": {
8927
8927
  "arguments": [
8928
8928
  {
8929
- "id": 35609,
8929
+ "id": 35628,
8930
8930
  "name": "host",
8931
8931
  "nodeType": "Identifier",
8932
8932
  "overloadedDeclarations": [],
8933
- "referencedDeclaration": 35494,
8933
+ "referencedDeclaration": 35513,
8934
8934
  "src": "3467:4:99",
8935
8935
  "typeDescriptions": {
8936
- "typeIdentifier": "t_contract$_Superfluid_$33474",
8936
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
8937
8937
  "typeString": "contract Superfluid"
8938
8938
  }
8939
8939
  },
@@ -8941,7 +8941,7 @@
8941
8941
  "arguments": [
8942
8942
  {
8943
8943
  "hexValue": "30",
8944
- "id": 35612,
8944
+ "id": 35631,
8945
8945
  "isConstant": false,
8946
8946
  "isLValue": false,
8947
8947
  "isPure": true,
@@ -8963,7 +8963,7 @@
8963
8963
  "typeString": "int_const 0"
8964
8964
  }
8965
8965
  ],
8966
- "id": 35611,
8966
+ "id": 35630,
8967
8967
  "isConstant": false,
8968
8968
  "isLValue": false,
8969
8969
  "isPure": true,
@@ -8975,14 +8975,14 @@
8975
8975
  "typeString": "type(address)"
8976
8976
  },
8977
8977
  "typeName": {
8978
- "id": 35610,
8978
+ "id": 35629,
8979
8979
  "name": "address",
8980
8980
  "nodeType": "ElementaryTypeName",
8981
8981
  "src": "3485:7:99",
8982
8982
  "typeDescriptions": {}
8983
8983
  }
8984
8984
  },
8985
- "id": 35613,
8985
+ "id": 35632,
8986
8986
  "isConstant": false,
8987
8987
  "isLValue": false,
8988
8988
  "isPure": true,
@@ -9001,7 +9001,7 @@
9001
9001
  "arguments": [
9002
9002
  {
9003
9003
  "hexValue": "30",
9004
- "id": 35617,
9004
+ "id": 35636,
9005
9005
  "isConstant": false,
9006
9006
  "isLValue": false,
9007
9007
  "isPure": true,
@@ -9023,7 +9023,7 @@
9023
9023
  "typeString": "int_const 0"
9024
9024
  }
9025
9025
  ],
9026
- "id": 35616,
9026
+ "id": 35635,
9027
9027
  "isConstant": false,
9028
9028
  "isLValue": false,
9029
9029
  "isPure": true,
@@ -9036,7 +9036,7 @@
9036
9036
  },
9037
9037
  "typeName": {
9038
9038
  "baseType": {
9039
- "id": 35614,
9039
+ "id": 35633,
9040
9040
  "name": "address",
9041
9041
  "nodeType": "ElementaryTypeName",
9042
9042
  "src": "3513:7:99",
@@ -9046,7 +9046,7 @@
9046
9046
  "typeString": "address"
9047
9047
  }
9048
9048
  },
9049
- "id": 35615,
9049
+ "id": 35634,
9050
9050
  "nodeType": "ArrayTypeName",
9051
9051
  "src": "3513:9:99",
9052
9052
  "typeDescriptions": {
@@ -9055,7 +9055,7 @@
9055
9055
  }
9056
9056
  }
9057
9057
  },
9058
- "id": 35618,
9058
+ "id": 35637,
9059
9059
  "isConstant": false,
9060
9060
  "isLValue": false,
9061
9061
  "isPure": true,
@@ -9073,14 +9073,14 @@
9073
9073
  {
9074
9074
  "arguments": [
9075
9075
  {
9076
- "id": 35621,
9076
+ "id": 35640,
9077
9077
  "name": "superTokenFactory",
9078
9078
  "nodeType": "Identifier",
9079
9079
  "overloadedDeclarations": [],
9080
- "referencedDeclaration": 35503,
9080
+ "referencedDeclaration": 35522,
9081
9081
  "src": "3547:17:99",
9082
9082
  "typeDescriptions": {
9083
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
9083
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
9084
9084
  "typeString": "contract SuperTokenFactory"
9085
9085
  }
9086
9086
  }
@@ -9088,11 +9088,11 @@
9088
9088
  "expression": {
9089
9089
  "argumentTypes": [
9090
9090
  {
9091
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
9091
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
9092
9092
  "typeString": "contract SuperTokenFactory"
9093
9093
  }
9094
9094
  ],
9095
- "id": 35620,
9095
+ "id": 35639,
9096
9096
  "isConstant": false,
9097
9097
  "isLValue": false,
9098
9098
  "isPure": true,
@@ -9104,14 +9104,14 @@
9104
9104
  "typeString": "type(address)"
9105
9105
  },
9106
9106
  "typeName": {
9107
- "id": 35619,
9107
+ "id": 35638,
9108
9108
  "name": "address",
9109
9109
  "nodeType": "ElementaryTypeName",
9110
9110
  "src": "3539:7:99",
9111
9111
  "typeDescriptions": {}
9112
9112
  }
9113
9113
  },
9114
- "id": 35622,
9114
+ "id": 35641,
9115
9115
  "isConstant": false,
9116
9116
  "isLValue": false,
9117
9117
  "isPure": false,
@@ -9130,7 +9130,7 @@
9130
9130
  "expression": {
9131
9131
  "argumentTypes": [
9132
9132
  {
9133
- "typeIdentifier": "t_contract$_Superfluid_$33474",
9133
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
9134
9134
  "typeString": "contract Superfluid"
9135
9135
  },
9136
9136
  {
@@ -9147,18 +9147,18 @@
9147
9147
  }
9148
9148
  ],
9149
9149
  "expression": {
9150
- "id": 35606,
9150
+ "id": 35625,
9151
9151
  "name": "governance",
9152
9152
  "nodeType": "Identifier",
9153
9153
  "overloadedDeclarations": [],
9154
- "referencedDeclaration": 35491,
9154
+ "referencedDeclaration": 35510,
9155
9155
  "src": "3427:10:99",
9156
9156
  "typeDescriptions": {
9157
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
9157
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
9158
9158
  "typeString": "contract TestGovernance"
9159
9159
  }
9160
9160
  },
9161
- "id": 35608,
9161
+ "id": 35627,
9162
9162
  "isConstant": false,
9163
9163
  "isLValue": false,
9164
9164
  "isPure": false,
@@ -9172,7 +9172,7 @@
9172
9172
  "typeString": "function (contract ISuperfluid,address,address[] memory,address) external"
9173
9173
  }
9174
9174
  },
9175
- "id": 35623,
9175
+ "id": 35642,
9176
9176
  "isConstant": false,
9177
9177
  "isLValue": false,
9178
9178
  "isPure": false,
@@ -9187,19 +9187,19 @@
9187
9187
  "typeString": "tuple()"
9188
9188
  }
9189
9189
  },
9190
- "id": 35624,
9190
+ "id": 35643,
9191
9191
  "nodeType": "ExpressionStatement",
9192
9192
  "src": "3427:148:99"
9193
9193
  }
9194
9194
  ]
9195
9195
  },
9196
9196
  "documentation": {
9197
- "id": 35504,
9197
+ "id": 35523,
9198
9198
  "nodeType": "StructuredDocumentation",
9199
9199
  "src": "1478:42:99",
9200
9200
  "text": "@notice Deploys everything... probably"
9201
9201
  },
9202
- "id": 35626,
9202
+ "id": 35645,
9203
9203
  "implemented": true,
9204
9204
  "kind": "constructor",
9205
9205
  "modifiers": [],
@@ -9207,18 +9207,18 @@
9207
9207
  "nameLocation": "-1:-1:-1",
9208
9208
  "nodeType": "FunctionDefinition",
9209
9209
  "parameters": {
9210
- "id": 35505,
9210
+ "id": 35524,
9211
9211
  "nodeType": "ParameterList",
9212
9212
  "parameters": [],
9213
9213
  "src": "1536:2:99"
9214
9214
  },
9215
9215
  "returnParameters": {
9216
- "id": 35506,
9216
+ "id": 35525,
9217
9217
  "nodeType": "ParameterList",
9218
9218
  "parameters": [],
9219
9219
  "src": "1539:0:99"
9220
9220
  },
9221
- "scope": 35743,
9221
+ "scope": 35762,
9222
9222
  "src": "1525:2057:99",
9223
9223
  "stateMutability": "nonpayable",
9224
9224
  "virtual": false,
@@ -9226,26 +9226,26 @@
9226
9226
  },
9227
9227
  {
9228
9228
  "body": {
9229
- "id": 35655,
9229
+ "id": 35674,
9230
9230
  "nodeType": "Block",
9231
9231
  "src": "3724:324:99",
9232
9232
  "statements": [
9233
9233
  {
9234
9234
  "expression": {
9235
- "id": 35651,
9235
+ "id": 35670,
9236
9236
  "isConstant": false,
9237
9237
  "isLValue": false,
9238
9238
  "isPure": false,
9239
9239
  "lValueRequested": false,
9240
9240
  "leftHandSide": {
9241
- "id": 35633,
9241
+ "id": 35652,
9242
9242
  "name": "sf",
9243
9243
  "nodeType": "Identifier",
9244
9244
  "overloadedDeclarations": [],
9245
- "referencedDeclaration": 35631,
9245
+ "referencedDeclaration": 35650,
9246
9246
  "src": "3734:2:99",
9247
9247
  "typeDescriptions": {
9248
- "typeIdentifier": "t_struct$_Framework_$35488_memory_ptr",
9248
+ "typeIdentifier": "t_struct$_Framework_$35507_memory_ptr",
9249
9249
  "typeString": "struct SuperfluidFrameworkDeployer.Framework memory"
9250
9250
  }
9251
9251
  },
@@ -9254,35 +9254,35 @@
9254
9254
  "rightHandSide": {
9255
9255
  "arguments": [
9256
9256
  {
9257
- "id": 35635,
9257
+ "id": 35654,
9258
9258
  "name": "governance",
9259
9259
  "nodeType": "Identifier",
9260
9260
  "overloadedDeclarations": [],
9261
- "referencedDeclaration": 35491,
9261
+ "referencedDeclaration": 35510,
9262
9262
  "src": "3775:10:99",
9263
9263
  "typeDescriptions": {
9264
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
9264
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
9265
9265
  "typeString": "contract TestGovernance"
9266
9266
  }
9267
9267
  },
9268
9268
  {
9269
- "id": 35636,
9269
+ "id": 35655,
9270
9270
  "name": "host",
9271
9271
  "nodeType": "Identifier",
9272
9272
  "overloadedDeclarations": [],
9273
- "referencedDeclaration": 35494,
9273
+ "referencedDeclaration": 35513,
9274
9274
  "src": "3805:4:99",
9275
9275
  "typeDescriptions": {
9276
- "typeIdentifier": "t_contract$_Superfluid_$33474",
9276
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
9277
9277
  "typeString": "contract Superfluid"
9278
9278
  }
9279
9279
  },
9280
9280
  {
9281
- "id": 35637,
9281
+ "id": 35656,
9282
9282
  "name": "cfa",
9283
9283
  "nodeType": "Identifier",
9284
9284
  "overloadedDeclarations": [],
9285
- "referencedDeclaration": 35497,
9285
+ "referencedDeclaration": 35516,
9286
9286
  "src": "3828:3:99",
9287
9287
  "typeDescriptions": {
9288
9288
  "typeIdentifier": "t_contract$_ConstantFlowAgreementV1_$8774",
@@ -9292,23 +9292,23 @@
9292
9292
  {
9293
9293
  "arguments": [
9294
9294
  {
9295
- "id": 35640,
9295
+ "id": 35659,
9296
9296
  "name": "host",
9297
9297
  "nodeType": "Identifier",
9298
9298
  "overloadedDeclarations": [],
9299
- "referencedDeclaration": 35494,
9299
+ "referencedDeclaration": 35513,
9300
9300
  "src": "3875:4:99",
9301
9301
  "typeDescriptions": {
9302
- "typeIdentifier": "t_contract$_Superfluid_$33474",
9302
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
9303
9303
  "typeString": "contract Superfluid"
9304
9304
  }
9305
9305
  },
9306
9306
  {
9307
- "id": 35641,
9307
+ "id": 35660,
9308
9308
  "name": "cfa",
9309
9309
  "nodeType": "Identifier",
9310
9310
  "overloadedDeclarations": [],
9311
- "referencedDeclaration": 35497,
9311
+ "referencedDeclaration": 35516,
9312
9312
  "src": "3881:3:99",
9313
9313
  "typeDescriptions": {
9314
9314
  "typeIdentifier": "t_contract$_ConstantFlowAgreementV1_$8774",
@@ -9319,7 +9319,7 @@
9319
9319
  "expression": {
9320
9320
  "argumentTypes": [
9321
9321
  {
9322
- "typeIdentifier": "t_contract$_Superfluid_$33474",
9322
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
9323
9323
  "typeString": "contract Superfluid"
9324
9324
  },
9325
9325
  {
@@ -9328,7 +9328,7 @@
9328
9328
  }
9329
9329
  ],
9330
9330
  "expression": {
9331
- "id": 35638,
9331
+ "id": 35657,
9332
9332
  "name": "CFAv1Library",
9333
9333
  "nodeType": "Identifier",
9334
9334
  "overloadedDeclarations": [],
@@ -9339,7 +9339,7 @@
9339
9339
  "typeString": "type(library CFAv1Library)"
9340
9340
  }
9341
9341
  },
9342
- "id": 35639,
9342
+ "id": 35658,
9343
9343
  "isConstant": false,
9344
9344
  "isLValue": false,
9345
9345
  "isPure": false,
@@ -9353,7 +9353,7 @@
9353
9353
  "typeString": "type(struct CFAv1Library.InitData storage pointer)"
9354
9354
  }
9355
9355
  },
9356
- "id": 35642,
9356
+ "id": 35661,
9357
9357
  "isConstant": false,
9358
9358
  "isLValue": false,
9359
9359
  "isPure": false,
@@ -9369,11 +9369,11 @@
9369
9369
  }
9370
9370
  },
9371
9371
  {
9372
- "id": 35643,
9372
+ "id": 35662,
9373
9373
  "name": "ida",
9374
9374
  "nodeType": "Identifier",
9375
9375
  "overloadedDeclarations": [],
9376
- "referencedDeclaration": 35500,
9376
+ "referencedDeclaration": 35519,
9377
9377
  "src": "3904:3:99",
9378
9378
  "typeDescriptions": {
9379
9379
  "typeIdentifier": "t_contract$_InstantDistributionAgreementV1_$12168",
@@ -9383,23 +9383,23 @@
9383
9383
  {
9384
9384
  "arguments": [
9385
9385
  {
9386
- "id": 35646,
9386
+ "id": 35665,
9387
9387
  "name": "host",
9388
9388
  "nodeType": "Identifier",
9389
9389
  "overloadedDeclarations": [],
9390
- "referencedDeclaration": 35494,
9390
+ "referencedDeclaration": 35513,
9391
9391
  "src": "3951:4:99",
9392
9392
  "typeDescriptions": {
9393
- "typeIdentifier": "t_contract$_Superfluid_$33474",
9393
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
9394
9394
  "typeString": "contract Superfluid"
9395
9395
  }
9396
9396
  },
9397
9397
  {
9398
- "id": 35647,
9398
+ "id": 35666,
9399
9399
  "name": "ida",
9400
9400
  "nodeType": "Identifier",
9401
9401
  "overloadedDeclarations": [],
9402
- "referencedDeclaration": 35500,
9402
+ "referencedDeclaration": 35519,
9403
9403
  "src": "3957:3:99",
9404
9404
  "typeDescriptions": {
9405
9405
  "typeIdentifier": "t_contract$_InstantDistributionAgreementV1_$12168",
@@ -9410,7 +9410,7 @@
9410
9410
  "expression": {
9411
9411
  "argumentTypes": [
9412
9412
  {
9413
- "typeIdentifier": "t_contract$_Superfluid_$33474",
9413
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
9414
9414
  "typeString": "contract Superfluid"
9415
9415
  },
9416
9416
  {
@@ -9419,7 +9419,7 @@
9419
9419
  }
9420
9420
  ],
9421
9421
  "expression": {
9422
- "id": 35644,
9422
+ "id": 35663,
9423
9423
  "name": "IDAv1Library",
9424
9424
  "nodeType": "Identifier",
9425
9425
  "overloadedDeclarations": [],
@@ -9430,7 +9430,7 @@
9430
9430
  "typeString": "type(library IDAv1Library)"
9431
9431
  }
9432
9432
  },
9433
- "id": 35645,
9433
+ "id": 35664,
9434
9434
  "isConstant": false,
9435
9435
  "isLValue": false,
9436
9436
  "isPure": false,
@@ -9444,7 +9444,7 @@
9444
9444
  "typeString": "type(struct IDAv1Library.InitData storage pointer)"
9445
9445
  }
9446
9446
  },
9447
- "id": 35648,
9447
+ "id": 35667,
9448
9448
  "isConstant": false,
9449
9449
  "isLValue": false,
9450
9450
  "isPure": false,
@@ -9460,14 +9460,14 @@
9460
9460
  }
9461
9461
  },
9462
9462
  {
9463
- "id": 35649,
9463
+ "id": 35668,
9464
9464
  "name": "superTokenFactory",
9465
9465
  "nodeType": "Identifier",
9466
9466
  "overloadedDeclarations": [],
9467
- "referencedDeclaration": 35503,
9467
+ "referencedDeclaration": 35522,
9468
9468
  "src": "3994:17:99",
9469
9469
  "typeDescriptions": {
9470
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
9470
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
9471
9471
  "typeString": "contract SuperTokenFactory"
9472
9472
  }
9473
9473
  }
@@ -9475,11 +9475,11 @@
9475
9475
  "expression": {
9476
9476
  "argumentTypes": [
9477
9477
  {
9478
- "typeIdentifier": "t_contract$_TestGovernance_$36827",
9478
+ "typeIdentifier": "t_contract$_TestGovernance_$36846",
9479
9479
  "typeString": "contract TestGovernance"
9480
9480
  },
9481
9481
  {
9482
- "typeIdentifier": "t_contract$_Superfluid_$33474",
9482
+ "typeIdentifier": "t_contract$_Superfluid_$33493",
9483
9483
  "typeString": "contract Superfluid"
9484
9484
  },
9485
9485
  {
@@ -9499,22 +9499,22 @@
9499
9499
  "typeString": "struct IDAv1Library.InitData memory"
9500
9500
  },
9501
9501
  {
9502
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
9502
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
9503
9503
  "typeString": "contract SuperTokenFactory"
9504
9504
  }
9505
9505
  ],
9506
- "id": 35634,
9506
+ "id": 35653,
9507
9507
  "name": "Framework",
9508
9508
  "nodeType": "Identifier",
9509
9509
  "overloadedDeclarations": [],
9510
- "referencedDeclaration": 35488,
9510
+ "referencedDeclaration": 35507,
9511
9511
  "src": "3739:9:99",
9512
9512
  "typeDescriptions": {
9513
- "typeIdentifier": "t_type$_t_struct$_Framework_$35488_storage_ptr_$",
9513
+ "typeIdentifier": "t_type$_t_struct$_Framework_$35507_storage_ptr_$",
9514
9514
  "typeString": "type(struct SuperfluidFrameworkDeployer.Framework storage pointer)"
9515
9515
  }
9516
9516
  },
9517
- "id": 35650,
9517
+ "id": 35669,
9518
9518
  "isConstant": false,
9519
9519
  "isLValue": false,
9520
9520
  "isPure": false,
@@ -9533,48 +9533,48 @@
9533
9533
  "src": "3739:283:99",
9534
9534
  "tryCall": false,
9535
9535
  "typeDescriptions": {
9536
- "typeIdentifier": "t_struct$_Framework_$35488_memory_ptr",
9536
+ "typeIdentifier": "t_struct$_Framework_$35507_memory_ptr",
9537
9537
  "typeString": "struct SuperfluidFrameworkDeployer.Framework memory"
9538
9538
  }
9539
9539
  },
9540
9540
  "src": "3734:288:99",
9541
9541
  "typeDescriptions": {
9542
- "typeIdentifier": "t_struct$_Framework_$35488_memory_ptr",
9542
+ "typeIdentifier": "t_struct$_Framework_$35507_memory_ptr",
9543
9543
  "typeString": "struct SuperfluidFrameworkDeployer.Framework memory"
9544
9544
  }
9545
9545
  },
9546
- "id": 35652,
9546
+ "id": 35671,
9547
9547
  "nodeType": "ExpressionStatement",
9548
9548
  "src": "3734:288:99"
9549
9549
  },
9550
9550
  {
9551
9551
  "expression": {
9552
- "id": 35653,
9552
+ "id": 35672,
9553
9553
  "name": "sf",
9554
9554
  "nodeType": "Identifier",
9555
9555
  "overloadedDeclarations": [],
9556
- "referencedDeclaration": 35631,
9556
+ "referencedDeclaration": 35650,
9557
9557
  "src": "4039:2:99",
9558
9558
  "typeDescriptions": {
9559
- "typeIdentifier": "t_struct$_Framework_$35488_memory_ptr",
9559
+ "typeIdentifier": "t_struct$_Framework_$35507_memory_ptr",
9560
9560
  "typeString": "struct SuperfluidFrameworkDeployer.Framework memory"
9561
9561
  }
9562
9562
  },
9563
- "functionReturnParameters": 35632,
9564
- "id": 35654,
9563
+ "functionReturnParameters": 35651,
9564
+ "id": 35673,
9565
9565
  "nodeType": "Return",
9566
9566
  "src": "4032:9:99"
9567
9567
  }
9568
9568
  ]
9569
9569
  },
9570
9570
  "documentation": {
9571
- "id": 35627,
9571
+ "id": 35646,
9572
9572
  "nodeType": "StructuredDocumentation",
9573
9573
  "src": "3588:43:99",
9574
9574
  "text": "@notice Fetches the framework contracts"
9575
9575
  },
9576
9576
  "functionSelector": "dfa98ad5",
9577
- "id": 35656,
9577
+ "id": 35675,
9578
9578
  "implemented": true,
9579
9579
  "kind": "function",
9580
9580
  "modifiers": [],
@@ -9582,44 +9582,44 @@
9582
9582
  "nameLocation": "3645:12:99",
9583
9583
  "nodeType": "FunctionDefinition",
9584
9584
  "parameters": {
9585
- "id": 35628,
9585
+ "id": 35647,
9586
9586
  "nodeType": "ParameterList",
9587
9587
  "parameters": [],
9588
9588
  "src": "3657:2:99"
9589
9589
  },
9590
9590
  "returnParameters": {
9591
- "id": 35632,
9591
+ "id": 35651,
9592
9592
  "nodeType": "ParameterList",
9593
9593
  "parameters": [
9594
9594
  {
9595
9595
  "constant": false,
9596
- "id": 35631,
9596
+ "id": 35650,
9597
9597
  "mutability": "mutable",
9598
9598
  "name": "sf",
9599
9599
  "nameLocation": "3716:2:99",
9600
9600
  "nodeType": "VariableDeclaration",
9601
- "scope": 35656,
9601
+ "scope": 35675,
9602
9602
  "src": "3699:19:99",
9603
9603
  "stateVariable": false,
9604
9604
  "storageLocation": "memory",
9605
9605
  "typeDescriptions": {
9606
- "typeIdentifier": "t_struct$_Framework_$35488_memory_ptr",
9606
+ "typeIdentifier": "t_struct$_Framework_$35507_memory_ptr",
9607
9607
  "typeString": "struct SuperfluidFrameworkDeployer.Framework"
9608
9608
  },
9609
9609
  "typeName": {
9610
- "id": 35630,
9610
+ "id": 35649,
9611
9611
  "nodeType": "UserDefinedTypeName",
9612
9612
  "pathNode": {
9613
- "id": 35629,
9613
+ "id": 35648,
9614
9614
  "name": "Framework",
9615
9615
  "nodeType": "IdentifierPath",
9616
- "referencedDeclaration": 35488,
9616
+ "referencedDeclaration": 35507,
9617
9617
  "src": "3699:9:99"
9618
9618
  },
9619
- "referencedDeclaration": 35488,
9619
+ "referencedDeclaration": 35507,
9620
9620
  "src": "3699:9:99",
9621
9621
  "typeDescriptions": {
9622
- "typeIdentifier": "t_struct$_Framework_$35488_storage_ptr",
9622
+ "typeIdentifier": "t_struct$_Framework_$35507_storage_ptr",
9623
9623
  "typeString": "struct SuperfluidFrameworkDeployer.Framework"
9624
9624
  }
9625
9625
  },
@@ -9628,7 +9628,7 @@
9628
9628
  ],
9629
9629
  "src": "3698:21:99"
9630
9630
  },
9631
- "scope": 35743,
9631
+ "scope": 35762,
9632
9632
  "src": "3636:412:99",
9633
9633
  "stateMutability": "view",
9634
9634
  "virtual": false,
@@ -9636,23 +9636,23 @@
9636
9636
  },
9637
9637
  {
9638
9638
  "body": {
9639
- "id": 35741,
9639
+ "id": 35760,
9640
9640
  "nodeType": "Block",
9641
9641
  "src": "4306:539:99",
9642
9642
  "statements": [
9643
9643
  {
9644
9644
  "expression": {
9645
- "id": 35677,
9645
+ "id": 35696,
9646
9646
  "isConstant": false,
9647
9647
  "isLValue": false,
9648
9648
  "isPure": false,
9649
9649
  "lValueRequested": false,
9650
9650
  "leftHandSide": {
9651
- "id": 35670,
9651
+ "id": 35689,
9652
9652
  "name": "token",
9653
9653
  "nodeType": "Identifier",
9654
9654
  "overloadedDeclarations": [],
9655
- "referencedDeclaration": 35665,
9655
+ "referencedDeclaration": 35684,
9656
9656
  "src": "4316:5:99",
9657
9657
  "typeDescriptions": {
9658
9658
  "typeIdentifier": "t_contract$_ERC20PresetMinterPauser_$1762",
@@ -9664,11 +9664,11 @@
9664
9664
  "rightHandSide": {
9665
9665
  "arguments": [
9666
9666
  {
9667
- "id": 35674,
9667
+ "id": 35693,
9668
9668
  "name": "name",
9669
9669
  "nodeType": "Identifier",
9670
9670
  "overloadedDeclarations": [],
9671
- "referencedDeclaration": 35659,
9671
+ "referencedDeclaration": 35678,
9672
9672
  "src": "4352:4:99",
9673
9673
  "typeDescriptions": {
9674
9674
  "typeIdentifier": "t_string_calldata_ptr",
@@ -9676,11 +9676,11 @@
9676
9676
  }
9677
9677
  },
9678
9678
  {
9679
- "id": 35675,
9679
+ "id": 35694,
9680
9680
  "name": "symbol",
9681
9681
  "nodeType": "Identifier",
9682
9682
  "overloadedDeclarations": [],
9683
- "referencedDeclaration": 35661,
9683
+ "referencedDeclaration": 35680,
9684
9684
  "src": "4358:6:99",
9685
9685
  "typeDescriptions": {
9686
9686
  "typeIdentifier": "t_string_calldata_ptr",
@@ -9699,7 +9699,7 @@
9699
9699
  "typeString": "string calldata"
9700
9700
  }
9701
9701
  ],
9702
- "id": 35673,
9702
+ "id": 35692,
9703
9703
  "isConstant": false,
9704
9704
  "isLValue": false,
9705
9705
  "isPure": false,
@@ -9711,10 +9711,10 @@
9711
9711
  "typeString": "function (string memory,string memory) returns (contract ERC20PresetMinterPauser)"
9712
9712
  },
9713
9713
  "typeName": {
9714
- "id": 35672,
9714
+ "id": 35691,
9715
9715
  "nodeType": "UserDefinedTypeName",
9716
9716
  "pathNode": {
9717
- "id": 35671,
9717
+ "id": 35690,
9718
9718
  "name": "ERC20PresetMinterPauser",
9719
9719
  "nodeType": "IdentifierPath",
9720
9720
  "referencedDeclaration": 1762,
@@ -9728,7 +9728,7 @@
9728
9728
  }
9729
9729
  }
9730
9730
  },
9731
- "id": 35676,
9731
+ "id": 35695,
9732
9732
  "isConstant": false,
9733
9733
  "isLValue": false,
9734
9734
  "isPure": false,
@@ -9749,7 +9749,7 @@
9749
9749
  "typeString": "contract ERC20PresetMinterPauser"
9750
9750
  }
9751
9751
  },
9752
- "id": 35678,
9752
+ "id": 35697,
9753
9753
  "nodeType": "ExpressionStatement",
9754
9754
  "src": "4316:49:99"
9755
9755
  },
@@ -9761,18 +9761,18 @@
9761
9761
  "expression": {
9762
9762
  "argumentTypes": [],
9763
9763
  "expression": {
9764
- "id": 35682,
9764
+ "id": 35701,
9765
9765
  "name": "token",
9766
9766
  "nodeType": "Identifier",
9767
9767
  "overloadedDeclarations": [],
9768
- "referencedDeclaration": 35665,
9768
+ "referencedDeclaration": 35684,
9769
9769
  "src": "4391:5:99",
9770
9770
  "typeDescriptions": {
9771
9771
  "typeIdentifier": "t_contract$_ERC20PresetMinterPauser_$1762",
9772
9772
  "typeString": "contract ERC20PresetMinterPauser"
9773
9773
  }
9774
9774
  },
9775
- "id": 35683,
9775
+ "id": 35702,
9776
9776
  "isConstant": false,
9777
9777
  "isLValue": false,
9778
9778
  "isPure": false,
@@ -9786,7 +9786,7 @@
9786
9786
  "typeString": "function () view external returns (bytes32)"
9787
9787
  }
9788
9788
  },
9789
- "id": 35684,
9789
+ "id": 35703,
9790
9790
  "isConstant": false,
9791
9791
  "isLValue": false,
9792
9792
  "isPure": false,
@@ -9803,7 +9803,7 @@
9803
9803
  },
9804
9804
  {
9805
9805
  "expression": {
9806
- "id": 35685,
9806
+ "id": 35704,
9807
9807
  "name": "msg",
9808
9808
  "nodeType": "Identifier",
9809
9809
  "overloadedDeclarations": [],
@@ -9814,7 +9814,7 @@
9814
9814
  "typeString": "msg"
9815
9815
  }
9816
9816
  },
9817
- "id": 35686,
9817
+ "id": 35705,
9818
9818
  "isConstant": false,
9819
9819
  "isLValue": false,
9820
9820
  "isPure": false,
@@ -9840,18 +9840,18 @@
9840
9840
  }
9841
9841
  ],
9842
9842
  "expression": {
9843
- "id": 35679,
9843
+ "id": 35698,
9844
9844
  "name": "token",
9845
9845
  "nodeType": "Identifier",
9846
9846
  "overloadedDeclarations": [],
9847
- "referencedDeclaration": 35665,
9847
+ "referencedDeclaration": 35684,
9848
9848
  "src": "4375:5:99",
9849
9849
  "typeDescriptions": {
9850
9850
  "typeIdentifier": "t_contract$_ERC20PresetMinterPauser_$1762",
9851
9851
  "typeString": "contract ERC20PresetMinterPauser"
9852
9852
  }
9853
9853
  },
9854
- "id": 35681,
9854
+ "id": 35700,
9855
9855
  "isConstant": false,
9856
9856
  "isLValue": false,
9857
9857
  "isPure": false,
@@ -9865,7 +9865,7 @@
9865
9865
  "typeString": "function (bytes32,address) external"
9866
9866
  }
9867
9867
  },
9868
- "id": 35687,
9868
+ "id": 35706,
9869
9869
  "isConstant": false,
9870
9870
  "isLValue": false,
9871
9871
  "isPure": false,
@@ -9880,7 +9880,7 @@
9880
9880
  "typeString": "tuple()"
9881
9881
  }
9882
9882
  },
9883
- "id": 35688,
9883
+ "id": 35707,
9884
9884
  "nodeType": "ExpressionStatement",
9885
9885
  "src": "4375:55:99"
9886
9886
  },
@@ -9892,18 +9892,18 @@
9892
9892
  "expression": {
9893
9893
  "argumentTypes": [],
9894
9894
  "expression": {
9895
- "id": 35692,
9895
+ "id": 35711,
9896
9896
  "name": "token",
9897
9897
  "nodeType": "Identifier",
9898
9898
  "overloadedDeclarations": [],
9899
- "referencedDeclaration": 35665,
9899
+ "referencedDeclaration": 35684,
9900
9900
  "src": "4456:5:99",
9901
9901
  "typeDescriptions": {
9902
9902
  "typeIdentifier": "t_contract$_ERC20PresetMinterPauser_$1762",
9903
9903
  "typeString": "contract ERC20PresetMinterPauser"
9904
9904
  }
9905
9905
  },
9906
- "id": 35693,
9906
+ "id": 35712,
9907
9907
  "isConstant": false,
9908
9908
  "isLValue": false,
9909
9909
  "isPure": false,
@@ -9917,7 +9917,7 @@
9917
9917
  "typeString": "function () view external returns (bytes32)"
9918
9918
  }
9919
9919
  },
9920
- "id": 35694,
9920
+ "id": 35713,
9921
9921
  "isConstant": false,
9922
9922
  "isLValue": false,
9923
9923
  "isPure": false,
@@ -9934,7 +9934,7 @@
9934
9934
  },
9935
9935
  {
9936
9936
  "expression": {
9937
- "id": 35695,
9937
+ "id": 35714,
9938
9938
  "name": "msg",
9939
9939
  "nodeType": "Identifier",
9940
9940
  "overloadedDeclarations": [],
@@ -9945,7 +9945,7 @@
9945
9945
  "typeString": "msg"
9946
9946
  }
9947
9947
  },
9948
- "id": 35696,
9948
+ "id": 35715,
9949
9949
  "isConstant": false,
9950
9950
  "isLValue": false,
9951
9951
  "isPure": false,
@@ -9971,18 +9971,18 @@
9971
9971
  }
9972
9972
  ],
9973
9973
  "expression": {
9974
- "id": 35689,
9974
+ "id": 35708,
9975
9975
  "name": "token",
9976
9976
  "nodeType": "Identifier",
9977
9977
  "overloadedDeclarations": [],
9978
- "referencedDeclaration": 35665,
9978
+ "referencedDeclaration": 35684,
9979
9979
  "src": "4440:5:99",
9980
9980
  "typeDescriptions": {
9981
9981
  "typeIdentifier": "t_contract$_ERC20PresetMinterPauser_$1762",
9982
9982
  "typeString": "contract ERC20PresetMinterPauser"
9983
9983
  }
9984
9984
  },
9985
- "id": 35691,
9985
+ "id": 35710,
9986
9986
  "isConstant": false,
9987
9987
  "isLValue": false,
9988
9988
  "isPure": false,
@@ -9996,7 +9996,7 @@
9996
9996
  "typeString": "function (bytes32,address) external"
9997
9997
  }
9998
9998
  },
9999
- "id": 35697,
9999
+ "id": 35716,
10000
10000
  "isConstant": false,
10001
10001
  "isLValue": false,
10002
10002
  "isPure": false,
@@ -10011,7 +10011,7 @@
10011
10011
  "typeString": "tuple()"
10012
10012
  }
10013
10013
  },
10014
- "id": 35698,
10014
+ "id": 35717,
10015
10015
  "nodeType": "ExpressionStatement",
10016
10016
  "src": "4440:48:99"
10017
10017
  },
@@ -10023,18 +10023,18 @@
10023
10023
  "expression": {
10024
10024
  "argumentTypes": [],
10025
10025
  "expression": {
10026
- "id": 35702,
10026
+ "id": 35721,
10027
10027
  "name": "token",
10028
10028
  "nodeType": "Identifier",
10029
10029
  "overloadedDeclarations": [],
10030
- "referencedDeclaration": 35665,
10030
+ "referencedDeclaration": 35684,
10031
10031
  "src": "4514:5:99",
10032
10032
  "typeDescriptions": {
10033
10033
  "typeIdentifier": "t_contract$_ERC20PresetMinterPauser_$1762",
10034
10034
  "typeString": "contract ERC20PresetMinterPauser"
10035
10035
  }
10036
10036
  },
10037
- "id": 35703,
10037
+ "id": 35722,
10038
10038
  "isConstant": false,
10039
10039
  "isLValue": false,
10040
10040
  "isPure": false,
@@ -10048,7 +10048,7 @@
10048
10048
  "typeString": "function () view external returns (bytes32)"
10049
10049
  }
10050
10050
  },
10051
- "id": 35704,
10051
+ "id": 35723,
10052
10052
  "isConstant": false,
10053
10053
  "isLValue": false,
10054
10054
  "isPure": false,
@@ -10065,7 +10065,7 @@
10065
10065
  },
10066
10066
  {
10067
10067
  "expression": {
10068
- "id": 35705,
10068
+ "id": 35724,
10069
10069
  "name": "msg",
10070
10070
  "nodeType": "Identifier",
10071
10071
  "overloadedDeclarations": [],
@@ -10076,7 +10076,7 @@
10076
10076
  "typeString": "msg"
10077
10077
  }
10078
10078
  },
10079
- "id": 35706,
10079
+ "id": 35725,
10080
10080
  "isConstant": false,
10081
10081
  "isLValue": false,
10082
10082
  "isPure": false,
@@ -10102,18 +10102,18 @@
10102
10102
  }
10103
10103
  ],
10104
10104
  "expression": {
10105
- "id": 35699,
10105
+ "id": 35718,
10106
10106
  "name": "token",
10107
10107
  "nodeType": "Identifier",
10108
10108
  "overloadedDeclarations": [],
10109
- "referencedDeclaration": 35665,
10109
+ "referencedDeclaration": 35684,
10110
10110
  "src": "4498:5:99",
10111
10111
  "typeDescriptions": {
10112
10112
  "typeIdentifier": "t_contract$_ERC20PresetMinterPauser_$1762",
10113
10113
  "typeString": "contract ERC20PresetMinterPauser"
10114
10114
  }
10115
10115
  },
10116
- "id": 35701,
10116
+ "id": 35720,
10117
10117
  "isConstant": false,
10118
10118
  "isLValue": false,
10119
10119
  "isPure": false,
@@ -10127,7 +10127,7 @@
10127
10127
  "typeString": "function (bytes32,address) external"
10128
10128
  }
10129
10129
  },
10130
- "id": 35707,
10130
+ "id": 35726,
10131
10131
  "isConstant": false,
10132
10132
  "isLValue": false,
10133
10133
  "isPure": false,
@@ -10142,26 +10142,26 @@
10142
10142
  "typeString": "tuple()"
10143
10143
  }
10144
10144
  },
10145
- "id": 35708,
10145
+ "id": 35727,
10146
10146
  "nodeType": "ExpressionStatement",
10147
10147
  "src": "4498:48:99"
10148
10148
  },
10149
10149
  {
10150
10150
  "expression": {
10151
- "id": 35739,
10151
+ "id": 35758,
10152
10152
  "isConstant": false,
10153
10153
  "isLValue": false,
10154
10154
  "isPure": false,
10155
10155
  "lValueRequested": false,
10156
10156
  "leftHandSide": {
10157
- "id": 35709,
10157
+ "id": 35728,
10158
10158
  "name": "superToken",
10159
10159
  "nodeType": "Identifier",
10160
10160
  "overloadedDeclarations": [],
10161
- "referencedDeclaration": 35668,
10161
+ "referencedDeclaration": 35687,
10162
10162
  "src": "4557:10:99",
10163
10163
  "typeDescriptions": {
10164
- "typeIdentifier": "t_contract$_SuperToken_$30169",
10164
+ "typeIdentifier": "t_contract$_SuperToken_$30191",
10165
10165
  "typeString": "contract SuperToken"
10166
10166
  }
10167
10167
  },
@@ -10178,11 +10178,11 @@
10178
10178
  {
10179
10179
  "arguments": [
10180
10180
  {
10181
- "id": 35718,
10181
+ "id": 35737,
10182
10182
  "name": "token",
10183
10183
  "nodeType": "Identifier",
10184
10184
  "overloadedDeclarations": [],
10185
- "referencedDeclaration": 35665,
10185
+ "referencedDeclaration": 35684,
10186
10186
  "src": "4679:5:99",
10187
10187
  "typeDescriptions": {
10188
10188
  "typeIdentifier": "t_contract$_ERC20PresetMinterPauser_$1762",
@@ -10197,7 +10197,7 @@
10197
10197
  "typeString": "contract ERC20PresetMinterPauser"
10198
10198
  }
10199
10199
  ],
10200
- "id": 35717,
10200
+ "id": 35736,
10201
10201
  "isConstant": false,
10202
10202
  "isLValue": false,
10203
10203
  "isPure": true,
@@ -10209,14 +10209,14 @@
10209
10209
  "typeString": "type(address)"
10210
10210
  },
10211
10211
  "typeName": {
10212
- "id": 35716,
10212
+ "id": 35735,
10213
10213
  "name": "address",
10214
10214
  "nodeType": "ElementaryTypeName",
10215
10215
  "src": "4671:7:99",
10216
10216
  "typeDescriptions": {}
10217
10217
  }
10218
10218
  },
10219
- "id": 35719,
10219
+ "id": 35738,
10220
10220
  "isConstant": false,
10221
10221
  "isLValue": false,
10222
10222
  "isPure": false,
@@ -10239,7 +10239,7 @@
10239
10239
  "typeString": "address"
10240
10240
  }
10241
10241
  ],
10242
- "id": 35715,
10242
+ "id": 35734,
10243
10243
  "name": "ERC20WithTokenInfo",
10244
10244
  "nodeType": "Identifier",
10245
10245
  "overloadedDeclarations": [],
@@ -10250,7 +10250,7 @@
10250
10250
  "typeString": "type(contract ERC20WithTokenInfo)"
10251
10251
  }
10252
10252
  },
10253
- "id": 35720,
10253
+ "id": 35739,
10254
10254
  "isConstant": false,
10255
10255
  "isLValue": false,
10256
10256
  "isPure": false,
@@ -10268,7 +10268,7 @@
10268
10268
  {
10269
10269
  "expression": {
10270
10270
  "expression": {
10271
- "id": 35721,
10271
+ "id": 35740,
10272
10272
  "name": "ISuperTokenFactory",
10273
10273
  "nodeType": "Identifier",
10274
10274
  "overloadedDeclarations": [],
@@ -10279,7 +10279,7 @@
10279
10279
  "typeString": "type(contract ISuperTokenFactory)"
10280
10280
  }
10281
10281
  },
10282
- "id": 35722,
10282
+ "id": 35741,
10283
10283
  "isConstant": false,
10284
10284
  "isLValue": false,
10285
10285
  "isPure": false,
@@ -10293,7 +10293,7 @@
10293
10293
  "typeString": "type(enum ISuperTokenFactory.Upgradability)"
10294
10294
  }
10295
10295
  },
10296
- "id": 35723,
10296
+ "id": 35742,
10297
10297
  "isConstant": false,
10298
10298
  "isLValue": false,
10299
10299
  "isPure": true,
@@ -10310,11 +10310,11 @@
10310
10310
  {
10311
10311
  "arguments": [
10312
10312
  {
10313
- "id": 35727,
10313
+ "id": 35746,
10314
10314
  "name": "name",
10315
10315
  "nodeType": "Identifier",
10316
10316
  "overloadedDeclarations": [],
10317
- "referencedDeclaration": 35659,
10317
+ "referencedDeclaration": 35678,
10318
10318
  "src": "4776:4:99",
10319
10319
  "typeDescriptions": {
10320
10320
  "typeIdentifier": "t_string_calldata_ptr",
@@ -10323,7 +10323,7 @@
10323
10323
  },
10324
10324
  {
10325
10325
  "hexValue": "78",
10326
- "id": 35728,
10326
+ "id": 35747,
10327
10327
  "isConstant": false,
10328
10328
  "isLValue": false,
10329
10329
  "isPure": true,
@@ -10350,7 +10350,7 @@
10350
10350
  }
10351
10351
  ],
10352
10352
  "expression": {
10353
- "id": 35725,
10353
+ "id": 35744,
10354
10354
  "isConstant": false,
10355
10355
  "isLValue": false,
10356
10356
  "isPure": true,
@@ -10362,14 +10362,14 @@
10362
10362
  "typeString": "type(string storage pointer)"
10363
10363
  },
10364
10364
  "typeName": {
10365
- "id": 35724,
10365
+ "id": 35743,
10366
10366
  "name": "string",
10367
10367
  "nodeType": "ElementaryTypeName",
10368
10368
  "src": "4762:6:99",
10369
10369
  "typeDescriptions": {}
10370
10370
  }
10371
10371
  },
10372
- "id": 35726,
10372
+ "id": 35745,
10373
10373
  "isConstant": false,
10374
10374
  "isLValue": false,
10375
10375
  "isPure": false,
@@ -10382,7 +10382,7 @@
10382
10382
  "typeString": "function () pure returns (string memory)"
10383
10383
  }
10384
10384
  },
10385
- "id": 35729,
10385
+ "id": 35748,
10386
10386
  "isConstant": false,
10387
10387
  "isLValue": false,
10388
10388
  "isPure": false,
@@ -10400,11 +10400,11 @@
10400
10400
  {
10401
10401
  "arguments": [
10402
10402
  {
10403
- "id": 35733,
10403
+ "id": 35752,
10404
10404
  "name": "symbol",
10405
10405
  "nodeType": "Identifier",
10406
10406
  "overloadedDeclarations": [],
10407
- "referencedDeclaration": 35661,
10407
+ "referencedDeclaration": 35680,
10408
10408
  "src": "4814:6:99",
10409
10409
  "typeDescriptions": {
10410
10410
  "typeIdentifier": "t_string_calldata_ptr",
@@ -10413,7 +10413,7 @@
10413
10413
  },
10414
10414
  {
10415
10415
  "hexValue": "78",
10416
- "id": 35734,
10416
+ "id": 35753,
10417
10417
  "isConstant": false,
10418
10418
  "isLValue": false,
10419
10419
  "isPure": true,
@@ -10440,7 +10440,7 @@
10440
10440
  }
10441
10441
  ],
10442
10442
  "expression": {
10443
- "id": 35731,
10443
+ "id": 35750,
10444
10444
  "isConstant": false,
10445
10445
  "isLValue": false,
10446
10446
  "isPure": true,
@@ -10452,14 +10452,14 @@
10452
10452
  "typeString": "type(string storage pointer)"
10453
10453
  },
10454
10454
  "typeName": {
10455
- "id": 35730,
10455
+ "id": 35749,
10456
10456
  "name": "string",
10457
10457
  "nodeType": "ElementaryTypeName",
10458
10458
  "src": "4800:6:99",
10459
10459
  "typeDescriptions": {}
10460
10460
  }
10461
10461
  },
10462
- "id": 35732,
10462
+ "id": 35751,
10463
10463
  "isConstant": false,
10464
10464
  "isLValue": false,
10465
10465
  "isPure": false,
@@ -10472,7 +10472,7 @@
10472
10472
  "typeString": "function () pure returns (string memory)"
10473
10473
  }
10474
10474
  },
10475
- "id": 35735,
10475
+ "id": 35754,
10476
10476
  "isConstant": false,
10477
10477
  "isLValue": false,
10478
10478
  "isPure": false,
@@ -10508,32 +10508,32 @@
10508
10508
  }
10509
10509
  ],
10510
10510
  "expression": {
10511
- "id": 35713,
10511
+ "id": 35732,
10512
10512
  "name": "superTokenFactory",
10513
10513
  "nodeType": "Identifier",
10514
10514
  "overloadedDeclarations": [],
10515
- "referencedDeclaration": 35503,
10515
+ "referencedDeclaration": 35522,
10516
10516
  "src": "4602:17:99",
10517
10517
  "typeDescriptions": {
10518
- "typeIdentifier": "t_contract$_SuperTokenFactory_$30544",
10518
+ "typeIdentifier": "t_contract$_SuperTokenFactory_$30566",
10519
10519
  "typeString": "contract SuperTokenFactory"
10520
10520
  }
10521
10521
  },
10522
- "id": 35714,
10522
+ "id": 35733,
10523
10523
  "isConstant": false,
10524
10524
  "isLValue": false,
10525
10525
  "isPure": false,
10526
10526
  "lValueRequested": false,
10527
10527
  "memberName": "createERC20Wrapper",
10528
10528
  "nodeType": "MemberAccess",
10529
- "referencedDeclaration": 30450,
10529
+ "referencedDeclaration": 30472,
10530
10530
  "src": "4602:36:99",
10531
10531
  "typeDescriptions": {
10532
10532
  "typeIdentifier": "t_function_external_nonpayable$_t_contract$_ERC20WithTokenInfo_$18733_$_t_enum$_Upgradability_$17790_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_contract$_ISuperToken_$17761_$",
10533
10533
  "typeString": "function (contract ERC20WithTokenInfo,enum ISuperTokenFactory.Upgradability,string memory,string memory) external returns (contract ISuperToken)"
10534
10534
  }
10535
10535
  },
10536
- "id": 35736,
10536
+ "id": 35755,
10537
10537
  "isConstant": false,
10538
10538
  "isLValue": false,
10539
10539
  "isPure": false,
@@ -10556,7 +10556,7 @@
10556
10556
  "typeString": "contract ISuperToken"
10557
10557
  }
10558
10558
  ],
10559
- "id": 35712,
10559
+ "id": 35731,
10560
10560
  "isConstant": false,
10561
10561
  "isLValue": false,
10562
10562
  "isPure": true,
@@ -10568,14 +10568,14 @@
10568
10568
  "typeString": "type(address)"
10569
10569
  },
10570
10570
  "typeName": {
10571
- "id": 35711,
10571
+ "id": 35730,
10572
10572
  "name": "address",
10573
10573
  "nodeType": "ElementaryTypeName",
10574
10574
  "src": "4581:7:99",
10575
10575
  "typeDescriptions": {}
10576
10576
  }
10577
10577
  },
10578
- "id": 35737,
10578
+ "id": 35756,
10579
10579
  "isConstant": false,
10580
10580
  "isLValue": false,
10581
10581
  "isPure": false,
@@ -10598,18 +10598,18 @@
10598
10598
  "typeString": "address"
10599
10599
  }
10600
10600
  ],
10601
- "id": 35710,
10601
+ "id": 35729,
10602
10602
  "name": "SuperToken",
10603
10603
  "nodeType": "Identifier",
10604
10604
  "overloadedDeclarations": [],
10605
- "referencedDeclaration": 30169,
10605
+ "referencedDeclaration": 30191,
10606
10606
  "src": "4570:10:99",
10607
10607
  "typeDescriptions": {
10608
- "typeIdentifier": "t_type$_t_contract$_SuperToken_$30169_$",
10608
+ "typeIdentifier": "t_type$_t_contract$_SuperToken_$30191_$",
10609
10609
  "typeString": "type(contract SuperToken)"
10610
10610
  }
10611
10611
  },
10612
- "id": 35738,
10612
+ "id": 35757,
10613
10613
  "isConstant": false,
10614
10614
  "isLValue": false,
10615
10615
  "isPure": false,
@@ -10620,30 +10620,30 @@
10620
10620
  "src": "4570:268:99",
10621
10621
  "tryCall": false,
10622
10622
  "typeDescriptions": {
10623
- "typeIdentifier": "t_contract$_SuperToken_$30169",
10623
+ "typeIdentifier": "t_contract$_SuperToken_$30191",
10624
10624
  "typeString": "contract SuperToken"
10625
10625
  }
10626
10626
  },
10627
10627
  "src": "4557:281:99",
10628
10628
  "typeDescriptions": {
10629
- "typeIdentifier": "t_contract$_SuperToken_$30169",
10629
+ "typeIdentifier": "t_contract$_SuperToken_$30191",
10630
10630
  "typeString": "contract SuperToken"
10631
10631
  }
10632
10632
  },
10633
- "id": 35740,
10633
+ "id": 35759,
10634
10634
  "nodeType": "ExpressionStatement",
10635
10635
  "src": "4557:281:99"
10636
10636
  }
10637
10637
  ]
10638
10638
  },
10639
10639
  "documentation": {
10640
- "id": 35657,
10640
+ "id": 35676,
10641
10641
  "nodeType": "StructuredDocumentation",
10642
10642
  "src": "4054:42:99",
10643
10643
  "text": "@notice Deploy new wrapper super token"
10644
10644
  },
10645
10645
  "functionSelector": "845531a4",
10646
- "id": 35742,
10646
+ "id": 35761,
10647
10647
  "implemented": true,
10648
10648
  "kind": "function",
10649
10649
  "modifiers": [],
@@ -10651,17 +10651,17 @@
10651
10651
  "nameLocation": "4110:23:99",
10652
10652
  "nodeType": "FunctionDefinition",
10653
10653
  "parameters": {
10654
- "id": 35662,
10654
+ "id": 35681,
10655
10655
  "nodeType": "ParameterList",
10656
10656
  "parameters": [
10657
10657
  {
10658
10658
  "constant": false,
10659
- "id": 35659,
10659
+ "id": 35678,
10660
10660
  "mutability": "mutable",
10661
10661
  "name": "name",
10662
10662
  "nameLocation": "4150:4:99",
10663
10663
  "nodeType": "VariableDeclaration",
10664
- "scope": 35742,
10664
+ "scope": 35761,
10665
10665
  "src": "4134:20:99",
10666
10666
  "stateVariable": false,
10667
10667
  "storageLocation": "calldata",
@@ -10670,7 +10670,7 @@
10670
10670
  "typeString": "string"
10671
10671
  },
10672
10672
  "typeName": {
10673
- "id": 35658,
10673
+ "id": 35677,
10674
10674
  "name": "string",
10675
10675
  "nodeType": "ElementaryTypeName",
10676
10676
  "src": "4134:6:99",
@@ -10683,12 +10683,12 @@
10683
10683
  },
10684
10684
  {
10685
10685
  "constant": false,
10686
- "id": 35661,
10686
+ "id": 35680,
10687
10687
  "mutability": "mutable",
10688
10688
  "name": "symbol",
10689
10689
  "nameLocation": "4172:6:99",
10690
10690
  "nodeType": "VariableDeclaration",
10691
- "scope": 35742,
10691
+ "scope": 35761,
10692
10692
  "src": "4156:22:99",
10693
10693
  "stateVariable": false,
10694
10694
  "storageLocation": "calldata",
@@ -10697,7 +10697,7 @@
10697
10697
  "typeString": "string"
10698
10698
  },
10699
10699
  "typeName": {
10700
- "id": 35660,
10700
+ "id": 35679,
10701
10701
  "name": "string",
10702
10702
  "nodeType": "ElementaryTypeName",
10703
10703
  "src": "4156:6:99",
@@ -10712,17 +10712,17 @@
10712
10712
  "src": "4133:46:99"
10713
10713
  },
10714
10714
  "returnParameters": {
10715
- "id": 35669,
10715
+ "id": 35688,
10716
10716
  "nodeType": "ParameterList",
10717
10717
  "parameters": [
10718
10718
  {
10719
10719
  "constant": false,
10720
- "id": 35665,
10720
+ "id": 35684,
10721
10721
  "mutability": "mutable",
10722
10722
  "name": "token",
10723
10723
  "nameLocation": "4251:5:99",
10724
10724
  "nodeType": "VariableDeclaration",
10725
- "scope": 35742,
10725
+ "scope": 35761,
10726
10726
  "src": "4227:29:99",
10727
10727
  "stateVariable": false,
10728
10728
  "storageLocation": "default",
@@ -10731,10 +10731,10 @@
10731
10731
  "typeString": "contract ERC20PresetMinterPauser"
10732
10732
  },
10733
10733
  "typeName": {
10734
- "id": 35664,
10734
+ "id": 35683,
10735
10735
  "nodeType": "UserDefinedTypeName",
10736
10736
  "pathNode": {
10737
- "id": 35663,
10737
+ "id": 35682,
10738
10738
  "name": "ERC20PresetMinterPauser",
10739
10739
  "nodeType": "IdentifierPath",
10740
10740
  "referencedDeclaration": 1762,
@@ -10751,33 +10751,33 @@
10751
10751
  },
10752
10752
  {
10753
10753
  "constant": false,
10754
- "id": 35668,
10754
+ "id": 35687,
10755
10755
  "mutability": "mutable",
10756
10756
  "name": "superToken",
10757
10757
  "nameLocation": "4281:10:99",
10758
10758
  "nodeType": "VariableDeclaration",
10759
- "scope": 35742,
10759
+ "scope": 35761,
10760
10760
  "src": "4270:21:99",
10761
10761
  "stateVariable": false,
10762
10762
  "storageLocation": "default",
10763
10763
  "typeDescriptions": {
10764
- "typeIdentifier": "t_contract$_SuperToken_$30169",
10764
+ "typeIdentifier": "t_contract$_SuperToken_$30191",
10765
10765
  "typeString": "contract SuperToken"
10766
10766
  },
10767
10767
  "typeName": {
10768
- "id": 35667,
10768
+ "id": 35686,
10769
10769
  "nodeType": "UserDefinedTypeName",
10770
10770
  "pathNode": {
10771
- "id": 35666,
10771
+ "id": 35685,
10772
10772
  "name": "SuperToken",
10773
10773
  "nodeType": "IdentifierPath",
10774
- "referencedDeclaration": 30169,
10774
+ "referencedDeclaration": 30191,
10775
10775
  "src": "4270:10:99"
10776
10776
  },
10777
- "referencedDeclaration": 30169,
10777
+ "referencedDeclaration": 30191,
10778
10778
  "src": "4270:10:99",
10779
10779
  "typeDescriptions": {
10780
- "typeIdentifier": "t_contract$_SuperToken_$30169",
10780
+ "typeIdentifier": "t_contract$_SuperToken_$30191",
10781
10781
  "typeString": "contract SuperToken"
10782
10782
  }
10783
10783
  },
@@ -10786,14 +10786,14 @@
10786
10786
  ],
10787
10787
  "src": "4213:88:99"
10788
10788
  },
10789
- "scope": 35743,
10789
+ "scope": 35762,
10790
10790
  "src": "4101:744:99",
10791
10791
  "stateMutability": "nonpayable",
10792
10792
  "virtual": false,
10793
10793
  "visibility": "external"
10794
10794
  }
10795
10795
  ],
10796
- "scope": 35744,
10796
+ "scope": 35763,
10797
10797
  "src": "930:3918:99",
10798
10798
  "usedErrors": []
10799
10799
  }
@@ -10802,11 +10802,11 @@
10802
10802
  },
10803
10803
  "compiler": {
10804
10804
  "name": "solc",
10805
- "version": "0.8.13+commit.abaa5c0e.Emscripten.clang"
10805
+ "version": "0.8.14+commit.80d49f37.Emscripten.clang"
10806
10806
  },
10807
10807
  "networks": {},
10808
10808
  "schemaVersion": "3.4.7",
10809
- "updatedAt": "2022-06-03T09:45:14.349Z",
10809
+ "updatedAt": "2022-06-20T11:32:30.101Z",
10810
10810
  "devdoc": {
10811
10811
  "kind": "dev",
10812
10812
  "methods": {},