@gooddollar/goodprotocol 1.0.0-beta.48 → 1.0.0-beta.51

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 (154) hide show
  1. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  2. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  3. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  7. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  8. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  9. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  26. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  27. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -41
  28. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  29. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -41
  30. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  31. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -54
  32. package/artifacts/contracts/governance/GovarnanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  33. package/artifacts/contracts/governance/GovarnanceStaking.sol/GovernanceStaking.json +2 -54
  34. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  35. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.json +0 -13
  36. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  37. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -41
  38. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  39. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -54
  40. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  41. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +2 -15
  42. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  43. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
  44. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  45. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
  46. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  47. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
  48. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  49. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +2 -2
  50. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  51. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
  52. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +2 -15
  54. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
  56. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +2 -2
  58. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +6 -58
  60. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -41
  62. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -15
  64. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +2 -15
  66. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  68. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  70. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +2 -2
  72. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  74. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +2 -2
  76. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -41
  78. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -41
  80. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +2 -2
  82. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +2 -2
  84. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +2 -2
  86. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +2 -2
  88. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +2 -2
  90. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +2 -15
  92. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +2 -2
  94. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +2 -2
  96. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  97. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -41
  98. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  99. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -41
  100. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  101. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  102. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -41
  103. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  104. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -15
  105. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  106. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -41
  107. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  108. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -41
  109. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  110. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.json +0 -39
  111. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  112. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -15
  113. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  114. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +3 -16
  115. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  116. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +4 -56
  117. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  118. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +4 -17
  119. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  120. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +6 -58
  121. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  122. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -41
  123. package/artifacts/contracts/unaudited-foundation/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  124. package/artifacts/contracts/unaudited-foundation/FuseFaucet.sol/FuseFaucet.json +2 -15
  125. package/artifacts/contracts/unaudited-foundation/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  126. package/artifacts/contracts/unaudited-foundation/InvitesV1.sol/InvitesV1.json +2 -15
  127. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  128. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
  129. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  130. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -15
  131. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  132. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -28
  133. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  134. package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
  135. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  136. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +3 -17
  137. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  138. package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -15
  139. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  140. package/artifacts/contracts/utils/NameService.sol/NameService.json +2 -15
  141. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  142. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  143. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -15
  144. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  145. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -15
  146. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  147. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -15
  148. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  149. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -15
  150. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  151. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  152. package/package.json +3 -1
  153. package/releases/olddao.json +1 -1
  154. package/yarn.lock +177 -17
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/8c160f338d2c283c42710db9a78c71bd.json"
3
+ "buildInfo": "../../../build-info/f5d0ac3881ab8367417a64664691e2c6.json"
4
4
  }
@@ -221,58 +221,6 @@
221
221
  "stateMutability": "view",
222
222
  "type": "function"
223
223
  },
