@artblocks/contracts 1.0.4 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/README.md +75 -7
  2. package/artifacts/contracts/AdminACLV0.sol/AdminACLV0.json +2 -2
  3. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  4. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +336 -131
  5. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +2047 -0
  6. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +2021 -0
  7. package/artifacts/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol/MinterBase.json +1 -1
  8. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  9. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  10. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol/MinterDAExpV4.json +3 -3
  11. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  12. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  13. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +1109 -0
  14. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  16. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol/MinterDALinV4.json +3 -3
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  20. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol/MinterHolderV4.json +3 -3
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  25. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol/MinterMerkleV5.json +3 -3
  26. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +31 -63
  27. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol/MinterPolyptychV0.json +3 -3
  28. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol/MinterSEAV0.json +3 -3
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  31. package/artifacts/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol/MinterSetPriceV4.json +3 -3
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol/MinterSetPriceERC20V0.json +65 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol/MinterSetPriceERC20V1.json +65 -2
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +807 -0
  37. package/artifacts/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol/GenArt721MinterBurner_PBAB.json +65 -2
  38. package/artifacts/contracts/engine/V2/GenArt721Minter_PBAB.sol/GenArt721Minter_PBAB.json +65 -2
  39. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +606 -0
  40. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +565 -209
  41. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +785 -227
  42. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +40 -15
  43. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  44. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +40 -15
  45. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +36 -68
  46. package/artifacts/contracts/engine-registry/CoreRegistryV1.sol/CoreRegistryV1.json +12 -12
  47. package/artifacts/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol/IAdminACLV0_Extended.json +140 -0
  48. package/artifacts/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol/IBytecodeStorageReaderV2.json +130 -0
  49. package/artifacts/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol/ICoreRegistryV1.json +6 -6
  50. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +71 -39
  51. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +283 -0
  52. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol/IFilteredMinterDAExpSettlementV0.json +12 -12
  53. package/artifacts/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol/IFilteredMinterDAExpSettlementV1.json +12 -12
  54. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +30 -62
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +30 -62
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +170 -104
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +170 -104
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +1028 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +741 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol/IGenArt721CoreContractV3_ProjectFinance.json +87 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol/IGenArt721Minter_PBAB.json +279 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/IMinterFilterV1.sol/IMinterFilterV1.json +22 -22
  63. package/artifacts/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol/IPseudorandomAtomic.json +1 -1
  64. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol/ISharedMinterDAExpSettlementV0.json +26 -101
  65. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol/ISharedMinterDAExpV0.json +1 -57
  66. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol/ISharedMinterDALinV0.json +1 -57
  67. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol/ISharedMinterDAV0.json +2 -21
  68. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol/ISharedMinterHolderERC20V0.json +158 -0
  69. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol/ISharedMinterHolderV0.json +15 -90
  70. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol/ISharedMinterMerkleV0.json +10 -36
  71. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol/ISharedMinterRAMV0.json +62 -0
  72. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol/ISharedMinterRequired.json +37 -0
  73. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol/ISharedMinterSEAV0.json +4 -236
  74. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol/ISharedMinterSimplePurchaseV0.json +5 -5
  75. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterV0.sol/ISharedMinterV0.json +7 -423
  76. package/artifacts/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol/ISharedRandomizerV0.json +17 -17
  77. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol/ISplitAtomicFactoryV0.json +170 -0
  78. package/artifacts/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol/ISplitAtomicV0.json +126 -0
  79. package/artifacts/contracts/interfaces/v0.8.x/ISplitProviderV0.sol/ISplitProviderV0.json +98 -0
  80. package/artifacts/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol/ISplitFactoryV2.json +123 -0
  81. package/artifacts/contracts/libs/integration-refs/delegation-registry/DelegationRegistry.sol/DelegationRegistry.json +2 -2
  82. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeMock.sol/GnosisSafeMock.json +2 -2
  83. package/artifacts/contracts/libs/integration-refs/gnosis-safe/GnosisSafeProxyFactoryMock.sol/GnosisSafeProxyFactoryMock.json +2 -2
  84. package/artifacts/contracts/libs/integration-refs/gnosis-safe/MultiSendMock.sol/MultiSendMock.json +2 -2
  85. package/artifacts/contracts/libs/integration-refs/weth9/weth9.sol/WETH9_.json +2 -2
  86. package/artifacts/contracts/libs/v0.8.x/ABHelpers.sol/ABHelpers.json +2 -2
  87. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  88. package/artifacts/contracts/libs/v0.8.x/BitMap.sol/BitMaps256.json +10 -0
  89. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV0.sol/BytecodeStorage.json +2 -2
  90. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageReader.json +2 -2
  91. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV1.sol/BytecodeStorageWriter.json +2 -2
  92. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +214 -0
  93. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +10 -0
  94. package/artifacts/contracts/libs/v0.8.x/Bytes32Strings.sol/Bytes32Strings.json +2 -2
  95. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +10 -0
  96. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeed.sol/ERC721_PackedHashSeed.json +2 -2
  97. package/artifacts/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol/ERC721_PackedHashSeedV1.json +444 -0
  98. package/artifacts/contracts/libs/v0.8.x/PackedBools.sol/PackedBools.json +10 -0
  99. package/artifacts/contracts/libs/v0.8.x/SSTORE2.sol/SSTORE2.json +2 -2
  100. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +208 -0
  101. package/artifacts/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol/DAExpLib.json +60 -3
  102. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALib.sol/DALib.json +30 -0
  103. package/artifacts/contracts/libs/v0.8.x/minter-libs/DALinLib.sol/DALinLib.json +60 -3
  104. package/artifacts/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol/GenericMinterEventsLib.json +346 -0
  105. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +29 -3
  106. package/artifacts/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol/MerkleLib.json +30 -3
  107. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  108. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +398 -0
  109. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +254 -3
  110. package/artifacts/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol/SetPriceLib.json +48 -3
  111. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +41 -3
  112. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +35 -3
  113. package/artifacts/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol/TokenHolderLib.json +79 -3
  114. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  115. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +41 -41
  116. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +66 -632
  117. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +67 -594
  118. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +33 -524
  119. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +66 -632
  120. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +33 -524
  121. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +1374 -0
  122. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +56 -722
  123. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +58 -454
  124. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +61 -552
  125. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +55 -497
  126. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +110 -571
  127. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +69 -560
  128. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +28 -444
  129. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +417 -0
  130. package/artifacts/contracts/mock/BytecodeV2LibCallsMock.sol/BytecodeV2LibCallsMock.json +154 -0
  131. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +428 -0
  132. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  133. package/artifacts/contracts/mock/ERC20Mock.sol/ERC20Mock.json +2 -2
  134. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +24 -0
  135. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +4 -9
  136. package/artifacts/contracts/mock/Mock0xSplitsV2PullFactory.sol/Mock0xSplitsV2PullFactory.json +149 -0
  137. package/artifacts/contracts/mock/Mock0xSplitsV2Splitter.sol/Mock0xSplitsV2Splitter.json +99 -0
  138. package/artifacts/contracts/mock/MockAdminACLV0.sol/MockAdminACLV0Events.json +20 -2
  139. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +20 -2
  140. package/artifacts/contracts/mock/OriginRegisterMock.sol/OriginRegisterMock.json +2 -2
  141. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  142. package/artifacts/contracts/mock/ReentrancyGenArt721MinterMock.sol/ReentrancyGenArt721MinterMock.json +100 -0
  143. package/artifacts/contracts/mock/ReentrancyHolderMock.sol/ReentrancyHolderMock.json +2 -2
  144. package/artifacts/contracts/mock/ReentrancyHolderMockShared.sol/ReentrancyHolderMockShared.json +136 -0
  145. package/artifacts/contracts/mock/ReentrancyMerkleMock.sol/ReentrancyMerkleMock.json +2 -2
  146. package/artifacts/contracts/mock/ReentrancyMerkleMockShared.sol/ReentrancyMerkleMockShared.json +105 -0
  147. package/artifacts/contracts/mock/ReentrancyMock.sol/ReentrancyMock.json +2 -2
  148. package/artifacts/contracts/mock/ReentrancyMockShared.sol/ReentrancyMockShared.json +100 -0
  149. package/artifacts/contracts/mock/ReentrancySEAMock.sol/ReentrancySEAAutoBidderMock.json +2 -2
  150. package/artifacts/contracts/mock/ReentrancySEAMockShared.sol/ReentrancySEAAutoBidderMockShared.json +69 -0
  151. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterDrainETHMock.json +54 -0
  152. package/artifacts/contracts/mock/ReentrancySplitterMocks.sol/ReentrancySplitterSendETHMock.json +54 -0
  153. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  154. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  155. package/artifacts/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol/PseudorandomAtomic.json +2 -2
  156. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +19 -19
  157. package/artifacts/contracts/split/SplitAtomicFactoryV0.sol/SplitAtomicFactoryV0.json +203 -0
  158. package/artifacts/contracts/split/SplitAtomicV0.sol/SplitAtomicV0.json +168 -0
  159. package/artifacts/contracts/split/split-provider/SplitProviderV0.sol/SplitProviderV0.json +141 -0
  160. package/contracts/AdminACLV0.sol +6 -2
  161. package/contracts/AdminACLV1.sol +2 -2
  162. package/contracts/DependencyRegistryV0.sol +737 -390
  163. package/contracts/{GenArt721CoreV3.sol → archive/GenArt721CoreV3.sol} +56 -20
  164. package/contracts/{explorations → archive}/GenArt721CoreV3_Explorations.sol +49 -13
  165. package/contracts/{minter-suite → archive/minter-suite}/Minters/MinterBase_v0_1_1.sol +4 -4
  166. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExp}/MinterDAExpV4.sol +4 -4
  167. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol +4 -4
  168. package/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol +5 -5
  169. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDAExpSettlement}/MinterDAExpSettlementV2.sol +9 -62
  170. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterDALin}/MinterDALinV4.sol +4 -4
  171. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterHolder}/MinterHolderV4.sol +5 -5
  172. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterMerkle}/MinterMerkleV5.sol +5 -5
  173. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterPolyptych}/MinterPolyptychV0.sol +7 -7
  174. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSEA}/MinterSEAV0.sol +13 -13
  175. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPrice}/MinterSetPriceV4.sol +4 -4
  176. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V0.sol +82 -10
  177. package/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V1.sol +82 -10
  178. package/contracts/{minter-suite/Minters → archive/minter-suite/Minters/MinterSetPriceERC20}/MinterSetPriceERC20V4.sol +88 -21
  179. package/contracts/engine/V2/GenArt721MinterBurner_PBAB.sol +81 -22
  180. package/contracts/engine/V2/GenArt721Minter_PBAB.sol +80 -22
  181. package/contracts/engine/V3/EngineFactoryV0.sol +419 -0
  182. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +893 -493
  183. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +1053 -655
  184. package/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol +7 -13
  185. package/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol +5 -11
  186. package/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol +2 -2
  187. package/contracts/engine-registry/CoreRegistryV1.sol +58 -65
  188. package/contracts/interfaces/v0.8.x/IAdminACLV0_Extended.sol +20 -0
  189. package/contracts/interfaces/v0.8.x/IBytecodeStorageReaderV2.sol +23 -0
  190. package/contracts/interfaces/v0.8.x/ICoreRegistryV1.sol +6 -8
  191. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +48 -43
  192. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +124 -0
  193. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV0.sol +1 -3
  194. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpSettlementV1.sol +1 -3
  195. package/contracts/interfaces/v0.8.x/IFilteredMinterDAExpV1.sol +1 -3
  196. package/contracts/interfaces/v0.8.x/IFilteredMinterDALinV1.sol +1 -3
  197. package/contracts/interfaces/v0.8.x/IFilteredMinterHolderV2.sol +1 -3
  198. package/contracts/interfaces/v0.8.x/IFilteredMinterMerkleV2.sol +1 -3
  199. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +115 -11
  200. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +84 -8
  201. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol +26 -8
  202. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol +141 -0
  203. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol +78 -0
  204. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_ProjectFinance.sol +47 -0
  205. package/contracts/interfaces/v0.8.x/IGenArt721Minter_PBAB.sol +91 -0
  206. package/contracts/interfaces/v0.8.x/IMinterFilterV1.sol +25 -25
  207. package/contracts/interfaces/v0.8.x/IPseudorandomAtomic.sol +1 -3
  208. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpSettlementV0.sol +30 -20
  209. package/contracts/interfaces/v0.8.x/ISharedMinterDAExpV0.sol +1 -14
  210. package/contracts/interfaces/v0.8.x/ISharedMinterDALinV0.sol +1 -15
  211. package/contracts/interfaces/v0.8.x/ISharedMinterDAV0.sol +2 -8
  212. package/contracts/interfaces/v0.8.x/ISharedMinterHolderERC20V0.sol +47 -0
  213. package/contracts/interfaces/v0.8.x/ISharedMinterHolderV0.sol +15 -43
  214. package/contracts/interfaces/v0.8.x/ISharedMinterMerkleV0.sol +10 -20
  215. package/contracts/interfaces/v0.8.x/ISharedMinterRAMV0.sol +23 -0
  216. package/contracts/interfaces/v0.8.x/ISharedMinterRequired.sol +20 -0
  217. package/contracts/interfaces/v0.8.x/ISharedMinterSEAV0.sol +1 -67
  218. package/contracts/interfaces/v0.8.x/ISharedMinterSimplePurchaseV0.sol +5 -5
  219. package/contracts/interfaces/v0.8.x/ISharedMinterV0.sol +18 -160
  220. package/contracts/interfaces/v0.8.x/ISharedRandomizerV0.sol +37 -37
  221. package/contracts/interfaces/v0.8.x/ISplitAtomicFactoryV0.sol +81 -0
  222. package/contracts/interfaces/v0.8.x/ISplitAtomicV0.sol +72 -0
  223. package/contracts/interfaces/v0.8.x/ISplitProviderV0.sol +49 -0
  224. package/contracts/interfaces/v0.8.x/integration-refs/splits-0x-v2/ISplitFactoryV2.sol +62 -0
  225. package/contracts/libs/v0.8.x/ABHelpers.sol +31 -17
  226. package/contracts/libs/v0.8.x/AuthLib.sol +101 -102
  227. package/contracts/libs/v0.8.x/BitMap.sol +112 -0
  228. package/contracts/libs/v0.8.x/BytecodeStorageV2.sol +593 -0
  229. package/contracts/libs/v0.8.x/Bytes32Strings.sol +5 -5
  230. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +90 -0
  231. package/contracts/libs/v0.8.x/ERC721_PackedHashSeedV1.sol +591 -0
  232. package/contracts/libs/v0.8.x/PackedBools.sol +42 -0
  233. package/contracts/libs/v0.8.x/V3FlexLib.sol +591 -0
  234. package/contracts/libs/v0.8.x/minter-libs/DAExpLib.sol +162 -39
  235. package/contracts/libs/v0.8.x/minter-libs/DALib.sol +26 -0
  236. package/contracts/libs/v0.8.x/minter-libs/DALinLib.sol +139 -37
  237. package/contracts/libs/v0.8.x/minter-libs/GenericMinterEventsLib.sol +171 -0
  238. package/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol +299 -158
  239. package/contracts/libs/v0.8.x/minter-libs/MerkleLib.sol +268 -55
  240. package/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol +138 -58
  241. package/contracts/libs/v0.8.x/minter-libs/RAMLib.sol +2927 -0
  242. package/contracts/libs/v0.8.x/minter-libs/SEALib.sol +796 -123
  243. package/contracts/libs/v0.8.x/minter-libs/SetPriceLib.sol +131 -13
  244. package/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol +607 -224
  245. package/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol +494 -330
  246. package/contracts/libs/v0.8.x/minter-libs/TokenHolderLib.sol +217 -78
  247. package/contracts/minter-suite/MinterFilter/MinterFilterV2.sol +358 -309
  248. package/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol +391 -491
  249. package/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol +396 -632
  250. package/contracts/minter-suite/Minters/MinterDAExpV5.sol +212 -273
  251. package/contracts/minter-suite/Minters/MinterDALinHolderV5.sol +393 -488
  252. package/contracts/minter-suite/Minters/MinterDALinV5.sol +220 -277
  253. package/contracts/minter-suite/Minters/MinterRAMV0.sol +1205 -0
  254. package/contracts/minter-suite/Minters/MinterSEAV1.sol +329 -677
  255. package/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol +287 -303
  256. package/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol +355 -446
  257. package/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol +328 -416
  258. package/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol +552 -622
  259. package/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol +429 -553
  260. package/contracts/minter-suite/Minters/MinterSetPriceV5.sol +180 -227
  261. package/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol +446 -0
  262. package/contracts/mock/BytecodeV2LibCallsMock.sol +128 -0
  263. package/contracts/mock/BytecodeV2TextCR_DMock.sol +316 -0
  264. package/contracts/mock/ForceSendMock.sol +22 -0
  265. package/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol +3 -10
  266. package/contracts/mock/Mock0xSplitsV2PullFactory.sol +75 -0
  267. package/contracts/mock/Mock0xSplitsV2Splitter.sol +47 -0
  268. package/contracts/mock/MockAdminACLV0.sol +21 -0
  269. package/contracts/mock/MockAdminACLV0_PROHIBITION.sol +21 -0
  270. package/contracts/mock/ReentrancyGenArt721MinterMock.sol +47 -0
  271. package/contracts/mock/ReentrancyHolderMockShared.sol +59 -0
  272. package/contracts/mock/ReentrancyMerkleMockShared.sol +58 -0
  273. package/contracts/mock/ReentrancyMockShared.sol +48 -0
  274. package/contracts/mock/ReentrancySEAMockShared.sol +40 -0
  275. package/contracts/mock/ReentrancySplitterMocks.sol +67 -0
  276. package/contracts/randomizer/primitive/PseudorandomAtomicBasic.sol +1 -1
  277. package/contracts/randomizer/shared/SharedRandomizerV0.sol +79 -71
  278. package/contracts/split/SplitAtomicFactoryV0.sol +121 -0
  279. package/contracts/split/SplitAtomicV0.sol +265 -0
  280. package/contracts/split/split-provider/SplitProviderV0.sol +201 -0
  281. package/package.json +79 -45
  282. package/artifacts/contracts/GenArt721CoreV3.sol/GenArt721CoreV3.json +0 -1965
  283. package/artifacts/contracts/explorations/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +0 -1939
  284. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +0 -1127
  285. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +0 -768
  286. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride.sol/GenArt721RoyaltyOverride.json +0 -208
  287. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol/GenArt721RoyaltyOverride_PBAB.json +0 -301
  288. package/contracts/royalty-registry/GenArt721RoyaltyOverride.sol +0 -168
  289. package/contracts/royalty-registry/GenArt721RoyaltyOverride_PBAB.sol +0 -221
