lynx-client 0.0.39 → 0.1.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 (175) hide show
  1. package/dist/cjs/index.js +8 -3
  2. package/dist/cjs/lib/addresses/lensAddresses.js +10 -8
  3. package/dist/cjs/lib/contractsIntegration/LexLensService/ILexLensService.js +7 -1
  4. package/dist/cjs/lib/contractsIntegration/LexLensService/LexLensService.js +6 -0
  5. package/dist/cjs/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.js +6 -1
  6. package/dist/cjs/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.js +4 -0
  7. package/dist/cjs/lib/contractsIntegration/TradingFloorService/TradingFloorService.js +12 -0
  8. package/dist/cjs/lib/devex/getChainAddresses.js +1 -1
  9. package/dist/cjs/lib/priceFeeds/pyth/{pythFeedConstants.js → hermes/hermesFeedConstants.js} +5 -5
  10. package/dist/cjs/lib/priceFeeds/pyth/hermes/hermesFeedFunctions.js +24 -0
  11. package/dist/{esm/lib/priceFeeds/pyth/pythPriceData.js → cjs/lib/priceFeeds/pyth/hermes/hermesPriceData.js} +11 -9
  12. package/dist/cjs/lib/priceFeeds/pyth/lazer/lazerFeedConstants.js +166 -0
  13. package/dist/cjs/lib/priceFeeds/pyth/lazer/lazerFeedFunctions.js +25 -0
  14. package/dist/cjs/lib/priceFeeds/pyth/lazer/lazerPayloadTypes.js +2 -0
  15. package/dist/cjs/lib/priceFeeds/pyth/lazer/lazerPriceData.js +60 -0
  16. package/dist/cjs/lib/priceFeeds/pyth/lazer/lazerSigningFormats.js +27 -0
  17. package/dist/cjs/lib/typechain/factories/contracts/Lynx/IntentsVerifier/TradeIntentsVerifierV1__factory.js +1 -1
  18. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Lex/LexPool/LexPoolV1__factory.js +1 -1
  19. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Lex/PoolAccountant/PoolAccountantV1__factory.js +1 -1
  20. package/dist/cjs/lib/typechain/factories/contracts/Lynx/OrderBook/OrderBookV1__factory.js +1 -1
  21. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Registry/RegistryV1__factory.js +1 -1
  22. package/dist/cjs/lib/typechain/factories/contracts/Lynx/TradersPortal/TradersPortalV1__factory.js +1 -1
  23. package/dist/cjs/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.js +82 -1
  24. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.js +1 -1
  25. package/dist/cjs/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.js +81 -1
  26. package/dist/cjs/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.js +42 -1
  27. package/dist/cjs/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.js +1 -1
  28. package/dist/esm/index.d.ts +8 -3
  29. package/dist/esm/index.d.ts.map +1 -1
  30. package/dist/esm/index.js +8 -3
  31. package/dist/esm/lib/addresses/lensAddresses.d.ts +10 -8
  32. package/dist/esm/lib/addresses/lensAddresses.d.ts.map +1 -1
  33. package/dist/esm/lib/addresses/lensAddresses.js +10 -8
  34. package/dist/esm/lib/contractsIntegration/LexLensService/ILexLensService.d.ts +4 -1
  35. package/dist/esm/lib/contractsIntegration/LexLensService/ILexLensService.d.ts.map +1 -1
  36. package/dist/esm/lib/contractsIntegration/LexLensService/ILexLensService.js +7 -1
  37. package/dist/esm/lib/contractsIntegration/LexLensService/LexLensService.d.ts +2 -1
  38. package/dist/esm/lib/contractsIntegration/LexLensService/LexLensService.d.ts.map +1 -1
  39. package/dist/esm/lib/contractsIntegration/LexLensService/LexLensService.js +6 -0
  40. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.d.ts +4 -1
  41. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.d.ts.map +1 -1
  42. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.js +6 -1
  43. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.d.ts +2 -1
  44. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.d.ts.map +1 -1
  45. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.js +4 -0
  46. package/dist/esm/lib/contractsIntegration/TradingFloorService/ITradingFloorService.d.ts +6 -1
  47. package/dist/esm/lib/contractsIntegration/TradingFloorService/ITradingFloorService.d.ts.map +1 -1
  48. package/dist/esm/lib/contractsIntegration/TradingFloorService/TradingFloorService.d.ts +2 -1
  49. package/dist/esm/lib/contractsIntegration/TradingFloorService/TradingFloorService.d.ts.map +1 -1
  50. package/dist/esm/lib/contractsIntegration/TradingFloorService/TradingFloorService.js +12 -0
  51. package/dist/esm/lib/devex/getChainAddresses.js +1 -1
  52. package/dist/esm/lib/priceFeeds/pyth/hermes/hermesFeedConstants.d.ts +5 -0
  53. package/dist/esm/lib/priceFeeds/pyth/hermes/hermesFeedConstants.d.ts.map +1 -0
  54. package/dist/esm/lib/priceFeeds/pyth/{pythFeedConstants.js → hermes/hermesFeedConstants.js} +5 -5
  55. package/dist/esm/lib/priceFeeds/pyth/hermes/hermesFeedFunctions.d.ts +14 -0
  56. package/dist/esm/lib/priceFeeds/pyth/hermes/hermesFeedFunctions.d.ts.map +1 -0
  57. package/dist/esm/lib/priceFeeds/pyth/hermes/hermesFeedFunctions.js +24 -0
  58. package/dist/esm/lib/priceFeeds/pyth/hermes/hermesPriceData.d.ts +11 -0
  59. package/dist/esm/lib/priceFeeds/pyth/hermes/hermesPriceData.d.ts.map +1 -0
  60. package/dist/{cjs/lib/priceFeeds/pyth/pythPriceData.js → esm/lib/priceFeeds/pyth/hermes/hermesPriceData.js} +11 -9
  61. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerFeedConstants.d.ts +54 -0
  62. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerFeedConstants.d.ts.map +1 -0
  63. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerFeedConstants.js +166 -0
  64. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerFeedFunctions.d.ts +16 -0
  65. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerFeedFunctions.d.ts.map +1 -0
  66. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerFeedFunctions.js +25 -0
  67. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerPayloadTypes.d.ts +64 -0
  68. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerPayloadTypes.d.ts.map +1 -0
  69. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerPayloadTypes.js +2 -0
  70. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerPriceData.d.ts +26 -0
  71. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerPriceData.d.ts.map +1 -0
  72. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerPriceData.js +60 -0
  73. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerSigningFormats.d.ts +36 -0
  74. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerSigningFormats.d.ts.map +1 -0
  75. package/dist/esm/lib/priceFeeds/pyth/lazer/lazerSigningFormats.js +27 -0
  76. package/dist/esm/lib/typechain/contracts/Lynx/TradingFloor/TradingFloorV1.d.ts +63 -2
  77. package/dist/esm/lib/typechain/contracts/Lynx/TradingFloor/TradingFloorV1.d.ts.map +1 -1
  78. package/dist/esm/lib/typechain/contracts/Peripheral/Lens/LexLens.d.ts +30 -1
  79. package/dist/esm/lib/typechain/contracts/Peripheral/Lens/LexLens.d.ts.map +1 -1
  80. package/dist/esm/lib/typechain/contracts/Peripheral/Lens/TradingFloorLens.d.ts +29 -1
  81. package/dist/esm/lib/typechain/contracts/Peripheral/Lens/TradingFloorLens.d.ts.map +1 -1
  82. package/dist/esm/lib/typechain/factories/contracts/Lynx/IntentsVerifier/TradeIntentsVerifierV1__factory.d.ts +1 -1
  83. package/dist/esm/lib/typechain/factories/contracts/Lynx/IntentsVerifier/TradeIntentsVerifierV1__factory.js +1 -1
  84. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/LexPool/LexPoolV1__factory.d.ts +1 -1
  85. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/LexPool/LexPoolV1__factory.js +1 -1
  86. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/PoolAccountant/PoolAccountantV1__factory.d.ts +1 -1
  87. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/PoolAccountant/PoolAccountantV1__factory.js +1 -1
  88. package/dist/esm/lib/typechain/factories/contracts/Lynx/OrderBook/OrderBookV1__factory.d.ts +1 -1
  89. package/dist/esm/lib/typechain/factories/contracts/Lynx/OrderBook/OrderBookV1__factory.js +1 -1
  90. package/dist/esm/lib/typechain/factories/contracts/Lynx/Registry/RegistryV1__factory.d.ts +1 -1
  91. package/dist/esm/lib/typechain/factories/contracts/Lynx/Registry/RegistryV1__factory.js +1 -1
  92. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradersPortal/TradersPortalV1__factory.d.ts +1 -1
  93. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradersPortal/TradersPortalV1__factory.js +1 -1
  94. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.d.ts +64 -1
  95. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.d.ts.map +1 -1
  96. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.js +82 -1
  97. package/dist/esm/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.d.ts +1 -1
  98. package/dist/esm/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.d.ts.map +1 -1
  99. package/dist/esm/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.js +1 -1
  100. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.d.ts +62 -1
  101. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.d.ts.map +1 -1
  102. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.js +81 -1
  103. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.d.ts +32 -1
  104. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.d.ts.map +1 -1
  105. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.js +42 -1
  106. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.d.ts +1 -1
  107. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.js +1 -1
  108. package/dist/types/index.d.ts +8 -3
  109. package/dist/types/index.d.ts.map +1 -1
  110. package/dist/types/lib/addresses/lensAddresses.d.ts +10 -8
  111. package/dist/types/lib/addresses/lensAddresses.d.ts.map +1 -1
  112. package/dist/types/lib/contractsIntegration/LexLensService/ILexLensService.d.ts +4 -1
  113. package/dist/types/lib/contractsIntegration/LexLensService/ILexLensService.d.ts.map +1 -1
  114. package/dist/types/lib/contractsIntegration/LexLensService/LexLensService.d.ts +2 -1
  115. package/dist/types/lib/contractsIntegration/LexLensService/LexLensService.d.ts.map +1 -1
  116. package/dist/types/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.d.ts +4 -1
  117. package/dist/types/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.d.ts.map +1 -1
  118. package/dist/types/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.d.ts +2 -1
  119. package/dist/types/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.d.ts.map +1 -1
  120. package/dist/types/lib/contractsIntegration/TradingFloorService/ITradingFloorService.d.ts +6 -1
  121. package/dist/types/lib/contractsIntegration/TradingFloorService/ITradingFloorService.d.ts.map +1 -1
  122. package/dist/types/lib/contractsIntegration/TradingFloorService/TradingFloorService.d.ts +2 -1
  123. package/dist/types/lib/contractsIntegration/TradingFloorService/TradingFloorService.d.ts.map +1 -1
  124. package/dist/types/lib/priceFeeds/pyth/hermes/hermesFeedConstants.d.ts +5 -0
  125. package/dist/types/lib/priceFeeds/pyth/hermes/hermesFeedConstants.d.ts.map +1 -0
  126. package/dist/types/lib/priceFeeds/pyth/hermes/hermesFeedFunctions.d.ts +14 -0
  127. package/dist/types/lib/priceFeeds/pyth/hermes/hermesFeedFunctions.d.ts.map +1 -0
  128. package/dist/types/lib/priceFeeds/pyth/hermes/hermesPriceData.d.ts +11 -0
  129. package/dist/types/lib/priceFeeds/pyth/hermes/hermesPriceData.d.ts.map +1 -0
  130. package/dist/types/lib/priceFeeds/pyth/lazer/lazerFeedConstants.d.ts +54 -0
  131. package/dist/types/lib/priceFeeds/pyth/lazer/lazerFeedConstants.d.ts.map +1 -0
  132. package/dist/types/lib/priceFeeds/pyth/lazer/lazerFeedFunctions.d.ts +16 -0
  133. package/dist/types/lib/priceFeeds/pyth/lazer/lazerFeedFunctions.d.ts.map +1 -0
  134. package/dist/types/lib/priceFeeds/pyth/lazer/lazerPayloadTypes.d.ts +64 -0
  135. package/dist/types/lib/priceFeeds/pyth/lazer/lazerPayloadTypes.d.ts.map +1 -0
  136. package/dist/types/lib/priceFeeds/pyth/lazer/lazerPriceData.d.ts +26 -0
  137. package/dist/types/lib/priceFeeds/pyth/lazer/lazerPriceData.d.ts.map +1 -0
  138. package/dist/types/lib/priceFeeds/pyth/lazer/lazerSigningFormats.d.ts +36 -0
  139. package/dist/types/lib/priceFeeds/pyth/lazer/lazerSigningFormats.d.ts.map +1 -0
  140. package/dist/types/lib/typechain/contracts/Lynx/TradingFloor/TradingFloorV1.d.ts +63 -2
  141. package/dist/types/lib/typechain/contracts/Lynx/TradingFloor/TradingFloorV1.d.ts.map +1 -1
  142. package/dist/types/lib/typechain/contracts/Peripheral/Lens/LexLens.d.ts +30 -1
  143. package/dist/types/lib/typechain/contracts/Peripheral/Lens/LexLens.d.ts.map +1 -1
  144. package/dist/types/lib/typechain/contracts/Peripheral/Lens/TradingFloorLens.d.ts +29 -1
  145. package/dist/types/lib/typechain/contracts/Peripheral/Lens/TradingFloorLens.d.ts.map +1 -1
  146. package/dist/types/lib/typechain/factories/contracts/Lynx/IntentsVerifier/TradeIntentsVerifierV1__factory.d.ts +1 -1
  147. package/dist/types/lib/typechain/factories/contracts/Lynx/Lex/LexPool/LexPoolV1__factory.d.ts +1 -1
  148. package/dist/types/lib/typechain/factories/contracts/Lynx/Lex/PoolAccountant/PoolAccountantV1__factory.d.ts +1 -1
  149. package/dist/types/lib/typechain/factories/contracts/Lynx/OrderBook/OrderBookV1__factory.d.ts +1 -1
  150. package/dist/types/lib/typechain/factories/contracts/Lynx/Registry/RegistryV1__factory.d.ts +1 -1
  151. package/dist/types/lib/typechain/factories/contracts/Lynx/TradersPortal/TradersPortalV1__factory.d.ts +1 -1
  152. package/dist/types/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.d.ts +64 -1
  153. package/dist/types/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.d.ts.map +1 -1
  154. package/dist/types/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.d.ts +1 -1
  155. package/dist/types/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.d.ts.map +1 -1
  156. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.d.ts +62 -1
  157. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.d.ts.map +1 -1
  158. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.d.ts +32 -1
  159. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.d.ts.map +1 -1
  160. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.d.ts +1 -1
  161. package/package.json +13 -13
  162. package/dist/cjs/lib/priceFeeds/pyth/pythFeedFunctions.js +0 -27
  163. package/dist/esm/lib/priceFeeds/pyth/pythFeedConstants.d.ts +0 -5
  164. package/dist/esm/lib/priceFeeds/pyth/pythFeedConstants.d.ts.map +0 -1
  165. package/dist/esm/lib/priceFeeds/pyth/pythFeedFunctions.d.ts +0 -17
  166. package/dist/esm/lib/priceFeeds/pyth/pythFeedFunctions.d.ts.map +0 -1
  167. package/dist/esm/lib/priceFeeds/pyth/pythFeedFunctions.js +0 -27
  168. package/dist/esm/lib/priceFeeds/pyth/pythPriceData.d.ts +0 -10
  169. package/dist/esm/lib/priceFeeds/pyth/pythPriceData.d.ts.map +0 -1
  170. package/dist/types/lib/priceFeeds/pyth/pythFeedConstants.d.ts +0 -5
  171. package/dist/types/lib/priceFeeds/pyth/pythFeedConstants.d.ts.map +0 -1
  172. package/dist/types/lib/priceFeeds/pyth/pythFeedFunctions.d.ts +0 -17
  173. package/dist/types/lib/priceFeeds/pyth/pythFeedFunctions.d.ts.map +0 -1
  174. package/dist/types/lib/priceFeeds/pyth/pythPriceData.d.ts +0 -10
  175. package/dist/types/lib/priceFeeds/pyth/pythPriceData.d.ts.map +0 -1
@@ -14,7 +14,7 @@ export declare class TradingFloorV1__factory extends ContractFactory {
14
14
  deploymentTransaction(): ContractTransactionResponse;
15
15
  }>;
16
16
  connect(runner: ContractRunner | null): TradingFloorV1__factory;