224
- {
225
- "inputs": [
226
- {
227
- "internalType": "bytes32",
228
- "name": "c__0x125e83b4",
229
- "type": "bytes32"
230
- }
231
- ],
232
- "name": "c_0x125e83b4",
233
- "outputs": [],
234
- "stateMutability": "pure",
235
- "type": "function"
236
- },
237
- {
238
- "inputs": [
239
- {
240
- "internalType": "bytes32",
241
- "name": "c__0x23e6de5f",
242
- "type": "bytes32"
243
- }
244
- ],
245
- "name": "c_0x23e6de5f",
246
- "outputs": [],
247
- "stateMutability": "pure",
248
- "type": "function"
249
- },
250
- {
251
- "inputs": [
252
- {
253
- "internalType": "bytes32",
254
- "name": "c__0xbd9eff7e",
255
- "type": "bytes32"
256
- }
257
- ],
258
- "name": "c_0xbd9eff7e",
259
- "outputs": [],
260
- "stateMutability": "pure",
261
- "type": "function"
262
- },
263
- {
264
- "inputs": [
265
- {
266
- "internalType": "bytes32",
267
- "name": "c__0xbf5bded7",
268
- "type": "bytes32"
269
- }
270
- ],
271
- "name": "c_0xbf5bded7",
272
- "outputs": [],
273
- "stateMutability": "pure",
274
- "type": "function"
275
- },
276
224
  {
277
225
  "inputs": [
278
226
  {
@@ -876,8 +824,8 @@
876
824
  "type": "function"
877
825
  }
878
826
  ],
879
- "bytecode": "0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152503480156200004757600080fd5b50604051620085883803806200858883398181016040528101906200006d919062000c84565b620000a17f8647abfdafc32140fe288a4fc4a04a69c190487c69b52141d39122bb0236292560001b6200042560201b60201c565b620000d57f56b6cd1a78ab94095446487427d0ed23ca6192fdfc595564760ced5d068eda4060001b6200042560201b60201c565b620001097f2b6e09f3320486864e4b8a02ba097b5035cf5e57703e52aa93924ba3c59aa42e60001b6200042560201b60201c565b6200011a816200042860201b60201c565b6200014e7f8d3a660ad109eda6e0187d292f013c34ad4a2604627a224796763a752ca37b3460001b6200042560201b60201c565b620001827ffff8063a5f4c18649d578f3033747dc4dd2f5c4100e2ddab4dad8dd7f1324cd060001b6200042560201b60201c565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff1660e01b8152600401620001de9062000d17565b60206040518083038186803b158015620001f757600080fd5b505afa1580156200020c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000232919062000d6a565b61016960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002a77f8f900d581b331bfc845530737b90e507c74eae5e66a4996539ff412b2779797f60001b6200042560201b60201c565b620002db7f4834dde785551e18bfc4c75bf007a058960f39821470dfb019aaf132cb6571c360001b6200042560201b60201c565b620003576040518060400160405280601381526020017f4724205374616b696e6720466f7220474f4f44000000000000000000000000008152506040518060400160405280600381526020017f73472400000000000000000000000000000000000000000000000000000000008152506200058160201b60201c565b6200038b7f9478cff094edb45c1afe3ca3536073156a9fb046b04631b052a5625c4af4928060001b6200042560201b60201c565b620003bf7f75ffea99cacfed3009ac21f5dc54e39ed710611679be5d35c9eae345906b6d5f60001b6200042560201b60201c565b6207e9006a01a784379d99db42000000620003db919062000dd5565b606a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505062000f7c565b50565b6200045c7ff15f24dfc74f64126371a3288523fbddf886dd048380c8b1950230158adddf2060001b6200068460201b60201c565b620004907f64ad21c3e28e22ea9c18eec68e98eb9ba817bb55b19b1715f49de3ced9cc321960001b6200068460201b60201c565b620004c47f13de6a3bdaa67db41210490c741cbf20a513720be6ffe835e6941158e463075d60001b6200068460201b60201c565b8061010460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200053a7f2bb6f094869741011cb91013e20489fe92a168ecbfba99feeccf0d512641fe6760001b6200068460201b60201c565b6200056e7f0c50e89e6810a8cc40226de94a82e524005d1d94a93ecf86ca6ef3adad99f83960001b6200068460201b60201c565b6200057e6200068760201b60201c565b50565b600060019054906101000a900460ff1680620005a8575060008054906101000a900460ff16155b620005ea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005e19062000e83565b60405180910390fd5b60008060019054906101000a900460ff1615905080156200063b576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b6200064b6200096460201b60201c565b6200065d838362000a4360201b60201c565b80156200067f5760008060016101000a81548160ff0219169083151502179055505b505050565b50565b620006bb7f9c5717a5273d3fab05262c796e5246ceb867d3d45a0ff49f1411f2278662373060001b6200068460201b60201c565b620006ef7f56e6c995e22874d64a6b2efd83710b4bae6637dabd3a55f25af73f3fce74d8be60001b6200068460201b60201c565b620007237fedb0d005658a245effc5e3cd550a9ce28f7d371ddbdf4ce88a00e1bd466bb72960001b6200068460201b60201c565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff1660e01b81526004016200077f9062000ef5565b60206040518083038186803b1580156200079857600080fd5b505afa158015620007ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007d3919062000d6a565b61010260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008487ff98b8297ddf2f8b42fe826b560ddc5a49772c62ceb432e79c9f31ce8c2f103df60001b6200068460201b60201c565b6200087c7f0572be5a4991edb4899d66523520ae1c3626176f9afec3621cc85b6f53abeac060001b6200068460201b60201c565b61010260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635aef7de66040518163ffffffff1660e01b815260040160206040518083038186803b158015620008e657600080fd5b505afa158015620008fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000921919062000d6a565b61010360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900460ff16806200098b575060008054906101000a900460ff16155b620009cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009c49062000e83565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000a1e576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b801562000a405760008060016101000a81548160ff0219169083151502179055505b50565b600060019054906101000a900460ff168062000a6a575060008054906101000a900460ff16155b62000aac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aa39062000e83565b60405180910390fd5b60008060019054906101000a900460ff16159050801562000afd576001600060016101000a81548160ff02191690831515021790555060016000806101000a81548160ff0219169083151502179055505b826036908051906020019062000b1592919062000b56565b50816037908051906020019062000b2e92919062000b56565b50801562000b515760008060016101000a81548160ff0219169083151502179055505b505050565b82805462000b649062000f46565b90600052602060002090601f01602090048101928262000b88576000855562000bd4565b82601f1062000ba357805160ff191683800117855562000bd4565b8280016001018555821562000bd4579182015b8281111562000bd357825182559160200191906001019062000bb6565b5b50905062000be3919062000be7565b5090565b5b8082111562000c0257600081600090555060010162000be8565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c388262000c0b565b9050919050565b600062000c4c8262000c2b565b9050919050565b62000c5e8162000c3f565b811462000c6a57600080fd5b50565b60008151905062000c7e8162000c53565b92915050565b60006020828403121562000c9d5762000c9c62000c06565b5b600062000cad8482850162000c6d565b91505092915050565b600082825260208201905092915050565b7f474f4f44444f4c4c415200000000000000000000000000000000000000000000600082015250565b600062000cff600a8362000cb6565b915062000d0c8262000cc7565b602082019050919050565b6000602082019050818103600083015262000d328162000cf0565b9050919050565b62000d448162000c2b565b811462000d5057600080fd5b50565b60008151905062000d648162000d39565b92915050565b60006020828403121562000d835762000d8262000c06565b5b600062000d938482850162000d53565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000de28262000d9c565b915062000def8362000d9c565b92508262000e025762000e0162000da6565b5b828204905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b600062000e6b602e8362000cb6565b915062000e788262000e0d565b604082019050919050565b6000602082019050818103600083015262000e9e8162000e5c565b9050919050565b7f434f4e54524f4c4c455200000000000000000000000000000000000000000000600082015250565b600062000edd600a8362000cb6565b915062000eea8262000ea5565b602082019050919050565b6000602082019050818103600083015262000f108162000ece565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f5f57607f821691505b6020821081141562000f765762000f7562000f17565b5b50919050565b60805160601c6175d862000fb06000396000818161182f015281816118be01528181612077015261210601526175d86000f3fe6080604052600436106101d65760003560e01c806306fdde03146101db578063095ea7b3146102065780630c1cd7f31461024357806318160ddd1461026e5780631b3c90a814610299578063213b329e146102b057806322dec37b146102db57806323b872dd1461031857806325d5971f1461035557806328e964e91461037e5780632e42a896146103bc578063313ce567146103fc57806331903da1146104275780633659cfe614610464578063394254e31461048d57806339509351146104b65780633d9a12cc146104f35780633e6326fc146105305780634162169f1461055b57806347b3e7e8146105865780634f1db7f6146105c35780634f1ef286146106015780635aef7de61461061d57806370a08231146106485780637a210ed3146106855780637bcbb9ff146106ae578063846141b3146106eb5780638ccb267c1461072857806395d89b4114610751578063a457c2d71461077c578063a694fc3a146107b9578063a87430ba146107e2578063a9059cbb1461081f578063b46aa5271461085c578063bf8e9b6e14610887578063c6710629146108b2578063c76279a2146108ef578063c7b8981c14610918578063d520844614610943578063dd62ed3e1461096c578063e1758bd8146109a9575b600080fd5b3480156101e757600080fd5b506101f06109d4565b6040516101fd9190615e2e565b60405180910390f35b34801561021257600080fd5b5061022d60048036038101906102289190615ef8565b610a66565b60405161023a9190615f53565b60405180910390f35b34801561024f57600080fd5b50610258610a84565b6040516102659190615f7d565b60405180910390f35b34801561027a57600080fd5b50610283610b4e565b6040516102909190615f7d565b60405180910390f35b3480156102a557600080fd5b506102ae610b58565b005b3480156102bc57600080fd5b506102c5610e03565b6040516102d29190615f7d565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190615f98565b610e92565b60405161030f9190615f7d565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190615fc5565b610eaa565b60405161034c9190615f53565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190616018565b610fa2565b005b34801561038a57600080fd5b506103a560048036038101906103a09190615f98565b6116b1565b6040516103b3929190616045565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de919061606e565b61174b565b6040516103f394939291906160ae565b60405180910390f35b34801561040857600080fd5b50610411611788565b60405161041e919061610f565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190615f98565b611815565b60405161045b9190615f7d565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190615f98565b61182d565b005b34801561049957600080fd5b506104b460048036038101906104af9190616160565b6119b6565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190615ef8565b6119b9565b6040516104ea9190615f53565b60405180910390f35b3480156104ff57600080fd5b5061051a6004803603810190610515919061618d565b611a65565b6040516105279190615f7d565b60405180910390f35b34801561053c57600080fd5b50610545611ebd565b6040516105529190616253565b60405180910390f35b34801561056757600080fd5b50610570611ee4565b60405161057d919061628f565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a89190615f98565b611f0b565b6040516105ba9190615f7d565b60405180910390f35b3480156105cf57600080fd5b506105ea60048036038101906105e5919061606e565b611f23565b6040516105f8929190616045565b60405180910390f35b61061b600480360381019061061691906163df565b612075565b005b34801561062957600080fd5b506106326121b2565b60405161063f919061644a565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190615f98565b6121d9565b60405161067c9190615f7d565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a79190616160565b612222565b005b3480156106ba57600080fd5b506106d560048036038101906106d09190615f98565b612225565b6040516106e29190615f7d565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190615f98565b6122f2565b60405161071f9190615f7d565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a9190616160565b61230a565b005b34801561075d57600080fd5b5061076661230d565b6040516107739190615e2e565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e9190615ef8565b61239f565b6040516107b09190615f53565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db9190616018565b61248a565b005b3480156107ee57600080fd5b5061080960048036038101906108049190615f98565b612894565b60405161081691906164c9565b60405180910390f35b34801561082b57600080fd5b5061084660048036038101906108419190615ef8565b6129d6565b6040516108539190615f53565b60405180910390f35b34801561086857600080fd5b506108716129f4565b60405161087e9190615f7d565b60405180910390f35b34801561089357600080fd5b5061089c6129fb565b6040516108a99190615f7d565b60405180910390f35b3480156108be57600080fd5b506108d960048036038101906108d49190615f98565b612a8f565b6040516108e69190615f7d565b60405180910390f35b3480156108fb57600080fd5b5061091660048036038101906109119190616018565b612b29565b005b34801561092457600080fd5b5061092d612c1a565b60405161093a9190615f7d565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190616160565b612d0e565b005b34801561097857600080fd5b50610993600480360381019061098e919061606e565b612d11565b6040516109a09190615f7d565b60405180910390f35b3480156109b557600080fd5b506109be612d98565b6040516109cb9190616505565b60405180910390f35b6060603680546109e39061654f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0f9061654f565b8015610a5c5780601f10610a3157610100808354040283529160200191610a5c565b820191906000526020600020905b815481529060010190602001808311610a3f57829003601f168201915b5050505050905090565b6000610a7a610a73612ecd565b8484612ed5565b6001905092915050565b6000610ab17e9620550f301330b77900d5215177d311072abec2777f836b3932ffbde6cbe760001b612d0e565b610add7f29c0f4f9b55d29111401073c1952f3e7041ab7286a569d04b27b8ea24bfe3bbf60001b612d0e565b610b097ffa9fa15fd73c92b576fe2b3dfc4e8fa3c87d398bb93c18930b335194aad0c2af60001b612d0e565b606a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000603554905090565b610b847f9c5717a5273d3fab05262c796e5246ceb867d3d45a0ff49f1411f2278662373060001b61230a565b610bb07f56e6c995e22874d64a6b2efd83710b4bae6637dabd3a55f25af73f3fce74d8be60001b61230a565b610bdc7fedb0d005658a245effc5e3cd550a9ce28f7d371ddbdf4ce88a00e1bd466bb72960001b61230a565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff1660e01b8152600401610c36906165cd565b60206040518083038186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190616602565b61010260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cf37ff98b8297ddf2f8b42fe826b560ddc5a49772c62ceb432e79c9f31ce8c2f103df60001b61230a565b610d1f7f0572be5a4991edb4899d66523520ae1c3626176f9afec3621cc85b6f53abeac060001b61230a565b61010260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635aef7de66040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc09190616602565b61010360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610e317fd0d6d852fc4adb4abd482abd8dd4409765b5b33a967cccf63aac220f7350e3e660001b612d0e565b610e5d7fb58709479411357bf6ffa4cc42a44936ff13fb91bf505486e75ff136c9728a3660001b612d0e565b610e897f67282fb427c1fcd34d6adcb1d3d9ef8ebed4fbb65b1015cdd7ec9f2d1845420260001b612d0e565b6207e900905090565b60676020528060005260406000206000915090505481565b6000610eb78484846130a0565b6000603460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f02612ecd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f79906166a1565b60405180910390fd5b610f9685610f8e612ecd565b858403612ed5565b60019150509392505050565b6002610137541415610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe09061670d565b60405180910390fd5b60026101378190555061101e7f28142f85c8a27dee08593109f434db5a308a50e8e6df157b6ade3ae7600a4a0760001b612d0e565b61104a7fdfefc88be82ca627d1c117a75865ae80e9a6bceefdba220cdf831c31dbf4d6d660001b612d0e565b6110767fe7a3cbff2f7cc49dbfb015ac0a53d141d5643a9d287cf670d226207254d2f34360001b612d0e565b600061108930611084612ecd565b611f23565b5090506110b87f01ba18915188db8e49928ec4b97433c0d4e57deb09ab40cf6d3239f6be6fcd7260001b612d0e565b6110e47fd1ece1386663980e8efc8e6bac45286a36472274b12a772e6defc5a326a3983a60001b612d0e565b600082141561114d576111197ff7934c797572ea5f0a990cbbb028187ab43def2291a81739b4f54d3bedb16e5f60001b612d0e565b6111457f38a1962cce7003a48d32023020825a661332ea20e4d9ede47bcc96a7ef59d17660001b612d0e565b80915061117a565b6111797f975b8439f08abd6467927da176c3fe0d41a75fe3f4a764d185173cec9cbc05db60001b612d0e565b5b6111a67fa19967d9d6713094e12e65ea278c6f44f24051122616753bc86aaf6c8c89316860001b612d0e565b6111d27f2f2aad927d4262f9acecd5654762bec3265d7905a9d63b8b00f8d10d18c5735d60001b612d0e565b6111fe7fa475160fb47b1104bb3b72aca73aa1b5e7b338a90776c00744fe8572abd0fa3d60001b612d0e565b60008211611241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123890616779565b60405180910390fd5b61126d7f0a85f08f9dd5dac23d6b6959d47876df81e2e769da51b9ba1af4f499f6cfb0f560001b612d0e565b6112997fa4d98b15168ce4af9e8000a28883058581ba870b778dba9611b423c9a937207860001b612d0e565b6112c57f23c7f13fefab627cdb65648b2bacb75f1a63569fb427a089bbd7d78a26d79ad460001b612d0e565b6112f17f77dd6555a1b4f3b3ce1a542cf5c1d2b9f2872045ddd28f9e481788d174c35bb360001b612d0e565b81811015611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b906167e5565b60405180910390fd5b6113607fc7ed66395935532df15ffea40d228e123e0608c7e77e33b0142222d62d72d48060001b612d0e565b61138c7f06e433e2a6d19265ddc4c7302c6e7a891c4ad5fcf76a800da66cf953bdeb98bd60001b612d0e565b6113b87fb2caa84a71ef183e99be4cc29c03e01b2425a3a57d5c3ca8e2b6df55061292f160001b612d0e565b60008290506113e97fdeba3422af7e17277789428d34afd73321860be8dcaf640319cae1306fe9b87960001b612d0e565b6114157f07967ba9264c78e521108397033f1ceb09739a673dee72590e592dbbe579bce760001b612d0e565b611426611420612ecd565b846132c6565b6114527f2a107c63ec5894a3100e9dfbce29639455c2b6a781fba1211823c4b0d2c21df660001b612d0e565b61147e7f08dfce957222237f38752a06ec181c394f53a63d25d93c296cb427baca89814660001b612d0e565b6114933061148a612ecd565b8560004361349f565b506114c07ffc52ff7c4683a6b979a531c9fec10c6d008af50552c4e46b8db1900ab374032960001b612d0e565b6114ec7f1e73881fd59808d2298d9af004031830327232da5e607029c86b7523b5654e9060001b612d0e565b6114fc6114f7612ecd565b613768565b506115297f56c4f9e228263c1f024c262870435d1dbe12d78d3602fa921783b6036bc927a760001b612d0e565b6115557f40ada2d08fc93ed05707066d977c2e5aa49269958df4397e465a99dcb3ff7f4560001b612d0e565b6115817ff906fcf9d3019eef2d25ce785fe511f8ffd0d0d98db1617bd03ca41af3d49f6660001b612d0e565b61016960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115c8612ecd565b836040518363ffffffff1660e01b81526004016115e6929190616805565b602060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611638919061685a565b611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e906168d3565b60405180910390fd5b6116a37fd99d6080ebbd4abb0547d5b9b5387839f553f9270508d706034d72e3bc7594cc60001b612d0e565b505060016101378190555050565b6000806116e07fb0309a15254c8c503e2660d855fd5822161a0a21b55fc1b94a7cb8011f52103760001b612d0e565b61170c7fce2570795852730fbad59d86ddea2a4cee3150c7043cf5b2d918863c4bb4432b60001b612d0e565b6117387f0189220847b95933e7a48cf00142fc02dfc3607e35c3ed738d03578aa130a92e60001b612d0e565b6117423084611f23565b91509150915091565b606b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154905084565b60006117b67fe101a9bf63f899b57bc4ac144f3a716d2f4106a2a18b4d177b5c1c54c12ae9d160001b612d0e565b6117e27f6982da04784614f0d22474e3d6558c11254f377138ce7ed221ffe8e237027f7960001b612d0e565b61180e7fc1f5e3831e96c5e48d2c44b021932cafb4441a4adf07a7aec48661d98723405d60001b612d0e565b6002905090565b60686020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390616965565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118fb613b5b565b73ffffffffffffffffffffffffffffffffffffffff1614611951576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611948906169f7565b60405180910390fd5b61195a81613bb2565b6119b381600067ffffffffffffffff811115611979576119786162b4565b5b6040519080825280601f01601f1916602001820160405280156119ab5781602001600182028036833780820191505090505b506000613c41565b50565b50565b6000611a5b6119c6612ecd565b8484603460006119d4612ecd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a569190616a46565b612ed5565b6001905092915050565b6000611a937fff74411b215cedb548172db27bab66164c1c67e90807a2f38312f585fbcd8b1d60001b612222565b611abf7f47327316a9aa8952a1352c4ef6949ad9e65057aebe572b5dbedb93e0d12ed34c60001b612222565b611aeb7f126d9155d4744b24712090362784383354b0ed676e369651e11912141662383560001b612222565b6000606b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250509050611bca7f6912bf24cbdfced24d7f35256953e303d09e4143de2761d6bb6ff60aa9a9de0460001b612222565b611bf67f136976903dee2864de2b3090b23389495b10fc1943c1fe8b40ca27617b80418f60001b612222565b6000611c247fb481fd545af72d9766d13c94cee06abe1369a4eaa33c86c4dac1d1fbdbe23b7560001b612222565b611c507f49836ae64473045bcd445281fe03e425c5b4e6b3a4a29bfcbb19b0416ea9665e60001b612222565b6000606560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611e2b57611cc37f0eaf8b1aa6423d4792c78ac1e4778c81064a0aa18394d8189ed2948736629c1460001b612222565b611cef7f7e478ce109e6584158cd8eceeebe8db9f0923dbcc61518efce7263bed436a7d660001b612222565b611d1b7fbeedeb3287cc7c59de1dd851f912029607061a387af7019971bc71d1d2a3631d60001b612222565b6000611d28888888613e12565b915050611d577f76cc42fa9cc0178e5dba827c3359c4d65c72893df078b47bc52ab3cf8207aecf60001b612222565b611d837f29b02bec1c5b499efd1c562fff2e13d95750ff05755d73ec9a8afc1109cdfacb60001b612222565b82604001519150611db67ff912c00cc83248ce9e843b2a6fb46e56e6ed5ea6edb131544a0379f666a0fb3160001b612222565b611de27f0a1dd9da8d9e489972906ed877455d46bad46bae056651df93884b7c45bab23560001b612222565b82602001516b033b2e3c9fd0803ce8000000828560000151611e049190616a9c565b611e0e9190616b25565b611e189190616b56565b82611e239190616a46565b915050611e58565b611e577fdd0f6fad3bad87d5bdd02b0fe966074a3f0d6b552045d21f8e745bcf9d56ddfb60001b612222565b5b611e847ff38d6be17138c1738b1f376263ac1d0fc2eeefedb55eee61b78b765ef26e907a60001b612222565b611eb07f3bd574e627a13d033232e80ebd13256d06cf66c4dc2ad27022e0e0f6e0aa7b0e60001b612222565b8092505050949350505050565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61010260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a6020528060005260406000206000915090505481565b600080611f527f5e60efb37d665722077988fe5711b9f9687a339a01c296ad3d78ab61573d46ef60001b612222565b611f7e7f79a45f1dbb279c9637ddd9817b9845192b8797d43a3d30fa7af71a4b6297d9b660001b612222565b611faa7f672edddbbfbc4b534efea9ea617a9fe576286083bd7445b8cde5b70a414f56c360001b612222565b606b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154606560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915091509250929050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb90616965565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612143613b5b565b73ffffffffffffffffffffffffffffffffffffffff1614612199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612190906169f7565b60405180910390fd5b6121a282613bb2565b6121ae82826001613c41565b5050565b61010360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b50565b60006122537fd91b472563633b49f56ed9ecb872759c76d77f0cfd8ed3c3b5069f27709875fa60001b612222565b61227f7f5cb30747cdf8d32e9a1504a9cf6816ac46ed7b0cb010ce4111f720af98f5882960001b612222565b6122ab7fd5b7e11523b32f10f1d8d4bda18a59964fbe7ba2ad600a1231c620ead576b53e60001b612222565b606660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60696020528060005260406000206000915090505481565b50565b60606037805461231c9061654f565b80601f01602080910402602001604051908101604052809291908181526020018280546123489061654f565b80156123955780601f1061236a57610100808354040283529160200191612395565b820191906000526020600020905b81548152906001019060200180831161237857829003601f168201915b5050505050905090565b600080603460006123ae612ecd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290616bfc565b60405180910390fd5b61247f612476612ecd565b85858403612ed5565b600191505092915050565b6124b67f6292db0ea3688ee3d0d44e2c9522fb90519529f4c9a82d78fbd91f7b6ab9922760001b612d0e565b6124e27fd7aa9ed0203a552ee3191b592d7bb7727e81b90002a8afa2e5c6d72d2e15171860001b612d0e565b61250e7ff33628cd8de50475de805913c71cde6eb7d210f6327271294a81fddda011e88360001b612d0e565b61253a7f77e0dfecb00f2893b4a7affe55217c541844c03d310a0e5a2eda4de3a4bc7f9260001b612d0e565b6000811161257d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257490616c8e565b60405180910390fd5b6125a97f4dc8db5c2a343c192f399caf67df2840dc500b9e0c5128dd64b888f234a3139860001b612d0e565b6125d57f0818441691f25b902243405331c9df42513679a983b3e3cdb06327ba5829546760001b612d0e565b6126017f597bbe6583f10e901df00e42385d29e6c637676cc9cc8152c07397f7106bbd4260001b612d0e565b61262d7f3b4fb1a6a7ebb9252908b38d81b2d043c3f6c36db15a611fc6d888bb95da949b60001b612d0e565b61016960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd612674612ecd565b30846040518463ffffffff1660e01b815260040161269493929190616cae565b602060405180830381600087803b1580156126ae57600080fd5b505af11580156126c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e6919061685a565b612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90616d57565b60405180910390fd5b6127517fa945ac930c4f21a141c0a7efab57097f4917d82eaf657cd74951b103a054d58a60001b612d0e565b61277d7f0b2b0c88e05d60eecf00083a34dda75cdbfdd048e17e05d265433762579b66f560001b612d0e565b6127a97f0539207887ee8def2c57b3e5467622fa1c72c1a83e2efeb8a710cedb1e6d41ac60001b612d0e565b6127be306127b5612ecd565b8360004361439a565b506127eb7f72d24d4c6575872656e0ccb304d006a817abec2f11a8abe97e543e744a6b22b960001b612d0e565b6128177f1d30e729f76b454f292477758c6949d2a7e43525eb4c1cb02b910c09f468fd4c60001b612d0e565b612828612822612ecd565b82614663565b6128547f537f3caca6ecae23277175298e909cf6361eaaf28475e70b8b2ba97e55c61a0460001b612d0e565b6128807fff57a4c449cf48b9924e3836af3123f5c244f9a2e43c4719a6f03c1c7c1cdbf660001b612d0e565b61289061288b612ecd565b613768565b5050565b61289c615d6d565b6128c87f7d61612df2370722b8fa8e12f0e6d6dcb7c47a80259dbbc696d0f452c3f05bb760001b612d0e565b6128f47f0c6925e5dcd1e07ebfdda6de17346d251cdc66c00429a142f2ad07a0703cc08d60001b612d0e565b6129207fc0afad6b504f7302e43185e497aeb64dfe471a0f836b90a477f48f00e1fb502a60001b612d0e565b606b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250509050919050565b60006129ea6129e3612ecd565b84846130a0565b6001905092915050565b6207e90081565b6000612a297ff00a12caf85c0e5f780796713962de836eba29f21ed8c805386e562ac577033f60001b612d0e565b612a557fb0d5dcbb30504984f9e8e8dd70810566c2daed96e2100d37482c57ebaabb6ea460001b612d0e565b612a817f4620c33be91f546034b5a2018075b42c9515a93a79b4add9f45a58771650983860001b612d0e565b612a8a30612225565b905090565b6000612abd7ff4f013b542ce86f2dc32b26c869e9a94e3d1df812e58c342e17301c72f21e35060001b612d0e565b612ae97f0c4a3a0e52eb754f95643b848b5ce2b7303713d7323dab900c66104fe82e989560001b612d0e565b612b157fe567ba1e3f40e671a99ddec5d5d19f5e7abea90a60c289800d2991f649a29b8c60001b612d0e565b612b223060004385611a65565b9050919050565b612b557f3f40c649ecf3c1f5001e06d7bf5cdf899bd44a9043a23cb42a6c79ff2e6dd32260001b612d0e565b612b817fafba07e0844f97ecffafa38d0aa492e9b1ae530c776b9a2a6fae0c1be907fe4560001b612d0e565b612bad7f039206c3c27f3977d227da9d5916419327db491da6d06a362b9581fe436ba6ef60001b612d0e565b612bb56147c4565b612be17fb63224aa9d1a4197ea9c313a77b730c29bd99aa2cf29e13e910d45ffb306826960001b612d0e565b612c0d7fcfb911e10773ac33a045f24565325eb235432b74590ca943c9b17f41f4cbf7ed60001b612d0e565b612c1730826149b0565b50565b60006002610137541415612c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5a9061670d565b60405180910390fd5b600261013781905550612c987fcda278f46a258560b4b20920df8a4d60b8e508cfb50c89f34b967e90cf876f2e60001b612d0e565b612cc47f71337042177ddf5f4b8892655eba7362ca3a541e56b3eca9734894b399ae37e960001b612d0e565b612cf07f9766a5b6451c9904112a9e79817930c2ed6a9cf7d1071cd60c903715148958b560001b612d0e565b612d00612cfb612ecd565b613768565b905060016101378190555090565b50565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000612dc67f9d95d87e00b37f2eb6f66a7e17e532b4f207f6b3448a78aa92aab16488eab41260001b61230a565b612df27f75b8d3f13c1eeb3d5f856fc45ceb7e297b12b082861eed77647c0e0deacef4a860001b61230a565b612e1e7fc0fcafbbf9640a5c842b2c11f21afc2be448cfe7fa85f5077d625b9c855cd7d660001b61230a565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff1660e01b8152600401612e7890616dc3565b60206040518083038186803b158015612e9057600080fd5b505afa158015612ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec89190616602565b905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3c90616e55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fac90616ee7565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130939190615f7d565b60405180910390a3505050565b6130cc7f59d0f601e0be1a7a54731c37612b23c1ffb59e5052e5dc382b62aaa61450979d60001b612d0e565b6130f87fabfacbf9db43d35a850cb5214e36fe8c05e56d703ac68ba1315e7d7cd73da4cf60001b612d0e565b6131247fa0f286663d0361450455fda66e2d88b4bc49df024a9240472ddd03c9fcf6717260001b612d0e565b61313230848360004361349f565b5061315f7fb16e1b7129526cd4563b1b2eb9f43ecf45b5ec849c96824597fc2814f81e0bf760001b612d0e565b61318b7f96c4752e0d95418a7501efcaf28b4e80b9e6e4635c78537a23041667ad9b0b5d60001b612d0e565b61319930838360004361439a565b506131c67f0fb4f221c33ed021adb08fee4ec3558b81be1fd23c63846a976021d23b6766da60001b612d0e565b6131f27fc0ea0209aea75c3e3b40095d353c6c669af98e204dd9d900cb6c86b53314b1de60001b612d0e565b6131fb83613768565b506132287f1e54e60e2bc031c81f7e5178593a8d40bcb09f7eaf341f3f2393e8338dcaad7260001b612d0e565b6132547f477934b102badfff20f99d5eb120c7ef2e1f4859e2c866af5ce6e38511326bf860001b612d0e565b61325d82613768565b5061328a7fc312016e6d429a560b11e35d654497b43e199f96c70b086e15aac2d89ec31b8760001b612d0e565b6132b67f09fd6ee188a8e458870fffc798d2e5d170ee788a71b79126f5e220160ade666560001b612d0e565b6132c1838383614a8e565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332d90616f79565b60405180910390fd5b61334282600083614d12565b6000603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c09061700b565b60405180910390fd5b818103603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603560008282546134219190616b56565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134869190615f7d565b60405180910390a361349a83600084614d17565b505050565b60006134cd7fa35cde4b9ee4b2a01c5f5ea41589a7d1acfd02917d2615f9688354e52d400d4b60001b612222565b6134f97f60ff9de982bd8359a564a6d50686fae866c93dd40af412742430e539805ef54860001b612222565b6135257f60b5643cdbd17a2075370ec0990ddbca45d4947fd813af9f306b84edf6134f9260001b612222565b613530868484614d1c565b61355c7f1b1bfcd0f9b472654693cdbef41daabf641b0fcdc0f2369d231ef86b98411fd860001b612222565b6135887f7ec95d6146672a0aa81662678ed286ade0cd62bc04094df2c3a9caaf26995be560001b612222565b61361d868686606b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546136189190616b56565b6150e3565b6136497f96006d96aead623828d3ab540b3e0fee0b7e2853929e71c13260404d09e440b560001b612222565b6136757ff4f370f2e826f2e1c86978c17d886193d9d1b576ee23fa4bd332f46b8a019a7c60001b612222565b83606560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136c09190616b56565b606560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372f7f7a7efeeefe389b28fb5e1f3106ff8315a47a83d9970d59b68ebce0626cefd4f560001b612222565b61375b7fb4070476b46411239637140836ec514d7a245a2a0deac46fcbc692e7f87764bb60001b612222565b6001905095945050505050565b60006137967fa84b4065492f6e35a271c3c5779229f8c5ce196539c54d4b001697c6a59a13d160001b612d0e565b6137c27f209a48cfeeea929859a14beec73738d7d6d303a9e7c39434b8c607c18478da3960001b612d0e565b6137ee7fb2c675897e5d0810f51eed57cbb3e07f41d57cf8eb3d083bcabc9c088e72699b60001b612d0e565b60006137fd30846000436155fb565b905061382b7f9ddc2ce9aec2376146482bb012676b1412720daffec40621c78153732e19d14760001b612d0e565b6138577fe746b848ca9d20d9ac61a546453ad09d73496ee554b76725de145c02f154b33060001b612d0e565b6000811115613acd5761388c7faadfaa61b6194c08e91da357387958771535696f02ea32efd6be2af178b0a89b60001b612d0e565b6138b87f2d5c3cd343e49627d77b22c7ef4863b10c34d60b54b21b61d19ec64bb3589ad760001b612d0e565b6138e47fc83a078f7d44dc5e2760a380bda9b2dcf9e527fdb657e4267c6592f4e8f6975f60001b612d0e565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff1660e01b815260040161393e90617077565b60206040518083038186803b15801561395657600080fd5b505afa15801561396a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398e9190616602565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b81526004016139c8929190616805565b602060405180830381600087803b1580156139e257600080fd5b505af11580156139f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1a91906170ac565b50613a477f2193188f85da9379f504dc31119a27a5f7066934fc7832b2f6db55df3b0464cf60001b612d0e565b613a737f4bebf50517e5e74578389ee3818a53ec5e07c35bb19f0c4f0175b531e6aa107e60001b612d0e565b613a7b612ecd565b73ffffffffffffffffffffffffffffffffffffffff167f43848d0574703c28d68ae8958e0571521618f60c4bcacfb094cff2156eaae0f182604051613ac09190615f7d565b60405180910390a2613afa565b613af97fd8d350137bdc5c227465bf1c6bbed76418cb4594888aa8d04f6ad9d7e2ad7abc60001b612d0e565b5b613b267ff4fcdfd03692cf3784f005680254aed230e9efe95cc2e056d4d0072d38d3209860001b612d0e565b613b527f993a104493004d1455a360554db07e69c4585eddbb0ab43fa67d54b51732e22960001b612d0e565b80915050919050565b6000613b897f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b615ac6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b613bde7f610c71056e8204d89947799db8555f6e16e7370970f1304b559630e75f5f72a560001b6119b6565b613c0a7f776758cfe048d2780c7d5a1404ef8f7a743517d42abea794d1fba1872388621960001b6119b6565b613c367fe25880f62ee3402fe33f8546c03d72acdc250b3ca81d6c122883ad6afd95c88d60001b6119b6565b613c3e6147c4565b50565b6000613c4b613b5b565b9050613c5684615ad0565b600083511180613c635750815b15613c7457613c728484615b89565b505b6000613ca27f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b615c6d565b90508060000160009054906101000a900460ff16613e0b5760018160000160006101000a81548160ff021916908315150217905550613d6e8583604051602401613cec919061644a565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615b89565b5060008160000160006101000a81548160ff021916908315150217905550613d94613b5b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613df89061714b565b60405180910390fd5b613e0a85615c77565b5b5050505050565b600080613e417f5a12d9b845b72770daa845f8b223b1796335c299dcb4bbb17783280df8bf871e60001b612222565b613e6d7f67599f54d3a64238dc1b68bc4a9c8ffb750fe3573700dcdbd1305e1c5e780b1460001b612222565b613e997f18995b271972be14e5268a5dd478fdb2351a61f3ba804c8cc6bd7bb16460c9bf60001b612222565b606660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050613f077fe368f75df76751b32dec98d28fcfd7f9804ce09a6544e516b7c14e86d9c04e9b60001b612222565b613f337f062dcbce4da07128ec2389658db670e5baa4a7316ce6f1626ea508b96201a7e860001b612222565b606960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150613fa17fea0e324c4dd6f7a023b05b7125d12ee47e737c74b82a00d0cee9a36c71d30d0260001b612222565b613fcd7f662ea666469007ff4efd6d5292a501b7944126305fdf1dc379c3217506afdf5160001b612222565b8382108015613fdc5750834310155b613fe65781613fe8565b835b91506140167f376475eb80336b2a63551e19a236a751fa9634744ffa8c84a6093f4e8dd4298560001b612222565b6140427fd246573b42d65d9c4cdf57a660a25d9ec292e498b4e6b65912717390a2233bdb60001b612222565b60008343116140515743614053565b835b90506140817fbd0f903635fd1bf492fda4dd27aed69b8bcbe4ba607e89af357dbb23d39547e260001b612222565b6140ad7f0ef2505f3744b6f98ee768a8c30bd587c1f2e66188fdd6048fba416057ecb7ff60001b612222565b848110806140bb5750838310155b1561414a576140ec7fb5d53aa7ca2889b838666a774f88784bd7d3c818c7d66108e5ce71ff9697b55d60001b612222565b6141187f96a6ea4a569d84b9fd8d5f01b82bff0dea705c4eb02d45c9b25fab2701f096e360001b612222565b6141447ff97b8e9d0b97af8ff998451d219f8a3bd06db376009ea2a816e5bb18700993bb60001b612222565b50614392565b6141767f1a428c432272c068ab4654384831257d7cd643ebb4ffac04f202ffeeb853a55660001b612222565b6141a27f88bde9a76cc3844cd4ef5e20d9429fd93dc06c5956f05ce8a106697a2de1d61960001b612222565b6141ce7f6a40d5fb12cb112579d46682c8b976984fa774a6875d3419dd0394e27fda7bb860001b612222565b600083826141dc9190616b56565b905061420a7f88ea062b22fd241a80e931012b5e8098b4aaaba886e2c4e4f584283448925b0460001b612222565b6142367f2abe73ce1b2efb82c94ec2939f00d0ee7655780137a4ba82b92a72a3547218a860001b612222565b6000606a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826142839190616a9c565b90506142b17f429476d6fec9e3eda5e336a946fece1e791d560706eef15bc8bb497ec99cbbbb60001b612222565b6142dd7f56e2b9a180e8f3066a174f199c7c9539bc74550da50c5cae65a2e3dcd12b300c60001b612222565b61432681606560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615cc6565b846143319190616a46565b935061435f7f3b498927d2a46a593f986abba99e090ae8236ace85615bd7b2a545356d511a0660001b612222565b61438b7fbed0149d1336af4d6812199e9080b3de53f2e5c610f80eb54004c8147262ad4860001b612222565b8294505050505b935093915050565b60006143c87fdcf0d3dbe4525753941f9c962e0a1fce68eab9f908043fe4008c61575f5c6c0160001b612222565b6143f47f0a962e80b1a8dd9c312215f0583bd40873b7798cd78d6352c0e03ab1aad270b460001b612222565b6144207f446c4c351dc7dfe51cd5c774e01db6ebff8b6fdcfb45aa45e4b597234f8aec7c60001b612222565b61442b868484614d1c565b6144577f85ad89df498b073cb529dab5ea6469316fb4ce00ff004b9041963b2d1f72716160001b612222565b6144837f55e5e5f5d62e6238c5ed2bed91e749fed22c9df10b31eec7d0fd0b087b9447ec60001b612222565b614518868686606b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546145139190616a46565b6150e3565b6145447ffcc9d217264f5adfb0d59f59adaf6d3956b51d237d913f540dcf7dc28971b5e960001b612222565b6145707fc9db25bad611b6cc57f5384f56d6d289efb28ecb32bb70472b4788a99127836860001b612222565b83606560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546145bb9190616a46565b606560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061462a7f04ed647a2497c19a0928c1138f22b7b65b8abec400de6335290b3290905e19bd60001b612222565b6146567f6570a160b3732ffbc505a3089dc446555413be65d027d9386cc5ccfa7052066460001b612222565b6001905095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156146d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146ca906171b7565b60405180910390fd5b6146df60008383614d12565b80603560008282546146f19190616a46565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546147479190616a46565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516147ac9190615f7d565b60405180910390a36147c060008383614d17565b5050565b6147f07f9f02bfa7c22ce5050d0014dcb9065a1a5f85e836cd4fb4132f7506949377e6c660001b61230a565b61481c7ff015fccd34023af9029a61c3aff7897ea89f9523c30842911809a90b5b22b49d60001b61230a565b6148487f2a907a701794cdfc827e2b3a6ed1076d8cff0866f7814f8fcd7d9a7a04827b5c60001b61230a565b6148747f6b80a95ff435661019124dc6cebcfe9b169da9e7644f8990d55be90bba690cfb60001b61230a565b3373ffffffffffffffffffffffffffffffffffffffff1661010260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635aef7de66040518163ffffffff1660e01b815260040160206040518083038186803b1580156148f457600080fd5b505afa158015614908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061492c9190616602565b73ffffffffffffffffffffffffffffffffffffffff1614614982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161497990617223565b60405180910390fd5b6149ae7f49fe7b16686bd91cbba626adf6895dac5bf6146b8bd097c3ac48d0c2e1b821e360001b61230a565b565b6149dc7f07cb9189da5cf9a0a0f7a6e45f8bd7438a465aa65e36cb47eba73948326dbcbb60001b612222565b614a087f619ca1aa528dedf7d6b630fc7f32fd749a72074ea13737b9177c7de42dea2e4960001b612222565b614a347fe219c3636d4dcaefcf19169e14be196acf714632d807bde53b2ec77ebe868a9460001b612222565b614a3c610e03565b81614a479190616b25565b606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614af5906172b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b6590617347565b60405180910390fd5b614b79838383614d12565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015614c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614bf7906173d9565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254614c959190616a46565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614cf99190615f7d565b60405180910390a3614d0c848484614d17565b50505050565b505050565b505050565b614d487f9f2f3948f298f4e3bfe1d687aff1d0ed94c064c98a65010fd2770d031bf93dd560001b612222565b614d747f9f69e7659720fd14e0fd5d5e48691d3c8f8f6b7c72b7b5ed206ab07d3ba1ddad60001b612222565b614da07fd05d8bdce6bc7bd70fae7e320e96f48927612235adf06b7b5cf6fe8f11a3f60e60001b612222565b6000606560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415614f0d57614e147f8d00266b50c88f0bdac0311da45413c3fc405313cd41d49ed603802ac37c22cf60001b612222565b614e407f92e0de103064af694a62e0201c33d97bac97b26015de4428fe6aded328fd21b660001b612222565b614e6c7fdb7493cde1a7da614321dd2ae97f0740c34f0072cd0e573ea0cb2f23fcf99c7860001b612222565b43606960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614edc7fc9ec117278bb037f5f6a2742aecbe4ee697723196374584a2abbef599687e6f560001b612222565b614f087fcbb21d6dc994375c1177dc5e52a55feea5d466bbc81d53bada9085f70f03b40b60001b612222565b6150de565b614f397fb341d899a9cd1af84905afed01f974321912c55b04d4ad8ae5ae496b24bb96ee60001b612222565b614f657f96b3f9dbd3adc2fc5b1ba6f0f7cf390718b56327016922d0e2bd43bd2a4e64bf60001b612222565b614f917fb22905d1e40561ca9e449fadf2ee56c41c4bb16dd5de4bb4d7f6aafa8d55f68e60001b612222565b600080614f9f858585613e12565b91509150614fcf7fb81b34db80309cd536227c088eb85a302239c3e555714f9eb701447d48ec041260001b612222565b614ffb7fea573f12fcc9e36ce890dc54dd93f087065d9363ae54a3366860593eb0b0a06160001b612222565b80606660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061506b7ffcd8fe9c27797467ce149b3be591b5980d51812730e38a8398c0722e169de98b60001b612222565b6150977fe7ec1c2507975d2bd26654f5999ccaa65690bb5ad4b01d34d265ae4216bf61dc60001b612222565b81606960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b505050565b61510f7fc3de6e55d9238589c19600348a7462b4824b511aac98416014d6a8139d1931be60001b612222565b61513b7f8c204125deff78ecfe8dec181a106832cb9855d0a070bcb8fd00bc3ce96cd17860001b612222565b6151677f0ead19ac1d69b0bac901c4696f693d181526e80e63544e49b25348b857448ebd60001b612222565b6000606b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506152137f2d4b1e03dbdc855bb13c336f43604a65ab1add2670f8310246a5babc2e9e3c9d60001b612222565b61523f7fb5737eb0bb067383c4ca1d948ad89a87c92c5b591d0aa095a0de9228716de46060001b612222565b6000816000015411156154a5576152787fdc1cadbbc95678c82529d7b30fb88216c6d6eaf486564ee4f46e23c68d7e15b460001b612222565b6152a47f0a10b410c56d5dff7d6f8e6f947ad2b902100e28f7d7db6f2a76d0bd207030e760001b612222565b6152d07f1f3ccab013d0cfadabc4d256ba1632a761b1f1dabb9cc02e829ed933dbc5584860001b612222565b600081600101546b033b2e3c9fd0803ce8000000606660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484600001546153339190616a9c565b61533d9190616b25565b6153479190616b56565b90506153757fe26f063ae861433e03fdf4238472e25c2491f175ecf52a0d4ce374f6040e8f5b60001b612222565b6153a17f238b0115a784ddb35be95d7ed6f71a14d0f813d83d6570bed19bcca6c5241c6960001b612222565b8082600201546153b19190616a46565b82600201819055506153e57f4369f5c52bb1ac2a116dbd2abfa82196e43be8dc0a928d56305036781a01509b60001b612222565b6154117f99a79150fb4acd2458b623f10efb03ec92b25e72bb7b1aa9d689072493e0629f60001b612222565b80606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461545c9190616a46565b606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550506154d2565b6154d17fb5b3039ea7020f0ae76c53415d357da7dcf6fc006caa564e27e56139b9536a5060001b612222565b5b6154fe7f91bdca43a2d7c91d064b49a8f58d63087441292eced9f5b07e895318c3201e4360001b612222565b61552a7fa0a6ebbbc00b4b0299254d579d7b711bd5fb28bd4fe9f339d29ab5c4948af58160001b612222565b81816000018190555061555f7f258be86d934f78c8d7f596596dbd5caad975b7ef347dcdf9833fdfd21abf346660001b612222565b61558b7fb13bba720df960bba4eaf062d57c3a60665db5d3f306619e41f5b317ba4998e560001b612222565b6b033b2e3c9fd0803ce8000000606660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836155e39190616a9c565b6155ed9190616b25565b816001018190555050505050565b60006156297f260c7f9d53ba7fff5ebc2da2e67948d158c3cc638ecde212851524cd6a39e1c460001b612222565b6156557f5803e952f39b1ecc124c6aaeeab7c1d70ef02c14cb6dfa2c8431310c11f8970260001b612222565b6156817f97ca04dbf1410c4edfcb88ae805b299329d9a1491dff0231489548071407507760001b612222565b61568c858484614d1c565b6156b87f3013024dd7775a96faeef0951745ac63d52b55d8841484614a5848ec137e9b0060001b612222565b6156e47f9a0043d2098adaf154b81ea34c776ddae0bff0dff00c1e72260a79d5ac38a4a160001b612222565b61576e8585606b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546150e3565b6157997e91d9116c4cf7ec5ee2cc3f7c73179847844dc0612dbb0bb3154277c3084f9060001b612222565b6157c57fb6a265fb7c572d26b051f845da5c62471a85922f0d9cdce6187f8efa97a4bad260001b612222565b6000606b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506158717fa4a3dc0dbc2c2025ed0cda0617b91b253a6211fd6f5cd83aafc52a8cf467cd9960001b612222565b61589d7f15f72fae27ea97e7181c9eadbbdbf5bc5a63141e3056171dc11d080de7aa86f560001b612222565b6000816002015490506158d27ff0d092072688fedd1c95cf3f6204a0af1c1d1e3710921cd6ef2eec2a9503d84c60001b612222565b6158fe7f756788373c8e8cc5dd0519f90891ae4e57d5ce700f0faf1f67fd88b1a597ec6a60001b612222565b600082600201819055506159347fae334c477b7cb298af643311480ecc564087ebb2eaca5e79db25d9973695569860001b612222565b6159607fb76c62aa5bf44e1c6b5a11e71a66ff4b25f6f0f17bee3703a167b7a7fba30f0560001b612222565b808260030160008282546159749190616a46565b925050819055506159a77f9a156ac814ec137ab4680e72759ff879b485206eb6693681dfb237793b6c5b1f60001b612222565b6159d37f43ebb6f0efdafe5b7b183f5f9bcef9afac8bcb93a0753ba12fd0dcfa86999c4760001b612222565b80606760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615a1e9190616a46565b606760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615a8d7fca929ab17c3de905b97add695294dd494d446f554b6abfadd381589c8c34aa0860001b612222565b615ab97f89ce4d4ff977695bb1b051e8be917f6cc4247c8c29c5a961c90330eaf8e95ed060001b612222565b8092505050949350505050565b6000819050919050565b615ad981615cf3565b615b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615b0f9061746b565b60405180910390fd5b80615b457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b615ac6565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060615b9483615cf3565b615bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615bca906174fd565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff1684604051615bfb9190617564565b600060405180830381855af49150503d8060008114615c36576040519150601f19603f3d011682016040523d82523d6000602084013e615c3b565b606091505b5091509150615c63828260405180606001604052806027815260200161757c60279139615d06565b9250505092915050565b6000819050919050565b615c8081615ad0565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6000816b033b2e3c9fd0803ce800000084615ce19190616a9c565b615ceb9190616b25565b905092915050565b600080823b905060008111915050919050565b60608315615d1657829050615d66565b600083511115615d295782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615d5d9190615e2e565b60405180910390fd5b9392505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015615dcf578082015181840152602081019050615db4565b83811115615dde576000848401525b50505050565b6000601f19601f8301169050919050565b6000615e0082615d95565b615e0a8185615da0565b9350615e1a818560208601615db1565b615e2381615de4565b840191505092915050565b60006020820190508181036000830152615e488184615df5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000615e8f82615e64565b9050919050565b615e9f81615e84565b8114615eaa57600080fd5b50565b600081359050615ebc81615e96565b92915050565b6000819050919050565b615ed581615ec2565b8114615ee057600080fd5b50565b600081359050615ef281615ecc565b92915050565b60008060408385031215615f0f57615f0e615e5a565b5b6000615f1d85828601615ead565b9250506020615f2e85828601615ee3565b9150509250929050565b60008115159050919050565b615f4d81615f38565b82525050565b6000602082019050615f686000830184615f44565b92915050565b615f7781615ec2565b82525050565b6000602082019050615f926000830184615f6e565b92915050565b600060208284031215615fae57615fad615e5a565b5b6000615fbc84828501615ead565b91505092915050565b600080600060608486031215615fde57615fdd615e5a565b5b6000615fec86828701615ead565b9350506020615ffd86828701615ead565b925050604061600e86828701615ee3565b9150509250925092565b60006020828403121561602e5761602d615e5a565b5b600061603c84828501615ee3565b91505092915050565b600060408201905061605a6000830185615f6e565b6160676020830184615f6e565b9392505050565b6000806040838503121561608557616084615e5a565b5b600061609385828601615ead565b92505060206160a485828601615ead565b9150509250929050565b60006080820190506160c36000830187615f6e565b6160d06020830186615f6e565b6160dd6040830185615f6e565b6160ea6060830184615f6e565b95945050505050565b600060ff82169050919050565b616109816160f3565b82525050565b60006020820190506161246000830184616100565b92915050565b6000819050919050565b61613d8161612a565b811461614857600080fd5b50565b60008135905061615a81616134565b92915050565b60006020828403121561617657616175615e5a565b5b60006161848482850161614b565b91505092915050565b600080600080608085870312156161a7576161a6615e5a565b5b60006161b587828801615ead565b94505060206161c687828801615ee3565b93505060406161d787828801615ee3565b92505060606161e887828801615ead565b91505092959194509250565b6000819050919050565b600061621961621461620f84615e64565b6161f4565b615e64565b9050919050565b600061622b826161fe565b9050919050565b600061623d82616220565b9050919050565b61624d81616232565b82525050565b60006020820190506162686000830184616244565b92915050565b600061627982616220565b9050919050565b6162898161626e565b82525050565b60006020820190506162a46000830184616280565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6162ec82615de4565b810181811067ffffffffffffffff8211171561630b5761630a6162b4565b5b80604052505050565b600061631e615e50565b905061632a82826162e3565b919050565b600067ffffffffffffffff82111561634a576163496162b4565b5b61635382615de4565b9050602081019050919050565b82818337600083830152505050565b600061638261637d8461632f565b616314565b90508281526020810184848401111561639e5761639d6162af565b5b6163a9848285616360565b509392505050565b600082601f8301126163c6576163c56162aa565b5b81356163d684826020860161636f565b91505092915050565b600080604083850312156163f6576163f5615e5a565b5b600061640485828601615ead565b925050602083013567ffffffffffffffff81111561642557616424615e5f565b5b616431858286016163b1565b9150509250929050565b61644481615e84565b82525050565b600060208201905061645f600083018461643b565b92915050565b61646e81615ec2565b82525050565b60808201600082015161648a6000850182616465565b50602082015161649d6020850182616465565b5060408201516164b06040850182616465565b5060608201516164c36060850182616465565b50505050565b60006080820190506164de6000830184616474565b92915050565b60006164ef82616220565b9050919050565b6164ff816164e4565b82525050565b600060208201905061651a60008301846164f6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061656757607f821691505b6020821081141561657b5761657a616520565b5b50919050565b7f434f4e54524f4c4c455200000000000000000000000000000000000000000000600082015250565b60006165b7600a83615da0565b91506165c282616581565b602082019050919050565b600060208201905081810360008301526165e6816165aa565b9050919050565b6000815190506165fc81615e96565b92915050565b60006020828403121561661857616617615e5a565b5b6000616626848285016165ed565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061668b602883615da0565b91506166968261662f565b604082019050919050565b600060208201905081810360008301526166ba8161667e565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006166f7601f83615da0565b9150616702826166c1565b602082019050919050565b60006020820190508181036000830152616726816166ea565b9050919050565b7f53686f756c6420776974686472617720706f73697469766520616d6f756e7400600082015250565b6000616763601f83615da0565b915061676e8261672d565b602082019050919050565b6000602082019050818103600083015261679281616756565b9050919050565b7f4e6f7420656e6f75676820746f6b656e207374616b6564000000000000000000600082015250565b60006167cf601783615da0565b91506167da82616799565b602082019050919050565b600060208201905081810360008301526167fe816167c2565b9050919050565b600060408201905061681a600083018561643b565b6168276020830184615f6e565b9392505050565b61683781615f38565b811461684257600080fd5b50565b6000815190506168548161682e565b92915050565b6000602082840312156168705761686f615e5a565b5b600061687e84828501616845565b91505092915050565b7f7769746864726177207472616e73666572206661696c65640000000000000000600082015250565b60006168bd601883615da0565b91506168c882616887565b602082019050919050565b600060208201905081810360008301526168ec816168b0565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b600061694f602c83615da0565b915061695a826168f3565b604082019050919050565b6000602082019050818103600083015261697e81616942565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b60006169e1602c83615da0565b91506169ec82616985565b604082019050919050565b60006020820190508181036000830152616a10816169d4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000616a5182615ec2565b9150616a5c83615ec2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115616a9157616a90616a17565b5b828201905092915050565b6000616aa782615ec2565b9150616ab283615ec2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615616aeb57616aea616a17565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000616b3082615ec2565b9150616b3b83615ec2565b925082616b4b57616b4a616af6565b5b828204905092915050565b6000616b6182615ec2565b9150616b6c83615ec2565b925082821015616b7f57616b7e616a17565b5b828203905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000616be6602583615da0565b9150616bf182616b8a565b604082019050919050565b60006020820190508181036000830152616c1581616bd9565b9050919050565b7f596f75206e65656420746f207374616b65206120706f73697469766520746f6b60008201527f656e20616d6f756e740000000000000000000000000000000000000000000000602082015250565b6000616c78602983615da0565b9150616c8382616c1c565b604082019050919050565b60006020820190508181036000830152616ca781616c6b565b9050919050565b6000606082019050616cc3600083018661643b565b616cd0602083018561643b565b616cdd6040830184615f6e565b949350505050565b7f7472616e7366657246726f6d206661696c65642c206d616b652073757265207960008201527f6f7520617070726f76656420746f6b656e207472616e73666572000000000000602082015250565b6000616d41603a83615da0565b9150616d4c82616ce5565b604082019050919050565b60006020820190508181036000830152616d7081616d34565b9050919050565b7f474f4f44444f4c4c415200000000000000000000000000000000000000000000600082015250565b6000616dad600a83615da0565b9150616db882616d77565b602082019050919050565b60006020820190508181036000830152616ddc81616da0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000616e3f602483615da0565b9150616e4a82616de3565b604082019050919050565b60006020820190508181036000830152616e6e81616e32565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000616ed1602283615da0565b9150616edc82616e75565b604082019050919050565b60006020820190508181036000830152616f0081616ec4565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000616f63602183615da0565b9150616f6e82616f07565b604082019050919050565b60006020820190508181036000830152616f9281616f56565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000616ff5602283615da0565b915061700082616f99565b604082019050919050565b6000602082019050818103600083015261702481616fe8565b9050919050565b7f52455055544154494f4e00000000000000000000000000000000000000000000600082015250565b6000617061600a83615da0565b915061706c8261702b565b602082019050919050565b6000602082019050818103600083015261709081617054565b9050919050565b6000815190506170a681615ecc565b92915050565b6000602082840312156170c2576170c1615e5a565b5b60006170d084828501617097565b91505092915050565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b6000617135602f83615da0565b9150617140826170d9565b604082019050919050565b6000602082019050818103600083015261716481617128565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006171a1601f83615da0565b91506171ac8261716b565b602082019050919050565b600060208201905081810360008301526171d081617194565b9050919050565b7f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64600082015250565b600061720d602083615da0565b9150617218826171d7565b602082019050919050565b6000602082019050818103600083015261723c81617200565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061729f602583615da0565b91506172aa82617243565b604082019050919050565b600060208201905081810360008301526172ce81617292565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000617331602383615da0565b915061733c826172d5565b604082019050919050565b6000602082019050818103600083015261736081617324565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006173c3602683615da0565b91506173ce82617367565b604082019050919050565b600060208201905081810360008301526173f2816173b6565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000617455602d83615da0565b9150617460826173f9565b604082019050919050565b6000602082019050818103600083015261748481617448565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006174e7602683615da0565b91506174f28261748b565b604082019050919050565b60006020820190508181036000830152617516816174da565b9050919050565b600081519050919050565b600081905092915050565b600061753e8261751d565b6175488185617528565b9350617558818560208601615db1565b80840191505092915050565b60006175708284617533565b91508190509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d6282cf7f1ba9171eebd9b3bb17fcdcff22626f8a91e02b6c84567c5558f050964736f6c63430008080033",
880
- "deployedBytecode": "0x6080604052600436106101d65760003560e01c806306fdde03146101db578063095ea7b3146102065780630c1cd7f31461024357806318160ddd1461026e5780631b3c90a814610299578063213b329e146102b057806322dec37b146102db57806323b872dd1461031857806325d5971f1461035557806328e964e91461037e5780632e42a896146103bc578063313ce567146103fc57806331903da1146104275780633659cfe614610464578063394254e31461048d57806339509351146104b65780633d9a12cc146104f35780633e6326fc146105305780634162169f1461055b57806347b3e7e8146105865780634f1db7f6146105c35780634f1ef286146106015780635aef7de61461061d57806370a08231146106485780637a210ed3146106855780637bcbb9ff146106ae578063846141b3146106eb5780638ccb267c1461072857806395d89b4114610751578063a457c2d71461077c578063a694fc3a146107b9578063a87430ba146107e2578063a9059cbb1461081f578063b46aa5271461085c578063bf8e9b6e14610887578063c6710629146108b2578063c76279a2146108ef578063c7b8981c14610918578063d520844614610943578063dd62ed3e1461096c578063e1758bd8146109a9575b600080fd5b3480156101e757600080fd5b506101f06109d4565b6040516101fd9190615e2e565b60405180910390f35b34801561021257600080fd5b5061022d60048036038101906102289190615ef8565b610a66565b60405161023a9190615f53565b60405180910390f35b34801561024f57600080fd5b50610258610a84565b6040516102659190615f7d565b60405180910390f35b34801561027a57600080fd5b50610283610b4e565b6040516102909190615f7d565b60405180910390f35b3480156102a557600080fd5b506102ae610b58565b005b3480156102bc57600080fd5b506102c5610e03565b6040516102d29190615f7d565b60405180910390f35b3480156102e757600080fd5b5061030260048036038101906102fd9190615f98565b610e92565b60405161030f9190615f7d565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190615fc5565b610eaa565b60405161034c9190615f53565b60405180910390f35b34801561036157600080fd5b5061037c60048036038101906103779190616018565b610fa2565b005b34801561038a57600080fd5b506103a560048036038101906103a09190615f98565b6116b1565b6040516103b3929190616045565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de919061606e565b61174b565b6040516103f394939291906160ae565b60405180910390f35b34801561040857600080fd5b50610411611788565b60405161041e919061610f565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190615f98565b611815565b60405161045b9190615f7d565b60405180910390f35b34801561047057600080fd5b5061048b60048036038101906104869190615f98565b61182d565b005b34801561049957600080fd5b506104b460048036038101906104af9190616160565b6119b6565b005b3480156104c257600080fd5b506104dd60048036038101906104d89190615ef8565b6119b9565b6040516104ea9190615f53565b60405180910390f35b3480156104ff57600080fd5b5061051a6004803603810190610515919061618d565b611a65565b6040516105279190615f7d565b60405180910390f35b34801561053c57600080fd5b50610545611ebd565b6040516105529190616253565b60405180910390f35b34801561056757600080fd5b50610570611ee4565b60405161057d919061628f565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a89190615f98565b611f0b565b6040516105ba9190615f7d565b60405180910390f35b3480156105cf57600080fd5b506105ea60048036038101906105e5919061606e565b611f23565b6040516105f8929190616045565b60405180910390f35b61061b600480360381019061061691906163df565b612075565b005b34801561062957600080fd5b506106326121b2565b60405161063f919061644a565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a9190615f98565b6121d9565b60405161067c9190615f7d565b60405180910390f35b34801561069157600080fd5b506106ac60048036038101906106a79190616160565b612222565b005b3480156106ba57600080fd5b506106d560048036038101906106d09190615f98565b612225565b6040516106e29190615f7d565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d9190615f98565b6122f2565b60405161071f9190615f7d565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a9190616160565b61230a565b005b34801561075d57600080fd5b5061076661230d565b6040516107739190615e2e565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e9190615ef8565b61239f565b6040516107b09190615f53565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db9190616018565b61248a565b005b3480156107ee57600080fd5b5061080960048036038101906108049190615f98565b612894565b60405161081691906164c9565b60405180910390f35b34801561082b57600080fd5b5061084660048036038101906108419190615ef8565b6129d6565b6040516108539190615f53565b60405180910390f35b34801561086857600080fd5b506108716129f4565b60405161087e9190615f7d565b60405180910390f35b34801561089357600080fd5b5061089c6129fb565b6040516108a99190615f7d565b60405180910390f35b3480156108be57600080fd5b506108d960048036038101906108d49190615f98565b612a8f565b6040516108e69190615f7d565b60405180910390f35b3480156108fb57600080fd5b5061091660048036038101906109119190616018565b612b29565b005b34801561092457600080fd5b5061092d612c1a565b60405161093a9190615f7d565b60405180910390f35b34801561094f57600080fd5b5061096a60048036038101906109659190616160565b612d0e565b005b34801561097857600080fd5b50610993600480360381019061098e919061606e565b612d11565b6040516109a09190615f7d565b60405180910390f35b3480156109b557600080fd5b506109be612d98565b6040516109cb9190616505565b60405180910390f35b6060603680546109e39061654f565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0f9061654f565b8015610a5c5780601f10610a3157610100808354040283529160200191610a5c565b820191906000526020600020905b815481529060010190602001808311610a3f57829003601f168201915b5050505050905090565b6000610a7a610a73612ecd565b8484612ed5565b6001905092915050565b6000610ab17e9620550f301330b77900d5215177d311072abec2777f836b3932ffbde6cbe760001b612d0e565b610add7f29c0f4f9b55d29111401073c1952f3e7041ab7286a569d04b27b8ea24bfe3bbf60001b612d0e565b610b097ffa9fa15fd73c92b576fe2b3dfc4e8fa3c87d398bb93c18930b335194aad0c2af60001b612d0e565b606a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000603554905090565b610b847f9c5717a5273d3fab05262c796e5246ceb867d3d45a0ff49f1411f2278662373060001b61230a565b610bb07f56e6c995e22874d64a6b2efd83710b4bae6637dabd3a55f25af73f3fce74d8be60001b61230a565b610bdc7fedb0d005658a245effc5e3cd550a9ce28f7d371ddbdf4ce88a00e1bd466bb72960001b61230a565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff1660e01b8152600401610c36906165cd565b60206040518083038186803b158015610c4e57600080fd5b505afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190616602565b61010260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610cf37ff98b8297ddf2f8b42fe826b560ddc5a49772c62ceb432e79c9f31ce8c2f103df60001b61230a565b610d1f7f0572be5a4991edb4899d66523520ae1c3626176f9afec3621cc85b6f53abeac060001b61230a565b61010260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635aef7de66040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc09190616602565b61010360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610e317fd0d6d852fc4adb4abd482abd8dd4409765b5b33a967cccf63aac220f7350e3e660001b612d0e565b610e5d7fb58709479411357bf6ffa4cc42a44936ff13fb91bf505486e75ff136c9728a3660001b612d0e565b610e897f67282fb427c1fcd34d6adcb1d3d9ef8ebed4fbb65b1015cdd7ec9f2d1845420260001b612d0e565b6207e900905090565b60676020528060005260406000206000915090505481565b6000610eb78484846130a0565b6000603460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f02612ecd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f79906166a1565b60405180910390fd5b610f9685610f8e612ecd565b858403612ed5565b60019150509392505050565b6002610137541415610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe09061670d565b60405180910390fd5b60026101378190555061101e7f28142f85c8a27dee08593109f434db5a308a50e8e6df157b6ade3ae7600a4a0760001b612d0e565b61104a7fdfefc88be82ca627d1c117a75865ae80e9a6bceefdba220cdf831c31dbf4d6d660001b612d0e565b6110767fe7a3cbff2f7cc49dbfb015ac0a53d141d5643a9d287cf670d226207254d2f34360001b612d0e565b600061108930611084612ecd565b611f23565b5090506110b87f01ba18915188db8e49928ec4b97433c0d4e57deb09ab40cf6d3239f6be6fcd7260001b612d0e565b6110e47fd1ece1386663980e8efc8e6bac45286a36472274b12a772e6defc5a326a3983a60001b612d0e565b600082141561114d576111197ff7934c797572ea5f0a990cbbb028187ab43def2291a81739b4f54d3bedb16e5f60001b612d0e565b6111457f38a1962cce7003a48d32023020825a661332ea20e4d9ede47bcc96a7ef59d17660001b612d0e565b80915061117a565b6111797f975b8439f08abd6467927da176c3fe0d41a75fe3f4a764d185173cec9cbc05db60001b612d0e565b5b6111a67fa19967d9d6713094e12e65ea278c6f44f24051122616753bc86aaf6c8c89316860001b612d0e565b6111d27f2f2aad927d4262f9acecd5654762bec3265d7905a9d63b8b00f8d10d18c5735d60001b612d0e565b6111fe7fa475160fb47b1104bb3b72aca73aa1b5e7b338a90776c00744fe8572abd0fa3d60001b612d0e565b60008211611241576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123890616779565b60405180910390fd5b61126d7f0a85f08f9dd5dac23d6b6959d47876df81e2e769da51b9ba1af4f499f6cfb0f560001b612d0e565b6112997fa4d98b15168ce4af9e8000a28883058581ba870b778dba9611b423c9a937207860001b612d0e565b6112c57f23c7f13fefab627cdb65648b2bacb75f1a63569fb427a089bbd7d78a26d79ad460001b612d0e565b6112f17f77dd6555a1b4f3b3ce1a542cf5c1d2b9f2872045ddd28f9e481788d174c35bb360001b612d0e565b81811015611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b906167e5565b60405180910390fd5b6113607fc7ed66395935532df15ffea40d228e123e0608c7e77e33b0142222d62d72d48060001b612d0e565b61138c7f06e433e2a6d19265ddc4c7302c6e7a891c4ad5fcf76a800da66cf953bdeb98bd60001b612d0e565b6113b87fb2caa84a71ef183e99be4cc29c03e01b2425a3a57d5c3ca8e2b6df55061292f160001b612d0e565b60008290506113e97fdeba3422af7e17277789428d34afd73321860be8dcaf640319cae1306fe9b87960001b612d0e565b6114157f07967ba9264c78e521108397033f1ceb09739a673dee72590e592dbbe579bce760001b612d0e565b611426611420612ecd565b846132c6565b6114527f2a107c63ec5894a3100e9dfbce29639455c2b6a781fba1211823c4b0d2c21df660001b612d0e565b61147e7f08dfce957222237f38752a06ec181c394f53a63d25d93c296cb427baca89814660001b612d0e565b6114933061148a612ecd565b8560004361349f565b506114c07ffc52ff7c4683a6b979a531c9fec10c6d008af50552c4e46b8db1900ab374032960001b612d0e565b6114ec7f1e73881fd59808d2298d9af004031830327232da5e607029c86b7523b5654e9060001b612d0e565b6114fc6114f7612ecd565b613768565b506115297f56c4f9e228263c1f024c262870435d1dbe12d78d3602fa921783b6036bc927a760001b612d0e565b6115557f40ada2d08fc93ed05707066d977c2e5aa49269958df4397e465a99dcb3ff7f4560001b612d0e565b6115817ff906fcf9d3019eef2d25ce785fe511f8ffd0d0d98db1617bd03ca41af3d49f6660001b612d0e565b61016960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115c8612ecd565b836040518363ffffffff1660e01b81526004016115e6929190616805565b602060405180830381600087803b15801561160057600080fd5b505af1158015611614573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611638919061685a565b611677576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166e906168d3565b60405180910390fd5b6116a37fd99d6080ebbd4abb0547d5b9b5387839f553f9270508d706034d72e3bc7594cc60001b612d0e565b505060016101378190555050565b6000806116e07fb0309a15254c8c503e2660d855fd5822161a0a21b55fc1b94a7cb8011f52103760001b612d0e565b61170c7fce2570795852730fbad59d86ddea2a4cee3150c7043cf5b2d918863c4bb4432b60001b612d0e565b6117387f0189220847b95933e7a48cf00142fc02dfc3607e35c3ed738d03578aa130a92e60001b612d0e565b6117423084611f23565b91509150915091565b606b602052816000526040600020602052806000526040600020600091509150508060000154908060010154908060020154908060030154905084565b60006117b67fe101a9bf63f899b57bc4ac144f3a716d2f4106a2a18b4d177b5c1c54c12ae9d160001b612d0e565b6117e27f6982da04784614f0d22474e3d6558c11254f377138ce7ed221ffe8e237027f7960001b612d0e565b61180e7fc1f5e3831e96c5e48d2c44b021932cafb4441a4adf07a7aec48661d98723405d60001b612d0e565b6002905090565b60686020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614156118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b390616965565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166118fb613b5b565b73ffffffffffffffffffffffffffffffffffffffff1614611951576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611948906169f7565b60405180910390fd5b61195a81613bb2565b6119b381600067ffffffffffffffff811115611979576119786162b4565b5b6040519080825280601f01601f1916602001820160405280156119ab5781602001600182028036833780820191505090505b506000613c41565b50565b50565b6000611a5b6119c6612ecd565b8484603460006119d4612ecd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a569190616a46565b612ed5565b6001905092915050565b6000611a937fff74411b215cedb548172db27bab66164c1c67e90807a2f38312f585fbcd8b1d60001b612222565b611abf7f47327316a9aa8952a1352c4ef6949ad9e65057aebe572b5dbedb93e0d12ed34c60001b612222565b611aeb7f126d9155d4744b24712090362784383354b0ed676e369651e11912141662383560001b612222565b6000606b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250509050611bca7f6912bf24cbdfced24d7f35256953e303d09e4143de2761d6bb6ff60aa9a9de0460001b612222565b611bf67f136976903dee2864de2b3090b23389495b10fc1943c1fe8b40ca27617b80418f60001b612222565b6000611c247fb481fd545af72d9766d13c94cee06abe1369a4eaa33c86c4dac1d1fbdbe23b7560001b612222565b611c507f49836ae64473045bcd445281fe03e425c5b4e6b3a4a29bfcbb19b0416ea9665e60001b612222565b6000606560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611e2b57611cc37f0eaf8b1aa6423d4792c78ac1e4778c81064a0aa18394d8189ed2948736629c1460001b612222565b611cef7f7e478ce109e6584158cd8eceeebe8db9f0923dbcc61518efce7263bed436a7d660001b612222565b611d1b7fbeedeb3287cc7c59de1dd851f912029607061a387af7019971bc71d1d2a3631d60001b612222565b6000611d28888888613e12565b915050611d577f76cc42fa9cc0178e5dba827c3359c4d65c72893df078b47bc52ab3cf8207aecf60001b612222565b611d837f29b02bec1c5b499efd1c562fff2e13d95750ff05755d73ec9a8afc1109cdfacb60001b612222565b82604001519150611db67ff912c00cc83248ce9e843b2a6fb46e56e6ed5ea6edb131544a0379f666a0fb3160001b612222565b611de27f0a1dd9da8d9e489972906ed877455d46bad46bae056651df93884b7c45bab23560001b612222565b82602001516b033b2e3c9fd0803ce8000000828560000151611e049190616a9c565b611e0e9190616b25565b611e189190616b56565b82611e239190616a46565b915050611e58565b611e577fdd0f6fad3bad87d5bdd02b0fe966074a3f0d6b552045d21f8e745bcf9d56ddfb60001b612222565b5b611e847ff38d6be17138c1738b1f376263ac1d0fc2eeefedb55eee61b78b765ef26e907a60001b612222565b611eb07f3bd574e627a13d033232e80ebd13256d06cf66c4dc2ad27022e0e0f6e0aa7b0e60001b612222565b8092505050949350505050565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61010260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606a6020528060005260406000206000915090505481565b600080611f527f5e60efb37d665722077988fe5711b9f9687a339a01c296ad3d78ab61573d46ef60001b612222565b611f7e7f79a45f1dbb279c9637ddd9817b9845192b8797d43a3d30fa7af71a4b6297d9b660001b612222565b611faa7f672edddbbfbc4b534efea9ea617a9fe576286083bd7445b8cde5b70a414f56c360001b612222565b606b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154606560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915091509250929050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161415612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb90616965565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612143613b5b565b73ffffffffffffffffffffffffffffffffffffffff1614612199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612190906169f7565b60405180910390fd5b6121a282613bb2565b6121ae82826001613c41565b5050565b61010360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000603360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b50565b60006122537fd91b472563633b49f56ed9ecb872759c76d77f0cfd8ed3c3b5069f27709875fa60001b612222565b61227f7f5cb30747cdf8d32e9a1504a9cf6816ac46ed7b0cb010ce4111f720af98f5882960001b612222565b6122ab7fd5b7e11523b32f10f1d8d4bda18a59964fbe7ba2ad600a1231c620ead576b53e60001b612222565b606660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60696020528060005260406000206000915090505481565b50565b60606037805461231c9061654f565b80601f01602080910402602001604051908101604052809291908181526020018280546123489061654f565b80156123955780601f1061236a57610100808354040283529160200191612395565b820191906000526020600020905b81548152906001019060200180831161237857829003601f168201915b5050505050905090565b600080603460006123ae612ecd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290616bfc565b60405180910390fd5b61247f612476612ecd565b85858403612ed5565b600191505092915050565b6124b67f6292db0ea3688ee3d0d44e2c9522fb90519529f4c9a82d78fbd91f7b6ab9922760001b612d0e565b6124e27fd7aa9ed0203a552ee3191b592d7bb7727e81b90002a8afa2e5c6d72d2e15171860001b612d0e565b61250e7ff33628cd8de50475de805913c71cde6eb7d210f6327271294a81fddda011e88360001b612d0e565b61253a7f77e0dfecb00f2893b4a7affe55217c541844c03d310a0e5a2eda4de3a4bc7f9260001b612d0e565b6000811161257d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257490616c8e565b60405180910390fd5b6125a97f4dc8db5c2a343c192f399caf67df2840dc500b9e0c5128dd64b888f234a3139860001b612d0e565b6125d57f0818441691f25b902243405331c9df42513679a983b3e3cdb06327ba5829546760001b612d0e565b6126017f597bbe6583f10e901df00e42385d29e6c637676cc9cc8152c07397f7106bbd4260001b612d0e565b61262d7f3b4fb1a6a7ebb9252908b38d81b2d043c3f6c36db15a611fc6d888bb95da949b60001b612d0e565b61016960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd612674612ecd565b30846040518463ffffffff1660e01b815260040161269493929190616cae565b602060405180830381600087803b1580156126ae57600080fd5b505af11580156126c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e6919061685a565b612725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271c90616d57565b60405180910390fd5b6127517fa945ac930c4f21a141c0a7efab57097f4917d82eaf657cd74951b103a054d58a60001b612d0e565b61277d7f0b2b0c88e05d60eecf00083a34dda75cdbfdd048e17e05d265433762579b66f560001b612d0e565b6127a97f0539207887ee8def2c57b3e5467622fa1c72c1a83e2efeb8a710cedb1e6d41ac60001b612d0e565b6127be306127b5612ecd565b8360004361439a565b506127eb7f72d24d4c6575872656e0ccb304d006a817abec2f11a8abe97e543e744a6b22b960001b612d0e565b6128177f1d30e729f76b454f292477758c6949d2a7e43525eb4c1cb02b910c09f468fd4c60001b612d0e565b612828612822612ecd565b82614663565b6128547f537f3caca6ecae23277175298e909cf6361eaaf28475e70b8b2ba97e55c61a0460001b612d0e565b6128807fff57a4c449cf48b9924e3836af3123f5c244f9a2e43c4719a6f03c1c7c1cdbf660001b612d0e565b61289061288b612ecd565b613768565b5050565b61289c615d6d565b6128c87f7d61612df2370722b8fa8e12f0e6d6dcb7c47a80259dbbc696d0f452c3f05bb760001b612d0e565b6128f47f0c6925e5dcd1e07ebfdda6de17346d251cdc66c00429a142f2ad07a0703cc08d60001b612d0e565b6129207fc0afad6b504f7302e43185e497aeb64dfe471a0f836b90a477f48f00e1fb502a60001b612d0e565b606b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820154815250509050919050565b60006129ea6129e3612ecd565b84846130a0565b6001905092915050565b6207e90081565b6000612a297ff00a12caf85c0e5f780796713962de836eba29f21ed8c805386e562ac577033f60001b612d0e565b612a557fb0d5dcbb30504984f9e8e8dd70810566c2daed96e2100d37482c57ebaabb6ea460001b612d0e565b612a817f4620c33be91f546034b5a2018075b42c9515a93a79b4add9f45a58771650983860001b612d0e565b612a8a30612225565b905090565b6000612abd7ff4f013b542ce86f2dc32b26c869e9a94e3d1df812e58c342e17301c72f21e35060001b612d0e565b612ae97f0c4a3a0e52eb754f95643b848b5ce2b7303713d7323dab900c66104fe82e989560001b612d0e565b612b157fe567ba1e3f40e671a99ddec5d5d19f5e7abea90a60c289800d2991f649a29b8c60001b612d0e565b612b223060004385611a65565b9050919050565b612b557f3f40c649ecf3c1f5001e06d7bf5cdf899bd44a9043a23cb42a6c79ff2e6dd32260001b612d0e565b612b817fafba07e0844f97ecffafa38d0aa492e9b1ae530c776b9a2a6fae0c1be907fe4560001b612d0e565b612bad7f039206c3c27f3977d227da9d5916419327db491da6d06a362b9581fe436ba6ef60001b612d0e565b612bb56147c4565b612be17fb63224aa9d1a4197ea9c313a77b730c29bd99aa2cf29e13e910d45ffb306826960001b612d0e565b612c0d7fcfb911e10773ac33a045f24565325eb235432b74590ca943c9b17f41f4cbf7ed60001b612d0e565b612c1730826149b0565b50565b60006002610137541415612c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5a9061670d565b60405180910390fd5b600261013781905550612c987fcda278f46a258560b4b20920df8a4d60b8e508cfb50c89f34b967e90cf876f2e60001b612d0e565b612cc47f71337042177ddf5f4b8892655eba7362ca3a541e56b3eca9734894b399ae37e960001b612d0e565b612cf07f9766a5b6451c9904112a9e79817930c2ed6a9cf7d1071cd60c903715148958b560001b612d0e565b612d00612cfb612ecd565b613768565b905060016101378190555090565b50565b6000603460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000612dc67f9d95d87e00b37f2eb6f66a7e17e532b4f207f6b3448a78aa92aab16488eab41260001b61230a565b612df27f75b8d3f13c1eeb3d5f856fc45ceb7e297b12b082861eed77647c0e0deacef4a860001b61230a565b612e1e7fc0fcafbbf9640a5c842b2c11f21afc2be448cfe7fa85f5077d625b9c855cd7d660001b61230a565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff1660e01b8152600401612e7890616dc3565b60206040518083038186803b158015612e9057600080fd5b505afa158015612ea4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec89190616602565b905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3c90616e55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fac90616ee7565b60405180910390fd5b80603460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130939190615f7d565b60405180910390a3505050565b6130cc7f59d0f601e0be1a7a54731c37612b23c1ffb59e5052e5dc382b62aaa61450979d60001b612d0e565b6130f87fabfacbf9db43d35a850cb5214e36fe8c05e56d703ac68ba1315e7d7cd73da4cf60001b612d0e565b6131247fa0f286663d0361450455fda66e2d88b4bc49df024a9240472ddd03c9fcf6717260001b612d0e565b61313230848360004361349f565b5061315f7fb16e1b7129526cd4563b1b2eb9f43ecf45b5ec849c96824597fc2814f81e0bf760001b612d0e565b61318b7f96c4752e0d95418a7501efcaf28b4e80b9e6e4635c78537a23041667ad9b0b5d60001b612d0e565b61319930838360004361439a565b506131c67f0fb4f221c33ed021adb08fee4ec3558b81be1fd23c63846a976021d23b6766da60001b612d0e565b6131f27fc0ea0209aea75c3e3b40095d353c6c669af98e204dd9d900cb6c86b53314b1de60001b612d0e565b6131fb83613768565b506132287f1e54e60e2bc031c81f7e5178593a8d40bcb09f7eaf341f3f2393e8338dcaad7260001b612d0e565b6132547f477934b102badfff20f99d5eb120c7ef2e1f4859e2c866af5ce6e38511326bf860001b612d0e565b61325d82613768565b5061328a7fc312016e6d429a560b11e35d654497b43e199f96c70b086e15aac2d89ec31b8760001b612d0e565b6132b67f09fd6ee188a8e458870fffc798d2e5d170ee788a71b79126f5e220160ade666560001b612d0e565b6132c1838383614a8e565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332d90616f79565b60405180910390fd5b61334282600083614d12565b6000603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c09061700b565b60405180910390fd5b818103603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603560008282546134219190616b56565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134869190615f7d565b60405180910390a361349a83600084614d17565b505050565b60006134cd7fa35cde4b9ee4b2a01c5f5ea41589a7d1acfd02917d2615f9688354e52d400d4b60001b612222565b6134f97f60ff9de982bd8359a564a6d50686fae866c93dd40af412742430e539805ef54860001b612222565b6135257f60b5643cdbd17a2075370ec0990ddbca45d4947fd813af9f306b84edf6134f9260001b612222565b613530868484614d1c565b61355c7f1b1bfcd0f9b472654693cdbef41daabf641b0fcdc0f2369d231ef86b98411fd860001b612222565b6135887f7ec95d6146672a0aa81662678ed286ade0cd62bc04094df2c3a9caaf26995be560001b612222565b61361d868686606b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546136189190616b56565b6150e3565b6136497f96006d96aead623828d3ab540b3e0fee0b7e2853929e71c13260404d09e440b560001b612222565b6136757ff4f370f2e826f2e1c86978c17d886193d9d1b576ee23fa4bd332f46b8a019a7c60001b612222565b83606560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136c09190616b56565b606560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372f7f7a7efeeefe389b28fb5e1f3106ff8315a47a83d9970d59b68ebce0626cefd4f560001b612222565b61375b7fb4070476b46411239637140836ec514d7a245a2a0deac46fcbc692e7f87764bb60001b612222565b6001905095945050505050565b60006137967fa84b4065492f6e35a271c3c5779229f8c5ce196539c54d4b001697c6a59a13d160001b612d0e565b6137c27f209a48cfeeea929859a14beec73738d7d6d303a9e7c39434b8c607c18478da3960001b612d0e565b6137ee7fb2c675897e5d0810f51eed57cbb3e07f41d57cf8eb3d083bcabc9c088e72699b60001b612d0e565b60006137fd30846000436155fb565b905061382b7f9ddc2ce9aec2376146482bb012676b1412720daffec40621c78153732e19d14760001b612d0e565b6138577fe746b848ca9d20d9ac61a546453ad09d73496ee554b76725de145c02f154b33060001b612d0e565b6000811115613acd5761388c7faadfaa61b6194c08e91da357387958771535696f02ea32efd6be2af178b0a89b60001b612d0e565b6138b87f2d5c3cd343e49627d77b22c7ef4863b10c34d60b54b21b61d19ec64bb3589ad760001b612d0e565b6138e47fc83a078f7d44dc5e2760a380bda9b2dcf9e527fdb657e4267c6592f4e8f6975f60001b612d0e565b61010460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bf40fac16040518163ffffffff1660e01b815260040161393e90617077565b60206040518083038186803b15801561395657600080fd5b505afa15801561396a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398e9190616602565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1984836040518363ffffffff1660e01b81526004016139c8929190616805565b602060405180830381600087803b1580156139e257600080fd5b505af11580156139f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1a91906170ac565b50613a477f2193188f85da9379f504dc31119a27a5f7066934fc7832b2f6db55df3b0464cf60001b612d0e565b613a737f4bebf50517e5e74578389ee3818a53ec5e07c35bb19f0c4f0175b531e6aa107e60001b612d0e565b613a7b612ecd565b73ffffffffffffffffffffffffffffffffffffffff167f43848d0574703c28d68ae8958e0571521618f60c4bcacfb094cff2156eaae0f182604051613ac09190615f7d565b60405180910390a2613afa565b613af97fd8d350137bdc5c227465bf1c6bbed76418cb4594888aa8d04f6ad9d7e2ad7abc60001b612d0e565b5b613b267ff4fcdfd03692cf3784f005680254aed230e9efe95cc2e056d4d0072d38d3209860001b612d0e565b613b527f993a104493004d1455a360554db07e69c4585eddbb0ab43fa67d54b51732e22960001b612d0e565b80915050919050565b6000613b897f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b615ac6565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b613bde7f610c71056e8204d89947799db8555f6e16e7370970f1304b559630e75f5f72a560001b6119b6565b613c0a7f776758cfe048d2780c7d5a1404ef8f7a743517d42abea794d1fba1872388621960001b6119b6565b613c367fe25880f62ee3402fe33f8546c03d72acdc250b3ca81d6c122883ad6afd95c88d60001b6119b6565b613c3e6147c4565b50565b6000613c4b613b5b565b9050613c5684615ad0565b600083511180613c635750815b15613c7457613c728484615b89565b505b6000613ca27f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b615c6d565b90508060000160009054906101000a900460ff16613e0b5760018160000160006101000a81548160ff021916908315150217905550613d6e8583604051602401613cec919061644a565b6040516020818303038152906040527f3659cfe6000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615b89565b5060008160000160006101000a81548160ff021916908315150217905550613d94613b5b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613df89061714b565b60405180910390fd5b613e0a85615c77565b5b5050505050565b600080613e417f5a12d9b845b72770daa845f8b223b1796335c299dcb4bbb17783280df8bf871e60001b612222565b613e6d7f67599f54d3a64238dc1b68bc4a9c8ffb750fe3573700dcdbd1305e1c5e780b1460001b612222565b613e997f18995b271972be14e5268a5dd478fdb2351a61f3ba804c8cc6bd7bb16460c9bf60001b612222565b606660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050613f077fe368f75df76751b32dec98d28fcfd7f9804ce09a6544e516b7c14e86d9c04e9b60001b612222565b613f337f062dcbce4da07128ec2389658db670e5baa4a7316ce6f1626ea508b96201a7e860001b612222565b606960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150613fa17fea0e324c4dd6f7a023b05b7125d12ee47e737c74b82a00d0cee9a36c71d30d0260001b612222565b613fcd7f662ea666469007ff4efd6d5292a501b7944126305fdf1dc379c3217506afdf5160001b612222565b8382108015613fdc5750834310155b613fe65781613fe8565b835b91506140167f376475eb80336b2a63551e19a236a751fa9634744ffa8c84a6093f4e8dd4298560001b612222565b6140427fd246573b42d65d9c4cdf57a660a25d9ec292e498b4e6b65912717390a2233bdb60001b612222565b60008343116140515743614053565b835b90506140817fbd0f903635fd1bf492fda4dd27aed69b8bcbe4ba607e89af357dbb23d39547e260001b612222565b6140ad7f0ef2505f3744b6f98ee768a8c30bd587c1f2e66188fdd6048fba416057ecb7ff60001b612222565b848110806140bb5750838310155b1561414a576140ec7fb5d53aa7ca2889b838666a774f88784bd7d3c818c7d66108e5ce71ff9697b55d60001b612222565b6141187f96a6ea4a569d84b9fd8d5f01b82bff0dea705c4eb02d45c9b25fab2701f096e360001b612222565b6141447ff97b8e9d0b97af8ff998451d219f8a3bd06db376009ea2a816e5bb18700993bb60001b612222565b50614392565b6141767f1a428c432272c068ab4654384831257d7cd643ebb4ffac04f202ffeeb853a55660001b612222565b6141a27f88bde9a76cc3844cd4ef5e20d9429fd93dc06c5956f05ce8a106697a2de1d61960001b612222565b6141ce7f6a40d5fb12cb112579d46682c8b976984fa774a6875d3419dd0394e27fda7bb860001b612222565b600083826141dc9190616b56565b905061420a7f88ea062b22fd241a80e931012b5e8098b4aaaba886e2c4e4f584283448925b0460001b612222565b6142367f2abe73ce1b2efb82c94ec2939f00d0ee7655780137a4ba82b92a72a3547218a860001b612222565b6000606a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826142839190616a9c565b90506142b17f429476d6fec9e3eda5e336a946fece1e791d560706eef15bc8bb497ec99cbbbb60001b612222565b6142dd7f56e2b9a180e8f3066a174f199c7c9539bc74550da50c5cae65a2e3dcd12b300c60001b612222565b61432681606560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615cc6565b846143319190616a46565b935061435f7f3b498927d2a46a593f986abba99e090ae8236ace85615bd7b2a545356d511a0660001b612222565b61438b7fbed0149d1336af4d6812199e9080b3de53f2e5c610f80eb54004c8147262ad4860001b612222565b8294505050505b935093915050565b60006143c87fdcf0d3dbe4525753941f9c962e0a1fce68eab9f908043fe4008c61575f5c6c0160001b612222565b6143f47f0a962e80b1a8dd9c312215f0583bd40873b7798cd78d6352c0e03ab1aad270b460001b612222565b6144207f446c4c351dc7dfe51cd5c774e01db6ebff8b6fdcfb45aa45e4b597234f8aec7c60001b612222565b61442b868484614d1c565b6144577f85ad89df498b073cb529dab5ea6469316fb4ce00ff004b9041963b2d1f72716160001b612222565b6144837f55e5e5f5d62e6238c5ed2bed91e749fed22c9df10b31eec7d0fd0b087b9447ec60001b612222565b614518868686606b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546145139190616a46565b6150e3565b6145447ffcc9d217264f5adfb0d59f59adaf6d3956b51d237d913f540dcf7dc28971b5e960001b612222565b6145707fc9db25bad611b6cc57f5384f56d6d289efb28ecb32bb70472b4788a99127836860001b612222565b83606560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546145bb9190616a46565b606560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061462a7f04ed647a2497c19a0928c1138f22b7b65b8abec400de6335290b3290905e19bd60001b612222565b6146567f6570a160b3732ffbc505a3089dc446555413be65d027d9386cc5ccfa7052066460001b612222565b6001905095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156146d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016146ca906171b7565b60405180910390fd5b6146df60008383614d12565b80603560008282546146f19190616a46565b9250508190555080603360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546147479190616a46565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516147ac9190615f7d565b60405180910390a36147c060008383614d17565b5050565b6147f07f9f02bfa7c22ce5050d0014dcb9065a1a5f85e836cd4fb4132f7506949377e6c660001b61230a565b61481c7ff015fccd34023af9029a61c3aff7897ea89f9523c30842911809a90b5b22b49d60001b61230a565b6148487f2a907a701794cdfc827e2b3a6ed1076d8cff0866f7814f8fcd7d9a7a04827b5c60001b61230a565b6148747f6b80a95ff435661019124dc6cebcfe9b169da9e7644f8990d55be90bba690cfb60001b61230a565b3373ffffffffffffffffffffffffffffffffffffffff1661010260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635aef7de66040518163ffffffff1660e01b815260040160206040518083038186803b1580156148f457600080fd5b505afa158015614908573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061492c9190616602565b73ffffffffffffffffffffffffffffffffffffffff1614614982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161497990617223565b60405180910390fd5b6149ae7f49fe7b16686bd91cbba626adf6895dac5bf6146b8bd097c3ac48d0c2e1b821e360001b61230a565b565b6149dc7f07cb9189da5cf9a0a0f7a6e45f8bd7438a465aa65e36cb47eba73948326dbcbb60001b612222565b614a087f619ca1aa528dedf7d6b630fc7f32fd749a72074ea13737b9177c7de42dea2e4960001b612222565b614a347fe219c3636d4dcaefcf19169e14be196acf714632d807bde53b2ec77ebe868a9460001b612222565b614a3c610e03565b81614a479190616b25565b606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415614afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614af5906172b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b6590617347565b60405180910390fd5b614b79838383614d12565b6000603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015614c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614bf7906173d9565b60405180910390fd5b818103603360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081603360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254614c959190616a46565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614cf99190615f7d565b60405180910390a3614d0c848484614d17565b50505050565b505050565b505050565b614d487f9f2f3948f298f4e3bfe1d687aff1d0ed94c064c98a65010fd2770d031bf93dd560001b612222565b614d747f9f69e7659720fd14e0fd5d5e48691d3c8f8f6b7c72b7b5ed206ab07d3ba1ddad60001b612222565b614da07fd05d8bdce6bc7bd70fae7e320e96f48927612235adf06b7b5cf6fe8f11a3f60e60001b612222565b6000606560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415614f0d57614e147f8d00266b50c88f0bdac0311da45413c3fc405313cd41d49ed603802ac37c22cf60001b612222565b614e407f92e0de103064af694a62e0201c33d97bac97b26015de4428fe6aded328fd21b660001b612222565b614e6c7fdb7493cde1a7da614321dd2ae97f0740c34f0072cd0e573ea0cb2f23fcf99c7860001b612222565b43606960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614edc7fc9ec117278bb037f5f6a2742aecbe4ee697723196374584a2abbef599687e6f560001b612222565b614f087fcbb21d6dc994375c1177dc5e52a55feea5d466bbc81d53bada9085f70f03b40b60001b612222565b6150de565b614f397fb341d899a9cd1af84905afed01f974321912c55b04d4ad8ae5ae496b24bb96ee60001b612222565b614f657f96b3f9dbd3adc2fc5b1ba6f0f7cf390718b56327016922d0e2bd43bd2a4e64bf60001b612222565b614f917fb22905d1e40561ca9e449fadf2ee56c41c4bb16dd5de4bb4d7f6aafa8d55f68e60001b612222565b600080614f9f858585613e12565b91509150614fcf7fb81b34db80309cd536227c088eb85a302239c3e555714f9eb701447d48ec041260001b612222565b614ffb7fea573f12fcc9e36ce890dc54dd93f087065d9363ae54a3366860593eb0b0a06160001b612222565b80606660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061506b7ffcd8fe9c27797467ce149b3be591b5980d51812730e38a8398c0722e169de98b60001b612222565b6150977fe7ec1c2507975d2bd26654f5999ccaa65690bb5ad4b01d34d265ae4216bf61dc60001b612222565b81606960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505b505050565b61510f7fc3de6e55d9238589c19600348a7462b4824b511aac98416014d6a8139d1931be60001b612222565b61513b7f8c204125deff78ecfe8dec181a106832cb9855d0a070bcb8fd00bc3ce96cd17860001b612222565b6151677f0ead19ac1d69b0bac901c4696f693d181526e80e63544e49b25348b857448ebd60001b612222565b6000606b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506152137f2d4b1e03dbdc855bb13c336f43604a65ab1add2670f8310246a5babc2e9e3c9d60001b612222565b61523f7fb5737eb0bb067383c4ca1d948ad89a87c92c5b591d0aa095a0de9228716de46060001b612222565b6000816000015411156154a5576152787fdc1cadbbc95678c82529d7b30fb88216c6d6eaf486564ee4f46e23c68d7e15b460001b612222565b6152a47f0a10b410c56d5dff7d6f8e6f947ad2b902100e28f7d7db6f2a76d0bd207030e760001b612222565b6152d07f1f3ccab013d0cfadabc4d256ba1632a761b1f1dabb9cc02e829ed933dbc5584860001b612222565b600081600101546b033b2e3c9fd0803ce8000000606660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484600001546153339190616a9c565b61533d9190616b25565b6153479190616b56565b90506153757fe26f063ae861433e03fdf4238472e25c2491f175ecf52a0d4ce374f6040e8f5b60001b612222565b6153a17f238b0115a784ddb35be95d7ed6f71a14d0f813d83d6570bed19bcca6c5241c6960001b612222565b8082600201546153b19190616a46565b82600201819055506153e57f4369f5c52bb1ac2a116dbd2abfa82196e43be8dc0a928d56305036781a01509b60001b612222565b6154117f99a79150fb4acd2458b623f10efb03ec92b25e72bb7b1aa9d689072493e0629f60001b612222565b80606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461545c9190616a46565b606860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550506154d2565b6154d17fb5b3039ea7020f0ae76c53415d357da7dcf6fc006caa564e27e56139b9536a5060001b612222565b5b6154fe7f91bdca43a2d7c91d064b49a8f58d63087441292eced9f5b07e895318c3201e4360001b612222565b61552a7fa0a6ebbbc00b4b0299254d579d7b711bd5fb28bd4fe9f339d29ab5c4948af58160001b612222565b81816000018190555061555f7f258be86d934f78c8d7f596596dbd5caad975b7ef347dcdf9833fdfd21abf346660001b612222565b61558b7fb13bba720df960bba4eaf062d57c3a60665db5d3f306619e41f5b317ba4998e560001b612222565b6b033b2e3c9fd0803ce8000000606660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836155e39190616a9c565b6155ed9190616b25565b816001018190555050505050565b60006156297f260c7f9d53ba7fff5ebc2da2e67948d158c3cc638ecde212851524cd6a39e1c460001b612222565b6156557f5803e952f39b1ecc124c6aaeeab7c1d70ef02c14cb6dfa2c8431310c11f8970260001b612222565b6156817f97ca04dbf1410c4edfcb88ae805b299329d9a1491dff0231489548071407507760001b612222565b61568c858484614d1c565b6156b87f3013024dd7775a96faeef0951745ac63d52b55d8841484614a5848ec137e9b0060001b612222565b6156e47f9a0043d2098adaf154b81ea34c776ddae0bff0dff00c1e72260a79d5ac38a4a160001b612222565b61576e8585606b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546150e3565b6157997e91d9116c4cf7ec5ee2cc3f7c73179847844dc0612dbb0bb3154277c3084f9060001b612222565b6157c57fb6a265fb7c572d26b051f845da5c62471a85922f0d9cdce6187f8efa97a4bad260001b612222565b6000606b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506158717fa4a3dc0dbc2c2025ed0cda0617b91b253a6211fd6f5cd83aafc52a8cf467cd9960001b612222565b61589d7f15f72fae27ea97e7181c9eadbbdbf5bc5a63141e3056171dc11d080de7aa86f560001b612222565b6000816002015490506158d27ff0d092072688fedd1c95cf3f6204a0af1c1d1e3710921cd6ef2eec2a9503d84c60001b612222565b6158fe7f756788373c8e8cc5dd0519f90891ae4e57d5ce700f0faf1f67fd88b1a597ec6a60001b612222565b600082600201819055506159347fae334c477b7cb298af643311480ecc564087ebb2eaca5e79db25d9973695569860001b612222565b6159607fb76c62aa5bf44e1c6b5a11e71a66ff4b25f6f0f17bee3703a167b7a7fba30f0560001b612222565b808260030160008282546159749190616a46565b925050819055506159a77f9a156ac814ec137ab4680e72759ff879b485206eb6693681dfb237793b6c5b1f60001b612222565b6159d37f43ebb6f0efdafe5b7b183f5f9bcef9afac8bcb93a0753ba12fd0dcfa86999c4760001b612222565b80606760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054615a1e9190616a46565b606760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550615a8d7fca929ab17c3de905b97add695294dd494d446f554b6abfadd381589c8c34aa0860001b612222565b615ab97f89ce4d4ff977695bb1b051e8be917f6cc4247c8c29c5a961c90330eaf8e95ed060001b612222565b8092505050949350505050565b6000819050919050565b615ad981615cf3565b615b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615b0f9061746b565b60405180910390fd5b80615b457f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b615ac6565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060615b9483615cf3565b615bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615bca906174fd565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff1684604051615bfb9190617564565b600060405180830381855af49150503d8060008114615c36576040519150601f19603f3d011682016040523d82523d6000602084013e615c3b565b606091505b5091509150615c63828260405180606001604052806027815260200161757c60279139615d06565b9250505092915050565b6000819050919050565b615c8081615ad0565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b6000816b033b2e3c9fd0803ce800000084615ce19190616a9c565b615ceb9190616b25565b905092915050565b600080823b905060008111915050919050565b60608315615d1657829050615d66565b600083511115615d295782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615d5d9190615e2e565b60405180910390fd5b9392505050565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015615dcf578082015181840152602081019050615db4565b83811115615dde576000848401525b50505050565b6000601f19601f8301169050919050565b6000615e0082615d95565b615e0a8185615da0565b9350615e1a818560208601615db1565b615e2381615de4565b840191505092915050565b60006020820190508181036000830152615e488184615df5565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000615e8f82615e64565b9050919050565b615e9f81615e84565b8114615eaa57600080fd5b50565b600081359050615ebc81615e96565b92915050565b6000819050919050565b615ed581615ec2565b8114615ee057600080fd5b50565b600081359050615ef281615ecc565b92915050565b60008060408385031215615f0f57615f0e615e5a565b5b6000615f1d85828601615ead565b9250506020615f2e85828601615ee3565b9150509250929050565b60008115159050919050565b615f4d81615f38565b82525050565b6000602082019050615f686000830184615f44565b92915050565b615f7781615ec2565b82525050565b6000602082019050615f926000830184615f6e565b92915050565b600060208284031215615fae57615fad615e5a565b5b6000615fbc84828501615ead565b91505092915050565b600080600060608486031215615fde57615fdd615e5a565b5b6000615fec86828701615ead565b9350506020615ffd86828701615ead565b925050604061600e86828701615ee3565b9150509250925092565b60006020828403121561602e5761602d615e5a565b5b600061603c84828501615ee3565b91505092915050565b600060408201905061605a6000830185615f6e565b6160676020830184615f6e565b9392505050565b6000806040838503121561608557616084615e5a565b5b600061609385828601615ead565b92505060206160a485828601615ead565b9150509250929050565b60006080820190506160c36000830187615f6e565b6160d06020830186615f6e565b6160dd6040830185615f6e565b6160ea6060830184615f6e565b95945050505050565b600060ff82169050919050565b616109816160f3565b82525050565b60006020820190506161246000830184616100565b92915050565b6000819050919050565b61613d8161612a565b811461614857600080fd5b50565b60008135905061615a81616134565b92915050565b60006020828403121561617657616175615e5a565b5b60006161848482850161614b565b91505092915050565b600080600080608085870312156161a7576161a6615e5a565b5b60006161b587828801615ead565b94505060206161c687828801615ee3565b93505060406161d787828801615ee3565b92505060606161e887828801615ead565b91505092959194509250565b6000819050919050565b600061621961621461620f84615e64565b6161f4565b615e64565b9050919050565b600061622b826161fe565b9050919050565b600061623d82616220565b9050919050565b61624d81616232565b82525050565b60006020820190506162686000830184616244565b92915050565b600061627982616220565b9050919050565b6162898161626e565b82525050565b60006020820190506162a46000830184616280565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6162ec82615de4565b810181811067ffffffffffffffff8211171561630b5761630a6162b4565b5b80604052505050565b600061631e615e50565b905061632a82826162e3565b919050565b600067ffffffffffffffff82111561634a576163496162b4565b5b61635382615de4565b9050602081019050919050565b82818337600083830152505050565b600061638261637d8461632f565b616314565b90508281526020810184848401111561639e5761639d6162af565b5b6163a9848285616360565b509392505050565b600082601f8301126163c6576163c56162aa565b5b81356163d684826020860161636f565b91505092915050565b600080604083850312156163f6576163f5615e5a565b5b600061640485828601615ead565b925050602083013567ffffffffffffffff81111561642557616424615e5f565b5b616431858286016163b1565b9150509250929050565b61644481615e84565b82525050565b600060208201905061645f600083018461643b565b92915050565b61646e81615ec2565b82525050565b60808201600082015161648a6000850182616465565b50602082015161649d6020850182616465565b5060408201516164b06040850182616465565b5060608201516164c36060850182616465565b50505050565b60006080820190506164de6000830184616474565b92915050565b60006164ef82616220565b9050919050565b6164ff816164e4565b82525050565b600060208201905061651a60008301846164f6565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061656757607f821691505b6020821081141561657b5761657a616520565b5b50919050565b7f434f4e54524f4c4c455200000000000000000000000000000000000000000000600082015250565b60006165b7600a83615da0565b91506165c282616581565b602082019050919050565b600060208201905081810360008301526165e6816165aa565b9050919050565b6000815190506165fc81615e96565b92915050565b60006020828403121561661857616617615e5a565b5b6000616626848285016165ed565b91505092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061668b602883615da0565b91506166968261662f565b604082019050919050565b600060208201905081810360008301526166ba8161667e565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b60006166f7601f83615da0565b9150616702826166c1565b602082019050919050565b60006020820190508181036000830152616726816166ea565b9050919050565b7f53686f756c6420776974686472617720706f73697469766520616d6f756e7400600082015250565b6000616763601f83615da0565b915061676e8261672d565b602082019050919050565b6000602082019050818103600083015261679281616756565b9050919050565b7f4e6f7420656e6f75676820746f6b656e207374616b6564000000000000000000600082015250565b60006167cf601783615da0565b91506167da82616799565b602082019050919050565b600060208201905081810360008301526167fe816167c2565b9050919050565b600060408201905061681a600083018561643b565b6168276020830184615f6e565b9392505050565b61683781615f38565b811461684257600080fd5b50565b6000815190506168548161682e565b92915050565b6000602082840312156168705761686f615e5a565b5b600061687e84828501616845565b91505092915050565b7f7769746864726177207472616e73666572206661696c65640000000000000000600082015250565b60006168bd601883615da0565b91506168c882616887565b602082019050919050565b600060208201905081810360008301526168ec816168b0565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b600061694f602c83615da0565b915061695a826168f3565b604082019050919050565b6000602082019050818103600083015261697e81616942565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b60006169e1602c83615da0565b91506169ec82616985565b604082019050919050565b60006020820190508181036000830152616a10816169d4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000616a5182615ec2565b9150616a5c83615ec2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115616a9157616a90616a17565b5b828201905092915050565b6000616aa782615ec2565b9150616ab283615ec2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615616aeb57616aea616a17565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000616b3082615ec2565b9150616b3b83615ec2565b925082616b4b57616b4a616af6565b5b828204905092915050565b6000616b6182615ec2565b9150616b6c83615ec2565b925082821015616b7f57616b7e616a17565b5b828203905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000616be6602583615da0565b9150616bf182616b8a565b604082019050919050565b60006020820190508181036000830152616c1581616bd9565b9050919050565b7f596f75206e65656420746f207374616b65206120706f73697469766520746f6b60008201527f656e20616d6f756e740000000000000000000000000000000000000000000000602082015250565b6000616c78602983615da0565b9150616c8382616c1c565b604082019050919050565b60006020820190508181036000830152616ca781616c6b565b9050919050565b6000606082019050616cc3600083018661643b565b616cd0602083018561643b565b616cdd6040830184615f6e565b949350505050565b7f7472616e7366657246726f6d206661696c65642c206d616b652073757265207960008201527f6f7520617070726f76656420746f6b656e207472616e73666572000000000000602082015250565b6000616d41603a83615da0565b9150616d4c82616ce5565b604082019050919050565b60006020820190508181036000830152616d7081616d34565b9050919050565b7f474f4f44444f4c4c415200000000000000000000000000000000000000000000600082015250565b6000616dad600a83615da0565b9150616db882616d77565b602082019050919050565b60006020820190508181036000830152616ddc81616da0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000616e3f602483615da0565b9150616e4a82616de3565b604082019050919050565b60006020820190508181036000830152616e6e81616e32565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000616ed1602283615da0565b9150616edc82616e75565b604082019050919050565b60006020820190508181036000830152616f0081616ec4565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000616f63602183615da0565b9150616f6e82616f07565b604082019050919050565b60006020820190508181036000830152616f9281616f56565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000616ff5602283615da0565b915061700082616f99565b604082019050919050565b6000602082019050818103600083015261702481616fe8565b9050919050565b7f52455055544154494f4e00000000000000000000000000000000000000000000600082015250565b6000617061600a83615da0565b915061706c8261702b565b602082019050919050565b6000602082019050818103600083015261709081617054565b9050919050565b6000815190506170a681615ecc565b92915050565b6000602082840312156170c2576170c1615e5a565b5b60006170d084828501617097565b91505092915050565b7f45524331393637557067726164653a207570677261646520627265616b73206660008201527f7572746865722075706772616465730000000000000000000000000000000000602082015250565b6000617135602f83615da0565b9150617140826170d9565b604082019050919050565b6000602082019050818103600083015261716481617128565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006171a1601f83615da0565b91506171ac8261716b565b602082019050919050565b600060208201905081810360008301526171d081617194565b9050919050565b7f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64600082015250565b600061720d602083615da0565b9150617218826171d7565b602082019050919050565b6000602082019050818103600083015261723c81617200565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061729f602583615da0565b91506172aa82617243565b604082019050919050565b600060208201905081810360008301526172ce81617292565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000617331602383615da0565b915061733c826172d5565b604082019050919050565b6000602082019050818103600083015261736081617324565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006173c3602683615da0565b91506173ce82617367565b604082019050919050565b600060208201905081810360008301526173f2816173b6565b9050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000617455602d83615da0565b9150617460826173f9565b604082019050919050565b6000602082019050818103600083015261748481617448565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006174e7602683615da0565b91506174f28261748b565b604082019050919050565b60006020820190508181036000830152617516816174da565b9050919050565b600081519050919050565b600081905092915050565b600061753e8261751d565b6175488185617528565b9350617558818560208601615db1565b80840191505092915050565b60006175708284617533565b91508190509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d6282cf7f1ba9171eebd9b3bb17fcdcff22626f8a91e02b6c84567c5558f050964736f6c63430008080033",
827
+ "bytecode": "0x60a06040523060601b6080523480156200001857600080fd5b5060405162002d7238038062002d728339810160408190526200003b9162000564565b62000046816200018c565b6101045460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015620000a657600080fd5b505afa158015620000bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e1919062000564565b61016980546001600160a01b0319166001600160a01b0392909216919091179055604080518082018252601381527f4724205374616b696e6720466f7220474f4f4400000000000000000000000000602080830191909152825180840190935260038352621cd1c960ea1b908301526200015b91620001b5565b620001756207e9006a01a784379d99db420000006200058b565b306000908152606a60205260409020555062000639565b61010480546001600160a01b0319166001600160a01b038316179055620001b262000248565b50565b600054610100900460ff1680620001cf575060005460ff16155b620001f75760405162461bcd60e51b8152600401620001ee90620005ae565b60405180910390fd5b600054610100900460ff161580156200021a576000805461ffff19166101011790555b6200022462000398565b62000230838362000409565b801562000243576000805461ff00191690555b505050565b6101045460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015620002a857600080fd5b505afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e3919062000564565b61010280546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b1580156200033a57600080fd5b505afa1580156200034f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000375919062000564565b61010380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1680620003b2575060005460ff16155b620003d15760405162461bcd60e51b8152600401620001ee90620005ae565b600054610100900460ff16158015620003f4576000805461ffff19166101011790555b8015620001b2576000805461ff001916905550565b600054610100900460ff168062000423575060005460ff16155b620004425760405162461bcd60e51b8152600401620001ee90620005ae565b600054610100900460ff1615801562000465576000805461ffff19166101011790555b82516200047a906036906020860190620004a8565b50815162000490906037906020850190620004a8565b50801562000243576000805461ff0019169055505050565b828054620004b690620005fc565b90600052602060002090601f016020900481019282620004da576000855562000525565b82601f10620004f557805160ff191683800117855562000525565b8280016001018555821562000525579182015b828111156200052557825182559160200191906001019062000508565b506200053392915062000537565b5090565b5b8082111562000533576000815560010162000538565b6001600160a01b0381168114620001b257600080fd5b6000602082840312156200057757600080fd5b815162000584816200054e565b9392505050565b600082620005a957634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600181811c908216806200061157607f821691505b602082108114156200063357634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c6127056200066d60003960008181610bbe01528181610bfe01528181610dc20152610e0201526127056000f3fe6080604052600436106101aa5760003560e01c806306fdde03146101af578063095ea7b3146101da5780630c1cd7f31461020a57806318160ddd146102365780631b3c90a81461024b578063213b329e1461026257806322dec37b1461027857806323b872dd146102a557806325d5971f146102c557806328e964e9146102e55780632e42a8961461031a578063313ce5671461038757806331903da1146103a35780633659cfe6146103d057806339509351146103f05780633d9a12cc146104105780633e6326fc146104305780634162169f1461045e57806347b3e7e81461047f5780634f1db7f6146104ac5780634f1ef286146104cc5780635aef7de6146104df57806370a08231146105005780637bcbb9ff14610536578063846141b31461055657806395d89b4114610583578063a457c2d714610598578063a694fc3a146105b8578063a87430ba146105d8578063a9059cbb1461062b578063b46aa5271461064b578063bf8e9b6e14610662578063c671062914610677578063c76279a214610697578063c7b8981c146106b7578063dd62ed3e146106cc578063e1758bd814610712575b600080fd5b3480156101bb57600080fd5b506101c4610727565b6040516101d191906121f4565b60405180910390f35b3480156101e657600080fd5b506101fa6101f536600461223c565b6107b9565b60405190151581526020016101d1565b34801561021657600080fd5b50306000908152606a60205260409020545b6040519081526020016101d1565b34801561024257600080fd5b50603554610228565b34801561025757600080fd5b506102606107cf565b005b34801561026e57600080fd5b506207e900610228565b34801561028457600080fd5b50610228610293366004612268565b60676020526000908152604090205481565b3480156102b157600080fd5b506101fa6102c0366004612285565b610917565b3480156102d157600080fd5b506102606102e03660046122c6565b6109c8565b3480156102f157600080fd5b50610305610300366004612268565b610b9d565b604080519283526020830191909152016101d1565b34801561032657600080fd5b506103676103353660046122df565b606b60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016101d1565b34801561039357600080fd5b50604051600281526020016101d1565b3480156103af57600080fd5b506102286103be366004612268565b60686020526000908152604090205481565b3480156103dc57600080fd5b506102606103eb366004612268565b610bb3565b3480156103fc57600080fd5b506101fa61040b36600461223c565b610c7c565b34801561041c57600080fd5b5061022861042b366004612318565b610cb8565b34801561043c57600080fd5b5061010454610451906001600160a01b031681565b6040516101d19190612362565b34801561046a57600080fd5b5061010254610451906001600160a01b031681565b34801561048b57600080fd5b5061022861049a366004612268565b606a6020526000908152604090205481565b3480156104b857600080fd5b506103056104c73660046122df565b610d7e565b6102606104da36600461238c565b610db7565b3480156104eb57600080fd5b5061010354610451906001600160a01b031681565b34801561050c57600080fd5b5061022861051b366004612268565b6001600160a01b031660009081526033602052604090205490565b34801561054257600080fd5b50610228610551366004612268565b610e71565b34801561056257600080fd5b50610228610571366004612268565b60696020526000908152604090205481565b34801561058f57600080fd5b506101c4610e8c565b3480156105a457600080fd5b506101fa6105b336600461223c565b610e9b565b3480156105c457600080fd5b506102606105d33660046122c6565b610f34565b3480156105e457600080fd5b506105f86105f3366004612268565b6110c0565b6040516101d191908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561063757600080fd5b506101fa61064636600461223c565b611145565b34801561065757600080fd5b506102286207e90081565b34801561066e57600080fd5b50610228611152565b34801561068357600080fd5b50610228610692366004612268565b611162565b3480156106a357600080fd5b506102606106b23660046122c6565b611177565b3480156106c357600080fd5b50610228611189565b3480156106d857600080fd5b506102286106e73660046122df565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b34801561071e57600080fd5b506104516111c9565b6060603680546107369061244f565b80601f01602080910402602001604051908101604052809291908181526020018280546107629061244f565b80156107af5780601f10610784576101008083540402835291602001916107af565b820191906000526020600020905b81548152906001019060200180831161079257829003601f168201915b5050505050905090565b60006107c6338484611261565b50600192915050565b6101045460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b15801561082e57600080fd5b505afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610866919061248a565b61010280546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b1580156108bc57600080fd5b505afa1580156108d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f4919061248a565b61010380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610924848484611385565b6001600160a01b0384166000908152603460209081526040808320338452909152902054828110156109ae5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109bb8533858403611261565b60019150505b9392505050565b60026101375414156109ec5760405162461bcd60e51b81526004016109a5906124a7565b60026101375560006109fe3033610d7e565b50905081610a0a578091505b60008211610a5a5760405162461bcd60e51b815260206004820152601f60248201527f53686f756c6420776974686472617720706f73697469766520616d6f756e740060448201526064016109a5565b81811015610aa45760405162461bcd60e51b8152602060048201526017602482015276139bdd08195b9bdd59da081d1bdad95b881cdd185ad959604a1b60448201526064016109a5565b81610aaf33846113c7565b610abd303385600043611503565b50610ac733611597565b50610169546001600160a01b031663a9059cbb33836040518363ffffffff1660e01b8152600401610af99291906124de565b602060405180830381600087803b158015610b1357600080fd5b505af1158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b91906124f7565b610b925760405162461bcd60e51b81526020600482015260186024820152771dda5d1a191c985dc81d1c985b9cd9995c8819985a5b195960421b60448201526064016109a5565b505060016101375550565b600080610baa3084610d7e565b91509150915091565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610bfc5760405162461bcd60e51b81526004016109a590612519565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c2e611701565b6001600160a01b031614610c545760405162461bcd60e51b81526004016109a590612553565b610c5d8161171d565b60408051600080825260208201909252610c7991839190611725565b50565b3360008181526034602090815260408083206001600160a01b038716845290915281205490916107c6918590610cb39086906125a3565b611261565b6001600160a01b038085166000818152606b60209081526040808320948616835293815283822084516080810186528154815260018201548184015260028201548187015260039091015460608201529282526065905291822054829015610d74576000610d2788888861186c565b915050826040015191508260200151676765c793fa10079d601b1b828560000151610d5291906125bb565b610d5c91906125da565b610d6691906125fc565b610d7090836125a3565b9150505b9695505050505050565b6001600160a01b039182166000818152606b60209081526040808320949095168252928352838120549181526065909252919020549091565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610e005760405162461bcd60e51b81526004016109a590612519565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e32611701565b6001600160a01b031614610e585760405162461bcd60e51b81526004016109a590612553565b610e618261171d565b610e6d82826001611725565b5050565b6001600160a01b031660009081526066602052604090205490565b6060603780546107369061244f565b3360009081526034602090815260408083206001600160a01b038616845290915281205482811015610f1d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a5565b610f2a3385858403611261565b5060019392505050565b60008111610f965760405162461bcd60e51b815260206004820152602960248201527f596f75206e65656420746f207374616b65206120706f73697469766520746f6b604482015268195b88185b5bdd5b9d60ba1b60648201526084016109a5565b610169546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101849052606401602060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906124f7565b61109e5760405162461bcd60e51b815260206004820152603a60248201527f7472616e7366657246726f6d206661696c65642c206d616b652073757265207960448201527937ba9030b8383937bb32b2103a37b5b2b7103a3930b739b332b960311b60648201526084016109a5565b6110ac303383600043611950565b506110b733826119ba565b610e6d33611597565b6110eb6040518060800160405280600081526020016000815260200160008152602001600081525090565b50306000908152606b602090815260408083206001600160a01b0394909416835292815290829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082015290565b60006107c6338484611385565b600061115d30610e71565b905090565b60006111713060004385610cb8565b92915050565b61117f611a87565b610c793082611b5c565b600060026101375414156111af5760405162461bcd60e51b81526004016109a5906124a7565b6002610137556111be33611597565b905060016101375590565b6101045460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561122957600080fd5b505afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d919061248a565b6001600160a01b0383166112c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a5565b6001600160a01b0382166113245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a5565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611393308483600043611503565b506113a2308383600043611950565b506113ac83611597565b506113b682611597565b506113c2838383611b89565b505050565b6001600160a01b0382166114275760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109a5565b6001600160a01b0382166000908152603360205260409020548181101561149b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109a5565b6001600160a01b03831660009081526033602052604081208383039055603580548492906114ca9084906125fc565b90915550506040518281526000906001600160a01b038516906000805160206126b08339815191529060200160405180910390a3505050565b6000611510868484611d47565b6001600160a01b038087166000908152606b602090815260408083209389168352929052205461154e90879087906115499088906125fc565b611dc2565b6001600160a01b0386166000908152606560205260409020546115729085906125fc565b6001600160a01b03871660009081526065602052604090205550600195945050505050565b6000806115a73084600043611ed9565b90508015611171576101045460405163bf40fac160e01b815260206004820152600a6024820152692922a82aaa20aa24a7a760b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b15801561160e57600080fd5b505afa158015611622573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611646919061248a565b6001600160a01b03166340c10f1984836040518363ffffffff1660e01b81526004016116739291906124de565b602060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c59190612613565b5060405181815233907f43848d0574703c28d68ae8958e0571521618f60c4bcacfb094cff2156eaae0f19060200160405180910390a292915050565b600080516020612669833981519152546001600160a01b031690565b610c79611a87565b600061172f611701565b905061173a84611faf565b6000835111806117475750815b15611758576117568484612042565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661186557805460ff191660011781556040516117d39086906117a4908590602401612362565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052612042565b50805460ff191681556117e4611701565b6001600160a01b0316826001600160a01b03161461185c5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016109a5565b6118658561212d565b5050505050565b6001600160a01b0383166000908152606660209081526040808320546069909252909120549083821080156118a15750834310155b6118ab57816118ad565b835b915060008343116118be57436118c0565b835b9050848110806118d05750838310155b156118db5750611948565b60006118e784836125fc565b6001600160a01b0388166000908152606a60205260408120549192509061190e90836125bb565b6001600160a01b03891660009081526065602052604090205490915061193590829061216d565b61193f90856125a3565b93508294505050505b935093915050565b600061195d868484611d47565b6001600160a01b038087166000908152606b602090815260408083209389168352929052205461199690879087906115499088906125a3565b6001600160a01b0386166000908152606560205260409020546115729085906125a3565b6001600160a01b038216611a105760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109a5565b8060356000828254611a2291906125a3565b90915550506001600160a01b03821660009081526033602052604081208054839290611a4f9084906125a3565b90915550506040518181526001600160a01b038316906000906000805160206126b08339815191529060200160405180910390a35050565b6101025460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b158015611acc57600080fd5b505afa158015611ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b04919061248a565b6001600160a01b031614611b5a5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f6460448201526064016109a5565b565b611b696207e900826125da565b6001600160a01b039092166000908152606a602052604090209190915550565b6001600160a01b038316611bed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a5565b6001600160a01b038216611c4f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a5565b6001600160a01b03831660009081526033602052604090205481811015611cc75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a5565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290611cfe9084906125a3565b92505081905550826001600160a01b0316846001600160a01b03166000805160206126b083398151915284604051611d3891815260200190565b60405180910390a35b50505050565b6001600160a01b038316600090815260656020526040902054611d825750506001600160a01b03166000908152606960205260409020439055565b600080611d9085858561186c565b6001600160a01b0390961660009081526066602090815260408083209890985560699052959095209490945550505050565b6001600160a01b038084166000908152606b60209081526040808320938616835292905220805415611e915760018101546001600160a01b0385166000908152606660205260408120548354919291676765c793fa10079d601b1b91611e27916125bb565b611e3191906125da565b611e3b91906125fc565b9050808260020154611e4d91906125a3565b60028301556001600160a01b038516600090815260686020526040902054611e769082906125a3565b6001600160a01b038616600090815260686020526040902055505b8181556001600160a01b038416600090815260666020526040902054676765c793fa10079d601b1b90611ec490846125bb565b611ece91906125da565b600190910155505050565b6000611ee6858484611d47565b6001600160a01b038086166000908152606b6020908152604080832093881683529290522054611f199086908690611dc2565b6001600160a01b038086166000908152606b6020908152604080832093881683529290529081206002810180549083905560038201805492939192839290611f629084906125a3565b90915550506001600160a01b038716600090815260676020526040902054611f8b9082906125a3565b6001600160a01b038816600090815260676020526040902055915050949350505050565b803b6120135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016109a5565b60008051602061266983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6120a15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016109a5565b600080846001600160a01b0316846040516120bc919061262c565b600060405180830381855af49150503d80600081146120f7576040519150601f19603f3d011682016040523d82523d6000602084013e6120fc565b606091505b509150915061212482826040518060600160405280602781526020016126896027913961218f565b95945050505050565b61213681611faf565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60008161218584676765c793fa10079d601b1b6125bb565b6109c191906125da565b6060831561219e5750816109c1565b8251156121ae5782518084602001fd5b8160405162461bcd60e51b81526004016109a591906121f4565b60005b838110156121e35781810151838201526020016121cb565b83811115611d415750506000910152565b60208152600082518060208401526122138160408501602087016121c8565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c7957600080fd5b6000806040838503121561224f57600080fd5b823561225a81612227565b946020939093013593505050565b60006020828403121561227a57600080fd5b81356109c181612227565b60008060006060848603121561229a57600080fd5b83356122a581612227565b925060208401356122b581612227565b929592945050506040919091013590565b6000602082840312156122d857600080fd5b5035919050565b600080604083850312156122f257600080fd5b82356122fd81612227565b9150602083013561230d81612227565b809150509250929050565b6000806000806080858703121561232e57600080fd5b843561233981612227565b93506020850135925060408501359150606085013561235781612227565b939692955090935050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239f57600080fd5b82356123aa81612227565b915060208301356001600160401b03808211156123c657600080fd5b818501915085601f8301126123da57600080fd5b8135818111156123ec576123ec612376565b604051601f8201601f19908116603f0116810190838211818310171561241457612414612376565b8160405282815288602084870101111561242d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600181811c9082168061246357607f821691505b6020821081141561248457634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561249c57600080fd5b81516109c181612227565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561250957600080fd5b815180151581146109c157600080fd5b6020808252602c9082015260008051602061264983398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061264983398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156125b6576125b661258d565b500190565b60008160001904831182151516156125d5576125d561258d565b500290565b6000826125f757634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561260e5761260e61258d565b500390565b60006020828403121561262557600080fd5b5051919050565b6000825161263e8184602087016121c8565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220738ed2f7f871fe13fbb95bc36df20f396604278236a79f9dd47b38d06a042d5164736f6c63430008080033",
828
+ "deployedBytecode": "0x6080604052600436106101aa5760003560e01c806306fdde03146101af578063095ea7b3146101da5780630c1cd7f31461020a57806318160ddd146102365780631b3c90a81461024b578063213b329e1461026257806322dec37b1461027857806323b872dd146102a557806325d5971f146102c557806328e964e9146102e55780632e42a8961461031a578063313ce5671461038757806331903da1146103a35780633659cfe6146103d057806339509351146103f05780633d9a12cc146104105780633e6326fc146104305780634162169f1461045e57806347b3e7e81461047f5780634f1db7f6146104ac5780634f1ef286146104cc5780635aef7de6146104df57806370a08231146105005780637bcbb9ff14610536578063846141b31461055657806395d89b4114610583578063a457c2d714610598578063a694fc3a146105b8578063a87430ba146105d8578063a9059cbb1461062b578063b46aa5271461064b578063bf8e9b6e14610662578063c671062914610677578063c76279a214610697578063c7b8981c146106b7578063dd62ed3e146106cc578063e1758bd814610712575b600080fd5b3480156101bb57600080fd5b506101c4610727565b6040516101d191906121f4565b60405180910390f35b3480156101e657600080fd5b506101fa6101f536600461223c565b6107b9565b60405190151581526020016101d1565b34801561021657600080fd5b50306000908152606a60205260409020545b6040519081526020016101d1565b34801561024257600080fd5b50603554610228565b34801561025757600080fd5b506102606107cf565b005b34801561026e57600080fd5b506207e900610228565b34801561028457600080fd5b50610228610293366004612268565b60676020526000908152604090205481565b3480156102b157600080fd5b506101fa6102c0366004612285565b610917565b3480156102d157600080fd5b506102606102e03660046122c6565b6109c8565b3480156102f157600080fd5b50610305610300366004612268565b610b9d565b604080519283526020830191909152016101d1565b34801561032657600080fd5b506103676103353660046122df565b606b60209081526000928352604080842090915290825290208054600182015460028301546003909301549192909184565b6040805194855260208501939093529183015260608201526080016101d1565b34801561039357600080fd5b50604051600281526020016101d1565b3480156103af57600080fd5b506102286103be366004612268565b60686020526000908152604090205481565b3480156103dc57600080fd5b506102606103eb366004612268565b610bb3565b3480156103fc57600080fd5b506101fa61040b36600461223c565b610c7c565b34801561041c57600080fd5b5061022861042b366004612318565b610cb8565b34801561043c57600080fd5b5061010454610451906001600160a01b031681565b6040516101d19190612362565b34801561046a57600080fd5b5061010254610451906001600160a01b031681565b34801561048b57600080fd5b5061022861049a366004612268565b606a6020526000908152604090205481565b3480156104b857600080fd5b506103056104c73660046122df565b610d7e565b6102606104da36600461238c565b610db7565b3480156104eb57600080fd5b5061010354610451906001600160a01b031681565b34801561050c57600080fd5b5061022861051b366004612268565b6001600160a01b031660009081526033602052604090205490565b34801561054257600080fd5b50610228610551366004612268565b610e71565b34801561056257600080fd5b50610228610571366004612268565b60696020526000908152604090205481565b34801561058f57600080fd5b506101c4610e8c565b3480156105a457600080fd5b506101fa6105b336600461223c565b610e9b565b3480156105c457600080fd5b506102606105d33660046122c6565b610f34565b3480156105e457600080fd5b506105f86105f3366004612268565b6110c0565b6040516101d191908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561063757600080fd5b506101fa61064636600461223c565b611145565b34801561065757600080fd5b506102286207e90081565b34801561066e57600080fd5b50610228611152565b34801561068357600080fd5b50610228610692366004612268565b611162565b3480156106a357600080fd5b506102606106b23660046122c6565b611177565b3480156106c357600080fd5b50610228611189565b3480156106d857600080fd5b506102286106e73660046122df565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b34801561071e57600080fd5b506104516111c9565b6060603680546107369061244f565b80601f01602080910402602001604051908101604052809291908181526020018280546107629061244f565b80156107af5780601f10610784576101008083540402835291602001916107af565b820191906000526020600020905b81548152906001019060200180831161079257829003601f168201915b5050505050905090565b60006107c6338484611261565b50600192915050565b6101045460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b15801561082e57600080fd5b505afa158015610842573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610866919061248a565b61010280546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b1580156108bc57600080fd5b505afa1580156108d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f4919061248a565b61010380546001600160a01b0319166001600160a01b0392909216919091179055565b6000610924848484611385565b6001600160a01b0384166000908152603460209081526040808320338452909152902054828110156109ae5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6109bb8533858403611261565b60019150505b9392505050565b60026101375414156109ec5760405162461bcd60e51b81526004016109a5906124a7565b60026101375560006109fe3033610d7e565b50905081610a0a578091505b60008211610a5a5760405162461bcd60e51b815260206004820152601f60248201527f53686f756c6420776974686472617720706f73697469766520616d6f756e740060448201526064016109a5565b81811015610aa45760405162461bcd60e51b8152602060048201526017602482015276139bdd08195b9bdd59da081d1bdad95b881cdd185ad959604a1b60448201526064016109a5565b81610aaf33846113c7565b610abd303385600043611503565b50610ac733611597565b50610169546001600160a01b031663a9059cbb33836040518363ffffffff1660e01b8152600401610af99291906124de565b602060405180830381600087803b158015610b1357600080fd5b505af1158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b91906124f7565b610b925760405162461bcd60e51b81526020600482015260186024820152771dda5d1a191c985dc81d1c985b9cd9995c8819985a5b195960421b60448201526064016109a5565b505060016101375550565b600080610baa3084610d7e565b91509150915091565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610bfc5760405162461bcd60e51b81526004016109a590612519565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c2e611701565b6001600160a01b031614610c545760405162461bcd60e51b81526004016109a590612553565b610c5d8161171d565b60408051600080825260208201909252610c7991839190611725565b50565b3360008181526034602090815260408083206001600160a01b038716845290915281205490916107c6918590610cb39086906125a3565b611261565b6001600160a01b038085166000818152606b60209081526040808320948616835293815283822084516080810186528154815260018201548184015260028201548187015260039091015460608201529282526065905291822054829015610d74576000610d2788888861186c565b915050826040015191508260200151676765c793fa10079d601b1b828560000151610d5291906125bb565b610d5c91906125da565b610d6691906125fc565b610d7090836125a3565b9150505b9695505050505050565b6001600160a01b039182166000818152606b60209081526040808320949095168252928352838120549181526065909252919020549091565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610e005760405162461bcd60e51b81526004016109a590612519565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e32611701565b6001600160a01b031614610e585760405162461bcd60e51b81526004016109a590612553565b610e618261171d565b610e6d82826001611725565b5050565b6001600160a01b031660009081526066602052604090205490565b6060603780546107369061244f565b3360009081526034602090815260408083206001600160a01b038616845290915281205482811015610f1d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109a5565b610f2a3385858403611261565b5060019392505050565b60008111610f965760405162461bcd60e51b815260206004820152602960248201527f596f75206e65656420746f207374616b65206120706f73697469766520746f6b604482015268195b88185b5bdd5b9d60ba1b60648201526084016109a5565b610169546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101849052606401602060405180830381600087803b158015610ff757600080fd5b505af115801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906124f7565b61109e5760405162461bcd60e51b815260206004820152603a60248201527f7472616e7366657246726f6d206661696c65642c206d616b652073757265207960448201527937ba9030b8383937bb32b2103a37b5b2b7103a3930b739b332b960311b60648201526084016109a5565b6110ac303383600043611950565b506110b733826119ba565b610e6d33611597565b6110eb6040518060800160405280600081526020016000815260200160008152602001600081525090565b50306000908152606b602090815260408083206001600160a01b0394909416835292815290829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082015290565b60006107c6338484611385565b600061115d30610e71565b905090565b60006111713060004385610cb8565b92915050565b61117f611a87565b610c793082611b5c565b600060026101375414156111af5760405162461bcd60e51b81526004016109a5906124a7565b6002610137556111be33611597565b905060016101375590565b6101045460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b15801561122957600080fd5b505afa15801561123d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d919061248a565b6001600160a01b0383166112c35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109a5565b6001600160a01b0382166113245760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109a5565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611393308483600043611503565b506113a2308383600043611950565b506113ac83611597565b506113b682611597565b506113c2838383611b89565b505050565b6001600160a01b0382166114275760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016109a5565b6001600160a01b0382166000908152603360205260409020548181101561149b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016109a5565b6001600160a01b03831660009081526033602052604081208383039055603580548492906114ca9084906125fc565b90915550506040518281526000906001600160a01b038516906000805160206126b08339815191529060200160405180910390a3505050565b6000611510868484611d47565b6001600160a01b038087166000908152606b602090815260408083209389168352929052205461154e90879087906115499088906125fc565b611dc2565b6001600160a01b0386166000908152606560205260409020546115729085906125fc565b6001600160a01b03871660009081526065602052604090205550600195945050505050565b6000806115a73084600043611ed9565b90508015611171576101045460405163bf40fac160e01b815260206004820152600a6024820152692922a82aaa20aa24a7a760b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b15801561160e57600080fd5b505afa158015611622573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611646919061248a565b6001600160a01b03166340c10f1984836040518363ffffffff1660e01b81526004016116739291906124de565b602060405180830381600087803b15801561168d57600080fd5b505af11580156116a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c59190612613565b5060405181815233907f43848d0574703c28d68ae8958e0571521618f60c4bcacfb094cff2156eaae0f19060200160405180910390a292915050565b600080516020612669833981519152546001600160a01b031690565b610c79611a87565b600061172f611701565b905061173a84611faf565b6000835111806117475750815b15611758576117568484612042565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661186557805460ff191660011781556040516117d39086906117a4908590602401612362565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b179052612042565b50805460ff191681556117e4611701565b6001600160a01b0316826001600160a01b03161461185c5760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016109a5565b6118658561212d565b5050505050565b6001600160a01b0383166000908152606660209081526040808320546069909252909120549083821080156118a15750834310155b6118ab57816118ad565b835b915060008343116118be57436118c0565b835b9050848110806118d05750838310155b156118db5750611948565b60006118e784836125fc565b6001600160a01b0388166000908152606a60205260408120549192509061190e90836125bb565b6001600160a01b03891660009081526065602052604090205490915061193590829061216d565b61193f90856125a3565b93508294505050505b935093915050565b600061195d868484611d47565b6001600160a01b038087166000908152606b602090815260408083209389168352929052205461199690879087906115499088906125a3565b6001600160a01b0386166000908152606560205260409020546115729085906125a3565b6001600160a01b038216611a105760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016109a5565b8060356000828254611a2291906125a3565b90915550506001600160a01b03821660009081526033602052604081208054839290611a4f9084906125a3565b90915550506040518181526001600160a01b038316906000906000805160206126b08339815191529060200160405180910390a35050565b6101025460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b158015611acc57600080fd5b505afa158015611ae0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b04919061248a565b6001600160a01b031614611b5a5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f6460448201526064016109a5565b565b611b696207e900826125da565b6001600160a01b039092166000908152606a602052604090209190915550565b6001600160a01b038316611bed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109a5565b6001600160a01b038216611c4f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109a5565b6001600160a01b03831660009081526033602052604090205481811015611cc75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109a5565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290611cfe9084906125a3565b92505081905550826001600160a01b0316846001600160a01b03166000805160206126b083398151915284604051611d3891815260200190565b60405180910390a35b50505050565b6001600160a01b038316600090815260656020526040902054611d825750506001600160a01b03166000908152606960205260409020439055565b600080611d9085858561186c565b6001600160a01b0390961660009081526066602090815260408083209890985560699052959095209490945550505050565b6001600160a01b038084166000908152606b60209081526040808320938616835292905220805415611e915760018101546001600160a01b0385166000908152606660205260408120548354919291676765c793fa10079d601b1b91611e27916125bb565b611e3191906125da565b611e3b91906125fc565b9050808260020154611e4d91906125a3565b60028301556001600160a01b038516600090815260686020526040902054611e769082906125a3565b6001600160a01b038616600090815260686020526040902055505b8181556001600160a01b038416600090815260666020526040902054676765c793fa10079d601b1b90611ec490846125bb565b611ece91906125da565b600190910155505050565b6000611ee6858484611d47565b6001600160a01b038086166000908152606b6020908152604080832093881683529290522054611f199086908690611dc2565b6001600160a01b038086166000908152606b6020908152604080832093881683529290529081206002810180549083905560038201805492939192839290611f629084906125a3565b90915550506001600160a01b038716600090815260676020526040902054611f8b9082906125a3565b6001600160a01b038816600090815260676020526040902055915050949350505050565b803b6120135760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016109a5565b60008051602061266983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6120a15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016109a5565b600080846001600160a01b0316846040516120bc919061262c565b600060405180830381855af49150503d80600081146120f7576040519150601f19603f3d011682016040523d82523d6000602084013e6120fc565b606091505b509150915061212482826040518060600160405280602781526020016126896027913961218f565b95945050505050565b61213681611faf565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60008161218584676765c793fa10079d601b1b6125bb565b6109c191906125da565b6060831561219e5750816109c1565b8251156121ae5782518084602001fd5b8160405162461bcd60e51b81526004016109a591906121f4565b60005b838110156121e35781810151838201526020016121cb565b83811115611d415750506000910152565b60208152600082518060208401526122138160408501602087016121c8565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610c7957600080fd5b6000806040838503121561224f57600080fd5b823561225a81612227565b946020939093013593505050565b60006020828403121561227a57600080fd5b81356109c181612227565b60008060006060848603121561229a57600080fd5b83356122a581612227565b925060208401356122b581612227565b929592945050506040919091013590565b6000602082840312156122d857600080fd5b5035919050565b600080604083850312156122f257600080fd5b82356122fd81612227565b9150602083013561230d81612227565b809150509250929050565b6000806000806080858703121561232e57600080fd5b843561233981612227565b93506020850135925060408501359150606085013561235781612227565b939692955090935050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561239f57600080fd5b82356123aa81612227565b915060208301356001600160401b03808211156123c657600080fd5b818501915085601f8301126123da57600080fd5b8135818111156123ec576123ec612376565b604051601f8201601f19908116603f0116810190838211818310171561241457612414612376565b8160405282815288602084870101111561242d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600181811c9082168061246357607f821691505b6020821081141561248457634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561249c57600080fd5b81516109c181612227565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561250957600080fd5b815180151581146109c157600080fd5b6020808252602c9082015260008051602061264983398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061264983398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b600082198211156125b6576125b661258d565b500190565b60008160001904831182151516156125d5576125d561258d565b500290565b6000826125f757634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561260e5761260e61258d565b500390565b60006020828403121561262557600080fd5b5051919050565b6000825161263e8184602087016121c8565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220738ed2f7f871fe13fbb95bc36df20f396604278236a79f9dd47b38d06a042d5164736f6c63430008080033",
881
829
  "linkReferences": {},
882
830
  "deployedLinkReferences": {}
883
831
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/8c160f338d2c283c42710db9a78c71bd.json"
3
+ "buildInfo": "../../../build-info/f5d0ac3881ab8367417a64664691e2c6.json"
4
4
  }
@@ -3,19 +3,6 @@
3
3
  "contractName": "MultiBaseGovernanceShareField",
4
4
  "sourceName": "contracts/governance/MultiBaseGovernanceShareField.sol",
5
5
  "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "bytes32",
10
- "name": "c__0x125e83b4",
11
- "type": "bytes32"
12
- }
13
- ],
14
- "name": "c_0x125e83b4",
15
- "outputs": [],
16
- "stateMutability": "pure",
17
- "type": "function"
18
- },
19
6
  {
20
7
  "inputs": [
21
8
  {
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/8c160f338d2c283c42710db9a78c71bd.json"
3
+ "buildInfo": "../../../build-info/f5d0ac3881ab8367417a64664691e2c6.json"
4
4
  }