@@ -7,12 +7,12 @@
7
7
  "inputs": [
8
8
  {
9
9
  "internalType": "address",
10
- "name": "_minterFilter",
10
+ "name": "minterFilter",
11
11
  "type": "address"
12
12
  },
13
13
  {
14
14
  "internalType": "address",
15
- "name": "_delegationRegistryAddress",
15
+ "name": "delegationRegistryAddress_",
16
16
  "type": "address"
17
17
  }
18
18
  ],
@@ -20,526 +20,35 @@
20
20
  "type": "constructor"
21
21
  },
22
22
  {
23
- "anonymous": false,
24
23
  "inputs": [
25
24
  {
26
- "indexed": true,
27
25
  "internalType": "uint256",
28
- "name": "_projectId",
26
+ "name": "projectId",
29
27
  "type": "uint256"
30
28
  },
31
29
  {
32
- "indexed": true,
33
30
  "internalType": "address",
34
- "name": "_coreContract",
31
+ "name": "coreContract",
35
32
  "type": "address"
36
33
  },
37
34
  {
38
- "indexed": false,
39
35
  "internalType": "address[]",
40
- "name": "_ownedNFTAddresses",
36
+ "name": "ownedNFTAddressesAdd",
41
37
  "type": "address[]"
42
38
  },
43
39
  {
44
- "indexed": false,
45
40
  "internalType": "uint256[]",
46
- "name": "_ownedNFTProjectIds",
41
+ "name": "ownedNFTProjectIdsAdd",
47
42
  "type": "uint256[]"
48
- }
49
- ],
50
- "name": "AllowedHoldersOfProjects",
51
- "type": "event"
52
- },
53
- {
54
- "anonymous": false,
55
- "inputs": [
56
- {
57
- "indexed": true,
58
- "internalType": "uint256",
59
- "name": "_projectId",
60
- "type": "uint256"
61
- },
62
- {
63
- "indexed": true,
64
- "internalType": "address",
65
- "name": "_coreContract",
66
- "type": "address"
67
- },
68
- {
69
- "indexed": false,
70
- "internalType": "bytes32",
71
- "name": "_key",
72
- "type": "bytes32"
73
- }
74
- ],
75
- "name": "ConfigKeyRemoved",
76
- "type": "event"
77
- },
78
- {
79
- "anonymous": false,
80
- "inputs": [
81
- {
82
- "indexed": true,
83
- "internalType": "uint256",
84
- "name": "_projectId",
85
- "type": "uint256"
86
- },
87
- {
88
- "indexed": true,
89
- "internalType": "address",
90
- "name": "_coreContract",
91
- "type": "address"
92
- },
93
- {
94
- "indexed": false,
95
- "internalType": "bytes32",
96
- "name": "_key",
97
- "type": "bytes32"
98
- },
99
- {
100
- "indexed": false,
101
- "internalType": "uint256",
102
- "name": "_value",
103
- "type": "uint256"
104
- }
105
- ],
106
- "name": "ConfigValueAddedToSet",
107
- "type": "event"
108
- },
109
- {
110
- "anonymous": false,
111
- "inputs": [
112
- {
113
- "indexed": true,
114
- "internalType": "uint256",
115
- "name": "_projectId",
116
- "type": "uint256"
117
- },
118
- {
119
- "indexed": true,
120
- "internalType": "address",
121
- "name": "_coreContract",
122
- "type": "address"
123
- },
124
- {
125
- "indexed": false,
126
- "internalType": "bytes32",
127
- "name": "_key",
128
- "type": "bytes32"
129
- },
130
- {
131
- "indexed": false,
132
- "internalType": "address",
133
- "name": "_value",
134
- "type": "address"
135
- }
136
- ],
137
- "name": "ConfigValueAddedToSet",
138
- "type": "event"
139
- },
140
- {
141
- "anonymous": false,
142
- "inputs": [
143
- {
144
- "indexed": true,
145
- "internalType": "uint256",
146
- "name": "_projectId",
147
- "type": "uint256"
148
- },
149
- {
150
- "indexed": true,
151
- "internalType": "address",
152
- "name": "_coreContract",
153
- "type": "address"
154
- },
155
- {
156
- "indexed": false,
157
- "internalType": "bytes32",
158
- "name": "_key",
159
- "type": "bytes32"
160
- },
161
- {
162
- "indexed": false,
163
- "internalType": "bytes32",
164
- "name": "_value",
165
- "type": "bytes32"
166
- }
167
- ],
168
- "name": "ConfigValueAddedToSet",
169
- "type": "event"
170
- },
171
- {
172
- "anonymous": false,
173
- "inputs": [
174
- {
175
- "indexed": true,
176
- "internalType": "uint256",
177
- "name": "_projectId",
178
- "type": "uint256"
179
- },
180
- {
181
- "indexed": true,
182
- "internalType": "address",
183
- "name": "_coreContract",
184
- "type": "address"
185
- },
186
- {
187
- "indexed": false,
188
- "internalType": "bytes32",
189
- "name": "_key",
190
- "type": "bytes32"
191
- },
192
- {
193
- "indexed": false,
194
- "internalType": "uint256",
195
- "name": "_value",
196
- "type": "uint256"
197
- }
198
- ],
199
- "name": "ConfigValueRemovedFromSet",
200
- "type": "event"
201
- },
202
- {
203
- "anonymous": false,
204
- "inputs": [
205
- {
206
- "indexed": true,
207
- "internalType": "uint256",
208
- "name": "_projectId",
209
- "type": "uint256"
210
- },
211
- {
212
- "indexed": true,
213
- "internalType": "address",
214
- "name": "_coreContract",
215
- "type": "address"
216
- },
217
- {
218
- "indexed": false,
219
- "internalType": "bytes32",
220
- "name": "_key",
221
- "type": "bytes32"
222
- },
223
- {
224
- "indexed": false,
225
- "internalType": "address",
226
- "name": "_value",
227
- "type": "address"
228
- }
229
- ],
230
- "name": "ConfigValueRemovedFromSet",
231
- "type": "event"
232
- },
233
- {
234
- "anonymous": false,
235
- "inputs": [
236
- {
237
- "indexed": true,
238
- "internalType": "uint256",
239
- "name": "_projectId",
240
- "type": "uint256"
241
- },
242
- {
243
- "indexed": true,
244
- "internalType": "address",
245
- "name": "_coreContract",
246
- "type": "address"
247
- },
248
- {
249
- "indexed": false,
250
- "internalType": "bytes32",
251
- "name": "_key",
252
- "type": "bytes32"
253
- },
254
- {
255
- "indexed": false,
256
- "internalType": "bytes32",
257
- "name": "_value",
258
- "type": "bytes32"
259
- }
260
- ],
261
- "name": "ConfigValueRemovedFromSet",
262
- "type": "event"
263
- },
264
- {
265
- "anonymous": false,
266
- "inputs": [
267
- {
268
- "indexed": true,
269
- "internalType": "uint256",
270
- "name": "_projectId",
271
- "type": "uint256"
272
- },
273
- {
274
- "indexed": true,
275
- "internalType": "address",
276
- "name": "_coreContract",
277
- "type": "address"
278
- },
279
- {
280
- "indexed": false,
281
- "internalType": "bytes32",
282
- "name": "_key",
283
- "type": "bytes32"
284
- },
285
- {
286
- "indexed": false,
287
- "internalType": "bool",
288
- "name": "_value",
289
- "type": "bool"
290
- }
291
- ],
292
- "name": "ConfigValueSet",
293
- "type": "event"
294
- },
295
- {
296
- "anonymous": false,
297
- "inputs": [
298
- {
299
- "indexed": true,
300
- "internalType": "uint256",
301
- "name": "_projectId",
302
- "type": "uint256"
303
- },
304
- {
305
- "indexed": true,
306
- "internalType": "address",
307
- "name": "_coreContract",
308
- "type": "address"
309
- },
310
- {
311
- "indexed": false,
312
- "internalType": "bytes32",
313
- "name": "_key",
314
- "type": "bytes32"
315
- },
316
- {
317
- "indexed": false,
318
- "internalType": "uint256",
319
- "name": "_value",
320
- "type": "uint256"
321
- }
322
- ],
323
- "name": "ConfigValueSet",
324
- "type": "event"
325
- },
326
- {
327
- "anonymous": false,
328
- "inputs": [
329
- {
330
- "indexed": true,
331
- "internalType": "uint256",
332
- "name": "_projectId",
333
- "type": "uint256"
334
- },
335
- {
336
- "indexed": true,
337
- "internalType": "address",
338
- "name": "_coreContract",
339
- "type": "address"
340
- },
341
- {
342
- "indexed": false,
343
- "internalType": "bytes32",
344
- "name": "_key",
345
- "type": "bytes32"
346
- },
347
- {
348
- "indexed": false,
349
- "internalType": "address",
350
- "name": "_value",
351
- "type": "address"
352
- }
353
- ],
354
- "name": "ConfigValueSet",
355
- "type": "event"
356
- },
357
- {
358
- "anonymous": false,
359
- "inputs": [
360
- {
361
- "indexed": true,
362
- "internalType": "uint256",
363
- "name": "_projectId",
364
- "type": "uint256"
365
- },
366
- {
367
- "indexed": true,
368
- "internalType": "address",
369
- "name": "_coreContract",
370
- "type": "address"
371
- },
372
- {
373
- "indexed": false,
374
- "internalType": "bytes32",
375
- "name": "_key",
376
- "type": "bytes32"
377
- },
378
- {
379
- "indexed": false,
380
- "internalType": "bytes32",
381
- "name": "_value",
382
- "type": "bytes32"
383
- }
384
- ],
385
- "name": "ConfigValueSet",
386
- "type": "event"
387
- },
388
- {
389
- "anonymous": false,
390
- "inputs": [
391
- {
392
- "indexed": false,
393
- "internalType": "address",
394
- "name": "delegationRegistry",
395
- "type": "address"
396
- }
397
- ],
398
- "name": "DelegationRegistryUpdated",
399
- "type": "event"
400
- },
401
- {
402
- "anonymous": false,
403
- "inputs": [
404
- {
405
- "indexed": true,
406
- "internalType": "uint256",
407
- "name": "_projectId",
408
- "type": "uint256"
409
- },
410
- {
411
- "indexed": true,
412
- "internalType": "address",
413
- "name": "_coreContract",
414
- "type": "address"
415
- },
416
- {
417
- "indexed": true,
418
- "internalType": "uint256",
419
- "name": "_pricePerTokenInWei",
420
- "type": "uint256"
421
- }
422
- ],
423
- "name": "PricePerTokenInWeiUpdated",
424
- "type": "event"
425
- },
426
- {
427
- "anonymous": false,
428
- "inputs": [
429
- {
430
- "indexed": true,
431
- "internalType": "uint256",
432
- "name": "_projectId",
433
- "type": "uint256"
434
- },
435
- {
436
- "indexed": true,
437
- "internalType": "address",
438
- "name": "_coreContract",
439
- "type": "address"
440
- },
441
- {
442
- "indexed": true,
443
- "internalType": "address",
444
- "name": "_currencyAddress",
445
- "type": "address"
446
- },
447
- {
448
- "indexed": false,
449
- "internalType": "string",
450
- "name": "_currencySymbol",
451
- "type": "string"
452
- }
453
- ],
454
- "name": "ProjectCurrencyInfoUpdated",
455
- "type": "event"
456
- },
457
- {
458
- "anonymous": false,
459
- "inputs": [
460
- {
461
- "indexed": true,
462
- "internalType": "uint256",
463
- "name": "_projectId",
464
- "type": "uint256"
465
- },
466
- {
467
- "indexed": true,
468
- "internalType": "address",
469
- "name": "_coreContract",
470
- "type": "address"
471
- },
472
- {
473
- "indexed": false,
474
- "internalType": "uint256",
475
- "name": "_maxInvocations",
476
- "type": "uint256"
477
- }
478
- ],
479
- "name": "ProjectMaxInvocationsLimitUpdated",
480
- "type": "event"
481
- },
482
- {
483
- "anonymous": false,
484
- "inputs": [
485
- {
486
- "indexed": true,
487
- "internalType": "uint256",
488
- "name": "_projectId",
489
- "type": "uint256"
490
- },
491
- {
492
- "indexed": true,
493
- "internalType": "address",
494
- "name": "_coreContract",
495
- "type": "address"
496
- },
497
- {
498
- "indexed": false,
499
- "internalType": "address[]",
500
- "name": "_ownedNFTAddresses",
501
- "type": "address[]"
502
- },
503
- {
504
- "indexed": false,
505
- "internalType": "uint256[]",
506
- "name": "_ownedNFTProjectIds",
507
- "type": "uint256[]"
508
- }
509
- ],
510
- "name": "RemovedHoldersOfProjects",
511
- "type": "event"
512
- },
513
- {
514
- "inputs": [
515
- {
516
- "internalType": "uint256",
517
- "name": "_projectId",
518
- "type": "uint256"
519
- },
520
- {
521
- "internalType": "address",
522
- "name": "_coreContract",
523
- "type": "address"
524
43
  },
525
44
  {
526
45
  "internalType": "address[]",
527
- "name": "_ownedNFTAddressesAdd",
46
+ "name": "ownedNFTAddressesRemove",
528
47
  "type": "address[]"
529
48
  },
530
49
  {
531
50
  "internalType": "uint256[]",
532
- "name": "_ownedNFTProjectIdsAdd",
533
- "type": "uint256[]"
534
- },
535
- {
536
- "internalType": "address[]",
537
- "name": "_ownedNFTAddressesRemove",
538
- "type": "address[]"
539
- },
540
- {
541
- "internalType": "uint256[]",
542
- "name": "_ownedNFTProjectIdsRemove",
51
+ "name": "ownedNFTProjectIdsRemove",
543
52
  "type": "uint256[]"
544
53
  }
545
54
  ],
@@ -552,22 +61,22 @@
552
61
  "inputs": [
553
62
  {
554
63
  "internalType": "uint256",
555
- "name": "_projectId",
64
+ "name": "projectId",
556
65
  "type": "uint256"
557
66
  },
558
67
  {
559
68
  "internalType": "address",
560
- "name": "_coreContract",
69
+ "name": "coreContract",
561
70
  "type": "address"
562
71
  },
563
72
  {
564
73
  "internalType": "address[]",
565
- "name": "_ownedNFTAddresses",
74
+ "name": "ownedNFTAddresses",
566
75
  "type": "address[]"
567
76
  },
568
77
  {
569
78
  "internalType": "uint256[]",
570
- "name": "_ownedNFTProjectIds",
79
+ "name": "ownedNFTProjectIds",
571
80
  "type": "uint256[]"
572
81
  }
573
82
  ],
@@ -580,22 +89,22 @@
580
89
  "inputs": [
581
90
  {
582
91
  "internalType": "uint256",
583
- "name": "_projectId",
92
+ "name": "projectId",
584
93
  "type": "uint256"
585
94
  },
586
95
  {
587
96
  "internalType": "address",
588
- "name": "_coreContract",
97
+ "name": "coreContract",
589
98
  "type": "address"
590
99
  },
591
100
  {
592
101
  "internalType": "address",
593
- "name": "_ownedNFTAddress",
102
+ "name": "ownedNFTAddress",
594
103
  "type": "address"
595
104
  },
596
105
  {
597
106
  "internalType": "uint256",
598
- "name": "_ownedNFTProjectId",
107
+ "name": "ownedNFTProjectId",
599
108
  "type": "uint256"
600
109
  }
601
110
  ],
@@ -614,12 +123,12 @@
614
123
  "inputs": [
615
124
  {
616
125
  "internalType": "uint256",
617
- "name": "_projectId",
126
+ "name": "projectId",
618
127
  "type": "uint256"
619
128
  },
620
129
  {
621
130
  "internalType": "address",
622
- "name": "_coreContract",
131
+ "name": "coreContract",
623
132
  "type": "address"
624
133
  }
625
134
  ],
@@ -651,12 +160,12 @@
651
160
  "inputs": [
652
161
  {
653
162
  "internalType": "uint256",
654
- "name": "_projectId",
163
+ "name": "projectId",
655
164
  "type": "uint256"
656
165
  },
657
166
  {
658
167
  "internalType": "address",
659
- "name": "_coreContract",
168
+ "name": "coreContract",
660
169
  "type": "address"
661
170
  }
662
171
  ],
@@ -675,22 +184,22 @@
675
184
  "inputs": [
676
185
  {
677
186
  "internalType": "uint256",
678
- "name": "_projectId",
187
+ "name": "projectId",
679
188
  "type": "uint256"
680
189
  },
681
190
  {
682
191
  "internalType": "address",
683
- "name": "_coreContract",
192
+ "name": "coreContract",
684
193
  "type": "address"
685
194
  },
686
195
  {
687
196
  "internalType": "uint256",
688
- "name": "_panelId",
197
+ "name": "panelId",
689
198
  "type": "uint256"
690
199
  },
691
200
  {
692
201
  "internalType": "bytes12",
693
- "name": "_hashSeed",
202
+ "name": "hashSeed",
694
203
  "type": "bytes12"
695
204
  }
696
205
  ],
@@ -709,12 +218,12 @@
709
218
  "inputs": [
710
219
  {
711
220
  "internalType": "uint256",
712
- "name": "_projectId",
221
+ "name": "projectId",
713
222
  "type": "uint256"
714
223
  },
715
224
  {
716
225
  "internalType": "address",
717
- "name": "_coreContract",
226
+ "name": "coreContract",
718
227
  "type": "address"
719
228
  }
720
229
  ],
@@ -748,12 +257,12 @@
748
257
  "inputs": [
749
258
  {
750
259
  "internalType": "uint256",
751
- "name": "_projectId",
260
+ "name": "projectId",
752
261
  "type": "uint256"
753
262
  },
754
263
  {
755
264
  "internalType": "address",
756
- "name": "_coreContract",
265
+ "name": "coreContract",
757
266
  "type": "address"
758
267
  }
759
268
  ],
@@ -772,12 +281,12 @@
772
281
  "inputs": [
773
282
  {
774
283
  "internalType": "uint256",
775
- "name": "_projectId",
284
+ "name": "projectId",
776
285
  "type": "uint256"
777
286
  },
778
287
  {
779
288
  "internalType": "address",
780
- "name": "_coreContract",
289
+ "name": "coreContract",
781
290
  "type": "address"
782
291
  }
783
292
  ],
@@ -790,22 +299,22 @@
790
299
  "inputs": [
791
300
  {
792
301
  "internalType": "uint256",
793
- "name": "_projectId",
302
+ "name": "projectId",
794
303
  "type": "uint256"
795
304
  },
796
305
  {
797
306
  "internalType": "address",
798
- "name": "_coreContract",
307
+ "name": "coreContract",
799
308
  "type": "address"
800
309
  },
801
310
  {
802
311
  "internalType": "address",
803
- "name": "_ownedNFTAddress",
312
+ "name": "ownedNFTAddress",
804
313
  "type": "address"
805
314
  },
806
315
  {
807
316
  "internalType": "uint256",
808
- "name": "_ownedNFTTokenId",
317
+ "name": "ownedNFTTokenId",
809
318
  "type": "uint256"
810
319
  }
811
320
  ],
@@ -824,7 +333,7 @@
824
333
  "inputs": [
825
334
  {
826
335
  "internalType": "address",
827
- "name": "_coreContract",
336
+ "name": "coreContract",
828
337
  "type": "address"
829
338
  }
830
339
  ],
@@ -843,17 +352,17 @@
843
352
  "inputs": [
844
353
  {
845
354
  "internalType": "uint256",
846
- "name": "_projectId",
355
+ "name": "projectId",
847
356
  "type": "uint256"
848
357
  },
849
358
  {
850
359
  "internalType": "address",
851
- "name": "_coreContract",
360
+ "name": "coreContract",
852
361
  "type": "address"
853
362
  },
854
363
  {
855
364
  "internalType": "uint24",
856
- "name": "_maxInvocations",
365
+ "name": "maxInvocations",
857
366
  "type": "uint24"
858
367
  }
859
368
  ],
@@ -866,12 +375,12 @@
866
375
  "inputs": [
867
376
  {
868
377
  "internalType": "uint256",
869
- "name": "_projectId",
378
+ "name": "projectId",
870
379
  "type": "uint256"
871
380
  },
872
381
  {
873
382
  "internalType": "address",
874
- "name": "_coreContract",
383
+ "name": "coreContract",
875
384
  "type": "address"
876
385
  }
877
386
  ],
@@ -941,12 +450,12 @@
941
450
  "inputs": [
942
451
  {
943
452
  "internalType": "uint256",
944
- "name": "_projectId",
453
+ "name": "projectId",
945
454
  "type": "uint256"
946
455
  },
947
456
  {
948
457
  "internalType": "address",
949
- "name": "_coreContract",
458
+ "name": "coreContract",
950
459
  "type": "address"
951
460
  }
952
461
  ],
@@ -965,12 +474,12 @@
965
474
  "inputs": [
966
475
  {
967
476
  "internalType": "uint256",
968
- "name": "_projectId",
477
+ "name": "projectId",
969
478
  "type": "uint256"
970
479
  },
971
480
  {
972
481
  "internalType": "address",
973
- "name": "_coreContract",
482
+ "name": "coreContract",
974
483
  "type": "address"
975
484
  }
976
485
  ],
@@ -989,22 +498,32 @@
989
498
  "inputs": [
990
499
  {
991
500
  "internalType": "uint256",
992
- "name": "_projectId",
501
+ "name": "projectId",
502
+ "type": "uint256"
503
+ },
504
+ {
505
+ "internalType": "address",
506
+ "name": "coreContract",
507
+ "type": "address"
508
+ },
509
+ {
510
+ "internalType": "uint256",
511
+ "name": "maxPricePerToken",
993
512
  "type": "uint256"
994
513
  },
995
514
  {
996
515
  "internalType": "address",
997
- "name": "_coreContract",
516
+ "name": "currencyAddress",
998
517
  "type": "address"
999
518
  },
1000
519
  {
1001
520
  "internalType": "address",
1002
- "name": "_ownedNFTAddress",
521
+ "name": "ownedNFTAddress",
1003
522
  "type": "address"
1004
523
  },
1005
524
  {
1006
525
  "internalType": "uint256",
1007
- "name": "_ownedNFTTokenId",
526
+ "name": "ownedNFTTokenId",
1008
527
  "type": "uint256"
1009
528
  }
1010
529
  ],
@@ -1016,39 +535,49 @@
1016
535
  "type": "uint256"
1017
536
  }