17
- static readonly bytecode = "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055615e0480620000336000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c806380193b26116101de578063ad1f2b561161010f578063ece938cf116100ad578063f555f6971161007c578063f555f69714610aff578063f5f5ba7214610b1f578063f851a44014610b49578063f9b9484e14610b5c57600080fd5b8063ece938cf14610a6d578063ef6ecc5514610a76578063f2eb245e14610ad6578063f51f3fd314610af657600080fd5b8063ddf474f1116100e9578063ddf474f1146109df578063e640f33b14610a27578063ec18aded14610a3a578063ec7f8a3a14610a4d57600080fd5b8063ad1f2b56146109b9578063b71f3cfe146109c1578063c07f9921146109cc57600080fd5b806394a1e6e51161017c578063a2a25ea611610156578063a2a25ea614610959578063a40d72681461096c578063aaf5eb681461097f578063acfd6b921461098e57600080fd5b806394a1e6e5146108b157806395be5050146108b95780639ff69ffa1461094657600080fd5b80638aa10435116101b85780638aa10435146107d55780638f7a8fb5146107f557806390f24cac1461087057806393a7f6a71461088357600080fd5b806380193b26146107af57806382571409146107b957806386dc4975146107c257600080fd5b8063396f7b23116102c3578063614d08f811610261578063725b7d5211610230578063725b7d521461072057806374d8b78e1461074057806376d901be146107695780637b1039991461079c57600080fd5b8063614d08f81461063f57806366307a4f1461066c57806368f296a5146106e75780636e01af8d1461070d57600080fd5b80634ebe5c331161029d5780634ebe5c33146105f357806350b3ef96146106065780635b214e12146106195780635c60da1b1461062c57600080fd5b8063396f7b23146105ad5780633ad6f124146105c05780633b17a497146105d357600080fd5b80631ea9af6b1161033057806324b22a1f1161030a57806324b22a1f1461052c578063267822471461053f57806330d073d01461055257806338b903331461057d57600080fd5b80631ea9af6b146104e95780632457bc3a146104fc5780632485f3f11461050457600080fd5b8063135e563d1161036c578063135e563d1461048557806318fa4714146104985780631961aba0146104ad5780631d504dc6146104d657600080fd5b8063010570851461039357806303b90a87146103b9578063042e37c5146103fa575b600080fd5b6103a66103a13660046150a3565b610bbe565b6040519081526020015b60405180910390f35b6103e26103c73660046151e7565b600b602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103b0565b610449610408366004615204565b600c60205260009081526040902080546001909101546001600160a01b0380831692600160a01b810461ffff1692600160b01b90910463ffffffff16911684565b604080516001600160a01b03958616815261ffff909416602085015263ffffffff909216918301919091529190911660608201526080016103b0565b6103e2610493366004615204565b611119565b6104ab6104a636600461522a565b611143565b005b6103a66104bb3660046151e7565b6001600160a01b031660009081526016602052604090205490565b6104ab6104e43660046151e7565b611212565b6104ab6104f7366004615275565b611360565b6013546103a6565b6105176105123660046151e7565b6113f7565b60405163ffffffff90911681526020016103b0565b6104ab61053a3660046152aa565b611491565b6001546103e2906001600160a01b031681565b6103a66105603660046152d6565b600960209081526000928352604080842090915290825290205481565b6105a0604051806040016040528060048152602001631898189b60e11b81525081565b6040516103b09190615333565b6003546103e2906001600160a01b031681565b6103a66105ce366004615366565b611730565b6105e66105e13660046151e7565b611761565b6040516103b09190615384565b6104ab6106013660046153c8565b6117cd565b6104ab610614366004615404565b611891565b6104ab610627366004615446565b611a45565b6002546103e2906001600160a01b031681565b6105a06040518060400160405280600e81526020016d54726164696e67466c6f6f72563160901b81525081565b6106b461067a366004615204565b600e602052600090815260409020546001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b03958616815293851660208501529184169183019190915290911660608201526080016103b0565b6105176106f53660046151e7565b60156020526000908152604090205463ffffffff1681565b6104ab61071b366004615481565b611ae2565b61073361072e366004615366565b611e71565b6040516103b091906154a8565b6103e261074e3660046151e7565b600a602052600090815260409020546001600160a01b031681565b61078c610777366004615204565b60086020526000908152604090205460ff1681565b60405190151581526020016103b0565b6004546103e2906001600160a01b031681565b6103a6620186a081565b6103a660075481565b6104ab6107d03660046154e9565b611ef1565b6040805180820190915260048152631898189b60e11b60208201526105a0565b61085d610803366004615204565b600d602052600090815260409020805460019091015460ff808216916001600160401b03610100820481169263ffffffff600160481b8404811693600160681b810490921692600160701b83041691600160b01b90041687565b6040516103b09796959493929190615538565b6103e261087e36600461558d565b611f84565b61078c6108913660046151e7565b6001600160a01b039081166000908152600a602052604090205416151590565b6103a6611fc9565b6109336108c7366004615204565b6000908152600d602081815260408084206001810154600c8452919094205492909152915460ff8084169461010085046001600160401b031694600160a01b850461ffff1694600160681b820490931693600160b01b90910463ffffffff16926001600160a01b031691565b6040516103b097969594939291906155c2565b6104ab61095436600461561c565b611fda565b6104ab61096736600461567a565b612214565b6103a661097a3660046156aa565b612336565b6103a6670de0b6b3a764000081565b6103a661099c366004615366565b601760209081526000928352604080842090915290825290205481565b6103a6606481565b6103a6633b9aca0081565b6104ab6109da3660046156e9565b6123a5565b6106b46109ed366004615204565b600f602052600090815260409020546001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b6104ab610a3536600461572d565b612a62565b6104ab610a48366004615769565b612bf3565b6103a6610a5b3660046151e7565b60146020526000908152604090205481565b6103a660055481565b610ab9610a843660046157bd565b601260209081526000938452604080852082529284528284209052825290205463ffffffff8082169164010000000090041682565b6040805163ffffffff9384168152929091166020830152016103b0565b6103a6610ae4366004615204565b60106020526000908152604090205481565b6103a660065481565b610b12610b0d366004615204565b613047565b6040516103b09190615834565b60408051808201909152600e81526d54726164696e67466c6f6f72563160901b60208201526105a0565b6000546103e2906001600160a01b031681565b610baf610b6a366004615204565b6000908152600d60209081526040808320600190810154600c90935292209091015460ff8216926101009092046001600160401b0316916001600160a01b0390911690565b6040516103b093929190615842565b6004805460405163731aa5f960e01b815233928101929092526000916001600160a01b039091169063731aa5f990602401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c309190615878565b610c555760405162461bcd60e51b8152600401610c4c90615895565b60405180910390fd5b610c7d84604001516001600160a01b039081166000908152600a602052604090205416151590565b610cc95760405162461bcd60e51b815260206004820152601e60248201527f4e4f4e5f535550504f525445445f534554544c454d454e545f415353455400006044820152606401610c4c565b60208085015161ffff1660009081526008909152604090205460ff1615610d025760405162461bcd60e51b8152600401610c4c906158bd565b6001856002811115610d1657610d1661550e565b1480610d3357506002856002811115610d3157610d3161550e565b145b610d785760405162461bcd60e51b8152602060048201526016602482015275554e535550504f525445445f4f524445525f5459504560501b6044820152606401610c4c565b610dbd836000015184606001516001600160401b031685608001516001600160401b03168660a001516001600160401b03168760c001516001600160401b031661316f565b60055484516001600160a01b031660009081526016602052604090205410610e1f5760405162461bcd60e51b815260206004820152601560248201527426a0ac2faa2920a222a9afa822a92faa2920a222a960591b6044820152606401610c4c565b6000610e38856040015186600001518760200151613251565b8092508193505050610e578560400151866000015186602001516133c2565b8451610e6290613507565b6000828152600d60205260409020805415610ea95760405162461bcd60e51b8152602060048201526007602482015266125117d554d15160ca1b6044820152606401610c4c565b600180820180548751604089015163ffffffff908116600160481b026cffffffff00000000000000000019921515600160681b0260ff60681b19928b16600160b01b02929092166cffffffff0000000000000000ff60681b1990941693909317171617905560208601518255600090886002811115610f2a57610f2a61550e565b14610f36576002610f39565b60015b9050808260010160006101000a81548160ff02191690836005811115610f6157610f6161550e565b0217905550428260010160016101000a8154816001600160401b0302191690836001600160401b031602179055506000600e600086815260200190815260200160002090508660a001518160000160106101000a8154816001600160401b0302191690836001600160401b031602179055508660c001518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055506000600f6000878152602001908152602001600020905087606001518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555087608001518160000160086101000a8154816001600160401b0302191690836001600160401b031602179055508760e001518160000160106101000a8154816001600160401b0302191690836001600160401b031602179055508761010001518160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550857f835de04f5a930b169d6564c8f1c5f91f89abd9ea026b7488c94452abb900cc7484878c8c8c6040516111049594939291906158e2565b60405180910390a25050505050949350505050565b6013818154811061112957600080fd5b6000918252602090912001546001600160a01b0316905081565b6004805460405163a8e36e5b60e01b81526001600160a01b038681169382019390935291169063a8e36e5b90602401602060405180830381865afa15801561118f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b391906159c6565b6001600160a01b0316336001600160a01b0316146112025760405162461bcd60e51b815260206004820152600c60248201526b10a332b2b9a6b0b730b3b2b960a11b6044820152606401610c4c565b61120d838383613583565b505050565b806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015611250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127491906159c6565b6001600160a01b0316336001600160a01b0316146112c35760405162461bcd60e51b815260206004820152600c60248201526b10b83937bc3c9730b236b4b760a11b6044820152606401610c4c565b806001600160a01b031663c1e803346040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132791906159e3565b1561135d5760405162461bcd60e51b8152600401610c4c9060208082526004908201526319985a5b60e21b604082015260600190565b50565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa1580156113a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd9190615878565b6113e95760405162461bcd60e51b8152600401610c4c906159fc565b61120d8360028484426136a6565b6001600160a01b03811660009081526015602052604081205463ffffffff9081169081106114675760405162461bcd60e51b815260206004820152601760248201527f504f534954494f4e5f494e4445585f4f564552464c4f570000000000000000006044820152606401610c4c565b600b8163ffffffff16101561147f5750600b92915050565b61148a816001615a35565b9392505050565b6000546001600160a01b031633146114d85760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa0a226a4a760b11b6044820152606401610c4c565b600081116115195760405162461bcd60e51b815260206004820152600e60248201526d43414e4e4f545f42455f5a45524f60901b6044820152606401610c4c565b6060600183600381111561152f5761152f61550e565b03611568575060408051808201909152601281527136b0bc2a3930b232b9a832b92a3930b232b960711b602082015260058290556116e3565b600283600381111561157c5761157c61550e565b0361160b576064611591620186a06032615a59565b61159b9190615a86565b8210156115e45760405162461bcd60e51b81526020600482015260176024820152762a2920a222afa820a920a6afa922a9aa2924a1aa24a7a760491b6044820152606401610c4c565b506040805180820190915260068082526536b0bc29b62360d11b60208301528290556116e3565b600383600381111561161f5761161f61550e565b036116ad57611632620186a06002615a59565b82101561167b5760405162461bcd60e51b81526020600482015260176024820152762a2920a222afa820a920a6afa922a9aa2924a1aa24a7a760491b6044820152606401610c4c565b5060408051808201909152601081526f36b0bc29b0b734ba3ca83937b334ba2360811b602082015260078290556116e3565b60405162461bcd60e51b815260206004820152600b60248201526a155394d5541413d495115160aa1b6044820152606401610c4c565b806040516116f19190615a9a565b604051908190038120838252907f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9060200160405180910390a2505050565b6016602052816000526040600020818154811061174c57600080fd5b90600052602060002001600091509150505481565b6001600160a01b0381166000908152601660209081526040918290208054835181840281018401909452808452606093928301828280156117c157602002820191906000526020600020905b8154815260200190600101908083116117ad575b50505050509050919050565b6004805460405163419a519360e01b815233928101929092526001600160a01b03169063419a519390602401602060405180830381865afa158015611816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183a9190615878565b6118865760405162461bcd60e51b815260206004820152601a60248201527f212854726164657273506f7274616c7c7c5472696767657273290000000000006044820152606401610c4c565b61120d3384846139e1565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa1580156118da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fe9190615878565b61191a5760405162461bcd60e51b8152600401610c4c906159fc565b6000848152600f6020908152604091829020825160808101845290546001600160401b038082168352600160401b82048116938301849052600160801b8204811694830194909452600160c01b9004909216606083015261198d5760405162461bcd60e51b8152600401610c4c90615ab6565b80516001600160401b03808516911611806119bd5750826001600160401b031681602001516001600160401b0316105b156119d3576119ce308660016139e1565b611a3e565b60008060006119ee88876001600160401b0316600488613af2565b6040805182815260208101859052908101839052929550909350915088907f9912c2c8197504aea5a1b52b98eeae3f4aecabe190feebc292455c355d4297cb906060015b60405180910390a25050505b5050505050565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa158015611a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab29190615878565b611ace5760405162461bcd60e51b8152600401610c4c906159fc565b611adc8460018585856136a6565b50505050565b6004805460405163419a519360e01b815233928101929092526001600160a01b03169063419a519390602401602060405180830381865afa158015611b2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4f9190615878565b611b9b5760405162461bcd60e51b815260206004820152601a60248201527f212854726164657273506f7274616c7c7c5472696767657273290000000000006044820152606401610c4c565b611ba96064620186a0615a86565b811115611bef5760405162461bcd60e51b81526020600482015260146024820152734645455f4652414354494f4e5f544f4f5f42494760601b6044820152606401610c4c565b6000838152600d60209081526040808320815160e08101909252805482526001810154919290919083019060ff166005811115611c2e57611c2e61550e565b6005811115611c3f57611c3f61550e565b8152600191909101546001600160401b036101008204811660208085019190915263ffffffff600160481b8404811660408087019190915260ff600160681b86041615156060870152600160701b85049093166080860152600160b01b90930490921660a0909301929092526000878152600d9091522054909150611cd65760405162461bcd60e51b8152600401610c4c90615ab6565b6000848152600c6020908152604091829020825160808101845281546001600160a01b038082168352600160a01b820461ffff1694830194909452600160b01b900463ffffffff16938101939093526001908101549091166060830152846002811115611d4557611d4561550e565b03611da757600182602001516005811115611d6257611d6261550e565b14611da25760405162461bcd60e51b815260206004820152601060248201526f2727aa2fa6a0a925a2aa2fa7a92222a960811b6044820152606401610c4c565b611e52565b6002846002811115611dbb57611dbb61550e565b03611e1757600282602001516005811115611dd857611dd861550e565b14611da25760405162461bcd60e51b815260206004820152600f60248201526e2727aa2fa624a6a4aa2fa7a92222a960891b6044820152606401610c4c565b60405162461bcd60e51b815260206004820152601060248201526f57524f4e475f4f524445525f5459504560801b6044820152606401610c4c565b611a3e8582600001518360600151856000015186606001518833613cf8565b6001600160a01b0382166000908152601160209081526040808320848452825291829020805483518184028101840190945280845260609392830182828015611ee357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ec5575b505050505090505b92915050565b6000546001600160a01b03163314611f385760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa0a226a4a760b11b6044820152606401610c4c565b600082815260086020526040808220805460ff19168415159081179091559051909184917f996384f9c771a575699aadc5e543fb849613b350a1b29584a1ecca98d2cfc1709190a35050565b60116020528260005260406000206020528160005260406000208181548110611fac57600080fd5b6000918252602090912001546001600160a01b0316925083915050565b611fd76064620186a0615a86565b81565b6004805460405163731aa5f960e01b815233928101929092526001600160a01b03169063731aa5f990602401602060405180830381865afa158015612023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120479190615878565b6120635760405162461bcd60e51b8152600401610c4c90615895565b6000858152600d602052604090206002600182015460ff16600581111561208c5761208c61550e565b146120a95760405162461bcd60e51b8152600401610c4c90615ae0565b6000868152600c6020908152604080832054600160a01b900461ffff168352600890915290205460ff16156120f05760405162461bcd60e51b8152600401610c4c906158bd565b61213281600101600d9054906101000a900460ff16866001600160401b0316866001600160401b0316866001600160401b0316866001600160401b031661316f565b60018101805468ffffffffffffffff001916610100426001600160401b0390811691909102919091179091556000878152600e6020908152604080832080546001600160801b0316600160801b8987169081026001600160c01b031691909117600160c01b898816908102919091178355600f85529483902080548c88166001600160801b03199091168117600160401b988d169889021782558451928352948201959095529182019290925260608101939093529188907f098a3c0f7acdf2c147440d705e162d395db886273731a238b250793cde346d8590608001611a32565b6004546001600160a01b0316331461225a5760405162461bcd60e51b815260206004820152600960248201526821526567697374727960b81b6044820152606401610c4c565b6001600160a01b038381166000908152600a602052604090205416156122c25760405162461bcd60e51b815260206004820152601760248201527f41535345545f414c52454144595f535550504f525445440000000000000000006044820152606401610c4c565b6001600160a01b038084166000818152600a6020908152604080832080548689166001600160a01b03199182168117909255600b9093528184208054968816969093168617909255519092917fe34fb4592f12d191480ae66f1051ba82ee53c518b07f632579da8d40a74c77c891a4505050565b60408051606095861b6bffffffffffffffffffffffff199081166020808401919091529590961b909516603486015260f09290921b6001600160f01b031916604885015260e01b6001600160e01b031916604a8401528051602e818503018152604e9093019052815191012090565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa1580156123ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124129190615878565b61242e5760405162461bcd60e51b8152600401610c4c906159fc565b6000848152600d60209081526040808320600e8352818420600c845293829020825160808101845281546001600160a01b038082168352600160a01b820461ffff1696830196909652600160b01b900463ffffffff169381019390935260010154909216606082015281549192916124b85760405162461bcd60e51b8152600401610c4c90615ab6565b6003600184015460ff1660058111156124d3576124d361550e565b146124f05760405162461bcd60e51b8152600401610c4c90615ae0565b80516001600160a01b039081166000908152600b6020526040812054909116908060018960028111156125255761252561550e565b036127e05760006125c6846001600160a01b0316631cb92ed36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259191906159e3565b6001890154600160701b81046001600160401b031690600160481b810463ffffffff16908d90600160681b900460ff16613dca565b9050886001600160401b0316816001600160401b03161461261b5760405162461bcd60e51b815260206004820152600f60248201526e4241445f4649454c445f56414c554560881b6044820152606401610c4c565b85546001600160401b03600160801b9091048116908216036126695760405162461bcd60e51b8152602060048201526007602482015266053414d455f54560cc1b6044820152606401610c4c565b8092508560000160189054906101000a90046001600160401b03169150428660000160006101000a8154816001600160401b0302191690836001600160401b03160217905550836001600160a01b0316633cdc20f88c876060015188602001518b600001548c60010160099054906101000a900463ffffffff168d600101600d9054906101000a900460ff168e600101600e9054906101000a90046001600160401b03168e60000160109054906101000a90046001600160401b03168c6040518a63ffffffff1660e01b81526004016127a8999897969594939291909889526001600160a01b0397909716602089015261ffff959095166040880152606087019390935263ffffffff919091166080860152151560a08501526001600160401b0390811660c085015290811660e0840152166101008201526101200190565b600060405180830381600087803b1580156127c257600080fd5b505af11580156127d6573d6000803e3d6000fd5b5050505050612971565b60028960028111156127f4576127f461550e565b036116ad576000612895846001600160a01b0316631cb92ed36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561283c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286091906159e3565b6001890154600160701b81046001600160401b031690600160481b810463ffffffff16908d90600160681b900460ff16613e9c565b9050886001600160401b0316816001600160401b0316146128ea5760405162461bcd60e51b815260206004820152600f60248201526e4241445f4649454c445f56414c554560881b6044820152606401610c4c565b85546001600160401b03600160c01b9091048116908216036129385760405162461bcd60e51b815260206004820152600760248201526614d0535157d4d360ca1b6044820152606401610c4c565b8554426001600160401b03908116600160401b026fffffffffffffffff0000000000000000198316178855600160801b90910416925090505b600186015461299d90600160681b900460ff166001600160401b0389811690819086811690861661316f565b84546001600160401b03838116600160801b0267ffffffffffffffff60801b19918416600160c01b02919091166001600160801b03909216919091171785558860028111156129ee576129ee61550e565b846020015161ffff168b7f90bbb7e2b715065bd66ba75a34fca9b65694d5e75327dd0873a5e3e68837766789600101600d9054906101000a900460ff168c604051612a4e92919091151582526001600160401b0316602082015260400190565b60405180910390a450505050505050505050565b6004805460405163731aa5f960e01b815233928101929092526001600160a01b03169063731aa5f990602401602060405180830381865afa158015612aab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612acf9190615878565b612aeb5760405162461bcd60e51b8152600401610c4c90615895565b6000838152600d602052604090208054612b175760405162461bcd60e51b8152600401610c4c90615ab6565b6003600182015460ff166005811115612b3257612b3261550e565b14612b4f5760405162461bcd60e51b8152600401610c4c90615ae0565b6001810180546001600160401b034281166101000268ffffffffffffffffff19909216919091176004179091556000858152600f60209081526040918290208054868516600160401b81026001600160801b03199092169589169586179190911782558351948552918401919091529186917fb7bb5d6820a30953d2858e9c448319c4cebbc70c347961e25f1adfff46566689910160405180910390a25050505050565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa158015612c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c609190615878565b612c7c5760405162461bcd60e51b8152600401610c4c906159fc565b6000858152600d60209081526040808320815160e08101909252805482526001810154919290919083019060ff166005811115612cbb57612cbb61550e565b6005811115612ccc57612ccc61550e565b8152600191909101546001600160401b0361010082048116602084015263ffffffff600160481b83048116604085015260ff600160681b84041615156060850152600160701b83049091166080840152600160b01b9091041660a0909101528051909150612d4c5760405162461bcd60e51b8152600401610c4c90615ab6565b6000868152600e60209081526040808320815160808101835290546001600160401b038082168352600160401b8204811694830194909452600160801b8104841692820192909252600160c01b90910490911660608201529080806002896003811115612dbb57612dbb61550e565b03612e18578460800151612de85783606001516001600160401b0316876001600160401b03161015612e03565b83606001516001600160401b0316876001600160401b031611155b925050506001600160401b0385166002612efd565b6001896003811115612e2c57612e2c61550e565b03612e8f578460800151612e595783604001516001600160401b0316876001600160401b03161115612e74565b83604001516001600160401b0316876001600160401b031610155b925083604001516001600160401b0316915060019050612efd565b6003896003811115612ea357612ea361550e565b03612ebf575060019150506001600160401b0385166003612efd565b60405162461bcd60e51b81526020600482015260136024820152722ba927a723afa624a6a4aa2faa2924a3a3a2a960691b6044820152606401610c4c565b82612f3a5760405162461bcd60e51b815260206004820152600d60248201526c2320a629a2afaa2924a3a3a2a960991b6044820152606401610c4c565b6000806000612f4b8d86868c613af2565b919450925090506003846004811115612f6657612f6661550e565b03612fd3578760800151612f8657808a6001600160401b03161015612f94565b808a6001600160401b031611155b955085612fd35760405162461bcd60e51b815260206004820152600d60248201526c2320a629a2afaa2924a3a3a2a960991b6044820152606401610c4c565b8b6003811115612fe557612fe561550e565b604080516001600160401b038d16815260208101849052908101859052606081018490528e907fe67823c5c7b61d690bab4b46031d192b68f898b47bdf7daffbddff8e24aaf9bd9060800160405180910390a350505050505050505050505050565b6040805160a081018252600080825260208083018290528284018290526060830182905260808301829052848252600d8152838220845160e0810190955280548552600181015493949293909183019060ff1660058111156130ab576130ab61550e565b60058111156130bc576130bc61550e565b8152600191909101546001600160401b036101008204811660208085019190915263ffffffff600160481b8404811660408087019190915260ff600160681b8604161515606080880191909152600160701b86048516608080890191909152600160b01b909604831660a09788015287518a52878101519092168984015294860151831690880152938201511515868401526000968752600e909352942054600160801b90041692820192909252919050565b828411156131b15760405162461bcd60e51b815260206004820152600f60248201526e4d494e5f4d41585f5245564552534560881b6044820152606401610c4c565b8115806131ca5750846131c6578382106131ca565b8282115b6132015760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610c4c565b80158061321a5750846132165782811161321a565b8381105b611a3e5760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610c4c565b60008061325d846113f7565b905061326b85858584612336565b6000818152600c60205260408120805492945091600160b01b900463ffffffff1690036133b9578054600180830180546001600160a01b0319166001600160a01b038981169182179092559089166001600160b01b031990931692909217600160a01b61ffff8816021763ffffffff60b01b1916600160b01b63ffffffff86169081029190911784556000838152601560209081526040808320805463ffffffff19169094179093556016815282822080549485018155808352818320909401889055925493815260178352818120878252909252902055827f487ea6416487448c3ce943d750c8f67a275e4d8f26ac4093803bf63354b7006f826040516133b0919081546001600160a01b03808216835260a082901c61ffff16602084015260b09190911c63ffffffff166040830152600190920154909116606082015260800190565b60405180910390a25b50935093915050565b801561120d576040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa15801561340f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343391906159e3565b905061344a6001600160a01b038516843085613f59565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015613491573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b591906159e3565b9050826134c28383615b05565b14611a3e5760405162461bcd60e51b815260206004820152601560248201527411125117d393d517d49150d152559157d1561050d5605a1b6044820152606401610c4c565b6001600160a01b03811660009081526016602052604090205460010361135d57601380546001810182557f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b0319166001600160a01b039390931692831790555460009182526014602052604090912055565b6001600160a01b0383166000908152600960205260408120818460038111156135ae576135ae61550e565b60038111156135bf576135bf61550e565b8152602001908152602001600020549050600060096000866001600160a01b03166001600160a01b03168152602001908152602001600020600085600381111561360b5761360b61550e565b600381111561361c5761361c61550e565b81526020810191909152604001600020556136416001600160a01b0385168383613fc0565b816001600160a01b031683600381111561365d5761365d61550e565b856001600160a01b03167f0e80b333c403be7cb491b3ba7f29fe30014c594adbcbec04272291b2f72f6e6a8460405161369891815260200190565b60405180910390a450505050565b6000858152600f60209081526040808320815160808101835290546001600160401b038082168352600160401b8204811683860152600160801b8204811683850152600160c01b909104166060820152888452600d8352818420825160e0810190935280548352600181015491949390919083019060ff16600581111561372f5761372f61550e565b60058111156137405761374061550e565b8152600191909101546001600160401b0361010082048116602084015263ffffffff600160481b83048116604085015260ff600160681b84041615156060850152600160701b83049091166080840152600160b01b9091041660a09091015280519091506137c05760405162461bcd60e51b8152600401610c4c90615ab6565b6000878152600c60209081526040808320815160808101835281546001600160a01b038082168352600160a01b820461ffff16838701819052600160b01b90920463ffffffff1683860152600190930154909216606082015290845260089092529091205460ff16156138455760405162461bcd60e51b8152600401610c4c906158bd565b8660058111156138575761385761550e565b8260200151600581111561386d5761386d61550e565b1461388a5760405162461bcd60e51b8152600401610c4c90615ae0565b600187600581111561389e5761389e61550e565b036139425782516001600160401b03808816911611806138d35750856001600160401b031683602001516001600160401b0316105b1561393d576040516001600160401b038716815288907f82c058420d58fdfcaa301ef645c860145096603267b7b7ac02831312ac2ab4479060200160405180910390a26139358882600001518360600151856000015186606001518a30613cf8565b505050611a3e565b6139c8565b60028760058111156139565761395661550e565b036116ad5782516001600160401b0380881691161180159061398e5750856001600160401b031683602001516001600160401b031610155b61393d5760405162461bcd60e51b815260206004820152600b60248201526a50524943455f52414e474560a81b6044820152606401610c4c565b6139d7888284868a8a8a613ff1565b5050505050505050565b6000828152600d6020526040902054613a0c5760405162461bcd60e51b8152600401610c4c90615ab6565b6000828152600f60205260408120556001816001811115613a2f57613a2f61550e565b03611e175760046000838152600d602052604090206001015460ff166005811115613a5c57613a5c61550e565b14613a795760405162461bcd60e51b8152600401610c4c90615ae0565b6000828152600d6020908152604080832060010180546001600160401b0342166101000268ffffffffffffffffff19909116176003179055519182526001600160a01b0385169184917f2cb817145129b5c52a6dc17e0605285c54d9c258fbf0a21e78bfff4e00813333910160405180910390a3505050565b6000848152600c60209081526040808320815160808101835281546001600160a01b038082168352600160a01b820461ffff1695830195909552600160b01b900463ffffffff16928101929092526001015490911660608201528190819081613b5a89613047565b8051909150613b7b5760405162461bcd60e51b8152600401610c4c90615ab6565b600080600080613b8e8d87878f8f6143c1565b93509350935093508460000151831115613c10578451600090620186a0613bb58287615b05565b613bbf9190615a59565b613bc99190615a86565b9050600754811115613c0e5760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d41493d1925560921b6044820152606401610c4c565b505b8197508298508096508460000151841115613c6d5760405162461bcd60e51b815260206004820152601e60248201527f434c4f53455f4645455f4c41524745525f5448414e5f504f534954494f4e00006044820152606401610c4c565b613c7e8d8760000151600287614473565b613c8b8660600151614527565b613c9986606001518e614797565b60008d8152600d6020908152604080832083815560010180546001600160d01b0319169055600e82528083208390556010909152812055606086015186518651613ce89291908c90888f6148c2565b5050505050509450945094915050565b6000878152600d6020908152604080832083815560010180546001600160d01b0319169055600f9091528120819055613d40613d3a8663ffffffff8716614a6a565b84614a82565b9050613d4f8888600384614473565b613d5886614527565b613d628689614797565b6000613d6e8287615b05565b9050613d7b888883614a92565b826001600160a01b0316897f0732bc6c415e7a220efee5f866e1e91a1335745b97373898ffecfddbc708a3e784604051613db791815260200190565b60405180910390a3505050505050505050565b60006001600160401b0383161580613df457508560070b613dee8787868689614aac565b60070b12155b15613e90576000620186a0856001600160401b03166064896001600160401b0316896001600160401b0316613e299190615a59565b613e339190615a59565b613e3d9190615a86565b613e479190615a86565b905082613e7e57856001600160401b0316816001600160401b03161115613e6f576000613e88565b613e798187615b18565b613e88565b613e888187615b38565b915050613e93565b50815b95945050505050565b60006001600160401b0383161580613ed15750600654613ebe90600019615b58565b613ecb8787868689614aac565b60070b13155b15613e90576000620186a0856001600160401b03166064600654896001600160401b0316613eff9190615a59565b613f099190615a59565b613f139190615a86565b613f1d9190615a86565b905082613f2e57613e798187615b38565b856001600160401b0316816001600160401b03161115613f4f576000613e88565b613e888187615b18565b6040516001600160a01b038481166024830152838116604483015260648201839052611adc9186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614b38565b6040516001600160a01b0383811660248301526044820183905261120d91859182169063a9059cbb90606401613f8e565b85516001600160a01b039081166000908152600b602052604081205460608801516080890151919093169261402c918b918591898b89614ba9565b9050816001600160a01b03166352713f678a8a606001518b602001518b600001518c606001518d6080015188604001518d6040518963ffffffff1660e01b81526004016140d29897969594939291909788526001600160a01b0396909616602088015261ffff949094166040870152606086019290925263ffffffff166080850152151560a08401526001600160401b0390811660c08401521660e08201526101000190565b60408051808303816000875af192505050801561410c575060408051601f3d908101601f1916820190925261410991810190615b88565b60015b61421057614118615bac565b806308c379a003614151575061412c615bc7565b806141375750614153565b8060405162461bcd60e51b8152600401610c4c9190615333565b505b3d80801561417d576040519150601f19603f3d011682016040523d82523d6000602084013e614182565b606091505b50632eb752bf60e21b61419482615c50565b6001600160e01b0319160361038e57602481015160448201516040518c907ff2c847d05971bf83dd347e0732c1ef893111318fb2540f5fe6f9783cb8d6ae5b906141e19085908590615c87565b60405180910390a26142088c8c600001518d606001518d600001518e606001518c30613cf8565b5050506143b6565b60008b8152600d6020908152604080832060018101805467ffffffffffffffff60701b1916600160701b6001600160401b038e16021790558c516010909352922055895161425f908490615b05565b81556001600160401b0342811690871611801590614292575060018101546001600160401b036101009091048116908716115b6142ce5760405162461bcd60e51b815260206004820152600d60248201526c04241445f54494d455354414d5609c1b6044820152606401610c4c565b600181810180546001600160401b0389166101000268ffffffffffffffffff199091161760031790558b5161430f918e919061430a8688615b05565b614473565b8a516001600160a01b038082166000908152600a602052604090205461433792911684614a92565b60008c8152600f60209081526040808320929092558582015160608088015184516001600160401b038e8116825293841694810194909452919091168284015281018590526080810184905290518d917fdd0164525ce1bb6897fbd7000a7d93633016a05f498d94903ca1fcc7911cdf81919081900360a00190a25050505b505050505050505050565b83516001600160a01b039081166000908152600b60209081526040808320546060890151928901519151630f1a62d160e31b8152939485948594859493909216926378d316889261441d928e92908d908d908d90600401615ca5565b6080604051808303816000875af115801561443c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144609190615cfc565b929c919b50995090975095505050505050565b8015611adc576001600160a01b038316600090815260096020526040812082918460038111156144a5576144a561550e565b60038111156144b6576144b661550e565b815260200190815260200160002060008282546144d39190615d32565b9091555082905060038111156144eb576144eb61550e565b836001600160a01b0316857f52aab89a61b38ba21feecda2012e9c20aec817e5d709d0633c3fd693bb949cbb8460405161369891815260200190565b6001600160a01b03811660009081526016602052604090205460010361135d576001600160a01b038116600090815260146020526040812054908190036145b15760408051600080825260208201526001600160a01b038416917fd206397c5bb871d309f7602ac869a71536b264e19e25714421d6456b6b5008d991015b60405180910390a25050565b60136145be600183615b05565b815481106145ce576145ce615d45565b6000918252602090912001546001600160a01b03838116911614614679576001600160a01b0382166000818152601460205260408120557fd206397c5bb871d309f7602ac869a71536b264e19e25714421d6456b6b5008d9826013614634600183615b05565b8154811061464457614644615d45565b6000918252602090912001546040516145a592916001600160a01b0316909182526001600160a01b0316602082015260400190565b60135460011015614747576013805461469490600190615b05565b815481106146a4576146a4615d45565b6000918252602090912001546001600160a01b031660136146c6600184615b05565b815481106146d6576146d6615d45565b6000918252602082200180546001600160a01b0319166001600160a01b03939093169290921790915581906014906013614711600185615b05565b8154811061472157614721615d45565b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6001600160a01b038216600090815260146020526040812055601380548061477157614771615d5b565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b6001600160a01b0382166000908152601760209081526040808320848452909152902054801561120d576001600160a01b0383166000908152601660205260408120906147e5600184615b05565b82549091506147f690600190615b05565b811015614872578154600090839061481090600190615b05565b8154811061482057614820615d45565b906000526020600020015490508083838154811061484057614840615d45565b60009182526020808320909101929092556001600160a01b038816815260178252604080822093825292909152208390555b8180548061488257614882615d5b565b6000828152602080822083016000199081018390559092019092556001600160a01b03871682526017815260408083208784529091528120555050505050565b6001600160a01b038086166000908152600a60205260408120549091169084861061496b576148f18486615b05565b905060006148ff8288615b05565b6040516321d4911360e01b81526001600160a01b038b8116600483015260248201839052919250908416906321d4911390604401600060405180830381600087803b15801561494d57600080fd5b505af1158015614961573d6000803e3d6000fd5b5050505050614a5f565b508460006149798287615b05565b9050848111156149e457600061498f8683615b05565b90506000620186a06149a763ffffffff881684615a59565b6149b19190615a86565b905080156149d2576149c38183615b05565b91506149cf8185615d32565b93505b6149dd8a8684614a92565b5050614a5d565b6001600160a01b0383166321d49113306149fe8489615b05565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015614a4457600080fd5b505af1158015614a58573d6000803e3d6000fd5b505050505b505b6139d7878983614a92565b60006064614a788385615a59565b61148a9190615a86565b6000620186a0614a788385615a59565b801561120d5761120d6001600160a01b0384168383613fc0565b6000858184614ac457614abf8688615d71565b614ace565b614ace8787615d71565b905060008460070b620186a08360070b614ae89190615b58565b614af29190615b58565b90506000600789900b614b06606484615da0565b614b109190615da0565b90508094508360070b8560070b13614b285784614b2a565b835b9a9950505050505050505050565b600080602060008451602086016000885af180614b5b576040513d6000823e3d81fd5b50506000513d91508115614b73578060011415614b80565b6001600160a01b0384163b155b15611adc57604051635274afe760e01b81526001600160a01b0385166004820152602401610c4c565b6040805160808101825260008082526020820181905291810182905260608101919091526000876001600160a01b0316631cb92ed36040518163ffffffff1660e01b8152600401602060405180830381865afa158015614c0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614c3191906159e3565b60008a8152600e6020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b81048316938201849052600160c01b9004909116606082015293509091501580614ca4575060408401516001600160401b0316155b614cf05760405162461bcd60e51b815260206004820152601760248201527f4d554c5449504c455f54505f444546494e4954494f4e530000000000000000006044820152606401610c4c565b60608201516001600160401b03161580614d15575060608401516001600160401b0316155b614d615760405162461bcd60e51b815260206004820152601760248201527f4d554c5449504c455f534c5f444546494e4954494f4e530000000000000000006044820152606401610c4c565b60408401516001600160401b031615614ddb576000614d8b8686604001518a63ffffffff16614f2d565b905086614dc157856001600160401b0316816001600160401b031610614db2576000614dcb565b614dbc8187615b18565b614dcb565b614dcb8187615b38565b6001600160401b03166040840152505b60608401516001600160401b031615614e55576000614e058686606001518a63ffffffff16614f2d565b905086614e1b57614e168187615b38565b614e45565b856001600160401b0316816001600160401b031610614e3b576000614e45565b614e458187615b18565b6001600160401b03166060840152505b614e6c81868963ffffffff1685604001518a613dca565b6001600160401b039081166040840152831682526060820151614e9b908290879063ffffffff8b16908a613e9c565b6001600160401b0390811660608401908152938116602080850191825260009b8c52600e905260409a8b90208451815492519c86015196518416600160c01b026001600160c01b03978516600160801b02979097166001600160801b039d8516600160401b026001600160801b03199094169190941617919091179a909a161792909217909755509495945050505050565b600080826001600160401b0316620186a06064866001600160401b0316886001600160401b0316614f5e9190615a59565b614f689190615a59565b614f729190615a86565b613e939190615a86565b6003811061135d57600080fd5b606081018181106001600160401b0382111715614fb657634e487b7160e01b600052604160045260246000fd5b60405250565b61012081016001600160401b0381118282101715614fb657634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561501d57634e487b7160e01b600052604160045260246000fd5b6040525050565b60405161503081614fbc565b90565b6001600160a01b038116811461135d57600080fd5b803561ffff8116811461505a57600080fd5b919050565b801515811461135d57600080fd5b803561505a8161505f565b803563ffffffff8116811461505a57600080fd5b80356001600160401b038116811461505a57600080fd5b6000806000808486036101c08112156150bb57600080fd5b85356150c681614f7c565b94506060601f19820112156150da57600080fd5b6040516150e681614f89565b60208701356150f481615033565b815261510260408801615048565b6020820152606087013561511581615033565b60408201529350610120607f19820181131561513057600080fd5b615138615024565b91506151466080880161506d565b825260a0870135602083015261515e60c08801615078565b604083015261516f60e0880161508c565b606083015261010061518281890161508c565b608084015261519282890161508c565b60a08401526151a4610140890161508c565b60c08401526151b6610160890161508c565b60e08401526151c8610180890161508c565b908301525091506151dc6101a08601615078565b905092959194509250565b6000602082840312156151f957600080fd5b813561148a81615033565b60006020828403121561521657600080fd5b5035919050565b6004811061135d57600080fd5b60008060006060848603121561523f57600080fd5b833561524a81615033565b9250602084013561525a8161521d565b9150604084013561526a81615033565b809150509250925092565b60008060006060848603121561528a57600080fd5b8335925061529a6020850161508c565b9150604084013590509250925092565b600080604083850312156152bd57600080fd5b82356152c88161521d565b946020939093013593505050565b600080604083850312156152e957600080fd5b82356152f481615033565b915060208301356153048161521d565b809150509250929050565b60005b8381101561532a578181015183820152602001615312565b50506000910152565b602081526000825180602084015261535281604085016020870161530f565b601f01601f19169190910160400192915050565b6000806040838503121561537957600080fd5b82356152c881615033565b6020808252825182820181905260009190848201906040850190845b818110156153bc578351835292840192918401916001016153a0565b50909695505050505050565b6000806000606084860312156153dd57600080fd5b833592506020840135600281106153f357600080fd5b929592945050506040919091013590565b6000806000806080858703121561541a57600080fd5b8435935061542a6020860161508c565b92506154386040860161508c565b91506151dc60608601615078565b6000806000806080858703121561545c57600080fd5b8435935061546c6020860161508c565b9250604085013591506151dc6060860161508c565b60008060006060848603121561549657600080fd5b8335925060208401356153f381614f7c565b6020808252825182820181905260009190848201906040850190845b818110156153bc5783516001600160a01b0316835292840192918401916001016154c4565b600080604083850312156154fc57600080fd5b8235915060208301356153048161505f565b634e487b7160e01b600052602160045260246000fd5b600681106155345761553461550e565b9052565b87815260e0810161554c6020830189615524565b6001600160401b03968716604083015263ffffffff958616606083015293151560808201529190941660a08201529290911660c09092019190915292915050565b6000806000606084860312156155a257600080fd5b83356155ad81615033565b95602085013595506040909401359392505050565b60e081016155d0828a615524565b6001600160401b0397909716602082015261ffff959095166040860152921515606085015263ffffffff9190911660808401526001600160a01b031660a083015260c090910152919050565b600080600080600060a0868803121561563457600080fd5b853594506156446020870161508c565b93506156526040870161508c565b92506156606060870161508c565b915061566e6080870161508c565b90509295509295909350565b60008060006060848603121561568f57600080fd5b833561569a81615033565b9250602084013561525a81615033565b600080600080608085870312156156c057600080fd5b84356156cb81615033565b935060208501356156db81615033565b925061543860408601615048565b600080600080608085870312156156ff57600080fd5b84359350602085013561571181614f7c565b925061571f6040860161508c565b91506151dc6060860161508c565b60008060006060848603121561574257600080fd5b833592506157526020850161508c565b91506157606040850161508c565b90509250925092565b600080600080600060a0868803121561578157600080fd5b8535945060208601356157938161521d565b93506157a16040870161508c565b92506157af6060870161508c565b915061566e60808701615078565b6000806000606084860312156157d257600080fd5b83356157dd81615033565b925060208401356153f381615033565b8051825263ffffffff602082015116602083015260408101511515604083015260608101516001600160401b03808216606085015280608084015116608085015250505050565b60a08101611eeb82846157ed565b606081016158508286615524565b6001600160401b039390931660208201526001600160a01b0391909116604090910152919050565b60006020828403121561588a57600080fd5b815161148a8161505f565b6020808252600e908201526d08551c9859195c9cd41bdc9d185b60921b604082015260600190565b6020808252600b908201526a1410525497d4105554d15160aa1b604082015260600190565b6101e081016158f18288615524565b63ffffffff808716602084015260018060a01b0380875116604085015261ffff6020880151166060850152806040880151166080850152508451151560a0840152602085015160c08401528060408601511660e0840152506060840151610100615965818501836001600160401b03169052565b60808601516001600160401b0390811661012086015260a0870151811661014086015260c0870151811661016086015260e087015181166101808601529501519094166101a083015263ffffffff929092166101c090910152949350505050565b6000602082840312156159d857600080fd5b815161148a81615033565b6000602082840312156159f557600080fd5b5051919050565b60208082526009908201526821547269676765727360b81b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff818116838216019080821115615a5257615a52615a1f565b5092915050565b8082028115828204841417611eeb57611eeb615a1f565b634e487b7160e01b600052601260045260246000fd5b600082615a9557615a95615a70565b500490565b60008251615aac81846020870161530f565b9190910192915050565b60208082526010908201526f2727afa9aaa1a42fa827a9a4aa24a7a760811b604082015260600190565b6020808252600b908201526a57524f4e475f504841534560a81b604082015260600190565b81810381811115611eeb57611eeb615a1f565b6001600160401b03828116828216039080821115615a5257615a52615a1f565b6001600160401b03818116838216019080821115615a5257615a52615a1f565b80820260008212600160ff1b84141615615b7457615b74615a1f565b8181058314821517611eeb57611eeb615a1f565b60008060408385031215615b9b57600080fd5b505080516020909101519092909150565b600060033d11156150305760046000803e5060005160e01c90565b600060443d1015615bd55790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615c0457505050505090565b8285019150815181811115615c1c5750505050505090565b843d8701016020828501011115615c365750505050505090565b615c4560208286010187614fea565b509095945050505050565b805160208201516001600160e01b03198082169291906004831015615c7f5780818460040360031b1b83161693505b505050919050565b6040810160128410615c9b57615c9b61550e565b9281526020015290565b8681526001600160a01b038616602082015261ffff851660408201526101408101615cd360608301866157ed565b8361010083015260058310615cea57615cea61550e565b82610120830152979650505050505050565b60008060008060808587031215615d1257600080fd5b505082516020840151604085015160609095015191969095509092509050565b80820180821115611eeb57611eeb615a1f565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715611eeb57611eeb615a1f565b600082615daf57615daf615a70565b600160ff1b821460001984141615615dc957615dc9615a1f565b50059056fea264697066735822122039be00a615031adfcb9daaa06a596578fcaba70e4b68364e50c1013656912a6964736f6c63430008180033";
17
+ static readonly bytecode = "0x608060405234801561001057600080fd5b50600080546001600160a01b03191633179055615f7680620000336000396000f3fe608060405234801561001057600080fd5b50600436106103a45760003560e01c806380193b26116101e9578063b71f3cfe1161010f578063ece938cf116100ad578063f555f6971161007c578063f555f69714610b48578063f5f5ba7214610b68578063f851a44014610b92578063f9b9484e14610ba557600080fd5b8063ece938cf14610ab6578063ef6ecc5514610abf578063f2eb245e14610b1f578063f51f3fd314610b3f57600080fd5b8063ddf474f1116100e9578063ddf474f114610a28578063e640f33b14610a70578063ec18aded14610a83578063ec7f8a3a14610a9657600080fd5b8063b71f3cfe146109ea578063c07f9921146109f5578063caf16de514610a0857600080fd5b806394a1e6e511610187578063a40d726811610156578063a40d726814610995578063aaf5eb68146109a8578063acfd6b92146109b7578063ad1f2b56146109e257600080fd5b806394a1e6e5146108da57806395be5050146108e25780639ff69ffa1461096f578063a2a25ea61461098257600080fd5b80638aa10435116101c35780638aa10435146107fe5780638f7a8fb51461081e57806390f24cac1461089957806393a7f6a7146108ac57600080fd5b806380193b26146107d857806382571409146107e257806386dc4975146107eb57600080fd5b80633ad6f124116102ce57806366307a4f1161026c57806374d8b78e1161023b57806374d8b78e1461075657806376d901be1461077f578063777a594b146107b25780637b103999146107c557600080fd5b806366307a4f1461068257806368f296a5146106fd5780636e01af8d14610723578063725b7d521461073657600080fd5b806350b3ef96116102a857806350b3ef961461061c5780635b214e121461062f5780635c60da1b14610642578063614d08f81461065557600080fd5b80633ad6f124146105d65780633b17a497146105e95780634ebe5c331461060957600080fd5b80631ea9af6b116103465780632678224711610315578063267822471461055557806330d073d01461056857806338b9033314610593578063396f7b23146105c357600080fd5b80631ea9af6b146104ff5780632457bc3a146105125780632485f3f11461051a57806324b22a1f1461054257600080fd5b8063135e563d11610382578063135e563d1461049b57806318fa4714146104ae5780631961aba0146104c35780631d504dc6146104ec57600080fd5b806301057085146103a957806303b90a87146103cf578063042e37c514610410575b600080fd5b6103bc6103b73660046151d5565b610c07565b6040519081526020015b60405180910390f35b6103f86103dd366004615319565b600b602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016103c6565b61045f61041e366004615336565b600c60205260009081526040902080546001909101546001600160a01b0380831692600160a01b810461ffff1692600160b01b90910463ffffffff16911684565b604080516001600160a01b03958616815261ffff909416602085015263ffffffff909216918301919091529190911660608201526080016103c6565b6103f86104a9366004615336565b611162565b6104c16104bc36600461535c565b61118c565b005b6103bc6104d1366004615319565b6001600160a01b031660009081526016602052604090205490565b6104c16104fa366004615319565b61125b565b6104c161050d3660046153a7565b6113a9565b6013546103bc565b61052d610528366004615319565b611440565b60405163ffffffff90911681526020016103c6565b6104c16105503660046153dc565b6114da565b6001546103f8906001600160a01b031681565b6103bc610576366004615408565b600960209081526000928352604080842090915290825290205481565b6105b6604051806040016040528060048152602001633130313960e01b81525081565b6040516103c69190615465565b6003546103f8906001600160a01b031681565b6103bc6105e4366004615498565b61175c565b6105fc6105f7366004615319565b61178d565b6040516103c691906154b6565b6104c16106173660046154fa565b6117f9565b6104c161062a366004615536565b6118bd565b6104c161063d366004615578565b611a71565b6002546103f8906001600160a01b031681565b6105b66040518060400160405280600e81526020016d54726164696e67466c6f6f72563160901b81525081565b6106ca610690366004615336565b600e602052600090815260409020546001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b604080516001600160401b03958616815293851660208501529184169183019190915290911660608201526080016103c6565b61052d61070b366004615319565b60156020526000908152604090205463ffffffff1681565b6104c16107313660046155b3565b611b0e565b610749610744366004615498565b611e9d565b6040516103c691906155da565b6103f8610764366004615319565b600a602052600090815260409020546001600160a01b031681565b6107a261078d366004615336565b60086020526000908152604090205460ff1681565b60405190151581526020016103c6565b6104c16107c0366004615498565b611f1d565b6004546103f8906001600160a01b031681565b6103bc620186a081565b6103bc60075481565b6104c16107f936600461561b565b611fa0565b6040805180820190915260048152633130313960e01b60208201526105b6565b61088661082c366004615336565b600d602052600090815260409020805460019091015460ff808216916001600160401b03610100820481169263ffffffff600160481b8404811693600160681b810490921692600160701b83041691600160b01b90041687565b6040516103c6979695949392919061566a565b6103f86108a73660046156bf565b612016565b6107a26108ba366004615319565b6001600160a01b039081166000908152600a602052604090205416151590565b6103bc61205b565b61095c6108f0366004615336565b6000908152600d602081815260408084206001810154600c8452919094205492909152915460ff8084169461010085046001600160401b031694600160a01b850461ffff1694600160681b820490931693600160b01b90910463ffffffff16926001600160a01b031691565b6040516103c697969594939291906156f4565b6104c161097d36600461574e565b61206c565b6104c16109903660046157ac565b6122a6565b6103bc6109a33660046157dc565b6123c8565b6103bc670de0b6b3a764000081565b6103bc6109c5366004615498565b601760209081526000928352604080842090915290825290205481565b6103bc606481565b6103bc633b9aca0081565b6104c1610a0336600461581b565b612437565b6103bc610a16366004615319565b60186020526000908152604090205481565b6106ca610a36366004615336565b600f602052600090815260409020546001600160401b0380821691600160401b8104821691600160801b8204811691600160c01b90041684565b6104c1610a7e36600461585f565b612af4565b6104c1610a9136600461589b565b612c85565b6103bc610aa4366004615319565b60146020526000908152604090205481565b6103bc60055481565b610b02610acd3660046158ef565b601260209081526000938452604080852082529284528284209052825290205463ffffffff8082169164010000000090041682565b6040805163ffffffff9384168152929091166020830152016103c6565b6103bc610b2d366004615336565b60106020526000908152604090205481565b6103bc60065481565b610b5b610b56366004615336565b6130d9565b6040516103c69190615966565b60408051808201909152600e81526d54726164696e67466c6f6f72563160901b60208201526105b6565b6000546103f8906001600160a01b031681565b610bf8610bb3366004615336565b6000908152600d60209081526040808320600190810154600c90935292209091015460ff8216926101009092046001600160401b0316916001600160a01b0390911690565b6040516103c693929190615974565b6004805460405163731aa5f960e01b815233928101929092526000916001600160a01b039091169063731aa5f990602401602060405180830381865afa158015610c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7991906159aa565b610c9e5760405162461bcd60e51b8152600401610c95906159c7565b60405180910390fd5b610cc684604001516001600160a01b039081166000908152600a602052604090205416151590565b610d125760405162461bcd60e51b815260206004820152601e60248201527f4e4f4e5f535550504f525445445f534554544c454d454e545f415353455400006044820152606401610c95565b60208085015161ffff1660009081526008909152604090205460ff1615610d4b5760405162461bcd60e51b8152600401610c95906159ef565b6001856002811115610d5f57610d5f615640565b1480610d7c57506002856002811115610d7a57610d7a615640565b145b610dc15760405162461bcd60e51b8152602060048201526016602482015275554e535550504f525445445f4f524445525f5459504560501b6044820152606401610c95565b610e06836000015184606001516001600160401b031685608001516001600160401b03168660a001516001600160401b03168760c001516001600160401b0316613201565b60055484516001600160a01b031660009081526016602052604090205410610e685760405162461bcd60e51b815260206004820152601560248201527426a0ac2faa2920a222a9afa822a92faa2920a222a960591b6044820152606401610c95565b6000610e818560400151866000015187602001516132e3565b8092508193505050610ea0856040015186600001518660200151613454565b8451610eab90613599565b6000828152600d60205260409020805415610ef25760405162461bcd60e51b8152602060048201526007602482015266125117d554d15160ca1b6044820152606401610c95565b600180820180548751604089015163ffffffff908116600160481b026cffffffff00000000000000000019921515600160681b0260ff60681b19928b16600160b01b02929092166cffffffff0000000000000000ff60681b1990941693909317171617905560208601518255600090886002811115610f7357610f73615640565b14610f7f576002610f82565b60015b9050808260010160006101000a81548160ff02191690836005811115610faa57610faa615640565b0217905550428260010160016101000a8154816001600160401b0302191690836001600160401b031602179055506000600e600086815260200190815260200160002090508660a001518160000160106101000a8154816001600160401b0302191690836001600160401b031602179055508660c001518160000160186101000a8154816001600160401b0302191690836001600160401b031602179055506000600f6000878152602001908152602001600020905087606001518160000160006101000a8154816001600160401b0302191690836001600160401b0316021790555087608001518160000160086101000a8154816001600160401b0302191690836001600160401b031602179055508760e001518160000160106101000a8154816001600160401b0302191690836001600160401b031602179055508761010001518160000160186101000a8154816001600160401b0302191690836001600160401b03160217905550857f835de04f5a930b169d6564c8f1c5f91f89abd9ea026b7488c94452abb900cc7484878c8c8c60405161114d959493929190615a14565b60405180910390a25050505050949350505050565b6013818154811061117257600080fd5b6000918252602090912001546001600160a01b0316905081565b6004805460405163a8e36e5b60e01b81526001600160a01b038681169382019390935291169063a8e36e5b90602401602060405180830381865afa1580156111d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111fc9190615af8565b6001600160a01b0316336001600160a01b03161461124b5760405162461bcd60e51b815260206004820152600c60248201526b10a332b2b9a6b0b730b3b2b960a11b6044820152606401610c95565b611256838383613615565b505050565b806001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190615af8565b6001600160a01b0316336001600160a01b03161461130c5760405162461bcd60e51b815260206004820152600c60248201526b10b83937bc3c9730b236b4b760a11b6044820152606401610c95565b806001600160a01b031663c1e803346040518163ffffffff1660e01b81526004016020604051808303816000875af115801561134c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113709190615b15565b156113a65760405162461bcd60e51b8152600401610c959060208082526004908201526319985a5b60e21b604082015260600190565b50565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa1580156113f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141691906159aa565b6114325760405162461bcd60e51b8152600401610c9590615b2e565b611256836002848442613738565b6001600160a01b03811660009081526015602052604081205463ffffffff9081169081106114b05760405162461bcd60e51b815260206004820152601760248201527f504f534954494f4e5f494e4445585f4f564552464c4f570000000000000000006044820152606401610c95565b600b8163ffffffff1610156114c85750600b92915050565b6114d3816001615b67565b9392505050565b6000546001600160a01b031633146115045760405162461bcd60e51b8152600401610c9590615b8b565b600081116115455760405162461bcd60e51b815260206004820152600e60248201526d43414e4e4f545f42455f5a45524f60901b6044820152606401610c95565b6060600183600381111561155b5761155b615640565b03611594575060408051808201909152601281527136b0bc2a3930b232b9a832b92a3930b232b960711b6020820152600582905561170f565b60028360038111156115a8576115a8615640565b036116375760646115bd620186a06032615baf565b6115c79190615bdc565b8210156116105760405162461bcd60e51b81526020600482015260176024820152762a2920a222afa820a920a6afa922a9aa2924a1aa24a7a760491b6044820152606401610c95565b506040805180820190915260068082526536b0bc29b62360d11b602083015282905561170f565b600383600381111561164b5761164b615640565b036116d95761165e620186a06002615baf565b8210156116a75760405162461bcd60e51b81526020600482015260176024820152762a2920a222afa820a920a6afa922a9aa2924a1aa24a7a760491b6044820152606401610c95565b5060408051808201909152601081526f36b0bc29b0b734ba3ca83937b334ba2360811b6020820152600782905561170f565b60405162461bcd60e51b815260206004820152600b60248201526a155394d5541413d495115160aa1b6044820152606401610c95565b8060405161171d9190615bf0565b604051908190038120838252907f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab9060200160405180910390a2505050565b6016602052816000526040600020818154811061177857600080fd5b90600052602060002001600091509150505481565b6001600160a01b0381166000908152601660209081526040918290208054835181840281018401909452808452606093928301828280156117ed57602002820191906000526020600020905b8154815260200190600101908083116117d9575b50505050509050919050565b6004805460405163419a519360e01b815233928101929092526001600160a01b03169063419a519390602401602060405180830381865afa158015611842573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186691906159aa565b6118b25760405162461bcd60e51b815260206004820152601a60248201527f212854726164657273506f7274616c7c7c5472696767657273290000000000006044820152606401610c95565b611256338484613a73565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa158015611906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192a91906159aa565b6119465760405162461bcd60e51b8152600401610c9590615b2e565b6000848152600f6020908152604091829020825160808101845290546001600160401b038082168352600160401b82048116938301849052600160801b8204811694830194909452600160c01b900490921660608301526119b95760405162461bcd60e51b8152600401610c9590615c0c565b80516001600160401b03808516911611806119e95750826001600160401b031681602001516001600160401b0316105b156119ff576119fa30866001613a73565b611a6a565b6000806000611a1a88876001600160401b0316600488613b84565b6040805182815260208101859052908101839052929550909350915088907f9912c2c8197504aea5a1b52b98eeae3f4aecabe190feebc292455c355d4297cb906060015b60405180910390a25050505b5050505050565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa158015611aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ade91906159aa565b611afa5760405162461bcd60e51b8152600401610c9590615b2e565b611b08846001858585613738565b50505050565b6004805460405163419a519360e01b815233928101929092526001600160a01b03169063419a519390602401602060405180830381865afa158015611b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7b91906159aa565b611bc75760405162461bcd60e51b815260206004820152601a60248201527f212854726164657273506f7274616c7c7c5472696767657273290000000000006044820152606401610c95565b611bd56064620186a0615bdc565b811115611c1b5760405162461bcd60e51b81526020600482015260146024820152734645455f4652414354494f4e5f544f4f5f42494760601b6044820152606401610c95565b6000838152600d60209081526040808320815160e08101909252805482526001810154919290919083019060ff166005811115611c5a57611c5a615640565b6005811115611c6b57611c6b615640565b8152600191909101546001600160401b036101008204811660208085019190915263ffffffff600160481b8404811660408087019190915260ff600160681b86041615156060870152600160701b85049093166080860152600160b01b90930490921660a0909301929092526000878152600d9091522054909150611d025760405162461bcd60e51b8152600401610c9590615c0c565b6000848152600c6020908152604091829020825160808101845281546001600160a01b038082168352600160a01b820461ffff1694830194909452600160b01b900463ffffffff16938101939093526001908101549091166060830152846002811115611d7157611d71615640565b03611dd357600182602001516005811115611d8e57611d8e615640565b14611dce5760405162461bcd60e51b815260206004820152601060248201526f2727aa2fa6a0a925a2aa2fa7a92222a960811b6044820152606401610c95565b611e7e565b6002846002811115611de757611de7615640565b03611e4357600282602001516005811115611e0457611e04615640565b14611dce5760405162461bcd60e51b815260206004820152600f60248201526e2727aa2fa624a6a4aa2fa7a92222a960891b6044820152606401610c95565b60405162461bcd60e51b815260206004820152601060248201526f57524f4e475f4f524445525f5459504560801b6044820152606401610c95565b611a6a8582600001518360600151856000015186606001518833613d9e565b6001600160a01b0382166000908152601160209081526040808320848452825291829020805483518184028101840190945280845260609392830182828015611f0f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ef1575b505050505090505b92915050565b6000546001600160a01b03163314611f475760405162461bcd60e51b8152600401610c9590615b8b565b6001600160a01b03821660008181526018602052604090819020839055517fa879d19ed0ab07bee6983f884f1b03e84beaa8fc61b9f6796196eca3cd48194a90611f949084815260200190565b60405180910390a25050565b6000546001600160a01b03163314611fca5760405162461bcd60e51b8152600401610c9590615b8b565b600082815260086020526040808220805460ff19168415159081179091559051909184917f996384f9c771a575699aadc5e543fb849613b350a1b29584a1ecca98d2cfc1709190a35050565b6011602052826000526040600020602052816000526040600020818154811061203e57600080fd5b6000918252602090912001546001600160a01b0316925083915050565b6120696064620186a0615bdc565b81565b6004805460405163731aa5f960e01b815233928101929092526001600160a01b03169063731aa5f990602401602060405180830381865afa1580156120b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d991906159aa565b6120f55760405162461bcd60e51b8152600401610c95906159c7565b6000858152600d602052604090206002600182015460ff16600581111561211e5761211e615640565b1461213b5760405162461bcd60e51b8152600401610c9590615c36565b6000868152600c6020908152604080832054600160a01b900461ffff168352600890915290205460ff16156121825760405162461bcd60e51b8152600401610c95906159ef565b6121c481600101600d9054906101000a900460ff16866001600160401b0316866001600160401b0316866001600160401b0316866001600160401b0316613201565b60018101805468ffffffffffffffff001916610100426001600160401b0390811691909102919091179091556000878152600e6020908152604080832080546001600160801b0316600160801b8987169081026001600160c01b031691909117600160c01b898816908102919091178355600f85529483902080548c88166001600160801b03199091168117600160401b988d169889021782558451928352948201959095529182019290925260608101939093529188907f098a3c0f7acdf2c147440d705e162d395db886273731a238b250793cde346d8590608001611a5e565b6004546001600160a01b031633146122ec5760405162461bcd60e51b815260206004820152600960248201526821526567697374727960b81b6044820152606401610c95565b6001600160a01b038381166000908152600a602052604090205416156123545760405162461bcd60e51b815260206004820152601760248201527f41535345545f414c52454144595f535550504f525445440000000000000000006044820152606401610c95565b6001600160a01b038084166000818152600a6020908152604080832080548689166001600160a01b03199182168117909255600b9093528184208054968816969093168617909255519092917fe34fb4592f12d191480ae66f1051ba82ee53c518b07f632579da8d40a74c77c891a4505050565b60408051606095861b6bffffffffffffffffffffffff199081166020808401919091529590961b909516603486015260f09290921b6001600160f01b031916604885015260e01b6001600160e01b031916604a8401528051602e818503018152604e9093019052815191012090565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa158015612480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a491906159aa565b6124c05760405162461bcd60e51b8152600401610c9590615b2e565b6000848152600d60209081526040808320600e8352818420600c845293829020825160808101845281546001600160a01b038082168352600160a01b820461ffff1696830196909652600160b01b900463ffffffff1693810193909352600101549092166060820152815491929161254a5760405162461bcd60e51b8152600401610c9590615c0c565b6003600184015460ff16600581111561256557612565615640565b146125825760405162461bcd60e51b8152600401610c9590615c36565b80516001600160a01b039081166000908152600b6020526040812054909116908060018960028111156125b7576125b7615640565b03612872576000612658846001600160a01b0316631cb92ed36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126239190615b15565b6001890154600160701b81046001600160401b031690600160481b810463ffffffff16908d90600160681b900460ff16613e70565b9050886001600160401b0316816001600160401b0316146126ad5760405162461bcd60e51b815260206004820152600f60248201526e4241445f4649454c445f56414c554560881b6044820152606401610c95565b85546001600160401b03600160801b9091048116908216036126fb5760405162461bcd60e51b8152602060048201526007602482015266053414d455f54560cc1b6044820152606401610c95565b8092508560000160189054906101000a90046001600160401b03169150428660000160006101000a8154816001600160401b0302191690836001600160401b03160217905550836001600160a01b0316633cdc20f88c876060015188602001518b600001548c60010160099054906101000a900463ffffffff168d600101600d9054906101000a900460ff168e600101600e9054906101000a90046001600160401b03168e60000160109054906101000a90046001600160401b03168c6040518a63ffffffff1660e01b815260040161283a999897969594939291909889526001600160a01b0397909716602089015261ffff959095166040880152606087019390935263ffffffff919091166080860152151560a08501526001600160401b0390811660c085015290811660e0840152166101008201526101200190565b600060405180830381600087803b15801561285457600080fd5b505af1158015612868573d6000803e3d6000fd5b5050505050612a03565b600289600281111561288657612886615640565b036116d9576000612927846001600160a01b0316631cb92ed36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f29190615b15565b6001890154600160701b81046001600160401b031690600160481b810463ffffffff16908d90600160681b900460ff16613f42565b9050886001600160401b0316816001600160401b03161461297c5760405162461bcd60e51b815260206004820152600f60248201526e4241445f4649454c445f56414c554560881b6044820152606401610c95565b85546001600160401b03600160c01b9091048116908216036129ca5760405162461bcd60e51b815260206004820152600760248201526614d0535157d4d360ca1b6044820152606401610c95565b8554426001600160401b03908116600160401b026fffffffffffffffff0000000000000000198316178855600160801b90910416925090505b6001860154612a2f90600160681b900460ff166001600160401b03898116908190868116908616613201565b84546001600160401b03838116600160801b0267ffffffffffffffff60801b19918416600160c01b02919091166001600160801b0390921691909117178555886002811115612a8057612a80615640565b846020015161ffff168b7f90bbb7e2b715065bd66ba75a34fca9b65694d5e75327dd0873a5e3e68837766789600101600d9054906101000a900460ff168c604051612ae092919091151582526001600160401b0316602082015260400190565b60405180910390a450505050505050505050565b6004805460405163731aa5f960e01b815233928101929092526001600160a01b03169063731aa5f990602401602060405180830381865afa158015612b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6191906159aa565b612b7d5760405162461bcd60e51b8152600401610c95906159c7565b6000838152600d602052604090208054612ba95760405162461bcd60e51b8152600401610c9590615c0c565b6003600182015460ff166005811115612bc457612bc4615640565b14612be15760405162461bcd60e51b8152600401610c9590615c36565b6001810180546001600160401b034281166101000268ffffffffffffffffff19909216919091176004179091556000858152600f60209081526040918290208054868516600160401b81026001600160801b03199092169589169586179190911782558351948552918401919091529186917fb7bb5d6820a30953d2858e9c448319c4cebbc70c347961e25f1adfff46566689910160405180910390a25050505050565b6004805460405163a5a2ed3760e01b815233928101929092526001600160a01b03169063a5a2ed3790602401602060405180830381865afa158015612cce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf291906159aa565b612d0e5760405162461bcd60e51b8152600401610c9590615b2e565b6000858152600d60209081526040808320815160e08101909252805482526001810154919290919083019060ff166005811115612d4d57612d4d615640565b6005811115612d5e57612d5e615640565b8152600191909101546001600160401b0361010082048116602084015263ffffffff600160481b83048116604085015260ff600160681b84041615156060850152600160701b83049091166080840152600160b01b9091041660a0909101528051909150612dde5760405162461bcd60e51b8152600401610c9590615c0c565b6000868152600e60209081526040808320815160808101835290546001600160401b038082168352600160401b8204811694830194909452600160801b8104841692820192909252600160c01b90910490911660608201529080806002896003811115612e4d57612e4d615640565b03612eaa578460800151612e7a5783606001516001600160401b0316876001600160401b03161015612e95565b83606001516001600160401b0316876001600160401b031611155b925050506001600160401b0385166002612f8f565b6001896003811115612ebe57612ebe615640565b03612f21578460800151612eeb5783604001516001600160401b0316876001600160401b03161115612f06565b83604001516001600160401b0316876001600160401b031610155b925083604001516001600160401b0316915060019050612f8f565b6003896003811115612f3557612f35615640565b03612f51575060019150506001600160401b0385166003612f8f565b60405162461bcd60e51b81526020600482015260136024820152722ba927a723afa624a6a4aa2faa2924a3a3a2a960691b6044820152606401610c95565b82612fcc5760405162461bcd60e51b815260206004820152600d60248201526c2320a629a2afaa2924a3a3a2a960991b6044820152606401610c95565b6000806000612fdd8d86868c613b84565b919450925090506003846004811115612ff857612ff8615640565b0361306557876080015161301857808a6001600160401b03161015613026565b808a6001600160401b031611155b9550856130655760405162461bcd60e51b815260206004820152600d60248201526c2320a629a2afaa2924a3a3a2a960991b6044820152606401610c95565b8b600381111561307757613077615640565b604080516001600160401b038d16815260208101849052908101859052606081018490528e907fe67823c5c7b61d690bab4b46031d192b68f898b47bdf7daffbddff8e24aaf9bd9060800160405180910390a350505050505050505050505050565b6040805160a081018252600080825260208083018290528284018290526060830182905260808301829052848252600d8152838220845160e0810190955280548552600181015493949293909183019060ff16600581111561313d5761313d615640565b600581111561314e5761314e615640565b8152600191909101546001600160401b036101008204811660208085019190915263ffffffff600160481b8404811660408087019190915260ff600160681b8604161515606080880191909152600160701b86048516608080890191909152600160b01b909604831660a09788015287518a52878101519092168984015294860151831690880152938201511515868401526000968752600e909352942054600160801b90041692820192909252919050565b828411156132435760405162461bcd60e51b815260206004820152600f60248201526e4d494e5f4d41585f5245564552534560881b6044820152606401610c95565b81158061325c5750846132585783821061325c565b8282115b6132935760405162461bcd60e51b8152602060048201526008602482015267057524f4e475f54560c41b6044820152606401610c95565b8015806132ac5750846132a8578281116132ac565b8381105b611a6a5760405162461bcd60e51b815260206004820152600860248201526715d493d391d7d4d360c21b6044820152606401610c95565b6000806132ef84611440565b90506132fd858585846123c8565b6000818152600c60205260408120805492945091600160b01b900463ffffffff16900361344b578054600180830180546001600160a01b0319166001600160a01b038981169182179092559089166001600160b01b031990931692909217600160a01b61ffff8816021763ffffffff60b01b1916600160b01b63ffffffff86169081029190911784556000838152601560209081526040808320805463ffffffff19169094179093556016815282822080549485018155808352818320909401889055925493815260178352818120878252909252902055827f487ea6416487448c3ce943d750c8f67a275e4d8f26ac4093803bf63354b7006f82604051613442919081546001600160a01b03808216835260a082901c61ffff16602084015260b09190911c63ffffffff166040830152600190920154909116606082015260800190565b60405180910390a25b50935093915050565b8015611256576040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156134a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c59190615b15565b90506134dc6001600160a01b038516843085613fff565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381865afa158015613523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135479190615b15565b9050826135548383615c5b565b14611a6a5760405162461bcd60e51b815260206004820152601560248201527411125117d393d517d49150d152559157d1561050d5605a1b6044820152606401610c95565b6001600160a01b0381166000908152601660205260409020546001036113a657601380546001810182557f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0900180546001600160a01b0319166001600160a01b039390931692831790555460009182526014602052604090912055565b6001600160a01b03831660009081526009602052604081208184600381111561364057613640615640565b600381111561365157613651615640565b8152602001908152602001600020549050600060096000866001600160a01b03166001600160a01b03168152602001908152602001600020600085600381111561369d5761369d615640565b60038111156136ae576136ae615640565b81526020810191909152604001600020556136d36001600160a01b0385168383614066565b816001600160a01b03168360038111156136ef576136ef615640565b856001600160a01b03167f0e80b333c403be7cb491b3ba7f29fe30014c594adbcbec04272291b2f72f6e6a8460405161372a91815260200190565b60405180910390a450505050565b6000858152600f60209081526040808320815160808101835290546001600160401b038082168352600160401b8204811683860152600160801b8204811683850152600160c01b909104166060820152888452600d8352818420825160e0810190935280548352600181015491949390919083019060ff1660058111156137c1576137c1615640565b60058111156137d2576137d2615640565b8152600191909101546001600160401b0361010082048116602084015263ffffffff600160481b83048116604085015260ff600160681b84041615156060850152600160701b83049091166080840152600160b01b9091041660a09091015280519091506138525760405162461bcd60e51b8152600401610c9590615c0c565b6000878152600c60209081526040808320815160808101835281546001600160a01b038082168352600160a01b820461ffff16838701819052600160b01b90920463ffffffff1683860152600190930154909216606082015290845260089092529091205460ff16156138d75760405162461bcd60e51b8152600401610c95906159ef565b8660058111156138e9576138e9615640565b826020015160058111156138ff576138ff615640565b1461391c5760405162461bcd60e51b8152600401610c9590615c36565b600187600581111561393057613930615640565b036139d45782516001600160401b03808816911611806139655750856001600160401b031683602001516001600160401b0316105b156139cf576040516001600160401b038716815288907f82c058420d58fdfcaa301ef645c860145096603267b7b7ac02831312ac2ab4479060200160405180910390a26139c78882600001518360600151856000015186606001518a30613d9e565b505050611a6a565b613a5a565b60028760058111156139e8576139e8615640565b036116d95782516001600160401b03808816911611801590613a205750856001600160401b031683602001516001600160401b031610155b6139cf5760405162461bcd60e51b815260206004820152600b60248201526a50524943455f52414e474560a81b6044820152606401610c95565b613a69888284868a8a8a614097565b5050505050505050565b6000828152600d6020526040902054613a9e5760405162461bcd60e51b8152600401610c9590615c0c565b6000828152600f60205260408120556001816001811115613ac157613ac1615640565b03611e435760046000838152600d602052604090206001015460ff166005811115613aee57613aee615640565b14613b0b5760405162461bcd60e51b8152600401610c9590615c36565b6000828152600d6020908152604080832060010180546001600160401b0342166101000268ffffffffffffffffff19909116176003179055519182526001600160a01b0385169184917f2cb817145129b5c52a6dc17e0605285c54d9c258fbf0a21e78bfff4e00813333910160405180910390a3505050565b6000848152600c60209081526040808320815160808101835281546001600160a01b038082168352600160a01b820461ffff1695830195909552600160b01b900463ffffffff16928101929092526001015490911660608201528190819081613bec896130d9565b8051909150613c0d5760405162461bcd60e51b8152600401610c9590615c0c565b6000613c1c8a84848c8c614467565b85519299509097509550909150861115613cc2578151600090620186a0613c43828a615c5b565b613c4d9190615baf565b613c579190615bdc565b905060075481111580613c83575083516001600160a01b03166000908152601860205260409020548711155b613cc05760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d41493d1925560921b6044820152606401610c95565b505b8151811115613d135760405162461bcd60e51b815260206004820152601e60248201527f434c4f53455f4645455f4c41524745525f5448414e5f504f534954494f4e00006044820152606401610c95565b613d248a8460000151600284614519565b613d3183606001516145cd565b613d3f83606001518b614835565b60008a8152600d6020908152604080832083815560010180546001600160d01b0319169055600e82528083208390556010909152812055606083015183518351613d91928d9290918a90868d8c614960565b5050509450945094915050565b6000878152600d6020908152604080832083815560010180546001600160d01b0319169055600f9091528120819055613de6613de08663ffffffff8716614b9c565b84614bb4565b9050613df58888600384614519565b613dfe866145cd565b613e088689614835565b6000613e148287615c5b565b9050613e21888883614bc4565b826001600160a01b0316897f0732bc6c415e7a220efee5f866e1e91a1335745b97373898ffecfddbc708a3e784604051613e5d91815260200190565b60405180910390a3505050505050505050565b60006001600160401b0383161580613e9a57508560070b613e948787868689614bde565b60070b12155b15613f36576000620186a0856001600160401b03166064896001600160401b0316896001600160401b0316613ecf9190615baf565b613ed99190615baf565b613ee39190615bdc565b613eed9190615bdc565b905082613f2457856001600160401b0316816001600160401b03161115613f15576000613f2e565b613f1f8187615c6e565b613f2e565b613f2e8187615c8e565b915050613f39565b50815b95945050505050565b60006001600160401b0383161580613f775750600654613f6490600019615cae565b613f718787868689614bde565b60070b13155b15613f36576000620186a0856001600160401b03166064600654896001600160401b0316613fa59190615baf565b613faf9190615baf565b613fb99190615bdc565b613fc39190615bdc565b905082613fd457613f1f8187615c8e565b856001600160401b0316816001600160401b03161115613ff5576000613f2e565b613f2e8187615c6e565b6040516001600160a01b038481166024830152838116604483015260648201839052611b089186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614c6a565b6040516001600160a01b0383811660248301526044820183905261125691859182169063a9059cbb90606401614034565b85516001600160a01b039081166000908152600b60205260408120546060880151608089015191909316926140d2918b918591898b89614cdb565b9050816001600160a01b03166352713f678a8a606001518b602001518b600001518c606001518d6080015188604001518d6040518963ffffffff1660e01b81526004016141789897969594939291909788526001600160a01b0396909616602088015261ffff949094166040870152606086019290925263ffffffff166080850152151560a08401526001600160401b0390811660c08401521660e08201526101000190565b60408051808303816000875af19250505080156141b2575060408051601f3d908101601f191682019092526141af91810190615cde565b60015b6142b6576141be615d02565b806308c379a0036141f757506141d2615d1d565b806141dd57506141f9565b8060405162461bcd60e51b8152600401610c959190615465565b505b3d808015614223576040519150601f19603f3d011682016040523d82523d6000602084013e614228565b606091505b50632eb752bf60e21b61423a82615da6565b6001600160e01b031916036103a457602481015160448201516040518c907ff2c847d05971bf83dd347e0732c1ef893111318fb2540f5fe6f9783cb8d6ae5b906142879085908590615ddd565b60405180910390a26142ae8c8c600001518d606001518d600001518e606001518c30613d9e565b50505061445c565b60008b8152600d6020908152604080832060018101805467ffffffffffffffff60701b1916600160701b6001600160401b038e16021790558c5160109093529220558951614305908490615c5b565b81556001600160401b0342811690871611801590614338575060018101546001600160401b036101009091048116908716115b6143745760405162461bcd60e51b815260206004820152600d60248201526c04241445f54494d455354414d5609c1b6044820152606401610c95565b600181810180546001600160401b0389166101000268ffffffffffffffffff199091161760031790558b516143b5918e91906143b08688615c5b565b614519565b8a516001600160a01b038082166000908152600a60205260409020546143dd92911684614bc4565b60008c8152600f60209081526040808320929092558582015160608088015184516001600160401b038e8116825293841694810194909452919091168284015281018590526080810184905290518d917fdd0164525ce1bb6897fbd7000a7d93633016a05f498d94903ca1fcc7911cdf81919081900360a00190a25050505b505050505050505050565b83516001600160a01b039081166000908152600b60209081526040808320546060890151928901519151630f1a62d160e31b8152939485948594859493909216926378d31688926144c3928e92908d908d908d90600401615dfb565b6080604051808303816000875af11580156144e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145069190615e52565b929c919b50995090975095505050505050565b8015611b08576001600160a01b0383166000908152600960205260408120829184600381111561454b5761454b615640565b600381111561455c5761455c615640565b815260200190815260200160002060008282546145799190615e88565b90915550829050600381111561459157614591615640565b836001600160a01b0316857f52aab89a61b38ba21feecda2012e9c20aec817e5d709d0633c3fd693bb949cbb8460405161372a91815260200190565b6001600160a01b0381166000908152601660205260409020546001036113a6576001600160a01b0381166000908152601460205260408120549081900361464f5760408051600080825260208201526001600160a01b038416917fd206397c5bb871d309f7602ac869a71536b264e19e25714421d6456b6b5008d99101611f94565b601361465c600183615c5b565b8154811061466c5761466c615e9b565b6000918252602090912001546001600160a01b03838116911614614717576001600160a01b0382166000818152601460205260408120557fd206397c5bb871d309f7602ac869a71536b264e19e25714421d6456b6b5008d98260136146d2600183615c5b565b815481106146e2576146e2615e9b565b600091825260209091200154604051611f9492916001600160a01b0316909182526001600160a01b0316602082015260400190565b601354600110156147e5576013805461473290600190615c5b565b8154811061474257614742615e9b565b6000918252602090912001546001600160a01b03166013614764600184615c5b565b8154811061477457614774615e9b565b6000918252602082200180546001600160a01b0319166001600160a01b039390931692909217909155819060149060136147af600185615c5b565b815481106147bf576147bf615e9b565b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6001600160a01b038216600090815260146020526040812055601380548061480f5761480f615eb1565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b6001600160a01b03821660009081526017602090815260408083208484529091529020548015611256576001600160a01b038316600090815260166020526040812090614883600184615c5b565b825490915061489490600190615c5b565b81101561491057815460009083906148ae90600190615c5b565b815481106148be576148be615e9b565b90600052602060002001549050808383815481106148de576148de615e9b565b60009182526020808320909101929092556001600160a01b038816815260178252604080822093825292909152208390555b8180548061492057614920615eb1565b6000828152602080822083016000199081018390559092019092556001600160a01b03871682526017815260408083208784529091528120555050505050565b6001600160a01b038087166000908152600a602052604081205490911690858710614a095761498f8587615c5b565b9050600061499d8289615c5b565b6040516321d4911360e01b81526001600160a01b038c8116600483015260248201839052919250908416906321d4911390604401600060405180830381600087803b1580156149eb57600080fd5b505af11580156149ff573d6000803e3d6000fd5b5050505050614b85565b50856000614a178288615c5b565b905085811115614b0a576000614a2d8783615c5b565b90506000808612614a3f576000614a65565b670de0b6b3a7640000614a5187615ec7565b614a5b908b615baf565b614a659190615bdc565b90506000620186a0614a7d63ffffffff8a1684615baf565b614a879190615bdc565b905082811115614a945750815b8015614af757614aa48184615c5b565b9250614ab08186615e88565b94508c6001600160a01b03168e7f8f574dd3b7f0c5102b6fe6d21dbdb07a3523d73a587c76131827d7c61a8596e983604051614aee91815260200190565b60405180910390a35b614b028c8785614bc4565b505050614b83565b6001600160a01b0383166321d4911330614b24848a615c5b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b158015614b6a57600080fd5b505af1158015614b7e573d6000803e3d6000fd5b505050505b505b614b90888a83614bc4565b50505050505050505050565b60006064614baa8385615baf565b6114d39190615bdc565b6000620186a0614baa8385615baf565b8015611256576112566001600160a01b0384168383614066565b6000858184614bf657614bf18688615ee3565b614c00565b614c008787615ee3565b905060008460070b620186a08360070b614c1a9190615cae565b614c249190615cae565b90506000600789900b614c38606484615f12565b614c429190615f12565b90508094508360070b8560070b13614c5a5784614c5c565b835b9a9950505050505050505050565b600080602060008451602086016000885af180614c8d576040513d6000823e3d81fd5b50506000513d91508115614ca5578060011415614cb2565b6001600160a01b0384163b155b15611b0857604051635274afe760e01b81526001600160a01b0385166004820152602401610c95565b6040805160808101825260008082526020820181905291810182905260608101919091526000876001600160a01b0316631cb92ed36040518163ffffffff1660e01b8152600401602060405180830381865afa158015614d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614d639190615b15565b60008a8152600e6020908152604091829020825160808101845290546001600160401b038082168352600160401b8204811693830193909352600160801b81048316938201849052600160c01b9004909116606082015293509091501580614dd6575060408401516001600160401b0316155b614e225760405162461bcd60e51b815260206004820152601760248201527f4d554c5449504c455f54505f444546494e4954494f4e530000000000000000006044820152606401610c95565b60608201516001600160401b03161580614e47575060608401516001600160401b0316155b614e935760405162461bcd60e51b815260206004820152601760248201527f4d554c5449504c455f534c5f444546494e4954494f4e530000000000000000006044820152606401610c95565b60408401516001600160401b031615614f0d576000614ebd8686604001518a63ffffffff1661505f565b905086614ef357856001600160401b0316816001600160401b031610614ee4576000614efd565b614eee8187615c6e565b614efd565b614efd8187615c8e565b6001600160401b03166040840152505b60608401516001600160401b031615614f87576000614f378686606001518a63ffffffff1661505f565b905086614f4d57614f488187615c8e565b614f77565b856001600160401b0316816001600160401b031610614f6d576000614f77565b614f778187615c6e565b6001600160401b03166060840152505b614f9e81868963ffffffff1685604001518a613e70565b6001600160401b039081166040840152831682526060820151614fcd908290879063ffffffff8b16908a613f42565b6001600160401b0390811660608401908152938116602080850191825260009b8c52600e905260409a8b90208451815492519c86015196518416600160c01b026001600160c01b03978516600160801b02979097166001600160801b039d8516600160401b026001600160801b03199094169190941617919091179a909a161792909217909755509495945050505050565b600080826001600160401b0316620186a06064866001600160401b0316886001600160401b03166150909190615baf565b61509a9190615baf565b6150a49190615bdc565b613f399190615bdc565b600381106113a657600080fd5b606081018181106001600160401b03821117156150e857634e487b7160e01b600052604160045260246000fd5b60405250565b61012081016001600160401b03811182821017156150e857634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561514f57634e487b7160e01b600052604160045260246000fd5b6040525050565b604051615162816150ee565b90565b6001600160a01b03811681146113a657600080fd5b803561ffff8116811461518c57600080fd5b919050565b80151581146113a657600080fd5b803561518c81615191565b803563ffffffff8116811461518c57600080fd5b80356001600160401b038116811461518c57600080fd5b6000806000808486036101c08112156151ed57600080fd5b85356151f8816150ae565b94506060601f198201121561520c57600080fd5b604051615218816150bb565b602087013561522681615165565b81526152346040880161517a565b6020820152606087013561524781615165565b60408201529350610120607f19820181131561526257600080fd5b61526a615156565b91506152786080880161519f565b825260a0870135602083015261529060c088016151aa565b60408301526152a160e088016151be565b60608301526101006152b48189016151be565b60808401526152c48289016151be565b60a08401526152d661014089016151be565b60c08401526152e861016089016151be565b60e08401526152fa61018089016151be565b9083015250915061530e6101a086016151aa565b905092959194509250565b60006020828403121561532b57600080fd5b81356114d381615165565b60006020828403121561534857600080fd5b5035919050565b600481106113a657600080fd5b60008060006060848603121561537157600080fd5b833561537c81615165565b9250602084013561538c8161534f565b9150604084013561539c81615165565b809150509250925092565b6000806000606084860312156153bc57600080fd5b833592506153cc602085016151be565b9150604084013590509250925092565b600080604083850312156153ef57600080fd5b82356153fa8161534f565b946020939093013593505050565b6000806040838503121561541b57600080fd5b823561542681615165565b915060208301356154368161534f565b809150509250929050565b60005b8381101561545c578181015183820152602001615444565b50506000910152565b6020815260008251806020840152615484816040850160208701615441565b601f01601f19169190910160400192915050565b600080604083850312156154ab57600080fd5b82356153fa81615165565b6020808252825182820181905260009190848201906040850190845b818110156154ee578351835292840192918401916001016154d2565b50909695505050505050565b60008060006060848603121561550f57600080fd5b8335925060208401356002811061552557600080fd5b929592945050506040919091013590565b6000806000806080858703121561554c57600080fd5b8435935061555c602086016151be565b925061556a604086016151be565b915061530e606086016151aa565b6000806000806080858703121561558e57600080fd5b8435935061559e602086016151be565b92506040850135915061530e606086016151be565b6000806000606084860312156155c857600080fd5b833592506020840135615525816150ae565b6020808252825182820181905260009190848201906040850190845b818110156154ee5783516001600160a01b0316835292840192918401916001016155f6565b6000806040838503121561562e57600080fd5b82359150602083013561543681615191565b634e487b7160e01b600052602160045260246000fd5b6006811061566657615666615640565b9052565b87815260e0810161567e6020830189615656565b6001600160401b03968716604083015263ffffffff958616606083015293151560808201529190941660a08201529290911660c09092019190915292915050565b6000806000606084860312156156d457600080fd5b83356156df81615165565b95602085013595506040909401359392505050565b60e08101615702828a615656565b6001600160401b0397909716602082015261ffff959095166040860152921515606085015263ffffffff9190911660808401526001600160a01b031660a083015260c090910152919050565b600080600080600060a0868803121561576657600080fd5b85359450615776602087016151be565b9350615784604087016151be565b9250615792606087016151be565b91506157a0608087016151be565b90509295509295909350565b6000806000606084860312156157c157600080fd5b83356157cc81615165565b9250602084013561538c81615165565b600080600080608085870312156157f257600080fd5b84356157fd81615165565b9350602085013561580d81615165565b925061556a6040860161517a565b6000806000806080858703121561583157600080fd5b843593506020850135615843816150ae565b9250615851604086016151be565b915061530e606086016151be565b60008060006060848603121561587457600080fd5b83359250615884602085016151be565b9150615892604085016151be565b90509250925092565b600080600080600060a086880312156158b357600080fd5b8535945060208601356158c58161534f565b93506158d3604087016151be565b92506158e1606087016151be565b91506157a0608087016151aa565b60008060006060848603121561590457600080fd5b833561590f81615165565b9250602084013561552581615165565b8051825263ffffffff602082015116602083015260408101511515604083015260608101516001600160401b03808216606085015280608084015116608085015250505050565b60a08101611f17828461591f565b606081016159828286615656565b6001600160401b039390931660208201526001600160a01b0391909116604090910152919050565b6000602082840312156159bc57600080fd5b81516114d381615191565b6020808252600e908201526d08551c9859195c9cd41bdc9d185b60921b604082015260600190565b6020808252600b908201526a1410525497d4105554d15160aa1b604082015260600190565b6101e08101615a238288615656565b63ffffffff808716602084015260018060a01b0380875116604085015261ffff6020880151166060850152806040880151166080850152508451151560a0840152602085015160c08401528060408601511660e0840152506060840151610100615a97818501836001600160401b03169052565b60808601516001600160401b0390811661012086015260a0870151811661014086015260c0870151811661016086015260e087015181166101808601529501519094166101a083015263ffffffff929092166101c090910152949350505050565b600060208284031215615b0a57600080fd5b81516114d381615165565b600060208284031215615b2757600080fd5b5051919050565b60208082526009908201526821547269676765727360b81b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b63ffffffff818116838216019080821115615b8457615b84615b51565b5092915050565b6020808252600a908201526927a7262cafa0a226a4a760b11b604082015260600190565b8082028115828204841417611f1757611f17615b51565b634e487b7160e01b600052601260045260246000fd5b600082615beb57615beb615bc6565b500490565b60008251615c02818460208701615441565b9190910192915050565b60208082526010908201526f2727afa9aaa1a42fa827a9a4aa24a7a760811b604082015260600190565b6020808252600b908201526a57524f4e475f504841534560a81b604082015260600190565b81810381811115611f1757611f17615b51565b6001600160401b03828116828216039080821115615b8457615b84615b51565b6001600160401b03818116838216019080821115615b8457615b84615b51565b80820260008212600160ff1b84141615615cca57615cca615b51565b8181058314821517611f1757611f17615b51565b60008060408385031215615cf157600080fd5b505080516020909101519092909150565b600060033d11156151625760046000803e5060005160e01c90565b600060443d1015615d2b5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615d5a57505050505090565b8285019150815181811115615d725750505050505090565b843d8701016020828501011115615d8c5750505050505090565b615d9b6020828601018761511c565b509095945050505050565b805160208201516001600160e01b03198082169291906004831015615dd55780818460040360031b1b83161693505b505050919050565b6040810160128410615df157615df1615640565b9281526020015290565b8681526001600160a01b038616602082015261ffff851660408201526101408101615e29606083018661591f565b8361010083015260058310615e4057615e40615640565b82610120830152979650505050505050565b60008060008060808587031215615e6857600080fd5b505082516020840151604085015160609095015191969095509092509050565b80820180821115611f1757611f17615b51565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000600160ff1b8201615edc57615edc615b51565b5060000390565b600782810b9082900b03677fffffffffffffff198112677fffffffffffffff82131715611f1757611f17615b51565b600082615f2157615f21615bc6565b600160ff1b821460001984141615615f3b57615f3b615b51565b50059056fea264697066735822122028196bf46847a608bdd4e3f7a9072895317a66204d24b1d8cc100e78d4c6771564736f6c63430008180033";
18
18
  static readonly abi: readonly [{
19
19
  readonly inputs: readonly [{
20
20
  readonly internalType: "enum LexErrors.CapType";
@@ -105,6 +105,21 @@ export declare class TradingFloorV1__factory extends ContractFactory {
105
105
  }];
106
106
  readonly name: "IncorrectTraderIndex";
107
107
  readonly type: "event";
108
+ }, {
109
+ readonly anonymous: false;
110
+ readonly inputs: readonly [{
111
+ readonly indexed: true;
112
+ readonly internalType: "address";
113
+ readonly name: "asset";
114
+ readonly type: "address";
115
+ }, {
116
+ readonly indexed: false;
117
+ readonly internalType: "uint256";
118
+ readonly name: "threshold";
119
+ readonly type: "uint256";
120
+ }];
121
+ readonly name: "MaxProfitBypassThresholdUpdated";
122
+ readonly type: "event";
108
123
  }, {
109
124
  readonly anonymous: false;
110
125
  readonly inputs: readonly [{
@@ -606,6 +621,26 @@ export declare class TradingFloorV1__factory extends ContractFactory {
606
621
  }];
607
622
  readonly name: "SettlementAssetAdded";
608
623
  readonly type: "event";
624
+ }, {
625
+ readonly anonymous: false;
626
+ readonly inputs: readonly [{
627
+ readonly indexed: true;
628
+ readonly internalType: "bytes32";
629
+ readonly name: "positionId";
630
+ readonly type: "bytes32";
631
+ }, {
632
+ readonly indexed: true;
633
+ readonly internalType: "address";
634
+ readonly name: "trader";
635
+ readonly type: "address";
636
+ }, {
637
+ readonly indexed: false;
638
+ readonly internalType: "uint256";
639
+ readonly name: "rebateAmount";
640
+ readonly type: "uint256";
641
+ }];
642
+ readonly name: "SkewIncentiveRebate";
643
+ readonly type: "event";
609
644
  }, {
610
645
  readonly inputs: readonly [];
611
646
  readonly name: "ACCURACY_IMPROVEMENT_SCALE";
@@ -1135,6 +1170,20 @@ export declare class TradingFloorV1__factory extends ContractFactory {
1135
1170
  }];
1136
1171
  readonly stateMutability: "view";
1137
1172
  readonly type: "function";
1173
+ }, {
1174
+ readonly inputs: readonly [{
1175
+ readonly internalType: "address";
1176
+ readonly name: "";
1177
+ readonly type: "address";
1178
+ }];
1179
+ readonly name: "maxProfitBypassThresholdByAsset";
1180
+ readonly outputs: readonly [{
1181
+ readonly internalType: "uint256";
1182
+ readonly name: "";
1183
+ readonly type: "uint256";
1184
+ }];
1185
+ readonly stateMutability: "view";
1186
+ readonly type: "function";
1138
1187
  }, {
1139
1188
  readonly inputs: readonly [];
1140
1189
  readonly name: "maxSanityProfitF";
@@ -1385,6 +1434,20 @@ export declare class TradingFloorV1__factory extends ContractFactory {
1385
1434
  }];
1386
1435
  readonly stateMutability: "view";
1387
1436
  readonly type: "function";
1437
+ }, {
1438
+ readonly inputs: readonly [{
1439
+ readonly internalType: "address";
1440
+ readonly name: "asset";
1441
+ readonly type: "address";
1442
+ }, {
1443
+ readonly internalType: "uint256";
1444
+ readonly name: "threshold";
1445
+ readonly type: "uint256";
1446
+ }];
1447
+ readonly name: "setMaxProfitBypassThreshold";
1448
+ readonly outputs: readonly [];
1449
+ readonly stateMutability: "nonpayable";
1450
+ readonly type: "function";
1388
1451
  }, {
1389
1452
  readonly inputs: readonly [{
1390
1453
  readonly internalType: "bytes32";
@@ -1 +1 @@
1
- {"version":3,"file":"TradingFloorV1__factory.d.ts","sourceRoot":"","sources":["../../../../../../../../lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TradingFloorV1__factory.d.ts","sourceRoot":"","sources":["../../../../../../../../lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export declare class TriggersV1__factory extends ContractFactory {
14
14
  deploymentTransaction(): ContractTransactionResponse;
15
15
  }>;
16
16
  connect(runner: ContractRunner | null): TriggersV1__factory;
17
- static readonly bytecode = "0x6101206040526003600755603c6008556003600955603c600a55603c600b55603c600c556078600d5560b4600e55610708600f556103e8620186a060016200004891906200029e565b620000549190620002ca565b6010556103e86200006a620186a060026200029e565b620000769190620002ca565b601155620186a06200008a8160056200029e565b620000969190620002ca565b6012556003601355348015620000ab57600080fd5b506040516200628338038062006283833981016040819052620000ce9162000306565b806001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000306565b606462000145620186a060016200029e565b620001519190620002ca565b606462000163620186a0600a6200029e565b6200016f9190620002ca565b600080546001600160a01b0319163317905560805260a0526001600160a01b0390811660c0528116620001b557604051635863f78960e01b815260040160405180910390fd5b6001600160a01b03811660e081905260408051637b10399960e01b81529051637b103999916004808201926020929091908290030181865afa15801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062000306565b6001600160a01b031663776af5ba6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a919062000306565b6001600160a01b031661010052506200032d565b8082028115828204841417620002c457634e487b7160e01b600052601160045260246000fd5b92915050565b600082620002e857634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03811681146200030357600080fd5b50565b6000602082840312156200031957600080fd5b81516200032681620002ed565b9392505050565b60805160a05160c05160e05161010051615e1c62000467600039600081816109b9015281816113be0152818161326f01526145e501526000818161048a01528181610f960152818161110a015281816115a2015281816116dc01528181611815015281816119a901528181611a0c01528181611c9801528181611d3301528181611e8f01528181612236015281816122ae015281816123f601528181612595015281816126f40152818161286f0152818161295601528181612ff00152818161312a0152818161333f01528181613a3801528181613ecc01528181613f7d0152818161400c01528181614126015281816142100152818161434f015281816146e40152614c210152600081816137e50152613c5901526000818161064d0152613cb4015260008181610c9c01526148850152615e1c6000f3fe6080604052600436106104515760003560e01c8063771ad70d1161023f578063b16f579f11610139578063e01e4bb2116100b6578063ee3ed22e1161007a578063ee3ed22e14610d87578063f5f5ba7214610d9e578063f851a44014610dd1578063fae5a83f14610df1578063fd057e9414610e1157600080fd5b8063e01e4bb214610d13578063e0b7d50b14610d29578063e231377014610d3f578063e8051b0114610d5f578063e9c714f214610d7257600080fd5b8063b81bfa05116100fd578063b81bfa0514610c6a578063b88750a914610c8a578063bfc084d914610cbe578063c4ae316814610cde578063d99dc0c114610cf357600080fd5b8063b16f579f14610bd1578063b187bd2614610bf1578063b71d1a0c14610c12578063b71f3cfe14610c32578063b767e7e814610c4a57600080fd5b80639abf1782116101c7578063a9f7c5211161018b578063a9f7c52114610b4d578063aaf5eb6814610b60578063ad169c9c14610b7c578063ad1f2b5614610b9c578063af74c38214610bb157600080fd5b80639abf178214610aa45780639f918f4514610ac4578063a1d627a114610af7578063a5b6020814610b17578063a5e02c8d14610b2d57600080fd5b806380193b261161020e57806380193b2614610a075780638140520514610a1e57806386c7f19a14610a345780638aa1043514610a565780638f06222714610a8357600080fd5b8063771ad70d14610994578063776af5ba146109a75780637f31c2db146109db5780637f588b91146109f157600080fd5b80633b3216661161035057806358cc4b2c116102d8578063619cdd281161029c578063619cdd28146108f45780636447dc8b1461092e5780636c1bb5ca14610941578063718ddc14146109615780637670d9481461097457600080fd5b806358cc4b2c146108355780635d2cdfea146108555780635dce36fb146108885780635f48bd331461089e578063614d08f8146108be57600080fd5b806345b617131161031f57806345b61713146107b9578063490580e3146107cf5780634bdf1973146107ef5780634cdb06a5146108025780634d3691511461082257600080fd5b80633b321666146107485780633be3d6261461075b5780633ce8e10214610770578063410c0b7c146107a357600080fd5b806326b4120a116103de57806336930d0b116103a257806336930d0b1461066f57806336b669f71461068f57806338267257146106d557806338b90333146106f5578063392503e01461073257600080fd5b806326b4120a146105b55780632f86d7c2146105d5578063330596f4146105f557806333511e5e1461060b57806333a01d321461063b57600080fd5b8063221407af11610425578063221407af1461051a57806322ede93c1461052d57806325577e9f146105435780632649169814610563578063267822471461059557600080fd5b80624b8eb4146104565780630d3b0b761461047857806310b4cc13146104c957806320cb5976146104ed575b600080fd5b34801561046257600080fd5b50610476610471366004615286565b610e31565b005b34801561048457600080fd5b506104ac7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104d557600080fd5b506104df60105481565b6040519081526020016104c0565b3480156104f957600080fd5b506104df610508366004615286565b60146020526000908152604090205481565b6104766105283660046152ea565b610f0b565b34801561053957600080fd5b506104df60115481565b34801561054f57600080fd5b5061047661055e366004615347565b6111ec565b34801561056f57600080fd5b506016546105809063ffffffff1681565b60405163ffffffff90911681526020016104c0565b3480156105a157600080fd5b506001546104ac906001600160a01b031681565b3480156105c157600080fd5b506104766105d0366004615286565b611224565b3480156105e157600080fd5b506104766105f0366004615286565b611281565b34801561060157600080fd5b506104df60095481565b34801561061757600080fd5b5061062b61062636600461538c565b611300565b60405190151581526020016104c0565b34801561064757600080fd5b506104df7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067b57600080fd5b5061047661068a366004615286565b611322565b6106a261069d3660046152ea565b6114e5565b60408051825181526020808401516001600160401b039081169183019190915292820151909216908201526060016104c0565b3480156106e157600080fd5b506104766106f0366004615286565b611518565b34801561070157600080fd5b50610725604051806040016040528060048152602001633130303760e01b81525081565b6040516104c091906153ef565b34801561073e57600080fd5b506104df600f5481565b6104766107563660046152ea565b611785565b34801561076757600080fd5b50610476611b2b565b34801561077c57600080fd5b5061058061078b366004615412565b60156020526000908152604090205463ffffffff1681565b3480156107af57600080fd5b506104df600c5481565b3480156107c557600080fd5b506104df60075481565b3480156107db57600080fd5b506104766107ea366004615286565b611bbd565b6104766107fd3660046152ea565b611c0e565b34801561080e57600080fd5b5061047661081d366004615286565b611f68565b6104766108303660046152ea565b611fd1565b34801561084157600080fd5b5061047661085036600461542f565b612064565b34801561086157600080fd5b50610580610870366004615286565b60056020526000908152604090205463ffffffff1681565b34801561089457600080fd5b506104df600a5481565b3480156108aa57600080fd5b506104766108b9366004615286565b612106565b3480156108ca57600080fd5b506107256040518060400160405280600a8152602001695472696767657273563160b01b81525081565b34801561090057600080fd5b506107256040518060400160405280600e81526020016d534b45575f494e43454e5449564560901b81525081565b61047661093c3660046152ea565b612190565b34801561094d57600080fd5b5061047661095c366004615347565b6124d1565b61047661096f3660046152ea565b612505565b34801561098057600080fd5b5061047661098f366004615286565b61276c565b6104766109a23660046152ea565b6127c9565b3480156109b357600080fd5b506104ac7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109e757600080fd5b506104df60085481565b3480156109fd57600080fd5b506104df600b5481565b348015610a1357600080fd5b506104df620186a081565b348015610a2a57600080fd5b506104df60135481565b348015610a4057600080fd5b50610a49612a2f565b6040516104c0919061544c565b348015610a6257600080fd5b506040805180820190915260048152633130303760e01b6020820152610725565b348015610a8f57600080fd5b5060165461062b90600160281b900460ff1681565b348015610ab057600080fd5b50610476610abf366004615286565b612a40565b348015610ad057600080fd5b50610580610adf366004615286565b60046020526000908152604090205463ffffffff1681565b348015610b0357600080fd5b506006546104ac906001600160a01b031681565b348015610b2357600080fd5b506104df600e5481565b348015610b3957600080fd5b50610476610b4836600461538c565b612a9d565b610476610b5b3660046152ea565b612ad0565b348015610b6c57600080fd5b506104df670de0b6b3a764000081565b348015610b8857600080fd5b50610476610b97366004615286565b612b63565b348015610ba857600080fd5b506104df606481565b348015610bbd57600080fd5b50610476610bcc366004615286565b612bfc565b348015610bdd57600080fd5b50610580610bec366004615412565b612c71565b348015610bfd57600080fd5b5060165461062b90600160201b900460ff1681565b348015610c1e57600080fd5b50610476610c2d36600461538c565b612c9e565b348015610c3e57600080fd5b506104df633b9aca0081565b348015610c5657600080fd5b50610476610c65366004615499565b612d46565b348015610c7657600080fd5b50610476610c85366004615286565b612dfc565b348015610c9657600080fd5b506104df7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cca57600080fd5b50610476610cd9366004615286565b612e4f565b348015610cea57600080fd5b50610476612eac565b348015610cff57600080fd5b50610476610d0e36600461538c565b612f33565b348015610d1f57600080fd5b506104df600d5481565b348015610d3557600080fd5b506104df60125481565b348015610d4b57600080fd5b50610476610d5a366004615286565b612f66565b610476610d6d3660046152ea565b6131d3565b348015610d7e57600080fd5b50610476613519565b348015610d9357600080fd5b50610580620186a081565b348015610daa57600080fd5b5060408051808201909152600a8152695472696767657273563160b01b6020820152610725565b348015610ddd57600080fd5b506000546104ac906001600160a01b031681565b348015610dfd57600080fd5b50610476610e0c36600461538c565b613637565b348015610e1d57600080fd5b50610476610e2c366004615286565b613755565b6000546001600160a01b03163314610e645760405162461bcd60e51b8152600401610e5b906154c7565b60405180910390fd5b801580610e7357506008548111155b80610e805750600a548111155b15610e9e57604051632635240760e21b815260040160405180910390fd5b600d8190556040517f6d61726b65744f726465727341637469766174696f6e54696d654c696d6974008152601f015b604051908190038120828252907f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab906020015b60405180910390a250565b601654600160281b900460ff1615610f36576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615610f615760405163ab35696f60e01b815260040160405180910390fd5b610f6a33611300565b610f865760405162461bcd60e51b8152600401610e5b906154eb565b610f8e6137e3565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050886040518263ffffffff1660e01b8152600401610fe291815260200190565b60e060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110239190615556565b509550505093506001600160401b03169350935082600003611058576040516354cf754d60e01b815260040160405180910390fd5b600484600581111561106c5761106c6155de565b1461108a576040516377edf34f60e01b815260040160405180910390fd5b600061109c8361ffff16348989613858565b90506110ad84826000015185613912565b6020810151806110bb6139e3565b60006110c88b8688613a33565b6020850151604051632859f7cb60e11b8152600481018e90526001600160401b039182166024820152908416604482015263ffffffff821660648201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906350b3ef9690608401600060405180830381600087803b15801561115657600080fd5b505af115801561116a573d6000803e3d6000fd5b50505050876005811115611180576111806155de565b6020858101518651604080516001600160401b038881168252909316938301939093528183015290518d9133917f5b5ec0827d50049e9f15c1d5c28dc87d620987ef82a18f0b98afac1c76076d3d9181900360600190a450505050505050506111e7613c57565b505050565b6000546001600160a01b031633146112165760405162461bcd60e51b8152600401610e5b906154c7565b6112208282613cb2565b5050565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610e5b906154c7565b600e8190556040517f6d61726b65744f72646572546967687454696d6552616e6765000000000000008152601901610ecd565b6000546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610e5b906154c7565b60085481106112cd57604051632635240760e21b815260040160405180910390fd5b60078190556040517f6d696e54726967676572506572696f64466f724d61726b65744f7264657273008152601f01610ecd565b6001600160a01b03811660009081526003602052604081205415155b92915050565b601654600160281b900460ff161561134d576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156113785760405163ab35696f60e01b815260040160405180910390fd5b61138133611300565b61139d5760405162461bcd60e51b8152600401610e5b906154eb565b6113a56137e3565b60405163c608b6c160e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af115801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190615661565b9050600c5481604001516001600160401b031661145091906156ea565b42101561147057604051632c79c1b960e21b815260040160405180910390fd5b80602001516003811115611486576114866155de565b60608201516080830151604080516001600160401b039384168152929091166020830152849133917f7b5b2e57aed6ee99244bd22f2b43e33e9fcbf0d77a9f425d59ee2d74e1c3795d910160405180910390a4506114e2613c57565b50565b604080516060810182526000808252602082018190529181019190915261150e84348585613858565b90505b9392505050565b601654600160281b900460ff1615611543576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561156e5760405163ab35696f60e01b815260040160405180910390fd5b61157733611300565b6115935760405162461bcd60e51b8152600401610e5b906154eb565b61159b6137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050856040518263ffffffff1660e01b81526004016115ee91815260200190565b60e060405180830381865afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f9190615556565b5050505092506001600160401b0316925092508160000361166357604051632af0900d60e21b815260040160405180910390fd5b6004836005811115611677576116776155de565b14611695576040516377edf34f60e01b815260040160405180910390fd5b600c546116a290836156ea565b4210156116c257604051632c79c1b960e21b815260040160405180910390fd5b601054604051634ebe5c3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691634ebe5c3391611715918891600191906004016156fd565b600060405180830381600087803b15801561172f57600080fd5b505af1158015611743573d6000803e3d6000fd5b505060405161ffff8416925086915033907f89a3ecf5024675f1d0abc6dc42608fc41216f103c12c2c84f8ca3938bd055f0390600090a45050506114e2613c57565b601654600160281b900460ff16156117b0576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156117db5760405163ab35696f60e01b815260040160405180910390fd5b6117e433611300565b6118005760405162461bcd60e51b8152600401610e5b906154eb565b6118086137e3565b60008060008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be50508b6040518263ffffffff1660e01b815260040161186191815260200190565b60e060405180830381865afa15801561187e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a29190615556565b965096509650965096506001600160401b031696509650856000036118da57604051631e622ef760e01b815260040160405180910390fd5b60028760058111156118ee576118ee6155de565b1461190c5760405163ad2b657360e01b815260040160405180910390fd5b600061191e8661ffff16348c8c613858565b905061192e878260000151613d71565b6020810151600061194561ffff891683888a613dd1565b90506119568d89838a8e6002613ec4565b6119695750505050505050505050611b23565b6119716139e3565b601154604051631ea9af6b60e01b8152600481018f90526001600160401b038316602482015260448101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631ea9af6b906064015b600060405180830381600087803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b50505050611aaf8d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166303b90a87886040518263ffffffff1660e01b8152600401611a6591906001600160a01b0391909116815260200190565b602060405180830381865afa158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa69190615725565b878b8b8961420c565b896005811115611ac157611ac16155de565b6020848101518551604080516001600160401b038781168252909316938301939093528183015290518f9133917f60fab6e183a7c350210c0b457db01423b47aa3e72f5b735b8dbb3ecd3e8077439181900360600190a4505050505050505050505b6111e7613c57565b6000546001600160a01b03163314611b555760405162461bcd60e51b8152600401610e5b906154c7565b6016805460ff600160281b808304821615810265ff00000000001990931692909217928390556040517f8e47bd62470c6cba4d30c023548622607c9c84402a5655f2569b7934c36a9e4f93611bb39390049091161515815260200190565b60405180910390a1565b6000546001600160a01b03163314611be75760405162461bcd60e51b8152600401610e5b906154c7565b6013818155604051726d61785472696767657273506572426c6f636b60681b815201610ecd565b601654600160281b900460ff1615611c39576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615611c645760405163ab35696f60e01b815260040160405180910390fd5b611c6d33611300565b611c895760405162461bcd60e51b8152600401610e5b906154eb565b611c916137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050876040518263ffffffff1660e01b8152600401611ce491815260200190565b60e060405180830381865afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d259190615556565b5095505094509450505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f886040518263ffffffff1660e01b8152600401611d7f91815260200190565b608060405180830381865afa158015611d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906157cf565b90508361ffff16600003611de757604051632af0900d60e21b815260040160405180910390fd5b80606001516001600160401b0316600003611e15576040516301c65bd760e31b815260040160405180910390fd5b60208101516001600160401b03166000611e3561ffff8716348a8a613858565b9050611e45828260000151613d71565b60208101516060840151600090611e5e9083898b6144db565b9050611e686139e3565b6000611e758c888b613a33565b60405163ec18aded60e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ec18aded90611ecd908f906002908890889088906004016157eb565b600060405180830381600087803b158015611ee757600080fd5b505af1158015611efb573d6000803e3d6000fd5b50508551604080516001600160401b038088168252881660208201529081019190915261ffff8c1692508e915033907fb03dbc9368faf0f8588dc8429c40a26ef9a637488f1ea5521a2ba2bfb5ff20169060600160405180910390a45050505050505050506111e7613c57565b6000546001600160a01b03163314611f925760405162461bcd60e51b8152600401610e5b906154c7565b60118190556040517f6f70656e506f736974696f6e43616e63656c6c6174696f6e466565467261637481526234b7b760e91b6020820152602301610ecd565b601654600160281b900460ff1615611ffc576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156120275760405163ab35696f60e01b815260040160405180910390fd5b61203033611300565b61204c5760405162461bcd60e51b8152600401610e5b906154eb565b6120546137e3565b611b2383838360028060006145cc565b6000546001600160a01b0316331461208e5760405162461bcd60e51b8152600401610e5b906154c7565b620186a063ffffffff821611156120b857604051632646419960e11b815260040160405180910390fd5b6016805463ffffffff191663ffffffff83169081179091556040519081527f06ddabf029f0ad871d8e8c56f73e357cc18f651f56af47fddc1884a2d31405f49060200160405180910390a150565b6000546001600160a01b031633146121305760405162461bcd60e51b8152600401610e5b906154c7565b600a54811061215257604051632635240760e21b815260040160405180910390fd5b60098190556040517f6d696e54726967676572506572696f64466f724d61726b65744f726465727343815261185d60f21b6020820152602201610ecd565b601654600160281b900460ff16156121bb576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156121e65760405163ab35696f60e01b815260040160405180910390fd5b6121ef33611300565b61220b5760405162461bcd60e51b8152600401610e5b906154eb565b6122136137e3565b60405163095be50560e41b81526004810184905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa15801561227d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a19190615556565b50955050509350505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f876040518263ffffffff1660e01b81526004016122fa91815260200190565b608060405180830381865afa158015612317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233b91906157cf565b90508261ffff1660000361236257604051632af0900d60e21b815260040160405180910390fd5b80604001516001600160401b031660000361239057604051634f02277b60e01b815260040160405180910390fd5b80516001600160401b031660006123ad61ffff8616348989613858565b90506123bd828260000151613d71565b60208101516123ca6139e3565b60006123d78a8789613a33565b602084015160405163ec18aded60e01b81529192506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163ec18aded91612432918e91600191889088906004016157eb565b600060405180830381600087803b15801561244c57600080fd5b505af1158015612460573d6000803e3d6000fd5b505050506020838101518451604080516001600160401b0387811682529093169383019390935281830152905161ffff8916918c9133917fbe700227f721a08f3b755aa3348a63564c2c07890aba73de46372f7bffcaa2e2919081900360600190a4505050505050506111e7613c57565b6000546001600160a01b031633146124fb5760405162461bcd60e51b8152600401610e5b906154c7565b6112208282614883565b601654600160281b900460ff1615612530576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561255b5760405163ab35696f60e01b815260040160405180910390fd5b61256433611300565b6125805760405162461bcd60e51b8152600401610e5b906154eb565b6125886137e3565b60008060008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be50508b6040518263ffffffff1660e01b81526004016125e191815260200190565b60e060405180830381865afa1580156125fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126229190615556565b965096509650965096506001600160401b0316965096508560000361265a576040516354cf754d60e01b815260040160405180910390fd5b600187600581111561266e5761266e6155de565b1461268c576040516335637f8760e11b815260040160405180910390fd5b600061269e8661ffff16348c8c613858565b90506126af87826000015188613912565b602081015160006126c661ffff891683888a613dd1565b90506126d78d89838a8e6001613ec4565b6126ea5750505050505050505050611b23565b6126f26139e3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b214e128e8360115487600001516040518563ffffffff1660e01b81526004016119d494939291909384526001600160401b039283166020850152604084019190915216606082015260800190565b6000546001600160a01b031633146127965760405162461bcd60e51b8152600401610e5b906154c7565b600f8190556040517f74726967676572507269636546726573686e65737354696d6552616e676500008152601e01610ecd565b601654600160281b900460ff16156127f4576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561281f5760405163ab35696f60e01b815260040160405180910390fd5b61282833611300565b6128445760405162461bcd60e51b8152600401610e5b906154eb565b61284c6137e3565b60405163095be50560e41b81526004810184905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa1580156128b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128da9190615556565b5095505050935050508161ffff1660000361290857604051632af0900d60e21b815260040160405180910390fd5b600061291a8361ffff16348787613858565b602081015190915061292a6139e3565b6000612937888587613a33565b602084015160405163ec18aded60e01b81529192506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163ec18aded91612992918c91600391889088906004016157eb565b600060405180830381600087803b1580156129ac57600080fd5b505af11580156129c0573d6000803e3d6000fd5b505050506020838101518451604080516001600160401b0387811682529093169383019390935281830152905161ffff8716918a9133917f086bdd0cdd4ae322dd6112d05bdf96c020e6b90cc84ee2d39941bd716e18fb92919081900360600190a450505050506111e7613c57565b6060612a3b6002614950565b905090565b6000546001600160a01b03163314612a6a5760405162461bcd60e51b8152600401610e5b906154c7565b60108190556040517f6d61726b65744f7264657243616e63656c4665654672616374696f6e000000008152601c01610ecd565b6000546001600160a01b03163314612ac75760405162461bcd60e51b8152600401610e5b906154c7565b6114e28161495d565b601654600160281b900460ff1615612afb576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615612b265760405163ab35696f60e01b815260040160405180910390fd5b612b2f33611300565b612b4b5760405162461bcd60e51b8152600401610e5b906154eb565b612b536137e3565b611b2383838360018060016145cc565b6000546001600160a01b03163314612b8d5760405162461bcd60e51b8152600401610e5b906154c7565b60095481111580612ba05750600d548110155b15612bbe57604051632635240760e21b815260040160405180910390fd5b600a8190556040517f6d617854726967676572506572696f64466f724d61726b65744f726465727343815261185d60f21b6020820152602201610ecd565b6000546001600160a01b03163314612c265760405162461bcd60e51b8152600401610e5b906154c7565b80600003612c4757604051632635240760e21b815260040160405180910390fd5b6012819055604051733634b6b4ba39a6b0b933b4b7233930b1ba34b7b760611b8152601401610ecd565b61ffff811660009081526015602052604081205463ffffffff168061131c5760165463ffffffff16611511565b6000546001600160a01b03163314612ce45760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b6044820152606401610e5b565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6000546001600160a01b03163314612d705760405162461bcd60e51b8152600401610e5b906154c7565b620186a063ffffffff82161115612d9a57604051632646419960e11b815260040160405180910390fd5b61ffff8216600081815260156020908152604091829020805463ffffffff191663ffffffff861690811790915591519182527fa2a4acd376a1168953c22b4e4bc5acdde62a49e199b28c4f9b818cd312351f8c91015b60405180910390a25050565b6000546001600160a01b03163314612e265760405162461bcd60e51b8152600401610e5b906154c7565b600c819055604051721b585c9ad95d13dc99195c9cd51a5b595bdd5d606a1b8152601301610ecd565b6000546001600160a01b03163314612e795760405162461bcd60e51b8152600401610e5b906154c7565b600b8190556040517f6d696e54726967676572506572696f64466f724c696d69744f726465727300008152601e01610ecd565b6000546001600160a01b03163314612ed65760405162461bcd60e51b8152600401610e5b906154c7565b6016805460ff600160201b808304821615810264ff000000001990931692909217928390556040517fda88b5dfaac55549d4ddddd43a09d4b911233df354952ebc9ac2041aa185343693611bb39390049091161515815260200190565b6000546001600160a01b03163314612f5d5760405162461bcd60e51b8152600401610e5b906154c7565b6114e2816149eb565b601654600160281b900460ff1615612f91576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615612fbc5760405163ab35696f60e01b815260040160405180910390fd5b612fc533611300565b612fe15760405162461bcd60e51b8152600401610e5b906154eb565b612fe96137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050856040518263ffffffff1660e01b815260040161303c91815260200190565b60e060405180830381865afa158015613059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307d9190615556565b5050505092506001600160401b031692509250816000036130b157604051632af0900d60e21b815260040160405180910390fd5b60018360058111156130c5576130c56155de565b146130e3576040516335637f8760e11b815260040160405180910390fd5b600c546130f090836156ea565b42101561311057604051632c79c1b960e21b815260040160405180910390fd5b601054604051636e01af8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636e01af8d9161316391889160019190600401615847565b600060405180830381600087803b15801561317d57600080fd5b505af1158015613191573d6000803e3d6000fd5b505060405161ffff8416925086915033907f5079795ec65f793d5a0ed74d8f8e1562b7795934b40612bf55cf0e5d55a3447990600090a45050506114e2613c57565b601654600160281b900460ff16156131fe576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156132295760405163ab35696f60e01b815260040160405180910390fd5b61323233611300565b61324e5760405162461bcd60e51b8152600401610e5b906154eb565b6132566137e3565b60405163c608b6c160e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af11580156132c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e49190615661565b90506003816020015160038111156132fe576132fe6155de565b1461331c57604051638e85495d60e01b815260040160405180910390fd5b60405163095be50560e41b81526004810185905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa158015613386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133aa9190615556565b50505093509350505060006133c58361ffff16348888613858565b90506133e384604001516001600160401b0316826000015185613912565b60006133fa85606001518360200151856001614a84565b9050600061341386608001518460200151866000614a84565b9050811580613420575080155b15613491578560200151600381111561343b5761343b6155de565b89336001600160a01b0316600080516020615dc783398151915260018a60600151886020015161346b8989614b6d565b600060405161347e959493929190615857565b60405180910390a4505050505050611b23565b6134996139e3565b6000836020015190506134b9338b896020015160018b6060015186614c07565b6134d6576040516366464a0d60e01b815260040160405180910390fd5b6134ed338b896020015160028b6080015186614c07565b61350a576040516355fa4e8d60e01b815260040160405180910390fd5b505050505050506111e7613c57565b6001546001600160a01b03163314801561353d57506001546001600160a01b031615155b6135895760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e00006044820152606401610e5b565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101612d3a565b6000546001600160a01b031633146136615760405162461bcd60e51b8152600401610e5b906154c7565b806001600160a01b0316634535dc4c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c391906158a4565b6136e057604051633b0a14a760e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383161790556040516d283934b1b2ab30b634b230ba37b960911b8152600e016040519081900381206001600160a01b0383168252907f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee4442278190602001610f00565b6000546001600160a01b0316331461377f5760405162461bcd60e51b8152600401610e5b906154c7565b600754811115806137925750600d548110155b156137b057604051632635240760e21b815260040160405180910390fd5b60088190556040517f6d617854726967676572506572696f64466f724d61726b65744f7264657273008152601f01610ecd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f83d08ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561383e57600080fd5b505af1158015613852573d6000803e3d6000fd5b50505050565b604080516060810182526000808252602082018190529181018290529061388186868686614e73565b60008781526004602090815260408220549083015192935063ffffffff16916138b3906001600160401b031683614f0e565b90508083604001516001600160401b031611156138e3576040516356365bf760e01b815260040160405180910390fd5b825142101561390457604051626f84e160e11b815260040160405180910390fd5b50909150505b949350505050565b61271061ffff82161160008161392a5760075461392e565b6009545b905060008261393f57600854613943565b600a545b9050600061395183886156ea565b9050600061395f83896156ea565b90508142101561398257604051631c954b4f60e21b815260040160405180910390fd5b600d5461398f90896156ea565b4211156139ae5760405162ca779960e21b815260040160405180910390fd5b818710806139bb57508087115b156139d957604051638b291a5360e01b815260040160405180910390fd5b5050505050505050565b436000908152601460205260409020546013548110613a1557604051630162832b60e61b815260040160405180910390fd5b613a208160016156ea565b4360009081526014602052604090205550565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab89190615725565b604080518082018252600e81526d534b45575f494e43454e5449564560901b60208201529051632c652ce760e11b81526001600160a01b0392909216916358ca59ce91613b07916004016153ef565b602060405180830381865afa158015613b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b489190615725565b90506001600160a01b038116613b62576000915050611511565b6040516330c9e15760e21b8152600481018690526001600160a01b03858116602483015261ffff8516604483015282169063c327855c906064016020604051808303816000875af1925050508015613bd7575060408051601f3d908101601f19168201909252613bd4918101906158bf565b60015b613c4e573d808015613c05576040519150601f19603f3d011682016040523d82523d6000602084013e613c0a565b606091505b50857f016ef3e646cfc2493bc3c5e66d4a0ab6cedd692c3caef68704146982fc98660a82604051613c3b91906153ef565b60405180910390a2600092505050611511565b91506115119050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340da020f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561383e57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161115613d1a5760405162461bcd60e51b815260206004820152600f60248201526e0a6a0a48a8288bea89e9ebe90928e9608b1b6044820152606401610e5b565b600082815260056020908152604091829020805463ffffffff191663ffffffff8516908117909155915191825283917ffe5fd0852fab5f8ba593533cf24a4b4b235704c0e06956d0a58cc2ca0a4b6b449101612df0565b6000600b5483613d8191906156ea565b905080421015613da45760405163eb72c9ab60e01b815260040160405180910390fd5b80821015613dc55760405163a765b7ab60e01b815260040160405180910390fd5b6111e782600f54614f28565b6000620186a08363ffffffff161115613e2c5760405162461bcd60e51b815260206004820152601960248201527f5350524541445f524544554354494f4e5f544f4f5f48494748000000000000006044820152606401610e5b565b600085815260056020526040812054620186a090613e5a906001600160401b0388169063ffffffff166158dc565b613e6491906158f3565b90506000620186a0613e7c63ffffffff871684615915565b6001600160401b0316613e8f91906158f3565b613e999083615940565b905083613eaf57613eaa8187615940565b613eb9565b613eb98187615960565b979650505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f8b6040518263ffffffff1660e01b8152600401613f1891815260200190565b608060405180830381865afa158015613f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5991906157cf565b60405163ddf474f160e01b8152600481018c90529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ddf474f190602401608060405180830381865afa158015613fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fe891906157cf565b604051638f7a8fb560e01b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638f7a8fb59060240160e060405180830381865afa158015614053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140779190615980565b9050614094836040015183604001518c84606001518d6001614f78565b94506140b1836060015183606001518c84606001518d6000614f78565b93505050506000826001600160401b0316600014806140d857506140d88389896001614a84565b905060006001600160401b03831615806140fa57506140fa838a8a6000614a84565b9050811580614107575080155b156141f957601154604051636e01af8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636e01af8d9161415e918f918b9190600401615847565b600060405180830381600087803b15801561417857600080fd5b505af115801561418c573d6000803e3d6000fd5b505050508660058111156141a2576141a26155de565b8b337ff83a7472720a3cf234601433618092ec0838ad712b481376cd7860b9fe7397558d8d89896141d38a8a614b6d565b6040516141e4959493929190615a3a565b60405180910390a46000945050505050614202565b60019450505050505b9695505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561426c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142909190615725565b604080518082018252600e81526d534b45575f494e43454e5449564560901b60208201529051632c652ce760e11b81526001600160a01b0392909216916358ca59ce916142df916004016153ef565b602060405180830381865afa1580156142fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143209190615725565b90506001600160a01b03811661433657506144d3565b60405163f555f69760e01b8152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f555f6979060240160a060405180830381865afa15801561439e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143c29190615a78565b905060006143da84836020015163ffffffff166150a9565b604051632721548d60e21b8152600481018b90526001600160a01b038a81166024830152898116604483015261ffff89166064830152871515608483015260a4820187905260c4820183905291925090841690639c8552349060e401600060405180830381600087803b15801561445057600080fd5b505af1925050508015614461575060015b6144cf573d80801561448f576040519150601f19603f3d011682016040523d82523d6000602084013e614494565b606091505b50897f3961e1425e2fd3d7681d1d6266aab1d85c34839a03fdfd9756864966f6e133b7826040516144c591906153ef565b60405180910390a2505b5050505b505050505050565b6000806144e783612c71565b90508063ffffffff16600003614500578491505061390a565b6000620186a061451f63ffffffff84166001600160401b038a166158dc565b61452991906158f3565b905080851561459f57806001600160401b0316886001600160401b031610156145655760405163ac658add60e01b815260040160405180910390fd5b6000614571828a615940565b9050806001600160401b0316886001600160401b0316116145925780614594565b875b94505050505061390a565b60006145ab828a615960565b9050806001600160401b0316886001600160401b0316106145925780614594565b60405163c608b6c160e01b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af1158015614636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465a9190615661565b905083600381111561466e5761466e6155de565b81602001516003811115614684576146846155de565b146146c15781156146a857604051639097017560e01b815260040160405180910390fd5b604051633ee7586d60e21b815260040160405180910390fd5b60405163095be50560e41b81526004810188905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa15801561472b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061474f9190615556565b505050935093505050600061476a8361ffff16348b8b613858565b905061478884604001516001600160401b0316826000015185613912565b61479c846060015182602001518488614a84565b61485457836020015160038111156147b6576147b66155de565b8a336001600160a01b0316600080516020615dc783398151915289886060015186602001518b61480a576040518060400160405280600c81526020016b534c5f544f4f5f434c4f534560a01b815250614830565b6040518060400160405280600c81526020016b54505f544f4f5f434c4f534560a01b8152505b6000604051614843959493929190615857565b60405180910390a4505050506144d3565b61485c6139e3565b614876338b86602001518988606001518660200151614c07565b5050505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff1611156148f95760405162461bcd60e51b815260206004820152601c60248201527f434f4e464944454e43455f4652414354494f4e5f544f4f5f48494748000000006044820152606401610e5b565b600082815260046020908152604091829020805463ffffffff191663ffffffff8516908117909155915191825283917f88e6fad616d859d6fba20e93ab2acbf0756b6bc2d90c6002000f709f510cadb09101612df0565b60606000611511836150b7565b61496681611300565b6149a85760405162461bcd60e51b81526020600482015260136024820152721050d0d3d5539517d393d517d0531313d5d151606a1b6044820152606401610e5b565b6149b3600282615113565b506040516001600160a01b038216907fc985d67a353004ba149a223b2b9e5c13cca6610b11cb45b4aa029c880d8f7cb590600090a250565b6149f481611300565b15614a415760405162461bcd60e51b815260206004820152601760248201527f4143434f554e545f414c52454144595f414c4c4f5745440000000000000000006044820152606401610e5b565b614a4c600282615128565b506040516001600160a01b038216907fc5944eab072face4b169928723314c5978080e99ed8f8527faedb18c06664c3590600090a250565b6000846001600160401b0316600003614a9f5750600161390a565b6000614ac8856001600160401b031660001960125414614ac157601254614f0e565b6000614f0e565b90508215614b1f5783614af857614ae8816001600160401b038716615ab9565b866001600160401b031610614b17565b614b0b816001600160401b0387166156ea565b866001600160401b0316115b91505061390a565b83614b4757614b37816001600160401b0387166156ea565b866001600160401b031611614b17565b614b5a816001600160401b038716615ab9565b866001600160401b03161091505061390a565b606082158015614b7b575081155b15614bb0575060408051808201909152601381527254505f414e445f534c5f544f4f5f434c4f534560681b602082015261131c565b82614bde575060408051808201909152600c81526b54505f544f4f5f434c4f534560a01b602082015261131c565b5060408051808201909152600c81526b534c5f544f4f5f434c4f534560a01b602082015261131c565b60405163c07f992160e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c07f992190614c5c908990889088908890600401615acc565b600060405180830381600087803b158015614c7657600080fd5b505af1925050508015614c87575060015b614e1357614c93615b01565b806308c379a003614d075750614ca7615b1d565b80614cb25750614d09565b856003811115614cc457614cc46155de565b87896001600160a01b0316600080516020615dc7833981519152888888876000604051614cf5959493929190615857565b60405180910390a46000915050614202565b505b3d808015614d33576040519150601f19603f3d011682016040523d82523d6000602084013e614d38565b606091505b50632eb752bf60e21b614d4a82615ba6565b6001600160e01b03191603614dfa576001856002811115614d6d57614d6d6155de565b14614d8b5760405163b39155f760e01b815260040160405180910390fd5b60248101516044820151876003811115614da757614da76155de565b898b6001600160a01b0316600080516020615dc78339815191528a8a8a886011811115614dd657614dd66155de565b604051614de69493929190615bdd565b60405180910390a460009350505050614202565b604051630992185360e41b815260040160405180910390fd5b846003811115614e2557614e256155de565b86886001600160a01b03167ff0ac91a20375484f5a80315763782e4fe4b42bd038b08ba4939ff1a506974edf878787604051614e6393929190615c2c565b60405180910390a4506001614202565b6040805160608101825260008082526020820181905281830152600654915163f4a6a09360e01b815290916001600160a01b03169063f4a6a093908690614ec290899088908890600401615c80565b60606040518083038185885af1158015614ee0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614f059190615d28565b95945050505050565b6000620186a0614f1e83856158dc565b61151191906158f3565b6000614f348242615ab9565b905080831015614f575760405163c9cf1f8b60e01b815260040160405180910390fd5b428311156111e7576040516314778a4960e31b815260040160405180910390fd5b60006001600160401b03871615614f90575085614202565b856001600160401b0316600003614fa957506000614202565b8363ffffffff16600003614fd057604051633fe89cb960e11b815260040160405180910390fd5b600063ffffffff8516620186a06064614ff56001600160401b03808c16908b166158dc565b614fff91906158dc565b61500991906158f3565b61501391906158f3565b90508215615062578361505057856001600160401b0316816001600160401b03161015615049576150448187615940565b61505a565b600061505a565b61505a8187615960565b915050614202565b83615076576150718187615960565b61509d565b856001600160401b0316816001600160401b0316101561509a576150718187615940565b60005b98975050505050505050565b60006064614f1e83856158dc565b60608160000180548060200260200160405190810160405280929190818152602001828054801561510757602002820191906000526020600020905b8154815260200190600101908083116150f3575b50505050509050919050565b6000611511836001600160a01b03841661513d565b6000611511836001600160a01b038416615237565b60008181526001830160205260408120548015615226576000615161600183615ab9565b855490915060009061517590600190615ab9565b90508082146151da57600086600001828154811061519557615195615d9a565b90600052602060002001549050808760000184815481106151b8576151b8615d9a565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806151eb576151eb615db0565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061131c565b600091505061131c565b5092915050565b600081815260018301602052604081205461527e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561131c565b50600061131c565b60006020828403121561529857600080fd5b5035919050565b60008083601f8401126152b157600080fd5b5081356001600160401b038111156152c857600080fd5b6020830191508360208260051b85010111156152e357600080fd5b9250929050565b6000806000604084860312156152ff57600080fd5b8335925060208401356001600160401b0381111561531c57600080fd5b6153288682870161529f565b9497909650939450505050565b63ffffffff811681146114e257600080fd5b6000806040838503121561535a57600080fd5b82359150602083013561536c81615335565b809150509250929050565b6001600160a01b03811681146114e257600080fd5b60006020828403121561539e57600080fd5b813561151181615377565b6000815180845260005b818110156153cf576020818501810151868301820152016153b3565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061151160208301846153a9565b61ffff811681146114e257600080fd5b60006020828403121561542457600080fd5b813561151181615402565b60006020828403121561544157600080fd5b813561151181615335565b6020808252825182820181905260009190848201906040850190845b8181101561548d5783516001600160a01b031683529284019291840191600101615468565b50909695505050505050565b600080604083850312156154ac57600080fd5b82356154b781615402565b9150602083013561536c81615335565b6020808252600a908201526927a7262cafa0a226a4a760b11b604082015260600190565b6020808252601690820152752727aa2fa0a62627aba2a22faa27afaa2924a3a3a2a960511b604082015260600190565b80516006811061552a57600080fd5b919050565b80516001600160401b038116811461552a57600080fd5b8051801515811461552a57600080fd5b600080600080600080600060e0888a03121561557157600080fd5b61557a8861551b565b96506155886020890161552f565b9550604088015161559881615402565b94506155a660608901615546565b935060808801516155b681615335565b60a08901519093506155c781615377565b8092505060c0880151905092959891949750929550565b634e487b7160e01b600052602160045260246000fd5b60a081018181106001600160401b038211171561562157634e487b7160e01b600052604160045260246000fd5b60405250565b601f8201601f191681016001600160401b038111828210171561565a57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060a0828403121561567357600080fd5b60405161567f816155f4565b8251815260208301516004811061569557600080fd5b60208201526156a66040840161552f565b60408201526156b76060840161552f565b60608201526156c86080840161552f565b60808201529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561131c5761131c6156d4565b8381526060810160028410615714576157146155de565b602082019390935260400152919050565b60006020828403121561573757600080fd5b815161151181615377565b60006080828403121561575457600080fd5b604051608081018181106001600160401b038211171561578457634e487b7160e01b600052604160045260246000fd5b6040529050806157938361552f565b81526157a16020840161552f565b60208201526157b26040840161552f565b60408201526157c36060840161552f565b60608201525092915050565b6000608082840312156157e157600080fd5b6115118383615742565b85815260a0810160048610615802576158026155de565b8560208301526001600160401b03808616604084015280851660608401525063ffffffff831660808301529695505050505050565b600381106114e2576114e26155de565b8381526060810161571484615837565b61586086615837565b85815260006001600160401b03808716602084015280861660408401525060a0606083015261589260a08301856153a9565b90508260808301529695505050505050565b6000602082840312156158b657600080fd5b61151182615546565b6000602082840312156158d157600080fd5b815161151181615335565b808202811582820484141761131c5761131c6156d4565b60008261591057634e487b7160e01b600052601260045260246000fd5b500490565b6001600160401b03818116838216028082169190828114615938576159386156d4565b505092915050565b6001600160401b03828116828216039080821115615230576152306156d4565b6001600160401b03818116838216019080821115615230576152306156d4565b600060e0828403121561599257600080fd5b60405160e081018181106001600160401b03821117156159c257634e487b7160e01b600052604160045260246000fd5b604052825181526159d56020840161551b565b60208201526159e66040840161552f565b604082015260608301516159f981615335565b6060820152615a0a60808401615546565b6080820152615a1b60a0840161552f565b60a082015260c0830151615a2e81615335565b60c08201529392505050565b61ffff8616815260006001600160401b038087166020840152808616604084015280851660608401525060a06080830152613eb960a08301846153a9565b600060a08284031215615a8a57600080fd5b604051615a96816155f4565b825181526020830151615aa881615335565b60208201526156a660408401615546565b8181038181111561131c5761131c6156d4565b84815260808101615adc85615837565b60208201949094526001600160401b0392831660408201529116606090910152919050565b600060033d1115615b1a5760046000803e5060005160e01c5b90565b600060443d1015615b2b5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615b5a57505050505090565b8285019150815181811115615b725750505050505090565b843d8701016020828501011115615b8c5750505050505090565b615b9b60208286010187615627565b509095945050505050565b805160208201516001600160e01b03198082169291906004831015615bd55780818460040360031b1b83161693505b505050919050565b615be685615837565b9384526001600160401b0392831660208501529116604083015260a0606083018190526009908301526821a0a82fa2a92927a960b91b60c0830152608082015260e00190565b60608101615c3985615837565b9381526001600160401b039283166020820152911660409091015290565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015615d1a57868503605f190183528135368a9003601e19018112615cd157600080fd5b890184810190356001600160401b03811115615cec57600080fd5b803603821315615cfb57600080fd5b615d06878284615c57565b965050509183019190830190600101615cab565b509298975050505050505050565b600060608284031215615d3a57600080fd5b604051606081018181106001600160401b0382111715615d6a57634e487b7160e01b600052604160045260246000fd5b60405282518152615d7d6020840161552f565b6020820152615d8e6040840161552f565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe889460050d9a293fbe31b6ce00a37ae62020cb8c8a19cf31e9496cb13246f6e2a2646970667358221220abfc06c5c195689d2b119005e2609ba1f967611a24db34693617b50aa1bf53f764736f6c63430008180033";
17
+ static readonly bytecode = "0x6101206040526003600755603c6008556003600955603c600a55603c600b55603c600c556078600d5560b4600e55610708600f556103e8620186a060016200004891906200029e565b620000549190620002ca565b6010556103e86200006a620186a060026200029e565b620000769190620002ca565b601155620186a06200008a8160056200029e565b620000969190620002ca565b6012556003601355348015620000ab57600080fd5b506040516200628738038062006287833981016040819052620000ce9162000306565b806001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000306565b606462000145620186a060016200029e565b620001519190620002ca565b606462000163620186a0600a6200029e565b6200016f9190620002ca565b600080546001600160a01b0319163317905560805260a0526001600160a01b0390811660c0528116620001b557604051635863f78960e01b815260040160405180910390fd5b6001600160a01b03811660e081905260408051637b10399960e01b81529051637b103999916004808201926020929091908290030181865afa15801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062000306565b6001600160a01b031663776af5ba6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a919062000306565b6001600160a01b031661010052506200032d565b8082028115828204841417620002c457634e487b7160e01b600052601160045260246000fd5b92915050565b600082620002e857634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03811681146200030357600080fd5b50565b6000602082840312156200031957600080fd5b81516200032681620002ed565b9392505050565b60805160a05160c05160e05161010051615e2062000467600039600081816109b9015281816113be0152818161326f01526145e901526000818161048a01528181610f960152818161110a015281816115a2015281816116dc01528181611815015281816119a901528181611a0c01528181611c9801528181611d3301528181611e8f01528181612236015281816122ae015281816123f601528181612595015281816126f40152818161286f0152818161295601528181612ff00152818161312a0152818161333f01528181613a3801528181613ecc01528181613f7d0152818161400c01528181614126015281816142100152818161434f015281816146e80152614c250152600081816137e50152613c5901526000818161064d0152613cb4015260008181610c9c01526148890152615e206000f3fe6080604052600436106104515760003560e01c8063771ad70d1161023f578063b16f579f11610139578063e01e4bb2116100b6578063ee3ed22e1161007a578063ee3ed22e14610d87578063f5f5ba7214610d9e578063f851a44014610dd1578063fae5a83f14610df1578063fd057e9414610e1157600080fd5b8063e01e4bb214610d13578063e0b7d50b14610d29578063e231377014610d3f578063e8051b0114610d5f578063e9c714f214610d7257600080fd5b8063b81bfa05116100fd578063b81bfa0514610c6a578063b88750a914610c8a578063bfc084d914610cbe578063c4ae316814610cde578063d99dc0c114610cf357600080fd5b8063b16f579f14610bd1578063b187bd2614610bf1578063b71d1a0c14610c12578063b71f3cfe14610c32578063b767e7e814610c4a57600080fd5b80639abf1782116101c7578063a9f7c5211161018b578063a9f7c52114610b4d578063aaf5eb6814610b60578063ad169c9c14610b7c578063ad1f2b5614610b9c578063af74c38214610bb157600080fd5b80639abf178214610aa45780639f918f4514610ac4578063a1d627a114610af7578063a5b6020814610b17578063a5e02c8d14610b2d57600080fd5b806380193b261161020e57806380193b2614610a075780638140520514610a1e57806386c7f19a14610a345780638aa1043514610a565780638f06222714610a8357600080fd5b8063771ad70d14610994578063776af5ba146109a75780637f31c2db146109db5780637f588b91146109f157600080fd5b80633b3216661161035057806358cc4b2c116102d8578063619cdd281161029c578063619cdd28146108f45780636447dc8b1461092e5780636c1bb5ca14610941578063718ddc14146109615780637670d9481461097457600080fd5b806358cc4b2c146108355780635d2cdfea146108555780635dce36fb146108885780635f48bd331461089e578063614d08f8146108be57600080fd5b806345b617131161031f57806345b61713146107b9578063490580e3146107cf5780634bdf1973146107ef5780634cdb06a5146108025780634d3691511461082257600080fd5b80633b321666146107485780633be3d6261461075b5780633ce8e10214610770578063410c0b7c146107a357600080fd5b806326b4120a116103de57806336930d0b116103a257806336930d0b1461066f57806336b669f71461068f57806338267257146106d557806338b90333146106f5578063392503e01461073257600080fd5b806326b4120a146105b55780632f86d7c2146105d5578063330596f4146105f557806333511e5e1461060b57806333a01d321461063b57600080fd5b8063221407af11610425578063221407af1461051a57806322ede93c1461052d57806325577e9f146105435780632649169814610563578063267822471461059557600080fd5b80624b8eb4146104565780630d3b0b761461047857806310b4cc13146104c957806320cb5976146104ed575b600080fd5b34801561046257600080fd5b5061047661047136600461528a565b610e31565b005b34801561048457600080fd5b506104ac7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104d557600080fd5b506104df60105481565b6040519081526020016104c0565b3480156104f957600080fd5b506104df61050836600461528a565b60146020526000908152604090205481565b6104766105283660046152ee565b610f0b565b34801561053957600080fd5b506104df60115481565b34801561054f57600080fd5b5061047661055e36600461534b565b6111ec565b34801561056f57600080fd5b506016546105809063ffffffff1681565b60405163ffffffff90911681526020016104c0565b3480156105a157600080fd5b506001546104ac906001600160a01b031681565b3480156105c157600080fd5b506104766105d036600461528a565b611224565b3480156105e157600080fd5b506104766105f036600461528a565b611281565b34801561060157600080fd5b506104df60095481565b34801561061757600080fd5b5061062b610626366004615390565b611300565b60405190151581526020016104c0565b34801561064757600080fd5b506104df7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067b57600080fd5b5061047661068a36600461528a565b611322565b6106a261069d3660046152ee565b6114e5565b60408051825181526020808401516001600160401b039081169183019190915292820151909216908201526060016104c0565b3480156106e157600080fd5b506104766106f036600461528a565b611518565b34801561070157600080fd5b50610725604051806040016040528060048152602001630626060760e31b81525081565b6040516104c091906153f3565b34801561073e57600080fd5b506104df600f5481565b6104766107563660046152ee565b611785565b34801561076757600080fd5b50610476611b2b565b34801561077c57600080fd5b5061058061078b366004615416565b60156020526000908152604090205463ffffffff1681565b3480156107af57600080fd5b506104df600c5481565b3480156107c557600080fd5b506104df60075481565b3480156107db57600080fd5b506104766107ea36600461528a565b611bbd565b6104766107fd3660046152ee565b611c0e565b34801561080e57600080fd5b5061047661081d36600461528a565b611f68565b6104766108303660046152ee565b611fd1565b34801561084157600080fd5b50610476610850366004615433565b612064565b34801561086157600080fd5b5061058061087036600461528a565b60056020526000908152604090205463ffffffff1681565b34801561089457600080fd5b506104df600a5481565b3480156108aa57600080fd5b506104766108b936600461528a565b612106565b3480156108ca57600080fd5b506107256040518060400160405280600a8152602001695472696767657273563160b01b81525081565b34801561090057600080fd5b506107256040518060400160405280600e81526020016d534b45575f494e43454e5449564560901b81525081565b61047661093c3660046152ee565b612190565b34801561094d57600080fd5b5061047661095c36600461534b565b6124d1565b61047661096f3660046152ee565b612505565b34801561098057600080fd5b5061047661098f36600461528a565b61276c565b6104766109a23660046152ee565b6127c9565b3480156109b357600080fd5b506104ac7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109e757600080fd5b506104df60085481565b3480156109fd57600080fd5b506104df600b5481565b348015610a1357600080fd5b506104df620186a081565b348015610a2a57600080fd5b506104df60135481565b348015610a4057600080fd5b50610a49612a2f565b6040516104c09190615450565b348015610a6257600080fd5b506040805180820190915260048152630626060760e31b6020820152610725565b348015610a8f57600080fd5b5060165461062b90600160281b900460ff1681565b348015610ab057600080fd5b50610476610abf36600461528a565b612a40565b348015610ad057600080fd5b50610580610adf36600461528a565b60046020526000908152604090205463ffffffff1681565b348015610b0357600080fd5b506006546104ac906001600160a01b031681565b348015610b2357600080fd5b506104df600e5481565b348015610b3957600080fd5b50610476610b48366004615390565b612a9d565b610476610b5b3660046152ee565b612ad0565b348015610b6c57600080fd5b506104df670de0b6b3a764000081565b348015610b8857600080fd5b50610476610b9736600461528a565b612b63565b348015610ba857600080fd5b506104df606481565b348015610bbd57600080fd5b50610476610bcc36600461528a565b612bfc565b348015610bdd57600080fd5b50610580610bec366004615416565b612c71565b348015610bfd57600080fd5b5060165461062b90600160201b900460ff1681565b348015610c1e57600080fd5b50610476610c2d366004615390565b612c9e565b348015610c3e57600080fd5b506104df633b9aca0081565b348015610c5657600080fd5b50610476610c6536600461549d565b612d46565b348015610c7657600080fd5b50610476610c8536600461528a565b612dfc565b348015610c9657600080fd5b506104df7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cca57600080fd5b50610476610cd936600461528a565b612e4f565b348015610cea57600080fd5b50610476612eac565b348015610cff57600080fd5b50610476610d0e366004615390565b612f33565b348015610d1f57600080fd5b506104df600d5481565b348015610d3557600080fd5b506104df60125481565b348015610d4b57600080fd5b50610476610d5a36600461528a565b612f66565b610476610d6d3660046152ee565b6131d3565b348015610d7e57600080fd5b50610476613519565b348015610d9357600080fd5b50610580620186a081565b348015610daa57600080fd5b5060408051808201909152600a8152695472696767657273563160b01b6020820152610725565b348015610ddd57600080fd5b506000546104ac906001600160a01b031681565b348015610dfd57600080fd5b50610476610e0c366004615390565b613637565b348015610e1d57600080fd5b50610476610e2c36600461528a565b613755565b6000546001600160a01b03163314610e645760405162461bcd60e51b8152600401610e5b906154cb565b60405180910390fd5b801580610e7357506008548111155b80610e805750600a548111155b15610e9e57604051632635240760e21b815260040160405180910390fd5b600d8190556040517f6d61726b65744f726465727341637469766174696f6e54696d654c696d6974008152601f015b604051908190038120828252907f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab906020015b60405180910390a250565b601654600160281b900460ff1615610f36576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615610f615760405163ab35696f60e01b815260040160405180910390fd5b610f6a33611300565b610f865760405162461bcd60e51b8152600401610e5b906154ef565b610f8e6137e3565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050886040518263ffffffff1660e01b8152600401610fe291815260200190565b60e060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611023919061555a565b509550505093506001600160401b03169350935082600003611058576040516354cf754d60e01b815260040160405180910390fd5b600484600581111561106c5761106c6155e2565b1461108a576040516377edf34f60e01b815260040160405180910390fd5b600061109c8361ffff16348989613858565b90506110ad84826000015185613912565b6020810151806110bb6139e3565b60006110c88b8688613a33565b6020850151604051632859f7cb60e11b8152600481018e90526001600160401b039182166024820152908416604482015263ffffffff821660648201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906350b3ef9690608401600060405180830381600087803b15801561115657600080fd5b505af115801561116a573d6000803e3d6000fd5b50505050876005811115611180576111806155e2565b6020858101518651604080516001600160401b038881168252909316938301939093528183015290518d9133917f5b5ec0827d50049e9f15c1d5c28dc87d620987ef82a18f0b98afac1c76076d3d9181900360600190a450505050505050506111e7613c57565b505050565b6000546001600160a01b031633146112165760405162461bcd60e51b8152600401610e5b906154cb565b6112208282613cb2565b5050565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610e5b906154cb565b600e8190556040517f6d61726b65744f72646572546967687454696d6552616e6765000000000000008152601901610ecd565b6000546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610e5b906154cb565b60085481106112cd57604051632635240760e21b815260040160405180910390fd5b60078190556040517f6d696e54726967676572506572696f64466f724d61726b65744f7264657273008152601f01610ecd565b6001600160a01b03811660009081526003602052604081205415155b92915050565b601654600160281b900460ff161561134d576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156113785760405163ab35696f60e01b815260040160405180910390fd5b61138133611300565b61139d5760405162461bcd60e51b8152600401610e5b906154ef565b6113a56137e3565b60405163c608b6c160e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af115801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190615665565b9050600c5481604001516001600160401b031661145091906156ee565b42101561147057604051632c79c1b960e21b815260040160405180910390fd5b80602001516003811115611486576114866155e2565b60608201516080830151604080516001600160401b039384168152929091166020830152849133917f7b5b2e57aed6ee99244bd22f2b43e33e9fcbf0d77a9f425d59ee2d74e1c3795d910160405180910390a4506114e2613c57565b50565b604080516060810182526000808252602082018190529181019190915261150e84348585613858565b90505b9392505050565b601654600160281b900460ff1615611543576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561156e5760405163ab35696f60e01b815260040160405180910390fd5b61157733611300565b6115935760405162461bcd60e51b8152600401610e5b906154ef565b61159b6137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050856040518263ffffffff1660e01b81526004016115ee91815260200190565b60e060405180830381865afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f919061555a565b5050505092506001600160401b0316925092508160000361166357604051632af0900d60e21b815260040160405180910390fd5b6004836005811115611677576116776155e2565b14611695576040516377edf34f60e01b815260040160405180910390fd5b600c546116a290836156ee565b4210156116c257604051632c79c1b960e21b815260040160405180910390fd5b601054604051634ebe5c3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691634ebe5c339161171591889160019190600401615701565b600060405180830381600087803b15801561172f57600080fd5b505af1158015611743573d6000803e3d6000fd5b505060405161ffff8416925086915033907f89a3ecf5024675f1d0abc6dc42608fc41216f103c12c2c84f8ca3938bd055f0390600090a45050506114e2613c57565b601654600160281b900460ff16156117b0576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156117db5760405163ab35696f60e01b815260040160405180910390fd5b6117e433611300565b6118005760405162461bcd60e51b8152600401610e5b906154ef565b6118086137e3565b60008060008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be50508b6040518263ffffffff1660e01b815260040161186191815260200190565b60e060405180830381865afa15801561187e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a2919061555a565b965096509650965096506001600160401b031696509650856000036118da57604051631e622ef760e01b815260040160405180910390fd5b60028760058111156118ee576118ee6155e2565b1461190c5760405163ad2b657360e01b815260040160405180910390fd5b600061191e8661ffff16348c8c613858565b905061192e878260000151613d71565b6020810151600061194561ffff891683888a613dd1565b90506119568d89838a8e6002613ec4565b6119695750505050505050505050611b23565b6119716139e3565b601154604051631ea9af6b60e01b8152600481018f90526001600160401b038316602482015260448101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631ea9af6b906064015b600060405180830381600087803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b50505050611aaf8d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166303b90a87886040518263ffffffff1660e01b8152600401611a6591906001600160a01b0391909116815260200190565b602060405180830381865afa158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa69190615729565b878b8b8961420c565b896005811115611ac157611ac16155e2565b6020848101518551604080516001600160401b038781168252909316938301939093528183015290518f9133917f60fab6e183a7c350210c0b457db01423b47aa3e72f5b735b8dbb3ecd3e8077439181900360600190a4505050505050505050505b6111e7613c57565b6000546001600160a01b03163314611b555760405162461bcd60e51b8152600401610e5b906154cb565b6016805460ff600160281b808304821615810265ff00000000001990931692909217928390556040517f8e47bd62470c6cba4d30c023548622607c9c84402a5655f2569b7934c36a9e4f93611bb39390049091161515815260200190565b60405180910390a1565b6000546001600160a01b03163314611be75760405162461bcd60e51b8152600401610e5b906154cb565b6013818155604051726d61785472696767657273506572426c6f636b60681b815201610ecd565b601654600160281b900460ff1615611c39576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615611c645760405163ab35696f60e01b815260040160405180910390fd5b611c6d33611300565b611c895760405162461bcd60e51b8152600401610e5b906154ef565b611c916137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050876040518263ffffffff1660e01b8152600401611ce491815260200190565b60e060405180830381865afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d25919061555a565b5095505094509450505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f886040518263ffffffff1660e01b8152600401611d7f91815260200190565b608060405180830381865afa158015611d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906157d3565b90508361ffff16600003611de757604051632af0900d60e21b815260040160405180910390fd5b80606001516001600160401b0316600003611e15576040516301c65bd760e31b815260040160405180910390fd5b60208101516001600160401b03166000611e3561ffff8716348a8a613858565b9050611e45828260000151613d71565b60208101516060840151600090611e5e9083898b6144df565b9050611e686139e3565b6000611e758c888b613a33565b60405163ec18aded60e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ec18aded90611ecd908f906002908890889088906004016157ef565b600060405180830381600087803b158015611ee757600080fd5b505af1158015611efb573d6000803e3d6000fd5b50508551604080516001600160401b038088168252881660208201529081019190915261ffff8c1692508e915033907fb03dbc9368faf0f8588dc8429c40a26ef9a637488f1ea5521a2ba2bfb5ff20169060600160405180910390a45050505050505050506111e7613c57565b6000546001600160a01b03163314611f925760405162461bcd60e51b8152600401610e5b906154cb565b60118190556040517f6f70656e506f736974696f6e43616e63656c6c6174696f6e466565467261637481526234b7b760e91b6020820152602301610ecd565b601654600160281b900460ff1615611ffc576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156120275760405163ab35696f60e01b815260040160405180910390fd5b61203033611300565b61204c5760405162461bcd60e51b8152600401610e5b906154ef565b6120546137e3565b611b2383838360028060006145d0565b6000546001600160a01b0316331461208e5760405162461bcd60e51b8152600401610e5b906154cb565b620186a063ffffffff821611156120b857604051632646419960e11b815260040160405180910390fd5b6016805463ffffffff191663ffffffff83169081179091556040519081527f06ddabf029f0ad871d8e8c56f73e357cc18f651f56af47fddc1884a2d31405f49060200160405180910390a150565b6000546001600160a01b031633146121305760405162461bcd60e51b8152600401610e5b906154cb565b600a54811061215257604051632635240760e21b815260040160405180910390fd5b60098190556040517f6d696e54726967676572506572696f64466f724d61726b65744f726465727343815261185d60f21b6020820152602201610ecd565b601654600160281b900460ff16156121bb576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156121e65760405163ab35696f60e01b815260040160405180910390fd5b6121ef33611300565b61220b5760405162461bcd60e51b8152600401610e5b906154ef565b6122136137e3565b60405163095be50560e41b81526004810184905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa15801561227d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a1919061555a565b50955050509350505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f876040518263ffffffff1660e01b81526004016122fa91815260200190565b608060405180830381865afa158015612317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233b91906157d3565b90508261ffff1660000361236257604051632af0900d60e21b815260040160405180910390fd5b80604001516001600160401b031660000361239057604051634f02277b60e01b815260040160405180910390fd5b80516001600160401b031660006123ad61ffff8616348989613858565b90506123bd828260000151613d71565b60208101516123ca6139e3565b60006123d78a8789613a33565b602084015160405163ec18aded60e01b81529192506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163ec18aded91612432918e91600191889088906004016157ef565b600060405180830381600087803b15801561244c57600080fd5b505af1158015612460573d6000803e3d6000fd5b505050506020838101518451604080516001600160401b0387811682529093169383019390935281830152905161ffff8916918c9133917fbe700227f721a08f3b755aa3348a63564c2c07890aba73de46372f7bffcaa2e2919081900360600190a4505050505050506111e7613c57565b6000546001600160a01b031633146124fb5760405162461bcd60e51b8152600401610e5b906154cb565b6112208282614887565b601654600160281b900460ff1615612530576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561255b5760405163ab35696f60e01b815260040160405180910390fd5b61256433611300565b6125805760405162461bcd60e51b8152600401610e5b906154ef565b6125886137e3565b60008060008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be50508b6040518263ffffffff1660e01b81526004016125e191815260200190565b60e060405180830381865afa1580156125fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612622919061555a565b965096509650965096506001600160401b0316965096508560000361265a576040516354cf754d60e01b815260040160405180910390fd5b600187600581111561266e5761266e6155e2565b1461268c576040516335637f8760e11b815260040160405180910390fd5b600061269e8661ffff16348c8c613858565b90506126af87826000015188613912565b602081015160006126c661ffff891683888a613dd1565b90506126d78d89838a8e6001613ec4565b6126ea5750505050505050505050611b23565b6126f26139e3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b214e128e8360115487600001516040518563ffffffff1660e01b81526004016119d494939291909384526001600160401b039283166020850152604084019190915216606082015260800190565b6000546001600160a01b031633146127965760405162461bcd60e51b8152600401610e5b906154cb565b600f8190556040517f74726967676572507269636546726573686e65737354696d6552616e676500008152601e01610ecd565b601654600160281b900460ff16156127f4576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561281f5760405163ab35696f60e01b815260040160405180910390fd5b61282833611300565b6128445760405162461bcd60e51b8152600401610e5b906154ef565b61284c6137e3565b60405163095be50560e41b81526004810184905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa1580156128b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128da919061555a565b5095505050935050508161ffff1660000361290857604051632af0900d60e21b815260040160405180910390fd5b600061291a8361ffff16348787613858565b602081015190915061292a6139e3565b6000612937888587613a33565b602084015160405163ec18aded60e01b81529192506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163ec18aded91612992918c91600391889088906004016157ef565b600060405180830381600087803b1580156129ac57600080fd5b505af11580156129c0573d6000803e3d6000fd5b505050506020838101518451604080516001600160401b0387811682529093169383019390935281830152905161ffff8716918a9133917f086bdd0cdd4ae322dd6112d05bdf96c020e6b90cc84ee2d39941bd716e18fb92919081900360600190a450505050506111e7613c57565b6060612a3b6002614954565b905090565b6000546001600160a01b03163314612a6a5760405162461bcd60e51b8152600401610e5b906154cb565b60108190556040517f6d61726b65744f7264657243616e63656c4665654672616374696f6e000000008152601c01610ecd565b6000546001600160a01b03163314612ac75760405162461bcd60e51b8152600401610e5b906154cb565b6114e281614961565b601654600160281b900460ff1615612afb576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615612b265760405163ab35696f60e01b815260040160405180910390fd5b612b2f33611300565b612b4b5760405162461bcd60e51b8152600401610e5b906154ef565b612b536137e3565b611b2383838360018060016145d0565b6000546001600160a01b03163314612b8d5760405162461bcd60e51b8152600401610e5b906154cb565b60095481111580612ba05750600d548110155b15612bbe57604051632635240760e21b815260040160405180910390fd5b600a8190556040517f6d617854726967676572506572696f64466f724d61726b65744f726465727343815261185d60f21b6020820152602201610ecd565b6000546001600160a01b03163314612c265760405162461bcd60e51b8152600401610e5b906154cb565b80600003612c4757604051632635240760e21b815260040160405180910390fd5b6012819055604051733634b6b4ba39a6b0b933b4b7233930b1ba34b7b760611b8152601401610ecd565b61ffff811660009081526015602052604081205463ffffffff168061131c5760165463ffffffff16611511565b6000546001600160a01b03163314612ce45760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b6044820152606401610e5b565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6000546001600160a01b03163314612d705760405162461bcd60e51b8152600401610e5b906154cb565b620186a063ffffffff82161115612d9a57604051632646419960e11b815260040160405180910390fd5b61ffff8216600081815260156020908152604091829020805463ffffffff191663ffffffff861690811790915591519182527fa2a4acd376a1168953c22b4e4bc5acdde62a49e199b28c4f9b818cd312351f8c91015b60405180910390a25050565b6000546001600160a01b03163314612e265760405162461bcd60e51b8152600401610e5b906154cb565b600c819055604051721b585c9ad95d13dc99195c9cd51a5b595bdd5d606a1b8152601301610ecd565b6000546001600160a01b03163314612e795760405162461bcd60e51b8152600401610e5b906154cb565b600b8190556040517f6d696e54726967676572506572696f64466f724c696d69744f726465727300008152601e01610ecd565b6000546001600160a01b03163314612ed65760405162461bcd60e51b8152600401610e5b906154cb565b6016805460ff600160201b808304821615810264ff000000001990931692909217928390556040517fda88b5dfaac55549d4ddddd43a09d4b911233df354952ebc9ac2041aa185343693611bb39390049091161515815260200190565b6000546001600160a01b03163314612f5d5760405162461bcd60e51b8152600401610e5b906154cb565b6114e2816149ef565b601654600160281b900460ff1615612f91576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615612fbc5760405163ab35696f60e01b815260040160405180910390fd5b612fc533611300565b612fe15760405162461bcd60e51b8152600401610e5b906154ef565b612fe96137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050856040518263ffffffff1660e01b815260040161303c91815260200190565b60e060405180830381865afa158015613059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307d919061555a565b5050505092506001600160401b031692509250816000036130b157604051632af0900d60e21b815260040160405180910390fd5b60018360058111156130c5576130c56155e2565b146130e3576040516335637f8760e11b815260040160405180910390fd5b600c546130f090836156ee565b42101561311057604051632c79c1b960e21b815260040160405180910390fd5b601054604051636e01af8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636e01af8d916131639188916001919060040161584b565b600060405180830381600087803b15801561317d57600080fd5b505af1158015613191573d6000803e3d6000fd5b505060405161ffff8416925086915033907f5079795ec65f793d5a0ed74d8f8e1562b7795934b40612bf55cf0e5d55a3447990600090a45050506114e2613c57565b601654600160281b900460ff16156131fe576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156132295760405163ab35696f60e01b815260040160405180910390fd5b61323233611300565b61324e5760405162461bcd60e51b8152600401610e5b906154ef565b6132566137e3565b60405163c608b6c160e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af11580156132c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e49190615665565b90506003816020015160038111156132fe576132fe6155e2565b1461331c57604051638e85495d60e01b815260040160405180910390fd5b60405163095be50560e41b81526004810185905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa158015613386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133aa919061555a565b50505093509350505060006133c58361ffff16348888613858565b90506133e384604001516001600160401b0316826000015185613912565b60006133fa85606001518360200151856001614a88565b9050600061341386608001518460200151866000614a88565b9050811580613420575080155b15613491578560200151600381111561343b5761343b6155e2565b89336001600160a01b0316600080516020615dcb83398151915260018a60600151886020015161346b8989614b71565b600060405161347e95949392919061585b565b60405180910390a4505050505050611b23565b6134996139e3565b6000836020015190506134b9338b896020015160018b6060015186614c0b565b6134d6576040516366464a0d60e01b815260040160405180910390fd5b6134ed338b896020015160028b6080015186614c0b565b61350a576040516355fa4e8d60e01b815260040160405180910390fd5b505050505050506111e7613c57565b6001546001600160a01b03163314801561353d57506001546001600160a01b031615155b6135895760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e00006044820152606401610e5b565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101612d3a565b6000546001600160a01b031633146136615760405162461bcd60e51b8152600401610e5b906154cb565b806001600160a01b0316634535dc4c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c391906158a8565b6136e057604051633b0a14a760e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383161790556040516d283934b1b2ab30b634b230ba37b960911b8152600e016040519081900381206001600160a01b0383168252907f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee4442278190602001610f00565b6000546001600160a01b0316331461377f5760405162461bcd60e51b8152600401610e5b906154cb565b600754811115806137925750600d548110155b156137b057604051632635240760e21b815260040160405180910390fd5b60088190556040517f6d617854726967676572506572696f64466f724d61726b65744f7264657273008152601f01610ecd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f83d08ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561383e57600080fd5b505af1158015613852573d6000803e3d6000fd5b50505050565b604080516060810182526000808252602082018190529181018290529061388186868686614e77565b60008781526004602090815260408220549083015192935063ffffffff16916138b3906001600160401b031683614f12565b90508083604001516001600160401b031611156138e3576040516356365bf760e01b815260040160405180910390fd5b825142101561390457604051626f84e160e11b815260040160405180910390fd5b50909150505b949350505050565b61271061ffff82161160008161392a5760075461392e565b6009545b905060008261393f57600854613943565b600a545b9050600061395183886156ee565b9050600061395f83896156ee565b90508142101561398257604051631c954b4f60e21b815260040160405180910390fd5b600d5461398f90896156ee565b4211156139ae5760405162ca779960e21b815260040160405180910390fd5b818710806139bb57508087115b156139d957604051638b291a5360e01b815260040160405180910390fd5b5050505050505050565b436000908152601460205260409020546013548110613a1557604051630162832b60e61b815260040160405180910390fd5b613a208160016156ee565b4360009081526014602052604090205550565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab89190615729565b604080518082018252600e81526d534b45575f494e43454e5449564560901b60208201529051632c652ce760e11b81526001600160a01b0392909216916358ca59ce91613b07916004016153f3565b602060405180830381865afa158015613b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b489190615729565b90506001600160a01b038116613b62576000915050611511565b6040516330c9e15760e21b8152600481018690526001600160a01b03858116602483015261ffff8516604483015282169063c327855c906064016020604051808303816000875af1925050508015613bd7575060408051601f3d908101601f19168201909252613bd4918101906158c3565b60015b613c4e573d808015613c05576040519150601f19603f3d011682016040523d82523d6000602084013e613c0a565b606091505b50857f016ef3e646cfc2493bc3c5e66d4a0ab6cedd692c3caef68704146982fc98660a82604051613c3b91906153f3565b60405180910390a2600092505050611511565b91506115119050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340da020f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561383e57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161115613d1a5760405162461bcd60e51b815260206004820152600f60248201526e0a6a0a48a8288bea89e9ebe90928e9608b1b6044820152606401610e5b565b600082815260056020908152604091829020805463ffffffff191663ffffffff8516908117909155915191825283917ffe5fd0852fab5f8ba593533cf24a4b4b235704c0e06956d0a58cc2ca0a4b6b449101612df0565b6000600b5483613d8191906156ee565b905080421015613da45760405163eb72c9ab60e01b815260040160405180910390fd5b80821015613dc55760405163a765b7ab60e01b815260040160405180910390fd5b6111e782600f54614f2c565b6000620186a08363ffffffff161115613e2c5760405162461bcd60e51b815260206004820152601960248201527f5350524541445f524544554354494f4e5f544f4f5f48494748000000000000006044820152606401610e5b565b600085815260056020526040812054620186a090613e5a906001600160401b0388169063ffffffff166158e0565b613e6491906158f7565b90506000620186a0613e7c63ffffffff871684615919565b6001600160401b0316613e8f91906158f7565b613e999083615944565b905083613eaf57613eaa8187615944565b613eb9565b613eb98187615964565b979650505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f8b6040518263ffffffff1660e01b8152600401613f1891815260200190565b608060405180830381865afa158015613f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5991906157d3565b60405163ddf474f160e01b8152600481018c90529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ddf474f190602401608060405180830381865afa158015613fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fe891906157d3565b604051638f7a8fb560e01b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638f7a8fb59060240160e060405180830381865afa158015614053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140779190615984565b9050614094836040015183604001518c84606001518d6001614f7c565b94506140b1836060015183606001518c84606001518d6000614f7c565b93505050506000826001600160401b0316600014806140d857506140d88389896001614a88565b905060006001600160401b03831615806140fa57506140fa838a8a6000614a88565b9050811580614107575080155b156141f957601154604051636e01af8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636e01af8d9161415e918f918b919060040161584b565b600060405180830381600087803b15801561417857600080fd5b505af115801561418c573d6000803e3d6000fd5b505050508660058111156141a2576141a26155e2565b8b337ff83a7472720a3cf234601433618092ec0838ad712b481376cd7860b9fe7397558d8d89896141d38a8a614b71565b6040516141e4959493929190615a3e565b60405180910390a46000945050505050614202565b60019450505050505b9695505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561426c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142909190615729565b604080518082018252600e81526d534b45575f494e43454e5449564560901b60208201529051632c652ce760e11b81526001600160a01b0392909216916358ca59ce916142df916004016153f3565b602060405180830381865afa1580156142fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143209190615729565b90506001600160a01b03811661433657506144d7565b60405163f555f69760e01b8152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f555f6979060240160a060405180830381865afa15801561439e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143c29190615a7c565b905060006143de8260000151836020015163ffffffff166150ad565b604051632721548d60e21b8152600481018b90526001600160a01b038a81166024830152898116604483015261ffff89166064830152871515608483015260a4820187905260c4820183905291925090841690639c8552349060e401600060405180830381600087803b15801561445457600080fd5b505af1925050508015614465575060015b6144d3573d808015614493576040519150601f19603f3d011682016040523d82523d6000602084013e614498565b606091505b50897f3961e1425e2fd3d7681d1d6266aab1d85c34839a03fdfd9756864966f6e133b7826040516144c991906153f3565b60405180910390a2505b5050505b505050505050565b6000806144eb83612c71565b90508063ffffffff16600003614504578491505061390a565b6000620186a061452363ffffffff84166001600160401b038a166158e0565b61452d91906158f7565b90508085156145a357806001600160401b0316886001600160401b031610156145695760405163ac658add60e01b815260040160405180910390fd5b6000614575828a615944565b9050806001600160401b0316886001600160401b0316116145965780614598565b875b94505050505061390a565b60006145af828a615964565b9050806001600160401b0316886001600160401b0316106145965780614598565b60405163c608b6c160e01b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af115801561463a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465e9190615665565b9050836003811115614672576146726155e2565b81602001516003811115614688576146886155e2565b146146c55781156146ac57604051639097017560e01b815260040160405180910390fd5b604051633ee7586d60e21b815260040160405180910390fd5b60405163095be50560e41b81526004810188905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa15801561472f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614753919061555a565b505050935093505050600061476e8361ffff16348b8b613858565b905061478c84604001516001600160401b0316826000015185613912565b6147a0846060015182602001518488614a88565b61485857836020015160038111156147ba576147ba6155e2565b8a336001600160a01b0316600080516020615dcb83398151915289886060015186602001518b61480e576040518060400160405280600c81526020016b534c5f544f4f5f434c4f534560a01b815250614834565b6040518060400160405280600c81526020016b54505f544f4f5f434c4f534560a01b8152505b600060405161484795949392919061585b565b60405180910390a4505050506144d7565b6148606139e3565b61487a338b86602001518988606001518660200151614c0b565b5050505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff1611156148fd5760405162461bcd60e51b815260206004820152601c60248201527f434f4e464944454e43455f4652414354494f4e5f544f4f5f48494748000000006044820152606401610e5b565b600082815260046020908152604091829020805463ffffffff191663ffffffff8516908117909155915191825283917f88e6fad616d859d6fba20e93ab2acbf0756b6bc2d90c6002000f709f510cadb09101612df0565b60606000611511836150bb565b61496a81611300565b6149ac5760405162461bcd60e51b81526020600482015260136024820152721050d0d3d5539517d393d517d0531313d5d151606a1b6044820152606401610e5b565b6149b7600282615117565b506040516001600160a01b038216907fc985d67a353004ba149a223b2b9e5c13cca6610b11cb45b4aa029c880d8f7cb590600090a250565b6149f881611300565b15614a455760405162461bcd60e51b815260206004820152601760248201527f4143434f554e545f414c52454144595f414c4c4f5745440000000000000000006044820152606401610e5b565b614a5060028261512c565b506040516001600160a01b038216907fc5944eab072face4b169928723314c5978080e99ed8f8527faedb18c06664c3590600090a250565b6000846001600160401b0316600003614aa35750600161390a565b6000614acc856001600160401b031660001960125414614ac557601254614f12565b6000614f12565b90508215614b235783614afc57614aec816001600160401b038716615abd565b866001600160401b031610614b1b565b614b0f816001600160401b0387166156ee565b866001600160401b0316115b91505061390a565b83614b4b57614b3b816001600160401b0387166156ee565b866001600160401b031611614b1b565b614b5e816001600160401b038716615abd565b866001600160401b03161091505061390a565b606082158015614b7f575081155b15614bb4575060408051808201909152601381527254505f414e445f534c5f544f4f5f434c4f534560681b602082015261131c565b82614be2575060408051808201909152600c81526b54505f544f4f5f434c4f534560a01b602082015261131c565b5060408051808201909152600c81526b534c5f544f4f5f434c4f534560a01b602082015261131c565b60405163c07f992160e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c07f992190614c60908990889088908890600401615ad0565b600060405180830381600087803b158015614c7a57600080fd5b505af1925050508015614c8b575060015b614e1757614c97615b05565b806308c379a003614d0b5750614cab615b21565b80614cb65750614d0d565b856003811115614cc857614cc86155e2565b87896001600160a01b0316600080516020615dcb833981519152888888876000604051614cf995949392919061585b565b60405180910390a46000915050614202565b505b3d808015614d37576040519150601f19603f3d011682016040523d82523d6000602084013e614d3c565b606091505b50632eb752bf60e21b614d4e82615baa565b6001600160e01b03191603614dfe576001856002811115614d7157614d716155e2565b14614d8f5760405163b39155f760e01b815260040160405180910390fd5b60248101516044820151876003811115614dab57614dab6155e2565b898b6001600160a01b0316600080516020615dcb8339815191528a8a8a886011811115614dda57614dda6155e2565b604051614dea9493929190615be1565b60405180910390a460009350505050614202565b604051630992185360e41b815260040160405180910390fd5b846003811115614e2957614e296155e2565b86886001600160a01b03167ff0ac91a20375484f5a80315763782e4fe4b42bd038b08ba4939ff1a506974edf878787604051614e6793929190615c30565b60405180910390a4506001614202565b6040805160608101825260008082526020820181905281830152600654915163f4a6a09360e01b815290916001600160a01b03169063f4a6a093908690614ec690899088908890600401615c84565b60606040518083038185885af1158015614ee4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614f099190615d2c565b95945050505050565b6000620186a0614f2283856158e0565b61151191906158f7565b6000614f388242615abd565b905080831015614f5b5760405163c9cf1f8b60e01b815260040160405180910390fd5b428311156111e7576040516314778a4960e31b815260040160405180910390fd5b60006001600160401b03871615614f94575085614202565b856001600160401b0316600003614fad57506000614202565b8363ffffffff16600003614fd457604051633fe89cb960e11b815260040160405180910390fd5b600063ffffffff8516620186a06064614ff96001600160401b03808c16908b166158e0565b61500391906158e0565b61500d91906158f7565b61501791906158f7565b90508215615066578361505457856001600160401b0316816001600160401b0316101561504d576150488187615944565b61505e565b600061505e565b61505e8187615964565b915050614202565b8361507a576150758187615964565b6150a1565b856001600160401b0316816001600160401b0316101561509e576150758187615944565b60005b98975050505050505050565b60006064614f2283856158e0565b60608160000180548060200260200160405190810160405280929190818152602001828054801561510b57602002820191906000526020600020905b8154815260200190600101908083116150f7575b50505050509050919050565b6000611511836001600160a01b038416615141565b6000611511836001600160a01b03841661523b565b6000818152600183016020526040812054801561522a576000615165600183615abd565b855490915060009061517990600190615abd565b90508082146151de57600086600001828154811061519957615199615d9e565b90600052602060002001549050808760000184815481106151bc576151bc615d9e565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806151ef576151ef615db4565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061131c565b600091505061131c565b5092915050565b60008181526001830160205260408120546152825750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561131c565b50600061131c565b60006020828403121561529c57600080fd5b5035919050565b60008083601f8401126152b557600080fd5b5081356001600160401b038111156152cc57600080fd5b6020830191508360208260051b85010111156152e757600080fd5b9250929050565b60008060006040848603121561530357600080fd5b8335925060208401356001600160401b0381111561532057600080fd5b61532c868287016152a3565b9497909650939450505050565b63ffffffff811681146114e257600080fd5b6000806040838503121561535e57600080fd5b82359150602083013561537081615339565b809150509250929050565b6001600160a01b03811681146114e257600080fd5b6000602082840312156153a257600080fd5b81356115118161537b565b6000815180845260005b818110156153d3576020818501810151868301820152016153b7565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061151160208301846153ad565b61ffff811681146114e257600080fd5b60006020828403121561542857600080fd5b813561151181615406565b60006020828403121561544557600080fd5b813561151181615339565b6020808252825182820181905260009190848201906040850190845b818110156154915783516001600160a01b03168352928401929184019160010161546c565b50909695505050505050565b600080604083850312156154b057600080fd5b82356154bb81615406565b9150602083013561537081615339565b6020808252600a908201526927a7262cafa0a226a4a760b11b604082015260600190565b6020808252601690820152752727aa2fa0a62627aba2a22faa27afaa2924a3a3a2a960511b604082015260600190565b80516006811061552e57600080fd5b919050565b80516001600160401b038116811461552e57600080fd5b8051801515811461552e57600080fd5b600080600080600080600060e0888a03121561557557600080fd5b61557e8861551f565b965061558c60208901615533565b9550604088015161559c81615406565b94506155aa6060890161554a565b935060808801516155ba81615339565b60a08901519093506155cb8161537b565b8092505060c0880151905092959891949750929550565b634e487b7160e01b600052602160045260246000fd5b60a081018181106001600160401b038211171561562557634e487b7160e01b600052604160045260246000fd5b60405250565b601f8201601f191681016001600160401b038111828210171561565e57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060a0828403121561567757600080fd5b604051615683816155f8565b8251815260208301516004811061569957600080fd5b60208201526156aa60408401615533565b60408201526156bb60608401615533565b60608201526156cc60808401615533565b60808201529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561131c5761131c6156d8565b8381526060810160028410615718576157186155e2565b602082019390935260400152919050565b60006020828403121561573b57600080fd5b81516115118161537b565b60006080828403121561575857600080fd5b604051608081018181106001600160401b038211171561578857634e487b7160e01b600052604160045260246000fd5b60405290508061579783615533565b81526157a560208401615533565b60208201526157b660408401615533565b60408201526157c760608401615533565b60608201525092915050565b6000608082840312156157e557600080fd5b6115118383615746565b85815260a0810160048610615806576158066155e2565b8560208301526001600160401b03808616604084015280851660608401525063ffffffff831660808301529695505050505050565b600381106114e2576114e26155e2565b838152606081016157188461583b565b6158648661583b565b85815260006001600160401b03808716602084015280861660408401525060a0606083015261589660a08301856153ad565b90508260808301529695505050505050565b6000602082840312156158ba57600080fd5b6115118261554a565b6000602082840312156158d557600080fd5b815161151181615339565b808202811582820484141761131c5761131c6156d8565b60008261591457634e487b7160e01b600052601260045260246000fd5b500490565b6001600160401b0381811683821602808216919082811461593c5761593c6156d8565b505092915050565b6001600160401b03828116828216039080821115615234576152346156d8565b6001600160401b03818116838216019080821115615234576152346156d8565b600060e0828403121561599657600080fd5b60405160e081018181106001600160401b03821117156159c657634e487b7160e01b600052604160045260246000fd5b604052825181526159d96020840161551f565b60208201526159ea60408401615533565b604082015260608301516159fd81615339565b6060820152615a0e6080840161554a565b6080820152615a1f60a08401615533565b60a082015260c0830151615a3281615339565b60c08201529392505050565b61ffff8616815260006001600160401b038087166020840152808616604084015280851660608401525060a06080830152613eb960a08301846153ad565b600060a08284031215615a8e57600080fd5b604051615a9a816155f8565b825181526020830151615aac81615339565b60208201526156aa6040840161554a565b8181038181111561131c5761131c6156d8565b84815260808101615ae08561583b565b60208201949094526001600160401b0392831660408201529116606090910152919050565b600060033d1115615b1e5760046000803e5060005160e01c5b90565b600060443d1015615b2f5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615b5e57505050505090565b8285019150815181811115615b765750505050505090565b843d8701016020828501011115615b905750505050505090565b615b9f6020828601018761562b565b509095945050505050565b805160208201516001600160e01b03198082169291906004831015615bd95780818460040360031b1b83161693505b505050919050565b615bea8561583b565b9384526001600160401b0392831660208501529116604083015260a0606083018190526009908301526821a0a82fa2a92927a960b91b60c0830152608082015260e00190565b60608101615c3d8561583b565b9381526001600160401b039283166020820152911660409091015290565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015615d1e57868503605f190183528135368a9003601e19018112615cd557600080fd5b890184810190356001600160401b03811115615cf057600080fd5b803603821315615cff57600080fd5b615d0a878284615c5b565b965050509183019190830190600101615caf565b509298975050505050505050565b600060608284031215615d3e57600080fd5b604051606081018181106001600160401b0382111715615d6e57634e487b7160e01b600052604160045260246000fd5b60405282518152615d8160208401615533565b6020820152615d9260408401615533565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe889460050d9a293fbe31b6ce00a37ae62020cb8c8a19cf31e9496cb13246f6e2a26469706673582212209aba76e8c2b959b04b155548a1b0d015140f066ee8ee249cb734d68b4435487764736f6c63430008180033";
18
18
  static readonly abi: readonly [{
19
19
  readonly inputs: readonly [{
20
20
  readonly internalType: "contract ITradingFloorV1";
@@ -1 +1 @@
1
- {"version":3,"file":"TriggersV1__factory.d.ts","sourceRoot":"","sources":["../../../../../../../../lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TriggersV1__factory.d.ts","sourceRoot":"","sources":["../../../../../../../../lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,eAAe,EACf,2BAA2B,EAE5B,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,yBAAyB,EACzB,cAAc,EACf,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACpB,MAAM,gDAAgD,CAAC;AAm8DxD,KAAK,2BAA2B,GAC5B,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,mBAAoB,SAAQ,eAAe;gBAC1C,GAAG,IAAI,EAAE,2BAA2B;IAQvC,oBAAoB,CAC3B,aAAa,EAAE,WAAW,EAC1B,SAAS,CAAC,EAAE,mBAAmB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,yBAAyB,CAAC;IAG5B,MAAM,CACb,aAAa,EAAE,WAAW,EAC1B,SAAS,CAAC,EAAE,mBAAmB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAEI,OAAO,CAC5D,UAAU,GAAG;QACX,qBAAqB,IAAI,2BAA2B,CAAC;KACtD,CACF;IAEM,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,mBAAmB;IAIpE,MAAM,CAAC,QAAQ,CAAC,QAAQ,sxiDAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,mBAAmB;IAG7C,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,UAAU;CAG5E"}