1018
537
  ],
1019
- "stateMutability": "payable",
538
+ "stateMutability": "nonpayable",
1020
539
  "type": "function"
1021
540
  },
1022
541
  {
1023
542
  "inputs": [
1024
543
  {
1025
544
  "internalType": "address",
1026
- "name": "_to",
545
+ "name": "to",
546
+ "type": "address"
547
+ },
548
+ {
549
+ "internalType": "uint256",
550
+ "name": "projectId",
551
+ "type": "uint256"
552
+ },
553
+ {
554
+ "internalType": "address",
555
+ "name": "coreContract",
1027
556
  "type": "address"
1028
557
  },
1029
558
  {
1030
559
  "internalType": "uint256",
1031
- "name": "_projectId",
560
+ "name": "maxPricePerToken",
1032
561
  "type": "uint256"
1033
562
  },
1034
563
  {
1035
564
  "internalType": "address",
1036
- "name": "_coreContract",
565
+ "name": "currencyAddress",
1037
566
  "type": "address"
1038
567
  },
1039
568
  {
1040
569
  "internalType": "address",
1041
- "name": "_ownedNFTAddress",
570
+ "name": "ownedNFTAddress",
1042
571
  "type": "address"
1043
572
  },
1044
573
  {
1045
574
  "internalType": "uint256",
1046
- "name": "_ownedNFTTokenId",
575
+ "name": "ownedNFTTokenId",
1047
576
  "type": "uint256"
1048
577
  },
1049
578
  {
1050
579
  "internalType": "address",
1051
- "name": "_vault",
580
+ "name": "vault",
1052
581
  "type": "address"
1053
582
  }
1054
583
  ],
@@ -1060,34 +589,44 @@
1060
589
  "type": "uint256"
1061
590
  }
1062
591
  ],
1063
- "stateMutability": "payable",
592
+ "stateMutability": "nonpayable",
1064
593
  "type": "function"
1065
594
  },
1066
595
  {
1067
596
  "inputs": [
1068
597
  {
1069
598
  "internalType": "address",
1070
- "name": "_to",
599
+ "name": "to",
600
+ "type": "address"
601
+ },
602
+ {
603
+ "internalType": "uint256",
604
+ "name": "projectId",
605
+ "type": "uint256"
606
+ },
607
+ {
608
+ "internalType": "address",
609
+ "name": "coreContract",
1071
610
  "type": "address"
1072
611
  },
1073
612
  {
1074
613
  "internalType": "uint256",
1075
- "name": "_projectId",
614
+ "name": "maxPricePerToken",
1076
615
  "type": "uint256"
1077
616
  },
1078
617
  {
1079
618
  "internalType": "address",
1080
- "name": "_coreContract",
619
+ "name": "currencyAddress",
1081
620
  "type": "address"
1082
621
  },
1083
622
  {
1084
623
  "internalType": "address",
1085
- "name": "_ownedNFTAddress",
624
+ "name": "ownedNFTAddress",
1086
625
  "type": "address"
1087
626
  },
1088
627
  {
1089
628
  "internalType": "uint256",
1090
- "name": "_ownedNFTTokenId",
629
+ "name": "ownedNFTTokenId",
1091
630
  "type": "uint256"
1092
631
  }
1093
632
  ],
@@ -1099,29 +638,29 @@
1099
638
  "type": "uint256"
1100
639
  }
1101
640
  ],
1102
- "stateMutability": "payable",
641
+ "stateMutability": "nonpayable",
1103
642
  "type": "function"
1104
643
  },
1105
644
  {
1106
645
  "inputs": [
1107
646
  {
1108
647
  "internalType": "uint256",
1109
- "name": "_projectId",
648
+ "name": "projectId",
1110
649
  "type": "uint256"
1111
650
  },
1112
651
  {
1113
652
  "internalType": "address",
1114
- "name": "_coreContract",
653
+ "name": "coreContract",
1115
654
  "type": "address"
1116
655
  },
1117
656
  {
1118
657
  "internalType": "address[]",
1119
- "name": "_ownedNFTAddresses",
658
+ "name": "ownedNFTAddresses",
1120
659
  "type": "address[]"
1121
660
  },
1122
661
  {
1123
662
  "internalType": "uint256[]",
1124
- "name": "_ownedNFTProjectIds",
663
+ "name": "ownedNFTProjectIds",
1125
664
  "type": "uint256[]"
1126
665
  }
1127
666
  ],
@@ -1134,12 +673,12 @@
1134
673
  "inputs": [
1135
674
  {
1136
675
  "internalType": "uint256",
1137
- "name": "_projectId",
676
+ "name": "projectId",
1138
677
  "type": "uint256"
1139
678
  },
1140
679
  {
1141
680
  "internalType": "address",
1142
- "name": "_coreContract",
681
+ "name": "coreContract",
1143
682
  "type": "address"
1144
683
  }
1145
684
  ],
@@ -1149,7 +688,7 @@
1149
688
  "components": [
1150
689
  {
1151
690
  "internalType": "uint248",
1152
- "name": "pricePerTokenInWei",
691
+ "name": "pricePerToken",
1153
692
  "type": "uint248"
1154
693
  },
1155
694
  {
@@ -1170,12 +709,12 @@
1170
709
  "inputs": [
1171
710
  {
1172
711
  "internalType": "uint256",
1173
- "name": "_projectId",
712
+ "name": "projectId",
1174
713
  "type": "uint256"
1175
714
  },
1176
715
  {
1177
716
  "internalType": "address",
1178
- "name": "_coreContract",
717
+ "name": "coreContract",
1179
718
  "type": "address"
1180
719
  }
1181
720
  ],
@@ -1188,17 +727,17 @@
1188
727
  "inputs": [
1189
728
  {
1190
729
  "internalType": "uint256",
1191
- "name": "_projectId",
730
+ "name": "projectId",
1192
731
  "type": "uint256"
1193
732
  },
1194
733
  {
1195
734
  "internalType": "address",
1196
- "name": "_coreContract",
735
+ "name": "coreContract",
1197
736
  "type": "address"
1198
737
  },
1199
738
  {
1200
739
  "internalType": "uint248",
1201
- "name": "_pricePerTokenInWei",
740
+ "name": "pricePerTokenInWei",
1202
741
  "type": "uint248"
1203
742
  }
1204
743
  ],
@@ -1211,22 +750,22 @@
1211
750
  "inputs": [
1212
751
  {
1213
752
  "internalType": "uint256",
1214
- "name": "_projectId",
753
+ "name": "projectId",
1215
754
  "type": "uint256"
1216
755
  },
1217
756
  {
1218
757
  "internalType": "address",
1219
- "name": "_coreContract",
758
+ "name": "coreContract",
1220
759
  "type": "address"
1221
760
  },
1222
761
  {
1223
762
  "internalType": "string",
1224
- "name": "_currencySymbol",
763
+ "name": "currencySymbol",
1225
764
  "type": "string"
1226
765
  },
1227
766
  {
1228
767
  "internalType": "address",
1229
- "name": "_currencyAddress",
768
+ "name": "currencyAddress",
1230
769
  "type": "address"
1231
770
  }
1232
771
  ],
@@ -1236,8 +775,8 @@
1236
775
  "type": "function"
1237
776
  }
1238
777
  ],
1239
- "bytecode": "0x6101006040523480156200001257600080fd5b5060405162003411380380620034118339810160408190526200003591620000b1565b60016000556001600160a01b03828116608081905260a052811660c081905260e08190526040519081527f836360d1b094a7de3c3eab3d1185f3a5939467c23d4a12709dbdbf8c8d7e2f3b9060200160405180910390a15050620000e9565b80516001600160a01b0381168114620000ac57600080fd5b919050565b60008060408385031215620000c557600080fd5b620000d08362000094565b9150620000e06020840162000094565b90509250929050565b60805160a05160c05160e0516132ee6200012360003960006109140152600061047b01526000610af80152600061056b01526132ee6000f3fe60806040526004361061014c5760003560e01c80639d923dff116100bc5780639d923dff146103f6578063a03f599714610409578063ae4bec8214610429578063b000e33414610449578063bf5bf5f814610469578063cce7c909146104aa578063d3ddabe6146104ca578063d9bffbce14610509578063d9eb16db14610529578063dd85582f14610559578063e9d1e8ac1461058d578063ed6677a9146105d6578063f7f5e9d0146105f6578063fca23f4e1461061657600080fd5b806301000da7146101515780630c49ef311461018657806319d29d7e146101a857806333c91bdb146101c957806339b87cf8146101e95780634869f3df146102095780635e62aa78146102295780637e947f24146102495780637fbbc005146102695780637ffb2eb81461027c5780638a605b511461029c5780639a94488a146102bc5780639b24c3c014610354575b600080fd5b34801561015d57600080fd5b5061017161016c3660046126cc565b610670565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b506101a66101a1366004612821565b6106b7565b005b6101bb6101b63660046128e6565b610782565b60405190815260200161017d565b3480156101d557600080fd5b506101716101e436600461296c565b610cb5565b3480156101f557600080fd5b506101716102043660046129b6565b610d05565b34801561021557600080fd5b506101bb6102243660046129fe565b610d3c565b34801561023557600080fd5b506101bb6102443660046129fe565b610d74565b34801561025557600080fd5b506101a6610264366004612a2e565b610db1565b6101bb6102773660046129b6565b610e61565b34801561028857600080fd5b506101bb6102973660046129fe565b610e72565b3480156102a857600080fd5b506101a66102b7366004612a7c565b610ea1565b3480156102c857600080fd5b506103326102d73660046129fe565b6040805180820190915260008082526020820152506001600160a01b031660009081526004602090815260408083209383529281529082902082518084019093525460ff811615158352610100900462ffffff169082015290565b6040805182511515815260209283015162ffffff16928101929092520161017d565b34801561036057600080fd5b506103d061036f3660046129fe565b6040805180820190915260008082526020820152506001600160a01b03166000908152600160209081526040808320938352928152908290208251808401909352546001600160f81b0381168352600160f81b900460ff1615159082015290565b6040805182516001600160f81b031681526020928301511515928101929092520161017d565b6101bb610404366004612afb565b610f24565b34801561041557600080fd5b506101a66104243660046129fe565b610f35565b34801561043557600080fd5b506101bb6104443660046129fe565b610fd2565b34801561045557600080fd5b506101a6610464366004612b56565b611008565b34801561047557600080fd5b5061049d7f000000000000000000000000000000000000000000000000000000000000000081565b60405161017d9190612b95565b3480156104b657600080fd5b506101716104c53660046129fe565b611087565b3480156104d657600080fd5b506104fc60405180604001604052806006815260200165076352e302e360d41b81525081565b60405161017d9190612bf9565b34801561051557600080fd5b506101a66105243660046129fe565b6110b3565b34801561053557600080fd5b506105496105443660046129fe565b61112c565b60405161017d9493929190612c0c565b34801561056557600080fd5b5061049d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561059957600080fd5b506104fc6040518060400160405280601e81526020017f4d696e7465725365745072696365506f6c79707479636845524332305635000081525081565b3480156105e257600080fd5b506101a66105f1366004612c46565b6111b0565b34801561060257600080fd5b506101a6610611366004612a7c565b611268565b34801561062257600080fd5b506101716106313660046129b6565b6001600160a01b039283166000908152600660209081526040808320968352958152858220939094168152918352838220908252909152205460ff1690565b6001600160a01b03811660009081526002602052604081208054610100900460ff16156106a1575460ff1692915050565b6106aa836112dd565b9392505050565b50919050565b6106c2868633611415565b6001600160a01b038516600090815260066020908152604080832089845290915290206106f2908585858561145f565b846001600160a01b0316867fe4e108abe1d65a55b2c49a1586fb2afa6c3d79732947e37f71a6c23a5b08ff82868660405161072e929190612d07565b60405180910390a3846001600160a01b0316867f5728c49515724a90b87298ccfb6a8868ff0bfddf7e4fe298cea807dd815ced098484604051610772929190612d07565b60405180910390a3505050505050565b60006002600054036107af5760405162461bcd60e51b81526004016107a690612d8b565b60405180910390fd5b600260009081556001600160a01b0386168082526001602090815260408084208a85528252808420928452600482528084208a8552909152909120805460ff161561080c5760405162461bcd60e51b81526004016107a690612dc2565b8154600160f81b900460ff1661085b5760405162461bcd60e51b8152602060048201526014602482015273141c9a58d9481b9bdd0818dbdb999a59dd5c995960621b60448201526064016107a6565b6001600160a01b03871660009081526006602090815260408083208b84529091529020610889908787611475565b6108cd5760405162461bcd60e51b81526020600482015260156024820152744f6e6c7920616c6c6f776c6973746564204e46547360581b60448201526064016107a6565b336001600160a01b038516156109d557604051631574d39f60e31b81523360048201526001600160a01b0386811660248301528981166044830152606482018890526000917f00000000000000000000000000000000000000000000000000000000000000009091169063aba69cf890608401602060405180830381865afa15801561095d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109819190612e03565b9050806109d05760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642064656c65676174652d7661756c742070616972696e67000060448201526064016107a6565b859150505b604051630ea5613f60e01b8152600481018a905288906000906001600160a01b03831690630ea5613f9060240160c060405180830381865afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190612e1e565b505050505090506000610a568a8a6114b3565b90506000600560008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e81526020019081526020016000209050610a9c818361151f565b50600082610aad620f42408f612e93565b610ab79190612eaa565b9050610ac48c8284611618565b6040516117cd60e21b81526001600160a01b038f81166004830152602482018f90528d8116604483015286811660648301527f00000000000000000000000000000000000000000000000000000000000000001690615f34906084016020604051808303816000875af1158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b639190612ebd565b9750610b708c89846116f5565b5050610b7c8685611762565b60405163a47d29cb60e01b8152600481018c90526000906001600160a01b0384169063a47d29cb90602401602060405180830381865afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be89190612ed6565b90506000336001600160a01b03831614610c025784610c04565b8d5b9050610c118b8b836117b0565b50506001600160a01b038a166000908152600260205260408120610c36908c90611873565b90506000600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e81526020019081526020016000209050610c9f818e8960000160009054906101000a90046001600160f81b03166001600160f81b03168f866118a5565b5050505050505060016000559695505050505050565b6001600160a01b038316600090815260056020908152604080832087845282528083208584526001810183528184206001600160a01b03198616855290925282205460ff165b9695505050505050565b6001600160a01b03831660009081526006602090815260408083208784529091528120610d33908484611475565b95945050505050565b6001600160a01b0381166000908152600460209081526040808320858452909152812054610100900462ffffff165b90505b92915050565b6001600160a01b0380821660009081526003602090815260408083208684529091528120805491929091610da9911633611d98565b949350505050565b610dbc838333611415565b6001600160a01b03821660008181526001602090815260408083208784529091528082206001600160f81b038516600160f81b8117825591519093919287917f37a132f63521ff11fed0c526f0f30824337316bb2b71fcfc0b6f3cf631595b5f9190a46001600160a01b03831660009081526004602090815260408083208784529091529020610e4b81611e08565b15610e5a57610e5a85856110b3565b5050505050565b6000610d3333868686866000610782565b6001600160a01b03811660009081526005602090815260408083208584529091528120805462ffffff16610da9565b610eac848433611415565b6001600160a01b03831660009081526006602090815260408083208784529091529020610eda908383611e28565b826001600160a01b0316847fe4e108abe1d65a55b2c49a1586fb2afa6c3d79732947e37f71a6c23a5b08ff828484604051610f16929190612d07565b60405180910390a350505050565b6000610cfb86868686866000610782565b610f40828233611415565b6001600160a01b03811660009081526005602090815260408083208584529091529020610f6c81611eeb565b8054604080516f1c1bdb1e5c1d1e58da14185b995b125960821b815262ffffff90921660208301526001600160a01b0384169185917f1809fd1f08e6b0df08fd848757688435a0ab8520a51dcca23eba5a3c7f7280d691015b60405180910390a3505050565b6001600160a01b0380821660009081526003602090815260408083208684529091528120805491929091610da991163330611f1f565b611013838333611415565b6001600160a01b0382166000908152600460209081526040808320868452909152902061104590849084908490611f91565b60405162ffffff821681526001600160a01b0383169084907f1c3e74a6c6fefbaeee166b031cd2016349c6c863d5188b67c9bbd0b0dcb2e23790602001610fc5565b6001600160a01b038116600090815260046020908152604080832085845290915281205460ff16610d6b565b6110be828233611415565b6001600160a01b038116600090815260046020908152604080832085845290915281206110ee9084908490612018565b9050816001600160a01b0316837f1c3e74a6c6fefbaeee166b031cd2016349c6c863d5188b67c9bbd0b0dcb2e23783604051610fc591815260200190565b6001600160a01b03811660008181526001602090815260408083208684528252808320805494845260038352818420878552909252822091926001600160f81b031691606091849161117d816120bd565b8354909550909350600160f81b900460ff1680156111a357506001600160a01b03831615155b9550505092959194509250565b6002600054036111d25760405162461bcd60e51b81526004016107a690612d8b565b60026000556111e2848433611415565b6001600160a01b0383166000908152600360209081526040808320878452909152902061121081848461218b565b816001600160a01b0316846001600160a01b0316867f9009be442961d697adbe398af85c4743d0539b16e89324b6448ebac47eced55e866040516112549190612bf9565b60405180910390a450506001600055505050565b611273848433611415565b6001600160a01b038316600090815260066020908152604080832087845290915290206112a1908383612252565b826001600160a01b0316847f5728c49515724a90b87298ccfb6a8868ff0bfddf7e4fe298cea807dd815ced098484604051610f16929190612d07565b6040516000602482018190526044820181905290819060640160408051601f198184030181529181526020820180516001600160e01b0316638639415b60e01b1790525190915060009081906001600160a01b0386169061133f908590612ef3565b600060405180830381855afa9150503d806000811461137a576040519150601f19603f3d011682016040523d82523d6000602084013e61137f565b606091505b5091509150816113a15760405162461bcd60e51b81526004016107a690612f0f565b805160c08190036113b85750600095945050505050565b80610100036113cd5750600195945050505050565b60405162461bcd60e51b815260206004820152601e60248201527f556e657870656374656420726576656e75652073706c6974206279746573000060448201526064016107a6565b611420838383612315565b61145a5760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b60448201526064016107a6565b505050565b61146a858585611e28565b610e5a858383612252565b600080611485620f424084612f54565b6001600160a01b038516600090815260208781526040808320938352929052205460ff169150509392505050565b604051634d01727d60e11b8152600481018290526000906001600160a01b03841690639a02e4fa90602401602060405180830381865afa1580156114fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b9190612f76565b6001600160a01b031981166115715760405162461bcd60e51b81526020600482015260186024820152774f6e6c79206e6f6e2d7a65726f206861736820736565647360401b60448201526064016107a6565b815462ffffff16600081815260018401602090815260408083206001600160a01b03198616845290915290205460ff16156115e55760405162461bcd60e51b815260206004820152601460248201527314185b995b08185b1c9958591e481b5a5b9d195960621b60448201526064016107a6565b60009081526001928301602090815260408083206001600160a01b0319909416835292905220805460ff19169091179055565b826001600160a01b03166336c7c12c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167c9190612ed6565b60405163dddceed160e01b81526001600160a01b038581166004830152602482018590526001600160a01b031984166044830152919091169063dddceed190606401600060405180830381600087803b1580156116d857600080fd5b505af11580156116ec573d6000803e3d6000fd5b50505050505050565b600061170184846114b3565b90506001600160a01b03198082169083161461175c5760405162461bcd60e51b815260206004820152601a602482015279155b995e1c1958dd1959081d1bdad95b881a185cda081cd9595960321b60448201526064016107a6565b50505050565b8054620f4240830660010190610100900462ffffff16808211156117985760405162461bcd60e51b81526004016107a690612dc2565b80820361175c57825460ff1916600117835550505050565b6040516331a9108f60e11b8152600481018390526000906001600160a01b03851690636352211e90602401602060405180830381865afa1580156117f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181c9190612ed6565b9050816001600160a01b0316816001600160a01b03161461175c5760405162461bcd60e51b815260206004820152601160248201527013db9b1e481bdddb995c881bd988139195607a1b60448201526064016107a6565b8054600090610100900460ff16156118905750805460ff16610d6e565b600061189c848461239e565b9150610d6e9050565b8215610e5a5784546001600160a01b0316806119035760405162461bcd60e51b815260206004820152601d60248201527f45524332303a207061796d656e74206e6f7420636f6e6669677572656400000060448201526064016107a6565b34156119515760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f20455448207768656e207573696e67204552433230000060448201526064016107a6565b61195c3382866124ae565b80600080808080808815611ac257604051638639415b60e01b8152600481018d9052602481018c905260009081906001600160a01b038d1690638639415b9060440161010060405180830381865afa1580156119bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e09190612f93565b969e50949c50909a50985091965091945090925090508115611abb576040516323b872dd60e01b81526001600160a01b038a16906323b872dd90611a2c9033908590879060040161301b565b6020604051808303816000875af1158015611a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6f9190612e03565b611abb5760405162461bcd60e51b815260206004820181905260248201527f506c6174666f726d2050726f7669646572207061796d656e74206661696c656460448201526064016107a6565b5050611b42565b604051638639415b60e01b8152600481018d9052602481018c90526001600160a01b038b1690638639415b9060440160c060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b32919061303f565b949a509298509096509450925090505b8515611c07576040516323b872dd60e01b81526001600160a01b038816906323b872dd90611b7890339089908b9060040161301b565b6020604051808303816000875af1158015611b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbb9190612e03565b611c075760405162461bcd60e51b815260206004820152601e60248201527f52656e6465722050726f7669646572207061796d656e74206661696c6564000060448201526064016107a6565b8315611cc4576040516323b872dd60e01b81526001600160a01b038816906323b872dd90611c3d9033908790899060040161301b565b6020604051808303816000875af1158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c809190612e03565b611cc45760405162461bcd60e51b8152602060048201526015602482015274105c9d1a5cdd081c185e5b595b9d0819985a5b1959605a1b60448201526064016107a6565b8115611d89576040516323b872dd60e01b81526001600160a01b038816906323b872dd90611cfa9033908590879060040161301b565b6020604051808303816000875af1158015611d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3d9190612e03565b611d895760405162461bcd60e51b815260206004820152601f60248201527f4164646974696f6e616c205061796565207061796d656e74206661696c65640060448201526064016107a6565b50505050505050505050505050565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190611dc7908590600401612b95565b602060405180830381865afa158015611de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b9190612ebd565b8054600090610100900462ffffff16158015610d6e5750505460ff161590565b8051825114611e495760405162461bcd60e51b81526004016107a69061309a565b60005b825181101561175c576001846000016000858481518110611e6f57611e6f6130db565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000848481518110611eab57611eab6130db565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ee3906130f1565b915050611e4c565b80548190600090611f009062ffffff1661310a565b91906101000a81548162ffffff021916908362ffffff16021790555050565b604051636eb1769f60e11b81526000906001600160a01b0385169063dd62ed3e90611f50908690869060040161312c565b602060405180830381865afa158015611f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da99190612ebd565b600080611f9e8686612626565b91509150808462ffffff161115611fc75760405162461bcd60e51b81526004016107a690613146565b818462ffffff161015611fec5760405162461bcd60e51b81526004016107a690613146565b50815460ff1962ffffff90941661010081029490941663ffffffff199091161792149190911790555050565b6000806000846001600160a01b0316630ea5613f876040518263ffffffff1660e01b815260040161204b91815260200190565b60c060405180830381865afa158015612068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208c9190612e1e565b5050875493831463ffffffff1990941661010062ffffff85160260ff19161793909317909655979650505050505050565b80546001600160a01b031660608115612162578260010180546120df90613177565b80601f016020809104026020016040519081016040528092919081815260200182805461210b90613177565b80156121585780601f1061212d57610100808354040283529160200191612158565b820191906000526020600020905b81548152906001019060200180831161213b57829003601f168201915b5050505050612184565b60405180604001604052806008815260200167554e434f4e46494760c01b8152505b9050915091565b6001600160a01b0381166121dc5760405162461bcd60e51b815260206004820152601860248201527706e756c6c20616464726573732c206f6e6c792045524332360441b60448201526064016107a6565b60008251116122245760405162461bcd60e51b81526020600482015260146024820152731bdb9b1e481b9bdb8b5b9d5b1b081cde5b589bdb60621b60448201526064016107a6565b6001830161223283826131f9565b5082546001600160a01b0319166001600160a01b03919091161790915550565b80518251146122735760405162461bcd60e51b81526004016107a69061309a565b60005b825181101561175c576000846000016000858481518110612299576122996130db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008484815181106122d5576122d56130db565b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550808061230d906130f1565b915050612276565b60405163a47d29cb60e01b8152600481018490526000906001600160a01b0384169063a47d29cb90602401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190612ed6565b6001600160a01b0316826001600160a01b03161490509392505050565b6040516000602482018190526044820181905290819060640160408051601f198184030181529181526020820180516001600160e01b0316638639415b60e01b1790525190915060009081906001600160a01b03871690612400908590612ef3565b6000604051808303816000865af19150503d806000811461243d576040519150601f19603f3d011682016040523d82523d6000602084013e612442565b606091505b5091509150816124645760405162461bcd60e51b81526004016107a690612f0f565b805160c081900361248a575050835461ffff19166101001784555060009150610d6e9050565b80610100036113cd575050835461ffff19166101011784555060019150610d6e9050565b604051636eb1769f60e11b815281906001600160a01b0384169063dd62ed3e906124de908790309060040161312c565b602060405180830381865afa1580156124fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251f9190612ebd565b101561256c5760405162461bcd60e51b815260206004820152601c60248201527b496e73756666696369656e7420455243323020616c6c6f77616e636560201b60448201526064016107a6565b6040516370a0823160e01b815281906001600160a01b038416906370a082319061259a908790600401612b95565b602060405180830381865afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190612ebd565b101561145a5760405162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e742045524332302062616c616e636560301b60448201526064016107a6565b604051630ea5613f60e01b81526004810183905260009081906001600160a01b03841690630ea5613f9060240160c060405180830381865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190612e1e565b5093989297509195505050505050565b6001600160a01b03811681146126b957600080fd5b50565b80356126c7816126a4565b919050565b6000602082840312156126de57600080fd5b81356106aa816126a4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612727576127276126e9565b604052919050565b60006001600160401b03821115612748576127486126e9565b5060051b60200190565b600082601f83011261276357600080fd5b813560206127786127738361272f565b6126ff565b82815260059290921b8401810191818101908684111561279757600080fd5b8286015b848110156127bb5780356127ae816126a4565b835291830191830161279b565b509695505050505050565b600082601f8301126127d757600080fd5b813560206127e76127738361272f565b82815260059290921b8401810191818101908684111561280657600080fd5b8286015b848110156127bb578035835291830191830161280a565b60008060008060008060c0878903121561283a57600080fd5b8635955061284a602088016126bc565b945060408701356001600160401b038082111561286657600080fd5b6128728a838b01612752565b9550606089013591508082111561288857600080fd5b6128948a838b016127c6565b945060808901359150808211156128aa57600080fd5b6128b68a838b01612752565b935060a08901359150808211156128cc57600080fd5b506128d989828a016127c6565b9150509295509295509295565b60008060008060008060c087890312156128ff57600080fd5b863561290a816126a4565b9550602087013594506040870135612921816126a4565b93506060870135612931816126a4565b92506080870135915060a0870135612948816126a4565b809150509295509295509295565b6001600160a01b0319811681146126b957600080fd5b6000806000806080858703121561298257600080fd5b843593506020850135612994816126a4565b92506040850135915060608501356129ab81612956565b939692955090935050565b600080600080608085870312156129cc57600080fd5b8435935060208501356129de816126a4565b925060408501356129ee816126a4565b9396929550929360600135925050565b60008060408385031215612a1157600080fd5b823591506020830135612a23816126a4565b809150509250929050565b600080600060608486031215612a4357600080fd5b833592506020840135612a55816126a4565b915060408401356001600160f81b0381168114612a7157600080fd5b809150509250925092565b60008060008060808587031215612a9257600080fd5b843593506020850135612aa4816126a4565b925060408501356001600160401b0380821115612ac057600080fd5b612acc88838901612752565b93506060870135915080821115612ae257600080fd5b50612aef878288016127c6565b91505092959194509250565b600080600080600060a08688031215612b1357600080fd5b8535612b1e816126a4565b9450602086013593506040860135612b35816126a4565b92506060860135612b45816126a4565b949793965091946080013592915050565b600080600060608486031215612b6b57600080fd5b833592506020840135612b7d816126a4565b9150604084013562ffffff81168114612a7157600080fd5b6001600160a01b0391909116815260200190565b60005b83811015612bc4578181015183820152602001612bac565b50506000910152565b60008151808452612be5816020860160208601612ba9565b601f01601f19169290920160200192915050565b602081526000610d6b6020830184612bcd565b8415158152836020820152608060408201526000612c2d6080830185612bcd565b905060018060a01b038316606083015295945050505050565b60008060008060808587031215612c5c57600080fd5b84359350602080860135612c6f816126a4565b935060408601356001600160401b0380821115612c8b57600080fd5b818801915088601f830112612c9f57600080fd5b813581811115612cb157612cb16126e9565b612cc3601f8201601f191685016126ff565b91508082528984828501011115612cd957600080fd5b8084840185840137600084828401015250809450505050612cfc606086016126bc565b905092959194509250565b604080825283519082018190526000906020906060840190828701845b82811015612d495781516001600160a01b031684529284019290840190600101612d24565b5050508381038285015284518082528583019183019060005b81811015612d7e57835183529284019291840191600101612d62565b5090979650505050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526017908201527613585e081a5b9d9bd8d85d1a5bdb9cc81c995858da1959604a1b604082015260600190565b805180151581146126c757600080fd5b600060208284031215612e1557600080fd5b610d6b82612df3565b60008060008060008060c08789031215612e3757600080fd5b8651955060208701519450612e4e60408801612df3565b9350612e5c60608801612df3565b925060808701519150612e7160a08801612df3565b90509295509295509295565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d6e57610d6e612e7d565b80820180821115610d6e57610d6e612e7d565b600060208284031215612ecf57600080fd5b5051919050565b600060208284031215612ee857600080fd5b81516106aa816126a4565b60008251612f05818460208701612ba9565b9190910192915050565b60208082526025908201527f6765745072696d617279526576656e756553706c69747328292063616c6c2066604082015264185a5b195960da1b606082015260800190565b600082612f7157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612f8857600080fd5b81516106aa81612956565b600080600080600080600080610100898b031215612fb057600080fd5b885197506020890151612fc2816126a4565b60408a015160608b01519198509650612fda816126a4565b60808a015160a08b01519196509450612ff2816126a4565b60c08a015160e08b0151919450925061300a816126a4565b809150509295985092959890939650565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008060008060008060c0878903121561305857600080fd5b86519550602087015161306a816126a4565b604088015160608901519196509450613082816126a4565b608088015160a08901519194509250612948816126a4565b60208082526021908201527f546f6b656e486f6c6465724c69623a20617272617973206e6571206c656e67746040820152600d60fb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161310357613103612e7d565b5060010190565b600062ffffff80831681810361312257613122612e7d565b6001019392505050565b6001600160a01b0392831681529116602082015260400190565b602080825260179082015276496e76616c6964206d617820696e766f636174696f6e7360481b604082015260600190565b600181811c9082168061318b57607f821691505b6020821081036106b157634e487b7160e01b600052602260045260246000fd5b601f82111561145a57600081815260208120601f850160051c810160208610156131d25750805b601f850160051c820191505b818110156131f1578281556001016131de565b505050505050565b81516001600160401b03811115613212576132126126e9565b613226816132208454613177565b846131ab565b602080601f83116001811461325b57600084156132435750858301515b600019600386901b1c1916600185901b1785556131f1565b600085815260208120601f198616915b8281101561328a5788860151825594840194600190910190840161326b565b50858210156132a85787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220dfb6609868a0c4c75b6a7b176f2fd807d4320fe70e058978fa1e67811590171c64736f6c63430008130033",
1240
- "deployedBytecode": "0x60806040526004361061014c5760003560e01c80639d923dff116100bc5780639d923dff146103f6578063a03f599714610409578063ae4bec8214610429578063b000e33414610449578063bf5bf5f814610469578063cce7c909146104aa578063d3ddabe6146104ca578063d9bffbce14610509578063d9eb16db14610529578063dd85582f14610559578063e9d1e8ac1461058d578063ed6677a9146105d6578063f7f5e9d0146105f6578063fca23f4e1461061657600080fd5b806301000da7146101515780630c49ef311461018657806319d29d7e146101a857806333c91bdb146101c957806339b87cf8146101e95780634869f3df146102095780635e62aa78146102295780637e947f24146102495780637fbbc005146102695780637ffb2eb81461027c5780638a605b511461029c5780639a94488a146102bc5780639b24c3c014610354575b600080fd5b34801561015d57600080fd5b5061017161016c3660046126cc565b610670565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b506101a66101a1366004612821565b6106b7565b005b6101bb6101b63660046128e6565b610782565b60405190815260200161017d565b3480156101d557600080fd5b506101716101e436600461296c565b610cb5565b3480156101f557600080fd5b506101716102043660046129b6565b610d05565b34801561021557600080fd5b506101bb6102243660046129fe565b610d3c565b34801561023557600080fd5b506101bb6102443660046129fe565b610d74565b34801561025557600080fd5b506101a6610264366004612a2e565b610db1565b6101bb6102773660046129b6565b610e61565b34801561028857600080fd5b506101bb6102973660046129fe565b610e72565b3480156102a857600080fd5b506101a66102b7366004612a7c565b610ea1565b3480156102c857600080fd5b506103326102d73660046129fe565b6040805180820190915260008082526020820152506001600160a01b031660009081526004602090815260408083209383529281529082902082518084019093525460ff811615158352610100900462ffffff169082015290565b6040805182511515815260209283015162ffffff16928101929092520161017d565b34801561036057600080fd5b506103d061036f3660046129fe565b6040805180820190915260008082526020820152506001600160a01b03166000908152600160209081526040808320938352928152908290208251808401909352546001600160f81b0381168352600160f81b900460ff1615159082015290565b6040805182516001600160f81b031681526020928301511515928101929092520161017d565b6101bb610404366004612afb565b610f24565b34801561041557600080fd5b506101a66104243660046129fe565b610f35565b34801561043557600080fd5b506101bb6104443660046129fe565b610fd2565b34801561045557600080fd5b506101a6610464366004612b56565b611008565b34801561047557600080fd5b5061049d7f000000000000000000000000000000000000000000000000000000000000000081565b60405161017d9190612b95565b3480156104b657600080fd5b506101716104c53660046129fe565b611087565b3480156104d657600080fd5b506104fc60405180604001604052806006815260200165076352e302e360d41b81525081565b60405161017d9190612bf9565b34801561051557600080fd5b506101a66105243660046129fe565b6110b3565b34801561053557600080fd5b506105496105443660046129fe565b61112c565b60405161017d9493929190612c0c565b34801561056557600080fd5b5061049d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561059957600080fd5b506104fc6040518060400160405280601e81526020017f4d696e7465725365745072696365506f6c79707479636845524332305635000081525081565b3480156105e257600080fd5b506101a66105f1366004612c46565b6111b0565b34801561060257600080fd5b506101a6610611366004612a7c565b611268565b34801561062257600080fd5b506101716106313660046129b6565b6001600160a01b039283166000908152600660209081526040808320968352958152858220939094168152918352838220908252909152205460ff1690565b6001600160a01b03811660009081526002602052604081208054610100900460ff16156106a1575460ff1692915050565b6106aa836112dd565b9392505050565b50919050565b6106c2868633611415565b6001600160a01b038516600090815260066020908152604080832089845290915290206106f2908585858561145f565b846001600160a01b0316867fe4e108abe1d65a55b2c49a1586fb2afa6c3d79732947e37f71a6c23a5b08ff82868660405161072e929190612d07565b60405180910390a3846001600160a01b0316867f5728c49515724a90b87298ccfb6a8868ff0bfddf7e4fe298cea807dd815ced098484604051610772929190612d07565b60405180910390a3505050505050565b60006002600054036107af5760405162461bcd60e51b81526004016107a690612d8b565b60405180910390fd5b600260009081556001600160a01b0386168082526001602090815260408084208a85528252808420928452600482528084208a8552909152909120805460ff161561080c5760405162461bcd60e51b81526004016107a690612dc2565b8154600160f81b900460ff1661085b5760405162461bcd60e51b8152602060048201526014602482015273141c9a58d9481b9bdd0818dbdb999a59dd5c995960621b60448201526064016107a6565b6001600160a01b03871660009081526006602090815260408083208b84529091529020610889908787611475565b6108cd5760405162461bcd60e51b81526020600482015260156024820152744f6e6c7920616c6c6f776c6973746564204e46547360581b60448201526064016107a6565b336001600160a01b038516156109d557604051631574d39f60e31b81523360048201526001600160a01b0386811660248301528981166044830152606482018890526000917f00000000000000000000000000000000000000000000000000000000000000009091169063aba69cf890608401602060405180830381865afa15801561095d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109819190612e03565b9050806109d05760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642064656c65676174652d7661756c742070616972696e67000060448201526064016107a6565b859150505b604051630ea5613f60e01b8152600481018a905288906000906001600160a01b03831690630ea5613f9060240160c060405180830381865afa158015610a1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a439190612e1e565b505050505090506000610a568a8a6114b3565b90506000600560008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e81526020019081526020016000209050610a9c818361151f565b50600082610aad620f42408f612e93565b610ab79190612eaa565b9050610ac48c8284611618565b6040516117cd60e21b81526001600160a01b038f81166004830152602482018f90528d8116604483015286811660648301527f00000000000000000000000000000000000000000000000000000000000000001690615f34906084016020604051808303816000875af1158015610b3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b639190612ebd565b9750610b708c89846116f5565b5050610b7c8685611762565b60405163a47d29cb60e01b8152600481018c90526000906001600160a01b0384169063a47d29cb90602401602060405180830381865afa158015610bc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be89190612ed6565b90506000336001600160a01b03831614610c025784610c04565b8d5b9050610c118b8b836117b0565b50506001600160a01b038a166000908152600260205260408120610c36908c90611873565b90506000600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008e81526020019081526020016000209050610c9f818e8960000160009054906101000a90046001600160f81b03166001600160f81b03168f866118a5565b5050505050505060016000559695505050505050565b6001600160a01b038316600090815260056020908152604080832087845282528083208584526001810183528184206001600160a01b03198616855290925282205460ff165b9695505050505050565b6001600160a01b03831660009081526006602090815260408083208784529091528120610d33908484611475565b95945050505050565b6001600160a01b0381166000908152600460209081526040808320858452909152812054610100900462ffffff165b90505b92915050565b6001600160a01b0380821660009081526003602090815260408083208684529091528120805491929091610da9911633611d98565b949350505050565b610dbc838333611415565b6001600160a01b03821660008181526001602090815260408083208784529091528082206001600160f81b038516600160f81b8117825591519093919287917f37a132f63521ff11fed0c526f0f30824337316bb2b71fcfc0b6f3cf631595b5f9190a46001600160a01b03831660009081526004602090815260408083208784529091529020610e4b81611e08565b15610e5a57610e5a85856110b3565b5050505050565b6000610d3333868686866000610782565b6001600160a01b03811660009081526005602090815260408083208584529091528120805462ffffff16610da9565b610eac848433611415565b6001600160a01b03831660009081526006602090815260408083208784529091529020610eda908383611e28565b826001600160a01b0316847fe4e108abe1d65a55b2c49a1586fb2afa6c3d79732947e37f71a6c23a5b08ff828484604051610f16929190612d07565b60405180910390a350505050565b6000610cfb86868686866000610782565b610f40828233611415565b6001600160a01b03811660009081526005602090815260408083208584529091529020610f6c81611eeb565b8054604080516f1c1bdb1e5c1d1e58da14185b995b125960821b815262ffffff90921660208301526001600160a01b0384169185917f1809fd1f08e6b0df08fd848757688435a0ab8520a51dcca23eba5a3c7f7280d691015b60405180910390a3505050565b6001600160a01b0380821660009081526003602090815260408083208684529091528120805491929091610da991163330611f1f565b611013838333611415565b6001600160a01b0382166000908152600460209081526040808320868452909152902061104590849084908490611f91565b60405162ffffff821681526001600160a01b0383169084907f1c3e74a6c6fefbaeee166b031cd2016349c6c863d5188b67c9bbd0b0dcb2e23790602001610fc5565b6001600160a01b038116600090815260046020908152604080832085845290915281205460ff16610d6b565b6110be828233611415565b6001600160a01b038116600090815260046020908152604080832085845290915281206110ee9084908490612018565b9050816001600160a01b0316837f1c3e74a6c6fefbaeee166b031cd2016349c6c863d5188b67c9bbd0b0dcb2e23783604051610fc591815260200190565b6001600160a01b03811660008181526001602090815260408083208684528252808320805494845260038352818420878552909252822091926001600160f81b031691606091849161117d816120bd565b8354909550909350600160f81b900460ff1680156111a357506001600160a01b03831615155b9550505092959194509250565b6002600054036111d25760405162461bcd60e51b81526004016107a690612d8b565b60026000556111e2848433611415565b6001600160a01b0383166000908152600360209081526040808320878452909152902061121081848461218b565b816001600160a01b0316846001600160a01b0316867f9009be442961d697adbe398af85c4743d0539b16e89324b6448ebac47eced55e866040516112549190612bf9565b60405180910390a450506001600055505050565b611273848433611415565b6001600160a01b038316600090815260066020908152604080832087845290915290206112a1908383612252565b826001600160a01b0316847f5728c49515724a90b87298ccfb6a8868ff0bfddf7e4fe298cea807dd815ced098484604051610f16929190612d07565b6040516000602482018190526044820181905290819060640160408051601f198184030181529181526020820180516001600160e01b0316638639415b60e01b1790525190915060009081906001600160a01b0386169061133f908590612ef3565b600060405180830381855afa9150503d806000811461137a576040519150601f19603f3d011682016040523d82523d6000602084013e61137f565b606091505b5091509150816113a15760405162461bcd60e51b81526004016107a690612f0f565b805160c08190036113b85750600095945050505050565b80610100036113cd5750600195945050505050565b60405162461bcd60e51b815260206004820152601e60248201527f556e657870656374656420726576656e75652073706c6974206279746573000060448201526064016107a6565b611420838383612315565b61145a5760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b60448201526064016107a6565b505050565b61146a858585611e28565b610e5a858383612252565b600080611485620f424084612f54565b6001600160a01b038516600090815260208781526040808320938352929052205460ff169150509392505050565b604051634d01727d60e11b8152600481018290526000906001600160a01b03841690639a02e4fa90602401602060405180830381865afa1580156114fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b9190612f76565b6001600160a01b031981166115715760405162461bcd60e51b81526020600482015260186024820152774f6e6c79206e6f6e2d7a65726f206861736820736565647360401b60448201526064016107a6565b815462ffffff16600081815260018401602090815260408083206001600160a01b03198616845290915290205460ff16156115e55760405162461bcd60e51b815260206004820152601460248201527314185b995b08185b1c9958591e481b5a5b9d195960621b60448201526064016107a6565b60009081526001928301602090815260408083206001600160a01b0319909416835292905220805460ff19169091179055565b826001600160a01b03166336c7c12c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167c9190612ed6565b60405163dddceed160e01b81526001600160a01b038581166004830152602482018590526001600160a01b031984166044830152919091169063dddceed190606401600060405180830381600087803b1580156116d857600080fd5b505af11580156116ec573d6000803e3d6000fd5b50505050505050565b600061170184846114b3565b90506001600160a01b03198082169083161461175c5760405162461bcd60e51b815260206004820152601a602482015279155b995e1c1958dd1959081d1bdad95b881a185cda081cd9595960321b60448201526064016107a6565b50505050565b8054620f4240830660010190610100900462ffffff16808211156117985760405162461bcd60e51b81526004016107a690612dc2565b80820361175c57825460ff1916600117835550505050565b6040516331a9108f60e11b8152600481018390526000906001600160a01b03851690636352211e90602401602060405180830381865afa1580156117f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181c9190612ed6565b9050816001600160a01b0316816001600160a01b03161461175c5760405162461bcd60e51b815260206004820152601160248201527013db9b1e481bdddb995c881bd988139195607a1b60448201526064016107a6565b8054600090610100900460ff16156118905750805460ff16610d6e565b600061189c848461239e565b9150610d6e9050565b8215610e5a5784546001600160a01b0316806119035760405162461bcd60e51b815260206004820152601d60248201527f45524332303a207061796d656e74206e6f7420636f6e6669677572656400000060448201526064016107a6565b34156119515760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f20455448207768656e207573696e67204552433230000060448201526064016107a6565b61195c3382866124ae565b80600080808080808815611ac257604051638639415b60e01b8152600481018d9052602481018c905260009081906001600160a01b038d1690638639415b9060440161010060405180830381865afa1580156119bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e09190612f93565b969e50949c50909a50985091965091945090925090508115611abb576040516323b872dd60e01b81526001600160a01b038a16906323b872dd90611a2c9033908590879060040161301b565b6020604051808303816000875af1158015611a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6f9190612e03565b611abb5760405162461bcd60e51b815260206004820181905260248201527f506c6174666f726d2050726f7669646572207061796d656e74206661696c656460448201526064016107a6565b5050611b42565b604051638639415b60e01b8152600481018d9052602481018c90526001600160a01b038b1690638639415b9060440160c060405180830381865afa158015611b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b32919061303f565b949a509298509096509450925090505b8515611c07576040516323b872dd60e01b81526001600160a01b038816906323b872dd90611b7890339089908b9060040161301b565b6020604051808303816000875af1158015611b97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbb9190612e03565b611c075760405162461bcd60e51b815260206004820152601e60248201527f52656e6465722050726f7669646572207061796d656e74206661696c6564000060448201526064016107a6565b8315611cc4576040516323b872dd60e01b81526001600160a01b038816906323b872dd90611c3d9033908790899060040161301b565b6020604051808303816000875af1158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c809190612e03565b611cc45760405162461bcd60e51b8152602060048201526015602482015274105c9d1a5cdd081c185e5b595b9d0819985a5b1959605a1b60448201526064016107a6565b8115611d89576040516323b872dd60e01b81526001600160a01b038816906323b872dd90611cfa9033908590879060040161301b565b6020604051808303816000875af1158015611d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3d9190612e03565b611d895760405162461bcd60e51b815260206004820152601f60248201527f4164646974696f6e616c205061796565207061796d656e74206661696c65640060448201526064016107a6565b50505050505050505050505050565b6040516370a0823160e01b81526000906001600160a01b038416906370a0823190611dc7908590600401612b95565b602060405180830381865afa158015611de4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b9190612ebd565b8054600090610100900462ffffff16158015610d6e5750505460ff161590565b8051825114611e495760405162461bcd60e51b81526004016107a69061309a565b60005b825181101561175c576001846000016000858481518110611e6f57611e6f6130db565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000848481518110611eab57611eab6130db565b6020026020010151815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ee3906130f1565b915050611e4c565b80548190600090611f009062ffffff1661310a565b91906101000a81548162ffffff021916908362ffffff16021790555050565b604051636eb1769f60e11b81526000906001600160a01b0385169063dd62ed3e90611f50908690869060040161312c565b602060405180830381865afa158015611f6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da99190612ebd565b600080611f9e8686612626565b91509150808462ffffff161115611fc75760405162461bcd60e51b81526004016107a690613146565b818462ffffff161015611fec5760405162461bcd60e51b81526004016107a690613146565b50815460ff1962ffffff90941661010081029490941663ffffffff199091161792149190911790555050565b6000806000846001600160a01b0316630ea5613f876040518263ffffffff1660e01b815260040161204b91815260200190565b60c060405180830381865afa158015612068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208c9190612e1e565b5050875493831463ffffffff1990941661010062ffffff85160260ff19161793909317909655979650505050505050565b80546001600160a01b031660608115612162578260010180546120df90613177565b80601f016020809104026020016040519081016040528092919081815260200182805461210b90613177565b80156121585780601f1061212d57610100808354040283529160200191612158565b820191906000526020600020905b81548152906001019060200180831161213b57829003601f168201915b5050505050612184565b60405180604001604052806008815260200167554e434f4e46494760c01b8152505b9050915091565b6001600160a01b0381166121dc5760405162461bcd60e51b815260206004820152601860248201527706e756c6c20616464726573732c206f6e6c792045524332360441b60448201526064016107a6565b60008251116122245760405162461bcd60e51b81526020600482015260146024820152731bdb9b1e481b9bdb8b5b9d5b1b081cde5b589bdb60621b60448201526064016107a6565b6001830161223283826131f9565b5082546001600160a01b0319166001600160a01b03919091161790915550565b80518251146122735760405162461bcd60e51b81526004016107a69061309a565b60005b825181101561175c576000846000016000858481518110612299576122996130db565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008484815181106122d5576122d56130db565b6020026020010151815260200190815260200160002060006101000a81548160ff021916908315150217905550808061230d906130f1565b915050612276565b60405163a47d29cb60e01b8152600481018490526000906001600160a01b0384169063a47d29cb90602401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190612ed6565b6001600160a01b0316826001600160a01b03161490509392505050565b6040516000602482018190526044820181905290819060640160408051601f198184030181529181526020820180516001600160e01b0316638639415b60e01b1790525190915060009081906001600160a01b03871690612400908590612ef3565b6000604051808303816000865af19150503d806000811461243d576040519150601f19603f3d011682016040523d82523d6000602084013e612442565b606091505b5091509150816124645760405162461bcd60e51b81526004016107a690612f0f565b805160c081900361248a575050835461ffff19166101001784555060009150610d6e9050565b80610100036113cd575050835461ffff19166101011784555060019150610d6e9050565b604051636eb1769f60e11b815281906001600160a01b0384169063dd62ed3e906124de908790309060040161312c565b602060405180830381865afa1580156124fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251f9190612ebd565b101561256c5760405162461bcd60e51b815260206004820152601c60248201527b496e73756666696369656e7420455243323020616c6c6f77616e636560201b60448201526064016107a6565b6040516370a0823160e01b815281906001600160a01b038416906370a082319061259a908790600401612b95565b602060405180830381865afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190612ebd565b101561145a5760405162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e742045524332302062616c616e636560301b60448201526064016107a6565b604051630ea5613f60e01b81526004810183905260009081906001600160a01b03841690630ea5613f9060240160c060405180830381865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190612e1e565b5093989297509195505050505050565b6001600160a01b03811681146126b957600080fd5b50565b80356126c7816126a4565b919050565b6000602082840312156126de57600080fd5b81356106aa816126a4565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612727576127276126e9565b604052919050565b60006001600160401b03821115612748576127486126e9565b5060051b60200190565b600082601f83011261276357600080fd5b813560206127786127738361272f565b6126ff565b82815260059290921b8401810191818101908684111561279757600080fd5b8286015b848110156127bb5780356127ae816126a4565b835291830191830161279b565b509695505050505050565b600082601f8301126127d757600080fd5b813560206127e76127738361272f565b82815260059290921b8401810191818101908684111561280657600080fd5b8286015b848110156127bb578035835291830191830161280a565b60008060008060008060c0878903121561283a57600080fd5b8635955061284a602088016126bc565b945060408701356001600160401b038082111561286657600080fd5b6128728a838b01612752565b9550606089013591508082111561288857600080fd5b6128948a838b016127c6565b945060808901359150808211156128aa57600080fd5b6128b68a838b01612752565b935060a08901359150808211156128cc57600080fd5b506128d989828a016127c6565b9150509295509295509295565b60008060008060008060c087890312156128ff57600080fd5b863561290a816126a4565b9550602087013594506040870135612921816126a4565b93506060870135612931816126a4565b92506080870135915060a0870135612948816126a4565b809150509295509295509295565b6001600160a01b0319811681146126b957600080fd5b6000806000806080858703121561298257600080fd5b843593506020850135612994816126a4565b92506040850135915060608501356129ab81612956565b939692955090935050565b600080600080608085870312156129cc57600080fd5b8435935060208501356129de816126a4565b925060408501356129ee816126a4565b9396929550929360600135925050565b60008060408385031215612a1157600080fd5b823591506020830135612a23816126a4565b809150509250929050565b600080600060608486031215612a4357600080fd5b833592506020840135612a55816126a4565b915060408401356001600160f81b0381168114612a7157600080fd5b809150509250925092565b60008060008060808587031215612a9257600080fd5b843593506020850135612aa4816126a4565b925060408501356001600160401b0380821115612ac057600080fd5b612acc88838901612752565b93506060870135915080821115612ae257600080fd5b50612aef878288016127c6565b91505092959194509250565b600080600080600060a08688031215612b1357600080fd5b8535612b1e816126a4565b9450602086013593506040860135612b35816126a4565b92506060860135612b45816126a4565b949793965091946080013592915050565b600080600060608486031215612b6b57600080fd5b833592506020840135612b7d816126a4565b9150604084013562ffffff81168114612a7157600080fd5b6001600160a01b0391909116815260200190565b60005b83811015612bc4578181015183820152602001612bac565b50506000910152565b60008151808452612be5816020860160208601612ba9565b601f01601f19169290920160200192915050565b602081526000610d6b6020830184612bcd565b8415158152836020820152608060408201526000612c2d6080830185612bcd565b905060018060a01b038316606083015295945050505050565b60008060008060808587031215612c5c57600080fd5b84359350602080860135612c6f816126a4565b935060408601356001600160401b0380821115612c8b57600080fd5b818801915088601f830112612c9f57600080fd5b813581811115612cb157612cb16126e9565b612cc3601f8201601f191685016126ff565b91508082528984828501011115612cd957600080fd5b8084840185840137600084828401015250809450505050612cfc606086016126bc565b905092959194509250565b604080825283519082018190526000906020906060840190828701845b82811015612d495781516001600160a01b031684529284019290840190600101612d24565b5050508381038285015284518082528583019183019060005b81811015612d7e57835183529284019291840191600101612d62565b5090979650505050505050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526017908201527613585e081a5b9d9bd8d85d1a5bdb9cc81c995858da1959604a1b604082015260600190565b805180151581146126c757600080fd5b600060208284031215612e1557600080fd5b610d6b82612df3565b60008060008060008060c08789031215612e3757600080fd5b8651955060208701519450612e4e60408801612df3565b9350612e5c60608801612df3565b925060808701519150612e7160a08801612df3565b90509295509295509295565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610d6e57610d6e612e7d565b80820180821115610d6e57610d6e612e7d565b600060208284031215612ecf57600080fd5b5051919050565b600060208284031215612ee857600080fd5b81516106aa816126a4565b60008251612f05818460208701612ba9565b9190910192915050565b60208082526025908201527f6765745072696d617279526576656e756553706c69747328292063616c6c2066604082015264185a5b195960da1b606082015260800190565b600082612f7157634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612f8857600080fd5b81516106aa81612956565b600080600080600080600080610100898b031215612fb057600080fd5b885197506020890151612fc2816126a4565b60408a015160608b01519198509650612fda816126a4565b60808a015160a08b01519196509450612ff2816126a4565b60c08a015160e08b0151919450925061300a816126a4565b809150509295985092959890939650565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008060008060008060c0878903121561305857600080fd5b86519550602087015161306a816126a4565b604088015160608901519196509450613082816126a4565b608088015160a08901519194509250612948816126a4565b60208082526021908201527f546f6b656e486f6c6465724c69623a20617272617973206e6571206c656e67746040820152600d60fb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161310357613103612e7d565b5060010190565b600062ffffff80831681810361312257613122612e7d565b6001019392505050565b6001600160a01b0392831681529116602082015260400190565b602080825260179082015276496e76616c6964206d617820696e766f636174696f6e7360481b604082015260600190565b600181811c9082168061318b57607f821691505b6020821081036106b157634e487b7160e01b600052602260045260246000fd5b601f82111561145a57600081815260208120601f850160051c810160208610156131d25750805b601f850160051c820191505b818110156131f1578281556001016131de565b505050505050565b81516001600160401b03811115613212576132126126e9565b613226816132208454613177565b846131ab565b602080601f83116001811461325b57600084156132435750858301515b600019600386901b1c1916600185901b1785556131f1565b600085815260208120601f198616915b8281101561328a5788860151825594840194600190910190840161326b565b50858210156132a85787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220dfb6609868a0c4c75b6a7b176f2fd807d4320fe70e058978fa1e67811590171c64736f6c63430008130033",
778
+ "bytecode": "0x6101006040523480156200001257600080fd5b5060405162003279380380620032798339810160408190526200003591620000b1565b60016000556001600160a01b03828116608081905260a052811660c081905260e08190526040519081527f836360d1b094a7de3c3eab3d1185f3a5939467c23d4a12709dbdbf8c8d7e2f3b9060200160405180910390a15050620000e9565b80516001600160a01b0381168114620000ac57600080fd5b919050565b60008060408385031215620000c557600080fd5b620000d08362000094565b9150620000e06020840162000094565b90509250929050565b60805160a05160c05160e05161315662000123600039600061063901526000610313015260006107e6015260006103c201526131566000f3fe608060405234801561001057600080fd5b50600436106101595760003560e01c80639b24c3c0116100c95780639b24c3c01461029c578063a03f5997146102d5578063ae4bec82146102e8578063b000e334146102fb578063bf5bf5f81461030e578063cce7c90914610342578063d3ddabe614610355578063d9bffbce14610387578063d9eb16db1461039a578063dd85582f146103bd578063e9d1e8ac146103e4578063ed6677a914610420578063f7f5e9d014610433578063fca23f4e1461044657600080fd5b806301000da71461015e5780630b8249f4146101865780630c49ef31146101a75780630da18b57146101bc5780631df64cb7146101cf57806333c91bdb146101e257806339b87cf8146101f55780634869f3df146102085780635e62aa781461021b5780637e947f241461022e5780637ffb2eb8146102415780638a605b51146102545780639a94488a14610267575b600080fd5b61017161016c366004612592565b610459565b60405190151581526020015b60405180910390f35b6101996101943660046125af565b610497565b60405190815260200161017d565b6101ba6101b5366004612688565b610920565b005b6101996101ca366004612768565b610949565b6101996101dd3660046127cf565b610967565b6101716101f0366004612860565b610986565b6101716102033660046128aa565b61099d565b6101996102163660046128f2565b6109ab565b6101996102293660046128f2565b6109c0565b6101ba61023c366004612922565b6109e2565b61019961024f3660046128f2565b610a1f565b6101ba610262366004612970565b610a2b565b61027a6102753660046128f2565b610a4c565b6040805182511515815260209283015162ffffff16928101929092520161017d565b6102af6102aa3660046128f2565b610a94565b6040805182516001600160f81b031681526020928301511515928101929092520161017d565b6101ba6102e33660046128f2565b610ae2565b6101996102f63660046128f2565b610afb565b6101ba6103093660046129fb565b610b16565b6103357f000000000000000000000000000000000000000000000000000000000000000081565b60405161017d9190612a3a565b6101716103503660046128f2565b610b2c565b61037a60405180604001604052806006815260200165076352e302e360d41b81525081565b60405161017d9190612a9e565b6101ba6103953660046128f2565b610b38565b6103ad6103a83660046128f2565b610b4d565b60405161017d9493929190612ab1565b6103357f000000000000000000000000000000000000000000000000000000000000000081565b61037a6040518060400160405280601e81526020017f4d696e7465725365745072696365506f6c79707479636845524332305635000081525081565b6101ba61042e366004612b01565b610baa565b6101ba610441366004612970565b610c08565b6101716104543660046128aa565b610c21565b60008061046583610c5b565b8054909150610100900460ff1615610481575460ff1692915050565b61048a83610c86565b9392505050565b50919050565b60006002600054036104c45760405162461bcd60e51b81526004016104bb90612bde565b60405180910390fd5b60026000556104d38888610dfc565b60006104df8989610e2d565b905060006104ed8a8a610e9d565b509050806001600160a01b0316876001600160a01b0316146105515760405162461bcd60e51b815260206004820152601d60248201527f43757272656e637920616464726573736573206d757374206d6174636800000060448201526064016104bb565b50808710156105a25760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206d61782070726963652067746520746f6b656e207072696365000060448201526064016104bb565b6105ae89898787610f80565b6105f25760405162461bcd60e51b81526020600482015260156024820152744f6e6c7920616c6c6f776c6973746564204e46547360581b60448201526064016104bb565b336001600160a01b038416156106fa57604051631574d39f60e31b81523360048201526001600160a01b0385811660248301528a81166044830152606482018790526000917f00000000000000000000000000000000000000000000000000000000000000009091169063aba69cf890608401602060405180830381865afa158015610682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a69190612c25565b9050806106f55760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642064656c65676174652d7661756c742070616972696e67000060448201526064016104bb565b849150505b604051630ea5613f60e01b8152600481018b905289906000906001600160a01b03831690630ea5613f9060240160c060405180830381865afa158015610744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107689190612c40565b50505050509050600061077b8989610fcc565b90506107888d8d83611038565b600082620f42408f61079a9190612cb5565b6107a49190612ccc565b90506107b18d8284611144565b506040516117cd60e21b81526001600160a01b038f81166004830152602482018f90528d8116604483015285811660648301527f00000000000000000000000000000000000000000000000000000000000000001690615f34906084016020604051808303816000875af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190612cdf565b955061085e8c8783611221565b50610869858c61128e565b60405163a47d29cb60e01b8152600481018d90526000906001600160a01b0384169063a47d29cb90602401602060405180830381865afa1580156108b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d59190612cf8565b90506000336001600160a01b038316146108ef57846108f1565b8e5b90506108fe8a8a836112fa565b505061090b8c858d6113bd565b50505050600160005598975050505050505050565b61092b8a8a336115f7565b61093d8a8a8a8a8a8a8a8a8a8a61163c565b50505050505050505050565b600061095c338888888888886000610497565b979650505050505050565b600061097a888888888888886000610497565b98975050505050505050565b600061099485858585611658565b95945050505050565b600061099485858585610f80565b60006109b78383611697565b90505b92915050565b6000806109cd8484610e9d565b5090506109da81336116b7565b949350505050565b6109ed8383336115f7565b610a018383836001600160f81b0316611727565b610a0b8383611786565b15610a1a57610a1a83836117b6565b505050565b60006109b78383611851565b610a368686336115f7565b610a4486868686868661186c565b505050505050565b6040805180820190915260008082526020820152610a6a8383611988565b60408051808201909152905460ff811615158252610100900462ffffff1660208201529392505050565b6040805180820190915260008082526020820152610ab283836119d3565b6040805180820190915290546001600160f81b0381168252600160f81b900460ff16151560208201529392505050565b610aed8282336115f7565b610af782826119dd565b5050565b600080610b088484610e9d565b5090506109da813330611a7f565b610b218383336115f7565b610a1a838383611af1565b60006109b78383611bc7565b610b438282336115f7565b610af782826117b6565b6000806060600080610b5f87876119d3565b80546001600160f81b031694509050610b788787610e9d565b8254909450909250600160f81b900460ff168015610b9e57506001600160a01b03821615155b94505092959194509250565b600260005403610bcc5760405162461bcd60e51b81526004016104bb90612bde565b6002600055610bdc8484336115f7565b6000610bea85858585611be0565b90508015610bfc57610bfc8585611d0a565b50506001600055505050565b610c138686336115f7565b610a44868686868686611d65565b6000610c2d8585611e6e565b6001600160a01b038416600090815260209182526040808220858352909252205460ff169050949350505050565b6000610c65611e96565b6001600160a01b039092166000908152600192909201602052506040902090565b6040516000602482018190526044820181905290819060640160408051601f198184030181529181526020820180516001600160e01b0316638639415b60e01b1790525190915060009081906001600160a01b03861690610ce8908590612d15565b600060405180830381855afa9150503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b509150915081610d885760405162461bcd60e51b815260206004820152602560248201527f6765745072696d617279526576656e756553706c69747328292063616c6c2066604482015264185a5b195960da1b60648201526084016104bb565b805160c0819003610d9f5750600095945050505050565b8061010003610db45750600195945050505050565b60405162461bcd60e51b815260206004820152601e60248201527f556e657870656374656420726576656e75652073706c6974206279746573000060448201526064016104bb565b6000610e088383611988565b805490915060ff1615610a1a5760405162461bcd60e51b81526004016104bb90612d31565b600080610e3a84846119d3565b8054909150600160f81b900460ff16610e8c5760405162461bcd60e51b8152602060048201526014602482015273141c9a58d9481b9bdd0818dbdb999a59dd5c995960621b60448201526064016104bb565b546001600160f81b03169392505050565b600060606000610ead8585611eba565b80546001600160a01b0316935090508215610f5457806001018054610ed190612d62565b80601f0160208091040260200160405190810160405280929190818152602001828054610efd90612d62565b8015610f4a5780601f10610f1f57610100808354040283529160200191610f4a565b820191906000526020600020905b815481529060010190602001808311610f2d57829003601f168201915b5050505050610f76565b60405180604001604052806008815260200167554e434f4e46494760c01b8152505b9150509250929050565b600080610f8d8686611e6e565b90506000610f9a84611ec4565b6001600160a01b038616600090815260209384526040808220928252919093529091205460ff16915050949350505050565b604051634d01727d60e11b8152600481018290526000906001600160a01b03841690639a02e4fa90602401602060405180830381865afa158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190612d96565b60006110448484611ed3565b90506001600160a01b031982166110985760405162461bcd60e51b81526020600482015260186024820152774f6e6c79206e6f6e2d7a65726f206861736820736565647360401b60448201526064016104bb565b805462ffffff16600081815260018301602090815260408083206001600160a01b03198716845290915290205460ff161561110c5760405162461bcd60e51b815260206004820152601460248201527314185b995b08185b1c9958591e481b5a5b9d195960621b60448201526064016104bb565b60009081526001918201602090815260408083206001600160a01b0319909516835293905291909120805460ff191690911790555050565b826001600160a01b03166336c7c12c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a89190612cf8565b60405163dddceed160e01b81526001600160a01b038581166004830152602482018590526001600160a01b031984166044830152919091169063dddceed190606401600060405180830381600087803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b50505050505050565b600061122d8484610fcc565b90506001600160a01b0319808216908316146112885760405162461bcd60e51b815260206004820152601a602482015279155b995e1c1958dd1959081d1bdad95b881a185cda081cd9595960321b60448201526064016104bb565b50505050565b600061129983611ec4565b905060006112a78284611988565b8054909150620f4240850660010190610100900462ffffff16808211156112e05760405162461bcd60e51b81526004016104bb90612d31565b808203610a4457825460ff19166001178355505050505050565b6040516331a9108f60e11b8152600481018390526000906001600160a01b03851690636352211e90602401602060405180830381865afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190612cf8565b9050816001600160a01b0316816001600160a01b0316146112885760405162461bcd60e51b815260206004820152601160248201527013db9b1e481bdddb995c881bd988139195607a1b60448201526064016104bb565b816000036113ca57505050565b6000806113d78584611eba565b80549091506001600160a01b0316806114325760405162461bcd60e51b815260206004820152601d60248201527f45524332303a207061796d656e74206e6f7420636f6e6669677572656400000060448201526064016104bb565b61143d338287611efb565b91506000905061144c83612073565b905060008060008060008060008088156114ea57604051638639415b60e01b8152600481018e9052602481018d90526001600160a01b038c1690638639415b9060440161010060405180830381865afa1580156114ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d19190612db3565b969e50949c50929a50909850965094509250905061156a565b604051638639415b60e01b8152600481018e9052602481018d90526001600160a01b038c1690638639415b9060440160c060405180830381865afa158015611536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155a9190612e2a565b949c50929a509096509450925090505b8b8285611577898c612ccc565b6115819190612ccc565b61158b9190612ccc565b146115d75760405162461bcd60e51b815260206004820152601c60248201527b496e76616c696420726576656e75652073706c697420746f74616c7360201b60448201526064016104bb565b6115e88a87878b8b898989896120c1565b50505050505050505050505050565b6116028383836123d8565b610a1a5760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b60448201526064016104bb565b61164a8a8a8a8a8a8a61186c565b61093d8a8a86868686611d65565b6000806116658686611ed3565b6000948552600101602090815260408086206001600160a01b0319959095168652939052505090205460ff1692915050565b6000806116a48484611988565b54610100900462ffffff16949350505050565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906116e6908590600401612a3a565b602060405180830381865afa158015611703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190612cdf565b600061173384846119d3565b600160f81b6001600160f81b03841617815560405190915082906001600160a01b0385169086907f98e99eae7ab1c56b5b882e049df69b522affbaa1a93afd3be411447a1606027890600090a450505050565b6000806117938484611988565b8054909150610100900462ffffff161580156109da57505460ff16159392505050565b6000806117c38484612461565b9150915060006117d38585611988565b90506117de826124df565b815460ff1962ffffff92909216610100029190911663ffffffff19909116178383141781556040516001600160a01b0385169086907f1c3e74a6c6fefbaeee166b031cd2016349c6c863d5188b67c9bbd0b0dcb2e237906118429086815260200190565b60405180910390a35050505050565b60008061185e8484611ed3565b5462ffffff16949350505050565b82811461188b5760405162461bcd60e51b81526004016104bb90612e93565b60006118978787611e6e565b90508360005b818110156119355760018360008989858181106118bc576118bc612ed4565b90506020020160208101906118d19190612592565b6001600160a01b03166001600160a01b03168152602001908152602001600020600087878581811061190557611905612ed4565b60209081029290920135835250810191909152604001600020805460ff191691151591909117905560010161189d565b50866001600160a01b0316887fe4e108abe1d65a55b2c49a1586fb2afa6c3d79732947e37f71a6c23a5b08ff82888888886040516119769493929190612eea565b60405180910390a35050505050505050565b60007f73e3af67f35f30fb72bbaaf6cc07b987364ed643c93ba201702e213464e877ee5b6001600160a01b039290921660009081526020928352604080822094825293909252502090565b60006119ac612547565b60006119e98383611ed3565b80549091508190600090611a019062ffffff16612f68565b82546101009290920a62ffffff8181021990931691831602179091558154604080516f1c1bdb1e5c1d1e58da14185b995b125960821b81529190921660208201526001600160a01b0384169185917f1809fd1f08e6b0df08fd848757688435a0ab8520a51dcca23eba5a3c7f7280d6910160405180910390a3505050565b604051636eb1769f60e11b81526000906001600160a01b0385169063dd62ed3e90611ab09086908690600401612f8a565b602060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da9190612cdf565b600080611afe8585612461565b91509150808362ffffff161115611b275760405162461bcd60e51b81526004016104bb90612fa4565b818362ffffff161015611b4c5760405162461bcd60e51b81526004016104bb90612fa4565b6000611b588686611988565b805462ffffff861685811463ffffffff19909216610100820260ff1916179190911782556040519081529091506001600160a01b0386169087907f1c3e74a6c6fefbaeee166b031cd2016349c6c863d5188b67c9bbd0b0dcb2e2379060200160405180910390a3505050505050565b600080611bd48484611988565b5460ff16949350505050565b60006001600160a01b038216611c335760405162461bcd60e51b815260206004820152601860248201527706e756c6c20616464726573732c206f6e6c792045524332360441b60448201526064016104bb565b6000835111611c7b5760405162461bcd60e51b81526020600482015260146024820152731bdb9b1e481b9bdb8b5b9d5b1b081cde5b589bdb60621b60448201526064016104bb565b6000611c878686611eba565b80546001600160a01b031615159250905060018101611ca6858261301b565b5080546001600160a01b0319166001600160a01b0384811691821783556040519087169088907f9009be442961d697adbe398af85c4743d0539b16e89324b6448ebac47eced55e90611cf9908990612a9e565b60405180910390a450949350505050565b611d12612547565b6001600160a01b0382166000818152602092835260408082208683529093528281208190559151909184917f6e7520832121cb96e12b3c7502c0e4330c9ef76df21f25c6f807471daf0e516c9190a35050565b828114611d845760405162461bcd60e51b81526004016104bb90612e93565b6000611d908787611e6e565b90508360005b81811015611e2d5760008381898985818110611db457611db4612ed4565b9050602002016020810190611dc99190612592565b6001600160a01b03166001600160a01b031681526020019081526020016000206000878785818110611dfd57611dfd612ed4565b60209081029290920135835250810191909152604001600020805460ff1916911515919091179055600101611d96565b50866001600160a01b0316887f5728c49515724a90b87298ccfb6a8868ff0bfddf7e4fe298cea807dd815ced09888888886040516119769493929190612eea565b60007f7805f013cae363c49df6acca2dcd8a8f0bd9005c2f87b85d8dbbce9098e4afd76119ac565b7f69f22dd730b53ff235fa96b4306a31bef5dad48fe4bac28b1ceebbce14401b3890565b60006119ac611e96565b60006109ba620f4240836130da565b60007f56e45510048a51061054136e0136e5e31c79dc3b9d86e34df4ba37ce2773996d6119ac565b604051636eb1769f60e11b815281906001600160a01b0384169063dd62ed3e90611f2b9087903090600401612f8a565b602060405180830381865afa158015611f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6c9190612cdf565b1015611fb95760405162461bcd60e51b815260206004820152601c60248201527b496e73756666696369656e7420455243323020616c6c6f77616e636560201b60448201526064016104bb565b6040516370a0823160e01b815281906001600160a01b038416906370a0823190611fe7908790600401612a3a565b602060405180830381865afa158015612004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120289190612cdf565b1015610a1a5760405162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e742045524332302062616c616e636560301b60448201526064016104bb565b60008061207f83610c5b565b8054909150610100900460ff161561209b575460ff1692915050565b60006120a684610c86565b825481151561ffff1990911617610100179092555092915050565b8715612186576040516323b872dd60e01b81526001600160a01b038a16906323b872dd906120f79033908b908d906004016130fc565b6020604051808303816000875af1158015612116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213a9190612c25565b6121865760405162461bcd60e51b815260206004820181905260248201527f506c6174666f726d2050726f7669646572207061796d656e74206661696c656460448201526064016104bb565b851561224b576040516323b872dd60e01b81526001600160a01b038a16906323b872dd906121bc90339089908b906004016130fc565b6020604051808303816000875af11580156121db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ff9190612c25565b61224b5760405162461bcd60e51b815260206004820152601e60248201527f52656e6465722050726f7669646572207061796d656e74206661696c6564000060448201526064016104bb565b8315612308576040516323b872dd60e01b81526001600160a01b038a16906323b872dd90612281903390879089906004016130fc565b6020604051808303816000875af11580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190612c25565b6123085760405162461bcd60e51b8152602060048201526015602482015274105c9d1a5cdd081c185e5b595b9d0819985a5b1959605a1b60448201526064016104bb565b81156123cd576040516323b872dd60e01b81526001600160a01b038a16906323b872dd9061233e903390859087906004016130fc565b6020604051808303816000875af115801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190612c25565b6123cd5760405162461bcd60e51b815260206004820152601f60248201527f4164646974696f6e616c205061796565207061796d656e74206661696c65640060448201526064016104bb565b505050505050505050565b60405163a47d29cb60e01b8152600481018490526000906001600160a01b0384169063a47d29cb90602401602060405180830381865afa158015612420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124449190612cf8565b6001600160a01b0316826001600160a01b03161490509392505050565b604051630ea5613f60e01b81526004810183905260009081906001600160a01b03841690630ea5613f9060240160c060405180830381865afa1580156124ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cf9190612c40565b5093989297509195505050505050565b600062ffffff8211156125435760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201526534206269747360d01b60648201526084016104bb565b5090565b7efc986db700c71340c673de619c46ee721167fc4ea17804bb535c4c196aa7d790565b6001600160a01b038116811461257f57600080fd5b50565b803561258d8161256a565b919050565b6000602082840312156125a457600080fd5b813561048a8161256a565b600080600080600080600080610100898b0312156125cc57600080fd5b88356125d78161256a565b97506020890135965060408901356125ee8161256a565b95506060890135945060808901356126058161256a565b935060a08901356126158161256a565b925060c0890135915060e089013561262c8161256a565b809150509295985092959890939650565b60008083601f84011261264f57600080fd5b5081356001600160401b0381111561266657600080fd5b6020830191508360208260051b850101111561268157600080fd5b9250929050565b60008060008060008060008060008060c08b8d0312156126a757600080fd5b8a3599506126b760208c01612582565b985060408b01356001600160401b03808211156126d357600080fd5b6126df8e838f0161263d565b909a50985060608d01359150808211156126f857600080fd5b6127048e838f0161263d565b909850965060808d013591508082111561271d57600080fd5b6127298e838f0161263d565b909650945060a08d013591508082111561274257600080fd5b5061274f8d828e0161263d565b915080935050809150509295989b9194979a5092959850565b60008060008060008060c0878903121561278157600080fd5b8635955060208701356127938161256a565b94506040870135935060608701356127aa8161256a565b925060808701356127ba8161256a565b8092505060a087013590509295509295509295565b600080600080600080600060e0888a0312156127ea57600080fd5b87356127f58161256a565b965060208801359550604088013561280c8161256a565b94506060880135935060808801356128238161256a565b925060a08801356128338161256a565b8092505060c0880135905092959891949750929550565b6001600160a01b03198116811461257f57600080fd5b6000806000806080858703121561287657600080fd5b8435935060208501356128888161256a565b925060408501359150606085013561289f8161284a565b939692955090935050565b600080600080608085870312156128c057600080fd5b8435935060208501356128d28161256a565b925060408501356128e28161256a565b9396929550929360600135925050565b6000806040838503121561290557600080fd5b8235915060208301356129178161256a565b809150509250929050565b60008060006060848603121561293757600080fd5b8335925060208401356129498161256a565b915060408401356001600160f81b038116811461296557600080fd5b809150509250925092565b6000806000806000806080878903121561298957600080fd5b86359550602087013561299b8161256a565b945060408701356001600160401b03808211156129b757600080fd5b6129c38a838b0161263d565b909650945060608901359150808211156129dc57600080fd5b506129e989828a0161263d565b979a9699509497509295939492505050565b600080600060608486031215612a1057600080fd5b833592506020840135612a228161256a565b9150604084013562ffffff8116811461296557600080fd5b6001600160a01b0391909116815260200190565b60005b83811015612a69578181015183820152602001612a51565b50506000910152565b60008151808452612a8a816020860160208601612a4e565b601f01601f19169290920160200192915050565b6020815260006109b76020830184612a72565b8415158152836020820152608060408201526000612ad26080830185612a72565b905060018060a01b038316606083015295945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215612b1757600080fd5b843593506020850135612b298161256a565b925060408501356001600160401b0380821115612b4557600080fd5b818701915087601f830112612b5957600080fd5b813581811115612b6b57612b6b612aeb565b604051601f8201601f19908116603f01168101908382118183101715612b9357612b93612aeb565b816040528281528a6020848701011115612bac57600080fd5b826020860160208301376000602084830101528096505050505050612bd360608601612582565b905092959194509250565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b8051801515811461258d57600080fd5b600060208284031215612c3757600080fd5b6109b782612c15565b60008060008060008060c08789031215612c5957600080fd5b8651955060208701519450612c7060408801612c15565b9350612c7e60608801612c15565b925060808701519150612c9360a08801612c15565b90509295509295509295565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109ba576109ba612c9f565b808201808211156109ba576109ba612c9f565b600060208284031215612cf157600080fd5b5051919050565b600060208284031215612d0a57600080fd5b815161048a8161256a565b60008251612d27818460208701612a4e565b9190910192915050565b60208082526017908201527613585e081a5b9d9bd8d85d1a5bdb9cc81c995858da1959604a1b604082015260600190565b600181811c90821680612d7657607f821691505b60208210810361049157634e487b7160e01b600052602260045260246000fd5b600060208284031215612da857600080fd5b815161048a8161284a565b600080600080600080600080610100898b031215612dd057600080fd5b885197506020890151612de28161256a565b60408a015160608b01519198509650612dfa8161256a565b60808a015160a08b01519196509450612e128161256a565b60c08a015160e08b0151919450925061262c8161256a565b60008060008060008060c08789031215612e4357600080fd5b865195506020870151612e558161256a565b604088015160608901519196509450612e6d8161256a565b608088015160a08901519194509250612e858161256a565b809150509295509295509295565b60208082526021908201527f546f6b656e486f6c6465724c69623a20617272617973206e6571206c656e67746040820152600d60fb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6040808252810184905260008560608301825b87811015612f2d578235612f108161256a565b6001600160a01b0316825260209283019290910190600101612efd565b5083810360208501528481526001600160fb1b03851115612f4d57600080fd5b8460051b915081866020830137016020019695505050505050565b600062ffffff808316818103612f8057612f80612c9f565b6001019392505050565b6001600160a01b0392831681529116602082015260400190565b602080825260179082015276496e76616c6964206d617820696e766f636174696f6e7360481b604082015260600190565b601f821115610a1a57600081815260208120601f850160051c81016020861015612ffc5750805b601f850160051c820191505b81811015610a4457828155600101613008565b81516001600160401b0381111561303457613034612aeb565b613048816130428454612d62565b84612fd5565b602080601f83116001811461307d57600084156130655750858301515b600019600386901b1c1916600185901b178555610a44565b600085815260208120601f198616915b828110156130ac5788860151825594840194600190910190840161308d565b50858210156130ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826130f757634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03938416815291909216602082015260408101919091526060019056fea26469706673582212205dd526098a54e05050551007262936eb2cfc236a4c475e6d877d9826ca11bb7664736f6c63430008130033",
779
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101595760003560e01c80639b24c3c0116100c95780639b24c3c01461029c578063a03f5997146102d5578063ae4bec82146102e8578063b000e334146102fb578063bf5bf5f81461030e578063cce7c90914610342578063d3ddabe614610355578063d9bffbce14610387578063d9eb16db1461039a578063dd85582f146103bd578063e9d1e8ac146103e4578063ed6677a914610420578063f7f5e9d014610433578063fca23f4e1461044657600080fd5b806301000da71461015e5780630b8249f4146101865780630c49ef31146101a75780630da18b57146101bc5780631df64cb7146101cf57806333c91bdb146101e257806339b87cf8146101f55780634869f3df146102085780635e62aa781461021b5780637e947f241461022e5780637ffb2eb8146102415780638a605b51146102545780639a94488a14610267575b600080fd5b61017161016c366004612592565b610459565b60405190151581526020015b60405180910390f35b6101996101943660046125af565b610497565b60405190815260200161017d565b6101ba6101b5366004612688565b610920565b005b6101996101ca366004612768565b610949565b6101996101dd3660046127cf565b610967565b6101716101f0366004612860565b610986565b6101716102033660046128aa565b61099d565b6101996102163660046128f2565b6109ab565b6101996102293660046128f2565b6109c0565b6101ba61023c366004612922565b6109e2565b61019961024f3660046128f2565b610a1f565b6101ba610262366004612970565b610a2b565b61027a6102753660046128f2565b610a4c565b6040805182511515815260209283015162ffffff16928101929092520161017d565b6102af6102aa3660046128f2565b610a94565b6040805182516001600160f81b031681526020928301511515928101929092520161017d565b6101ba6102e33660046128f2565b610ae2565b6101996102f63660046128f2565b610afb565b6101ba6103093660046129fb565b610b16565b6103357f000000000000000000000000000000000000000000000000000000000000000081565b60405161017d9190612a3a565b6101716103503660046128f2565b610b2c565b61037a60405180604001604052806006815260200165076352e302e360d41b81525081565b60405161017d9190612a9e565b6101ba6103953660046128f2565b610b38565b6103ad6103a83660046128f2565b610b4d565b60405161017d9493929190612ab1565b6103357f000000000000000000000000000000000000000000000000000000000000000081565b61037a6040518060400160405280601e81526020017f4d696e7465725365745072696365506f6c79707479636845524332305635000081525081565b6101ba61042e366004612b01565b610baa565b6101ba610441366004612970565b610c08565b6101716104543660046128aa565b610c21565b60008061046583610c5b565b8054909150610100900460ff1615610481575460ff1692915050565b61048a83610c86565b9392505050565b50919050565b60006002600054036104c45760405162461bcd60e51b81526004016104bb90612bde565b60405180910390fd5b60026000556104d38888610dfc565b60006104df8989610e2d565b905060006104ed8a8a610e9d565b509050806001600160a01b0316876001600160a01b0316146105515760405162461bcd60e51b815260206004820152601d60248201527f43757272656e637920616464726573736573206d757374206d6174636800000060448201526064016104bb565b50808710156105a25760405162461bcd60e51b815260206004820152601e60248201527f4f6e6c79206d61782070726963652067746520746f6b656e207072696365000060448201526064016104bb565b6105ae89898787610f80565b6105f25760405162461bcd60e51b81526020600482015260156024820152744f6e6c7920616c6c6f776c6973746564204e46547360581b60448201526064016104bb565b336001600160a01b038416156106fa57604051631574d39f60e31b81523360048201526001600160a01b0385811660248301528a81166044830152606482018790526000917f00000000000000000000000000000000000000000000000000000000000000009091169063aba69cf890608401602060405180830381865afa158015610682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a69190612c25565b9050806106f55760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642064656c65676174652d7661756c742070616972696e67000060448201526064016104bb565b849150505b604051630ea5613f60e01b8152600481018b905289906000906001600160a01b03831690630ea5613f9060240160c060405180830381865afa158015610744573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107689190612c40565b50505050509050600061077b8989610fcc565b90506107888d8d83611038565b600082620f42408f61079a9190612cb5565b6107a49190612ccc565b90506107b18d8284611144565b506040516117cd60e21b81526001600160a01b038f81166004830152602482018f90528d8116604483015285811660648301527f00000000000000000000000000000000000000000000000000000000000000001690615f34906084016020604051808303816000875af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190612cdf565b955061085e8c8783611221565b50610869858c61128e565b60405163a47d29cb60e01b8152600481018d90526000906001600160a01b0384169063a47d29cb90602401602060405180830381865afa1580156108b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d59190612cf8565b90506000336001600160a01b038316146108ef57846108f1565b8e5b90506108fe8a8a836112fa565b505061090b8c858d6113bd565b50505050600160005598975050505050505050565b61092b8a8a336115f7565b61093d8a8a8a8a8a8a8a8a8a8a61163c565b50505050505050505050565b600061095c338888888888886000610497565b979650505050505050565b600061097a888888888888886000610497565b98975050505050505050565b600061099485858585611658565b95945050505050565b600061099485858585610f80565b60006109b78383611697565b90505b92915050565b6000806109cd8484610e9d565b5090506109da81336116b7565b949350505050565b6109ed8383336115f7565b610a018383836001600160f81b0316611727565b610a0b8383611786565b15610a1a57610a1a83836117b6565b505050565b60006109b78383611851565b610a368686336115f7565b610a4486868686868661186c565b505050505050565b6040805180820190915260008082526020820152610a6a8383611988565b60408051808201909152905460ff811615158252610100900462ffffff1660208201529392505050565b6040805180820190915260008082526020820152610ab283836119d3565b6040805180820190915290546001600160f81b0381168252600160f81b900460ff16151560208201529392505050565b610aed8282336115f7565b610af782826119dd565b5050565b600080610b088484610e9d565b5090506109da813330611a7f565b610b218383336115f7565b610a1a838383611af1565b60006109b78383611bc7565b610b438282336115f7565b610af782826117b6565b6000806060600080610b5f87876119d3565b80546001600160f81b031694509050610b788787610e9d565b8254909450909250600160f81b900460ff168015610b9e57506001600160a01b03821615155b94505092959194509250565b600260005403610bcc5760405162461bcd60e51b81526004016104bb90612bde565b6002600055610bdc8484336115f7565b6000610bea85858585611be0565b90508015610bfc57610bfc8585611d0a565b50506001600055505050565b610c138686336115f7565b610a44868686868686611d65565b6000610c2d8585611e6e565b6001600160a01b038416600090815260209182526040808220858352909252205460ff169050949350505050565b6000610c65611e96565b6001600160a01b039092166000908152600192909201602052506040902090565b6040516000602482018190526044820181905290819060640160408051601f198184030181529181526020820180516001600160e01b0316638639415b60e01b1790525190915060009081906001600160a01b03861690610ce8908590612d15565b600060405180830381855afa9150503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b509150915081610d885760405162461bcd60e51b815260206004820152602560248201527f6765745072696d617279526576656e756553706c69747328292063616c6c2066604482015264185a5b195960da1b60648201526084016104bb565b805160c0819003610d9f5750600095945050505050565b8061010003610db45750600195945050505050565b60405162461bcd60e51b815260206004820152601e60248201527f556e657870656374656420726576656e75652073706c6974206279746573000060448201526064016104bb565b6000610e088383611988565b805490915060ff1615610a1a5760405162461bcd60e51b81526004016104bb90612d31565b600080610e3a84846119d3565b8054909150600160f81b900460ff16610e8c5760405162461bcd60e51b8152602060048201526014602482015273141c9a58d9481b9bdd0818dbdb999a59dd5c995960621b60448201526064016104bb565b546001600160f81b03169392505050565b600060606000610ead8585611eba565b80546001600160a01b0316935090508215610f5457806001018054610ed190612d62565b80601f0160208091040260200160405190810160405280929190818152602001828054610efd90612d62565b8015610f4a5780601f10610f1f57610100808354040283529160200191610f4a565b820191906000526020600020905b815481529060010190602001808311610f2d57829003601f168201915b5050505050610f76565b60405180604001604052806008815260200167554e434f4e46494760c01b8152505b9150509250929050565b600080610f8d8686611e6e565b90506000610f9a84611ec4565b6001600160a01b038616600090815260209384526040808220928252919093529091205460ff16915050949350505050565b604051634d01727d60e11b8152600481018290526000906001600160a01b03841690639a02e4fa90602401602060405180830381865afa158015611014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190612d96565b60006110448484611ed3565b90506001600160a01b031982166110985760405162461bcd60e51b81526020600482015260186024820152774f6e6c79206e6f6e2d7a65726f206861736820736565647360401b60448201526064016104bb565b805462ffffff16600081815260018301602090815260408083206001600160a01b03198716845290915290205460ff161561110c5760405162461bcd60e51b815260206004820152601460248201527314185b995b08185b1c9958591e481b5a5b9d195960621b60448201526064016104bb565b60009081526001918201602090815260408083206001600160a01b0319909516835293905291909120805460ff191690911790555050565b826001600160a01b03166336c7c12c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a89190612cf8565b60405163dddceed160e01b81526001600160a01b038581166004830152602482018590526001600160a01b031984166044830152919091169063dddceed190606401600060405180830381600087803b15801561120457600080fd5b505af1158015611218573d6000803e3d6000fd5b50505050505050565b600061122d8484610fcc565b90506001600160a01b0319808216908316146112885760405162461bcd60e51b815260206004820152601a602482015279155b995e1c1958dd1959081d1bdad95b881a185cda081cd9595960321b60448201526064016104bb565b50505050565b600061129983611ec4565b905060006112a78284611988565b8054909150620f4240850660010190610100900462ffffff16808211156112e05760405162461bcd60e51b81526004016104bb90612d31565b808203610a4457825460ff19166001178355505050505050565b6040516331a9108f60e11b8152600481018390526000906001600160a01b03851690636352211e90602401602060405180830381865afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190612cf8565b9050816001600160a01b0316816001600160a01b0316146112885760405162461bcd60e51b815260206004820152601160248201527013db9b1e481bdddb995c881bd988139195607a1b60448201526064016104bb565b816000036113ca57505050565b6000806113d78584611eba565b80549091506001600160a01b0316806114325760405162461bcd60e51b815260206004820152601d60248201527f45524332303a207061796d656e74206e6f7420636f6e6669677572656400000060448201526064016104bb565b61143d338287611efb565b91506000905061144c83612073565b905060008060008060008060008088156114ea57604051638639415b60e01b8152600481018e9052602481018d90526001600160a01b038c1690638639415b9060440161010060405180830381865afa1580156114ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d19190612db3565b969e50949c50929a50909850965094509250905061156a565b604051638639415b60e01b8152600481018e9052602481018d90526001600160a01b038c1690638639415b9060440160c060405180830381865afa158015611536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155a9190612e2a565b949c50929a509096509450925090505b8b8285611577898c612ccc565b6115819190612ccc565b61158b9190612ccc565b146115d75760405162461bcd60e51b815260206004820152601c60248201527b496e76616c696420726576656e75652073706c697420746f74616c7360201b60448201526064016104bb565b6115e88a87878b8b898989896120c1565b50505050505050505050505050565b6116028383836123d8565b610a1a5760405162461bcd60e51b815260206004820152600b60248201526a13db9b1e48105c9d1a5cdd60aa1b60448201526064016104bb565b61164a8a8a8a8a8a8a61186c565b61093d8a8a86868686611d65565b6000806116658686611ed3565b6000948552600101602090815260408086206001600160a01b0319959095168652939052505090205460ff1692915050565b6000806116a48484611988565b54610100900462ffffff16949350505050565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906116e6908590600401612a3a565b602060405180830381865afa158015611703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b79190612cdf565b600061173384846119d3565b600160f81b6001600160f81b03841617815560405190915082906001600160a01b0385169086907f98e99eae7ab1c56b5b882e049df69b522affbaa1a93afd3be411447a1606027890600090a450505050565b6000806117938484611988565b8054909150610100900462ffffff161580156109da57505460ff16159392505050565b6000806117c38484612461565b9150915060006117d38585611988565b90506117de826124df565b815460ff1962ffffff92909216610100029190911663ffffffff19909116178383141781556040516001600160a01b0385169086907f1c3e74a6c6fefbaeee166b031cd2016349c6c863d5188b67c9bbd0b0dcb2e237906118429086815260200190565b60405180910390a35050505050565b60008061185e8484611ed3565b5462ffffff16949350505050565b82811461188b5760405162461bcd60e51b81526004016104bb90612e93565b60006118978787611e6e565b90508360005b818110156119355760018360008989858181106118bc576118bc612ed4565b90506020020160208101906118d19190612592565b6001600160a01b03166001600160a01b03168152602001908152602001600020600087878581811061190557611905612ed4565b60209081029290920135835250810191909152604001600020805460ff191691151591909117905560010161189d565b50866001600160a01b0316887fe4e108abe1d65a55b2c49a1586fb2afa6c3d79732947e37f71a6c23a5b08ff82888888886040516119769493929190612eea565b60405180910390a35050505050505050565b60007f73e3af67f35f30fb72bbaaf6cc07b987364ed643c93ba201702e213464e877ee5b6001600160a01b039290921660009081526020928352604080822094825293909252502090565b60006119ac612547565b60006119e98383611ed3565b80549091508190600090611a019062ffffff16612f68565b82546101009290920a62ffffff8181021990931691831602179091558154604080516f1c1bdb1e5c1d1e58da14185b995b125960821b81529190921660208201526001600160a01b0384169185917f1809fd1f08e6b0df08fd848757688435a0ab8520a51dcca23eba5a3c7f7280d6910160405180910390a3505050565b604051636eb1769f60e11b81526000906001600160a01b0385169063dd62ed3e90611ab09086908690600401612f8a565b602060405180830381865afa158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109da9190612cdf565b600080611afe8585612461565b91509150808362ffffff161115611b275760405162461bcd60e51b81526004016104bb90612fa4565b818362ffffff161015611b4c5760405162461bcd60e51b81526004016104bb90612fa4565b6000611b588686611988565b805462ffffff861685811463ffffffff19909216610100820260ff1916179190911782556040519081529091506001600160a01b0386169087907f1c3e74a6c6fefbaeee166b031cd2016349c6c863d5188b67c9bbd0b0dcb2e2379060200160405180910390a3505050505050565b600080611bd48484611988565b5460ff16949350505050565b60006001600160a01b038216611c335760405162461bcd60e51b815260206004820152601860248201527706e756c6c20616464726573732c206f6e6c792045524332360441b60448201526064016104bb565b6000835111611c7b5760405162461bcd60e51b81526020600482015260146024820152731bdb9b1e481b9bdb8b5b9d5b1b081cde5b589bdb60621b60448201526064016104bb565b6000611c878686611eba565b80546001600160a01b031615159250905060018101611ca6858261301b565b5080546001600160a01b0319166001600160a01b0384811691821783556040519087169088907f9009be442961d697adbe398af85c4743d0539b16e89324b6448ebac47eced55e90611cf9908990612a9e565b60405180910390a450949350505050565b611d12612547565b6001600160a01b0382166000818152602092835260408082208683529093528281208190559151909184917f6e7520832121cb96e12b3c7502c0e4330c9ef76df21f25c6f807471daf0e516c9190a35050565b828114611d845760405162461bcd60e51b81526004016104bb90612e93565b6000611d908787611e6e565b90508360005b81811015611e2d5760008381898985818110611db457611db4612ed4565b9050602002016020810190611dc99190612592565b6001600160a01b03166001600160a01b031681526020019081526020016000206000878785818110611dfd57611dfd612ed4565b60209081029290920135835250810191909152604001600020805460ff1916911515919091179055600101611d96565b50866001600160a01b0316887f5728c49515724a90b87298ccfb6a8868ff0bfddf7e4fe298cea807dd815ced09888888886040516119769493929190612eea565b60007f7805f013cae363c49df6acca2dcd8a8f0bd9005c2f87b85d8dbbce9098e4afd76119ac565b7f69f22dd730b53ff235fa96b4306a31bef5dad48fe4bac28b1ceebbce14401b3890565b60006119ac611e96565b60006109ba620f4240836130da565b60007f56e45510048a51061054136e0136e5e31c79dc3b9d86e34df4ba37ce2773996d6119ac565b604051636eb1769f60e11b815281906001600160a01b0384169063dd62ed3e90611f2b9087903090600401612f8a565b602060405180830381865afa158015611f48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6c9190612cdf565b1015611fb95760405162461bcd60e51b815260206004820152601c60248201527b496e73756666696369656e7420455243323020616c6c6f77616e636560201b60448201526064016104bb565b6040516370a0823160e01b815281906001600160a01b038416906370a0823190611fe7908790600401612a3a565b602060405180830381865afa158015612004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120289190612cdf565b1015610a1a5760405162461bcd60e51b815260206004820152601a602482015279496e73756666696369656e742045524332302062616c616e636560301b60448201526064016104bb565b60008061207f83610c5b565b8054909150610100900460ff161561209b575460ff1692915050565b60006120a684610c86565b825481151561ffff1990911617610100179092555092915050565b8715612186576040516323b872dd60e01b81526001600160a01b038a16906323b872dd906120f79033908b908d906004016130fc565b6020604051808303816000875af1158015612116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213a9190612c25565b6121865760405162461bcd60e51b815260206004820181905260248201527f506c6174666f726d2050726f7669646572207061796d656e74206661696c656460448201526064016104bb565b851561224b576040516323b872dd60e01b81526001600160a01b038a16906323b872dd906121bc90339089908b906004016130fc565b6020604051808303816000875af11580156121db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ff9190612c25565b61224b5760405162461bcd60e51b815260206004820152601e60248201527f52656e6465722050726f7669646572207061796d656e74206661696c6564000060448201526064016104bb565b8315612308576040516323b872dd60e01b81526001600160a01b038a16906323b872dd90612281903390879089906004016130fc565b6020604051808303816000875af11580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190612c25565b6123085760405162461bcd60e51b8152602060048201526015602482015274105c9d1a5cdd081c185e5b595b9d0819985a5b1959605a1b60448201526064016104bb565b81156123cd576040516323b872dd60e01b81526001600160a01b038a16906323b872dd9061233e903390859087906004016130fc565b6020604051808303816000875af115801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190612c25565b6123cd5760405162461bcd60e51b815260206004820152601f60248201527f4164646974696f6e616c205061796565207061796d656e74206661696c65640060448201526064016104bb565b505050505050505050565b60405163a47d29cb60e01b8152600481018490526000906001600160a01b0384169063a47d29cb90602401602060405180830381865afa158015612420573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124449190612cf8565b6001600160a01b0316826001600160a01b03161490509392505050565b604051630ea5613f60e01b81526004810183905260009081906001600160a01b03841690630ea5613f9060240160c060405180830381865afa1580156124ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124cf9190612c40565b5093989297509195505050505050565b600062ffffff8211156125435760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201526534206269747360d01b60648201526084016104bb565b5090565b7efc986db700c71340c673de619c46ee721167fc4ea17804bb535c4c196aa7d790565b6001600160a01b038116811461257f57600080fd5b50565b803561258d8161256a565b919050565b6000602082840312156125a457600080fd5b813561048a8161256a565b600080600080600080600080610100898b0312156125cc57600080fd5b88356125d78161256a565b97506020890135965060408901356125ee8161256a565b95506060890135945060808901356126058161256a565b935060a08901356126158161256a565b925060c0890135915060e089013561262c8161256a565b809150509295985092959890939650565b60008083601f84011261264f57600080fd5b5081356001600160401b0381111561266657600080fd5b6020830191508360208260051b850101111561268157600080fd5b9250929050565b60008060008060008060008060008060c08b8d0312156126a757600080fd5b8a3599506126b760208c01612582565b985060408b01356001600160401b03808211156126d357600080fd5b6126df8e838f0161263d565b909a50985060608d01359150808211156126f857600080fd5b6127048e838f0161263d565b909850965060808d013591508082111561271d57600080fd5b6127298e838f0161263d565b909650945060a08d013591508082111561274257600080fd5b5061274f8d828e0161263d565b915080935050809150509295989b9194979a5092959850565b60008060008060008060c0878903121561278157600080fd5b8635955060208701356127938161256a565b94506040870135935060608701356127aa8161256a565b925060808701356127ba8161256a565b8092505060a087013590509295509295509295565b600080600080600080600060e0888a0312156127ea57600080fd5b87356127f58161256a565b965060208801359550604088013561280c8161256a565b94506060880135935060808801356128238161256a565b925060a08801356128338161256a565b8092505060c0880135905092959891949750929550565b6001600160a01b03198116811461257f57600080fd5b6000806000806080858703121561287657600080fd5b8435935060208501356128888161256a565b925060408501359150606085013561289f8161284a565b939692955090935050565b600080600080608085870312156128c057600080fd5b8435935060208501356128d28161256a565b925060408501356128e28161256a565b9396929550929360600135925050565b6000806040838503121561290557600080fd5b8235915060208301356129178161256a565b809150509250929050565b60008060006060848603121561293757600080fd5b8335925060208401356129498161256a565b915060408401356001600160f81b038116811461296557600080fd5b809150509250925092565b6000806000806000806080878903121561298957600080fd5b86359550602087013561299b8161256a565b945060408701356001600160401b03808211156129b757600080fd5b6129c38a838b0161263d565b909650945060608901359150808211156129dc57600080fd5b506129e989828a0161263d565b979a9699509497509295939492505050565b600080600060608486031215612a1057600080fd5b833592506020840135612a228161256a565b9150604084013562ffffff8116811461296557600080fd5b6001600160a01b0391909116815260200190565b60005b83811015612a69578181015183820152602001612a51565b50506000910152565b60008151808452612a8a816020860160208601612a4e565b601f01601f19169290920160200192915050565b6020815260006109b76020830184612a72565b8415158152836020820152608060408201526000612ad26080830185612a72565b905060018060a01b038316606083015295945050505050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215612b1757600080fd5b843593506020850135612b298161256a565b925060408501356001600160401b0380821115612b4557600080fd5b818701915087601f830112612b5957600080fd5b813581811115612b6b57612b6b612aeb565b604051601f8201601f19908116603f01168101908382118183101715612b9357612b93612aeb565b816040528281528a6020848701011115612bac57600080fd5b826020860160208301376000602084830101528096505050505050612bd360608601612582565b905092959194509250565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b8051801515811461258d57600080fd5b600060208284031215612c3757600080fd5b6109b782612c15565b60008060008060008060c08789031215612c5957600080fd5b8651955060208701519450612c7060408801612c15565b9350612c7e60608801612c15565b925060808701519150612c9360a08801612c15565b90509295509295509295565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176109ba576109ba612c9f565b808201808211156109ba576109ba612c9f565b600060208284031215612cf157600080fd5b5051919050565b600060208284031215612d0a57600080fd5b815161048a8161256a565b60008251612d27818460208701612a4e565b9190910192915050565b60208082526017908201527613585e081a5b9d9bd8d85d1a5bdb9cc81c995858da1959604a1b604082015260600190565b600181811c90821680612d7657607f821691505b60208210810361049157634e487b7160e01b600052602260045260246000fd5b600060208284031215612da857600080fd5b815161048a8161284a565b600080600080600080600080610100898b031215612dd057600080fd5b885197506020890151612de28161256a565b60408a015160608b01519198509650612dfa8161256a565b60808a015160a08b01519196509450612e128161256a565b60c08a015160e08b0151919450925061262c8161256a565b60008060008060008060c08789031215612e4357600080fd5b865195506020870151612e558161256a565b604088015160608901519196509450612e6d8161256a565b608088015160a08901519194509250612e858161256a565b809150509295509295509295565b60208082526021908201527f546f6b656e486f6c6465724c69623a20617272617973206e6571206c656e67746040820152600d60fb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6040808252810184905260008560608301825b87811015612f2d578235612f108161256a565b6001600160a01b0316825260209283019290910190600101612efd565b5083810360208501528481526001600160fb1b03851115612f4d57600080fd5b8460051b915081866020830137016020019695505050505050565b600062ffffff808316818103612f8057612f80612c9f565b6001019392505050565b6001600160a01b0392831681529116602082015260400190565b602080825260179082015276496e76616c6964206d617820696e766f636174696f6e7360481b604082015260600190565b601f821115610a1a57600081815260208120601f850160051c81016020861015612ffc5750805b601f850160051c820191505b81811015610a4457828155600101613008565b81516001600160401b0381111561303457613034612aeb565b613048816130428454612d62565b84612fd5565b602080601f83116001811461307d57600084156130655750858301515b600019600386901b1c1916600185901b178555610a44565b600085815260208120601f198616915b828110156130ac5788860151825594840194600190910190840161308d565b50858210156130ca5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826130f757634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03938416815291909216602082015260408101919091526060019056fea26469706673582212205dd526098a54e05050551007262936eb2cfc236a4c475e6d877d9826ca11bb7664736f6c63430008130033",
1241
780
  "linkReferences": {},
1242
781
  "deployedLinkReferences": {}
1243
782
  }