lynx-client 0.0.34 → 0.0.36

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 (149) hide show
  1. package/dist/cjs/index.js +2 -0
  2. package/dist/cjs/lib/addresses/lensAddresses.js +6 -6
  3. package/dist/cjs/lib/constants/feeIds.js +20 -0
  4. package/dist/cjs/lib/constants/groupIds.js +20 -0
  5. package/dist/cjs/lib/constants/pairIds.js +43 -1
  6. package/dist/cjs/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.js +3 -0
  7. package/dist/cjs/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.js +1 -0
  8. package/dist/cjs/lib/contractsIntegration/TriggersAndPortalLensService/ITriggersAndPortalLensService.js +31 -1
  9. package/dist/cjs/lib/contractsIntegration/TriggersAndPortalLensService/TriggersAndPortalLensService.js +60 -0
  10. package/dist/cjs/lib/marketHours/marketHoursUtils.js +663 -0
  11. package/dist/cjs/lib/priceFeeds/flare/flareFeedConstants.js +22 -0
  12. package/dist/cjs/lib/priceFeeds/pyth/pythFeedConstants.js +44 -0
  13. package/dist/cjs/lib/typechain/factories/contracts/Lynx/IntentsVerifier/TradeIntentsVerifierV1__factory.js +1 -1
  14. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Lex/LexPool/LexPoolV1__factory.js +1 -1
  15. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Lex/PNLR/PNLR__factory.js +1 -1
  16. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Lex/PoolAccountant/PoolAccountantV1__factory.js +1 -1
  17. package/dist/cjs/lib/typechain/factories/contracts/Lynx/OrderBook/OrderBookV1__factory.js +1 -1
  18. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Registry/RegistryV1__factory.js +1 -1
  19. package/dist/cjs/lib/typechain/factories/contracts/Lynx/TradersPortal/TradersPortalV1__factory.js +1 -1
  20. package/dist/cjs/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.js +21 -1
  21. package/dist/cjs/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.js +222 -1
  22. package/dist/cjs/lib/typechain/factories/contracts/Lynx/interfaces/IPriceValidatorV1__factory.js +5 -0
  23. package/dist/cjs/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.js +1 -1
  24. package/dist/cjs/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.js +46 -1
  25. package/dist/cjs/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.js +337 -1
  26. package/dist/esm/index.d.ts +1 -0
  27. package/dist/esm/index.d.ts.map +1 -1
  28. package/dist/esm/index.js +2 -0
  29. package/dist/esm/lib/addresses/lensAddresses.d.ts +6 -6
  30. package/dist/esm/lib/addresses/lensAddresses.js +6 -6
  31. package/dist/esm/lib/constants/feeIds.d.ts +5 -1
  32. package/dist/esm/lib/constants/feeIds.d.ts.map +1 -1
  33. package/dist/esm/lib/constants/feeIds.js +20 -0
  34. package/dist/esm/lib/constants/groupIds.d.ts +5 -1
  35. package/dist/esm/lib/constants/groupIds.d.ts.map +1 -1
  36. package/dist/esm/lib/constants/groupIds.js +20 -0
  37. package/dist/esm/lib/constants/pairIds.d.ts +19 -1
  38. package/dist/esm/lib/constants/pairIds.d.ts.map +1 -1
  39. package/dist/esm/lib/constants/pairIds.js +43 -1
  40. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.d.ts +2 -1
  41. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.d.ts.map +1 -1
  42. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.js +3 -0
  43. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.d.ts.map +1 -1
  44. package/dist/esm/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.js +1 -0
  45. package/dist/esm/lib/contractsIntegration/TriggersAndPortalLensService/ITriggersAndPortalLensService.d.ts +31 -1
  46. package/dist/esm/lib/contractsIntegration/TriggersAndPortalLensService/ITriggersAndPortalLensService.d.ts.map +1 -1
  47. package/dist/esm/lib/contractsIntegration/TriggersAndPortalLensService/ITriggersAndPortalLensService.js +31 -1
  48. package/dist/esm/lib/contractsIntegration/TriggersAndPortalLensService/TriggersAndPortalLensService.d.ts +8 -2
  49. package/dist/esm/lib/contractsIntegration/TriggersAndPortalLensService/TriggersAndPortalLensService.d.ts.map +1 -1
  50. package/dist/esm/lib/contractsIntegration/TriggersAndPortalLensService/TriggersAndPortalLensService.js +60 -0
  51. package/dist/esm/lib/marketHours/marketHoursUtils.d.ts +52 -0
  52. package/dist/esm/lib/marketHours/marketHoursUtils.d.ts.map +1 -0
  53. package/dist/esm/lib/marketHours/marketHoursUtils.js +663 -0
  54. package/dist/esm/lib/priceFeeds/flare/flareFeedConstants.d.ts.map +1 -1
  55. package/dist/esm/lib/priceFeeds/flare/flareFeedConstants.js +22 -0
  56. package/dist/esm/lib/priceFeeds/pyth/pythFeedConstants.d.ts.map +1 -1
  57. package/dist/esm/lib/priceFeeds/pyth/pythFeedConstants.js +44 -0
  58. package/dist/esm/lib/typechain/contracts/Lynx/TradingFloor/TradingFloorV1.d.ts +18 -6
  59. package/dist/esm/lib/typechain/contracts/Lynx/TradingFloor/TradingFloorV1.d.ts.map +1 -1
  60. package/dist/esm/lib/typechain/contracts/Lynx/Triggers/TriggersV1.d.ts +36 -2
  61. package/dist/esm/lib/typechain/contracts/Lynx/Triggers/TriggersV1.d.ts.map +1 -1
  62. package/dist/esm/lib/typechain/contracts/Lynx/interfaces/IPriceValidatorV1.d.ts +9 -3
  63. package/dist/esm/lib/typechain/contracts/Lynx/interfaces/IPriceValidatorV1.d.ts.map +1 -1
  64. package/dist/esm/lib/typechain/contracts/Peripheral/Lens/TradingFloorLens.d.ts +10 -1
  65. package/dist/esm/lib/typechain/contracts/Peripheral/Lens/TradingFloorLens.d.ts.map +1 -1
  66. package/dist/esm/lib/typechain/contracts/Peripheral/Lens/TriggersAndPortalLens.d.ts +173 -1
  67. package/dist/esm/lib/typechain/contracts/Peripheral/Lens/TriggersAndPortalLens.d.ts.map +1 -1
  68. package/dist/esm/lib/typechain/factories/contracts/Lynx/IntentsVerifier/TradeIntentsVerifierV1__factory.d.ts +1 -1
  69. package/dist/esm/lib/typechain/factories/contracts/Lynx/IntentsVerifier/TradeIntentsVerifierV1__factory.js +1 -1
  70. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/LexPool/LexPoolV1__factory.d.ts +1 -1
  71. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/LexPool/LexPoolV1__factory.js +1 -1
  72. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/PNLR/PNLR__factory.d.ts +1 -1
  73. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/PNLR/PNLR__factory.d.ts.map +1 -1
  74. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/PNLR/PNLR__factory.js +1 -1
  75. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/PoolAccountant/PoolAccountantV1__factory.d.ts +1 -1
  76. package/dist/esm/lib/typechain/factories/contracts/Lynx/Lex/PoolAccountant/PoolAccountantV1__factory.js +1 -1
  77. package/dist/esm/lib/typechain/factories/contracts/Lynx/OrderBook/OrderBookV1__factory.d.ts +1 -1
  78. package/dist/esm/lib/typechain/factories/contracts/Lynx/OrderBook/OrderBookV1__factory.js +1 -1
  79. package/dist/esm/lib/typechain/factories/contracts/Lynx/Registry/RegistryV1__factory.d.ts +1 -1
  80. package/dist/esm/lib/typechain/factories/contracts/Lynx/Registry/RegistryV1__factory.js +1 -1
  81. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradersPortal/TradersPortalV1__factory.d.ts +1 -1
  82. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradersPortal/TradersPortalV1__factory.js +1 -1
  83. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.d.ts +17 -1
  84. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.d.ts.map +1 -1
  85. package/dist/esm/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.js +21 -1
  86. package/dist/esm/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.d.ts +177 -1
  87. package/dist/esm/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.d.ts.map +1 -1
  88. package/dist/esm/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.js +222 -1
  89. package/dist/esm/lib/typechain/factories/contracts/Lynx/interfaces/IPriceValidatorV1__factory.d.ts +4 -0
  90. package/dist/esm/lib/typechain/factories/contracts/Lynx/interfaces/IPriceValidatorV1__factory.d.ts.map +1 -1
  91. package/dist/esm/lib/typechain/factories/contracts/Lynx/interfaces/IPriceValidatorV1__factory.js +5 -0
  92. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.d.ts +1 -1
  93. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.js +1 -1
  94. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.d.ts +37 -1
  95. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.d.ts.map +1 -1
  96. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.js +46 -1
  97. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.d.ts +259 -1
  98. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.d.ts.map +1 -1
  99. package/dist/esm/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.js +337 -1
  100. package/dist/types/index.d.ts +1 -0
  101. package/dist/types/index.d.ts.map +1 -1
  102. package/dist/types/lib/addresses/lensAddresses.d.ts +6 -6
  103. package/dist/types/lib/constants/feeIds.d.ts +5 -1
  104. package/dist/types/lib/constants/feeIds.d.ts.map +1 -1
  105. package/dist/types/lib/constants/groupIds.d.ts +5 -1
  106. package/dist/types/lib/constants/groupIds.d.ts.map +1 -1
  107. package/dist/types/lib/constants/pairIds.d.ts +19 -1
  108. package/dist/types/lib/constants/pairIds.d.ts.map +1 -1
  109. package/dist/types/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.d.ts +2 -1
  110. package/dist/types/lib/contractsIntegration/TradingFloorLensService/ITradingFloorLensService.d.ts.map +1 -1
  111. package/dist/types/lib/contractsIntegration/TradingFloorLensService/TradingFloorLensService.d.ts.map +1 -1
  112. package/dist/types/lib/contractsIntegration/TriggersAndPortalLensService/ITriggersAndPortalLensService.d.ts +31 -1
  113. package/dist/types/lib/contractsIntegration/TriggersAndPortalLensService/ITriggersAndPortalLensService.d.ts.map +1 -1
  114. package/dist/types/lib/contractsIntegration/TriggersAndPortalLensService/TriggersAndPortalLensService.d.ts +8 -2
  115. package/dist/types/lib/contractsIntegration/TriggersAndPortalLensService/TriggersAndPortalLensService.d.ts.map +1 -1
  116. package/dist/types/lib/marketHours/marketHoursUtils.d.ts +52 -0
  117. package/dist/types/lib/marketHours/marketHoursUtils.d.ts.map +1 -0
  118. package/dist/types/lib/priceFeeds/flare/flareFeedConstants.d.ts.map +1 -1
  119. package/dist/types/lib/priceFeeds/pyth/pythFeedConstants.d.ts.map +1 -1
  120. package/dist/types/lib/typechain/contracts/Lynx/TradingFloor/TradingFloorV1.d.ts +18 -6
  121. package/dist/types/lib/typechain/contracts/Lynx/TradingFloor/TradingFloorV1.d.ts.map +1 -1
  122. package/dist/types/lib/typechain/contracts/Lynx/Triggers/TriggersV1.d.ts +36 -2
  123. package/dist/types/lib/typechain/contracts/Lynx/Triggers/TriggersV1.d.ts.map +1 -1
  124. package/dist/types/lib/typechain/contracts/Lynx/interfaces/IPriceValidatorV1.d.ts +9 -3
  125. package/dist/types/lib/typechain/contracts/Lynx/interfaces/IPriceValidatorV1.d.ts.map +1 -1
  126. package/dist/types/lib/typechain/contracts/Peripheral/Lens/TradingFloorLens.d.ts +10 -1
  127. package/dist/types/lib/typechain/contracts/Peripheral/Lens/TradingFloorLens.d.ts.map +1 -1
  128. package/dist/types/lib/typechain/contracts/Peripheral/Lens/TriggersAndPortalLens.d.ts +173 -1
  129. package/dist/types/lib/typechain/contracts/Peripheral/Lens/TriggersAndPortalLens.d.ts.map +1 -1
  130. package/dist/types/lib/typechain/factories/contracts/Lynx/IntentsVerifier/TradeIntentsVerifierV1__factory.d.ts +1 -1
  131. package/dist/types/lib/typechain/factories/contracts/Lynx/Lex/LexPool/LexPoolV1__factory.d.ts +1 -1
  132. package/dist/types/lib/typechain/factories/contracts/Lynx/Lex/PNLR/PNLR__factory.d.ts +1 -1
  133. package/dist/types/lib/typechain/factories/contracts/Lynx/Lex/PNLR/PNLR__factory.d.ts.map +1 -1
  134. package/dist/types/lib/typechain/factories/contracts/Lynx/Lex/PoolAccountant/PoolAccountantV1__factory.d.ts +1 -1
  135. package/dist/types/lib/typechain/factories/contracts/Lynx/OrderBook/OrderBookV1__factory.d.ts +1 -1
  136. package/dist/types/lib/typechain/factories/contracts/Lynx/Registry/RegistryV1__factory.d.ts +1 -1
  137. package/dist/types/lib/typechain/factories/contracts/Lynx/TradersPortal/TradersPortalV1__factory.d.ts +1 -1
  138. package/dist/types/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.d.ts +17 -1
  139. package/dist/types/lib/typechain/factories/contracts/Lynx/TradingFloor/TradingFloorV1__factory.d.ts.map +1 -1
  140. package/dist/types/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.d.ts +177 -1
  141. package/dist/types/lib/typechain/factories/contracts/Lynx/Triggers/TriggersV1__factory.d.ts.map +1 -1
  142. package/dist/types/lib/typechain/factories/contracts/Lynx/interfaces/IPriceValidatorV1__factory.d.ts +4 -0
  143. package/dist/types/lib/typechain/factories/contracts/Lynx/interfaces/IPriceValidatorV1__factory.d.ts.map +1 -1
  144. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/LexLens__factory.d.ts +1 -1
  145. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.d.ts +37 -1
  146. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/TradingFloorLens__factory.d.ts.map +1 -1
  147. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.d.ts +259 -1
  148. package/dist/types/lib/typechain/factories/contracts/Peripheral/Lens/TriggersAndPortalLens__factory.d.ts.map +1 -1
  149. package/package.json +1 -1
@@ -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 = "0x6101206040526003600755603c6008556003600955603c600a55603c600b55603c600c556078600d5560b4600e55610708600f556103e8620186a06001620000489190620002c0565b620000549190620002ec565b6010556103e86200006a620186a06002620002c0565b620000769190620002ec565b601155620186a06200008a816005620002c0565b620000969190620002ec565b6012556003601355348015620000ab57600080fd5b506040516200629c3803806200629c833981016040819052620000ce9162000328565b806001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000328565b606462000145620186a06001620002c0565b620001519190620002ec565b606462000163620186a0600a620002c0565b6200016f9190620002ec565b600080546001600160a01b0319163317905560805260a0526001600160a01b0390811660c0528116620001d75760405162461bcd60e51b815260206004820152600c60248201526b57524f4e475f504152414d5360a01b604482015260640160405180910390fd5b6001600160a01b03811660e081905260408051637b10399960e01b81529051637b103999916004808201926020929091908290030181865afa15801562000222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000248919062000328565b6001600160a01b031663776af5ba6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000286573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ac919062000328565b6001600160a01b031661010052506200034f565b8082028115828204841417620002e657634e487b7160e01b600052601160045260246000fd5b92915050565b6000826200030a57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03811681146200032557600080fd5b50565b6000602082840312156200033b57600080fd5b815162000348816200030f565b9392505050565b60805160a05160c05160e05161010051615e216200047b600039600081816109740152818161139d01528181611fe801528181612d6601526136d701526000818161047f01528181610f4e015281816110ee0152818161157c015281816116d401528181611808015281816119d601528181611c3c01528181611ccf01528181611e10015281816120dd01528181612413015281816124ad015281816125da015281816127710152818161295401528181612a7a01528181612b5501528181612e5b0152818161343d01528181613594015281816137d601528181614322015281816143d3015281816144620152818161457c0152614885015260008181613cdc015261404501526000818161064201526140a0015260008181610c570152614b240152615e216000f3fe6080604052600436106104465760003560e01c8063776af5ba11610234578063b187bd261161012e578063e01e4bb2116100b6578063ee3ed22e1161007a578063ee3ed22e14610d42578063f5f5ba7214610d59578063f851a44014610d8c578063fae5a83f14610dac578063fd057e9414610dcc57600080fd5b8063e01e4bb214610cce578063e0b7d50b14610ce4578063e231377014610cfa578063e8051b0114610d1a578063e9c714f214610d2d57600080fd5b8063b81bfa05116100fd578063b81bfa0514610c25578063b88750a914610c45578063bfc084d914610c79578063c4ae316814610c99578063d99dc0c114610cae57600080fd5b8063b187bd2614610bac578063b71d1a0c14610bcd578063b71f3cfe14610bed578063b767e7e814610c0557600080fd5b80639f918f45116101bc578063aaf5eb6811610180578063aaf5eb6814610b1b578063ad169c9c14610b37578063ad1f2b5614610b57578063af74c38214610b6c578063b16f579f14610b8c57600080fd5b80639f918f4514610a7f578063a1d627a114610ab2578063a5b6020814610ad2578063a5e02c8d14610ae8578063a9f7c52114610b0857600080fd5b8063814052051161020357806381405205146109d957806386c7f19a146109ef5780638aa1043514610a115780638f06222714610a3e5780639abf178214610a5f57600080fd5b8063776af5ba146109625780637f31c2db146109965780637f588b91146109ac57806380193b26146109c257600080fd5b80633b3216661161034557806358cc4b2c116102cd5780636447dc8b116102915780636447dc8b146108e95780636c1bb5ca146108fc578063718ddc141461091c5780637670d9481461092f578063771ad70d1461094f57600080fd5b806358cc4b2c1461082a5780635d2cdfea1461084a5780635dce36fb1461087d5780635f48bd3314610893578063614d08f8146108b357600080fd5b806345b617131161031457806345b61713146107ae578063490580e3146107c45780634bdf1973146107e45780634cdb06a5146107f75780634d3691511461081757600080fd5b80633b3216661461073d5780633be3d626146107505780633ce8e10214610765578063410c0b7c1461079857600080fd5b806326b4120a116103d357806336930d0b1161039757806336930d0b1461066457806336b669f71461068457806338267257146106ca57806338b90333146106ea578063392503e01461072757600080fd5b806326b4120a146105aa5780632f86d7c2146105ca578063330596f4146105ea57806333511e5e1461060057806333a01d321461063057600080fd5b8063221407af1161041a578063221407af1461050f57806322ede93c1461052257806325577e9f146105385780632649169814610558578063267822471461058a57600080fd5b80624b8eb41461044b5780630d3b0b761461046d57806310b4cc13146104be57806320cb5976146104e2575b600080fd5b34801561045757600080fd5b5061046b610466366004615222565b610dec565b005b34801561047957600080fd5b506104a17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104ca57600080fd5b506104d460105481565b6040519081526020016104b5565b3480156104ee57600080fd5b506104d46104fd366004615222565b60146020526000908152604090205481565b61046b61051d366004615286565b610ec6565b34801561052e57600080fd5b506104d460115481565b34801561054457600080fd5b5061046b6105533660046152e3565b6111ce565b34801561056457600080fd5b506016546105759063ffffffff1681565b60405163ffffffff90911681526020016104b5565b34801561059657600080fd5b506001546104a1906001600160a01b031681565b3480156105b657600080fd5b5061046b6105c5366004615222565b611206565b3480156105d657600080fd5b5061046b6105e5366004615222565b611263565b3480156105f657600080fd5b506104d460095481565b34801561060c57600080fd5b5061062061061b366004615313565b6112e1565b60405190151581526020016104b5565b34801561063c57600080fd5b506104d47f000000000000000000000000000000000000000000000000000000000000000081565b34801561067057600080fd5b5061046b61067f366004615222565b611303565b610697610692366004615286565b6114c3565b60408051825181526020808401516001600160401b039081169183019190915292820151909216908201526060016104b5565b3480156106d657600080fd5b5061046b6106e5366004615222565b6114f4565b3480156106f657600080fd5b5061071a604051806040016040528060048152602001631898181b60e11b81525081565b6040516104b59190615382565b34801561073357600080fd5b506104d4600f5481565b61046b61074b366004615286565b61177d565b34801561075c57600080fd5b5061046b611ab5565b34801561077157600080fd5b506105756107803660046153a5565b60156020526000908152604090205463ffffffff1681565b3480156107a457600080fd5b506104d4600c5481565b3480156107ba57600080fd5b506104d460075481565b3480156107d057600080fd5b5061046b6107df366004615222565b611b47565b61046b6107f2366004615286565b611b98565b34801561080357600080fd5b5061046b610812366004615222565b611ee5565b61046b610825366004615286565b611f4e565b34801561083657600080fd5b5061046b6108453660046153c2565b61222d565b34801561085657600080fd5b50610575610865366004615222565b60056020526000908152604090205463ffffffff1681565b34801561088957600080fd5b506104d4600a5481565b34801561089f57600080fd5b5061046b6108ae366004615222565b6122f0565b3480156108bf57600080fd5b5061071a6040518060400160405280600a8152602001695472696767657273563160b01b81525081565b61046b6108f7366004615286565b612379565b34801561090857600080fd5b5061046b6109173660046152e3565b6126b2565b61046b61092a366004615286565b6126e6565b34801561093b57600080fd5b5061046b61094a366004615222565b612983565b61046b61095d366004615286565b6129e0565b34801561096e57600080fd5b506104a17f000000000000000000000000000000000000000000000000000000000000000081565b3480156109a257600080fd5b506104d460085481565b3480156109b857600080fd5b506104d4600b5481565b3480156109ce57600080fd5b506104d4620186a081565b3480156109e557600080fd5b506104d460135481565b3480156109fb57600080fd5b50610a04612c2b565b6040516104b591906153df565b348015610a1d57600080fd5b506040805180820190915260048152631898181b60e11b602082015261071a565b348015610a4a57600080fd5b5060165461062090600160281b900460ff1681565b348015610a6b57600080fd5b5061046b610a7a366004615222565b612c3c565b348015610a8b57600080fd5b50610575610a9a366004615222565b60046020526000908152604090205463ffffffff1681565b348015610abe57600080fd5b506006546104a1906001600160a01b031681565b348015610ade57600080fd5b506104d4600e5481565b348015610af457600080fd5b5061046b610b03366004615313565b612c99565b61046b610b16366004615286565b612ccc565b348015610b2757600080fd5b506104d4670de0b6b3a764000081565b348015610b4357600080fd5b5061046b610b52366004615222565b612f8c565b348015610b6357600080fd5b506104d4606481565b348015610b7857600080fd5b5061046b610b87366004615222565b613022565b348015610b9857600080fd5b50610575610ba73660046153a5565b613096565b348015610bb857600080fd5b5060165461062090600160201b900460ff1681565b348015610bd957600080fd5b5061046b610be8366004615313565b6130cc565b348015610bf957600080fd5b506104d4633b9aca0081565b348015610c1157600080fd5b5061046b610c20366004615420565b613174565b348015610c3157600080fd5b5061046b610c40366004615222565b61324b565b348015610c5157600080fd5b506104d47f000000000000000000000000000000000000000000000000000000000000000081565b348015610c8557600080fd5b5061046b610c94366004615222565b61329e565b348015610ca557600080fd5b5061046b6132fb565b348015610cba57600080fd5b5061046b610cc9366004615313565b613382565b348015610cda57600080fd5b506104d4600d5481565b348015610cf057600080fd5b506104d460125481565b348015610d0657600080fd5b5061046b610d15366004615222565b6133b5565b61046b610d28366004615286565b61363d565b348015610d3957600080fd5b5061046b6139f2565b348015610d4e57600080fd5b50610575620186a081565b348015610d6557600080fd5b5060408051808201909152600a8152695472696767657273563160b01b602082015261071a565b348015610d9857600080fd5b506000546104a1906001600160a01b031681565b348015610db857600080fd5b5061046b610dc7366004615313565b613b10565b348015610dd857600080fd5b5061046b610de7366004615222565b613c4f565b6000546001600160a01b03163314610e1f5760405162461bcd60e51b8152600401610e169061544e565b60405180910390fd5b600081118015610e30575060085481115b8015610e3d5750600a5481115b610e595760405162461bcd60e51b8152600401610e1690615472565b600d8190556040517f6d61726b65744f726465727341637469766174696f6e54696d654c696d6974008152601f015b604051908190038120828252907f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab906020015b60405180910390a250565b601654600160281b900460ff1615610ef05760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff1615610f1a5760405162461bcd60e51b8152600401610e16906154b5565b610f23336112e1565b610f3f5760405162461bcd60e51b8152600401610e16906154d5565b610f47613cda565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050876040518263ffffffff1660e01b8152600401610f9a91815260200190565b60a060405180830381865afa158015610fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdb9190615540565b505092506001600160401b031692509250600082116110365760405162461bcd60e51b81526020600482015260176024820152762727afa822a72224a723afa6a0a925a2aa2fa7a92222a960491b6044820152606401610e16565b600483600581111561104a5761104a6155ab565b1461108a5760405162461bcd60e51b815260206004820152601060248201526f1393d517d0d313d4d157d3505492d15560821b6044820152606401610e16565b600061109c8261ffff16348888613d4f565b90506110ad83826000015184613e5e565b6020810151806110bb613fcb565b602083015160405163651d1d4160e11b8152600481018b90526001600160401b03918216602482015290821660448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ca3a3a8290606401600060405180830381600087803b15801561113a57600080fd5b505af115801561114e573d6000803e3d6000fd5b50505050856005811115611164576111646155ab565b6020848101518551604080516001600160401b038781168252909316938301939093528183015290518b9133917f5b5ec0827d50049e9f15c1d5c28dc87d620987ef82a18f0b98afac1c76076d3d9181900360600190a45050505050506111c9614043565b505050565b6000546001600160a01b031633146111f85760405162461bcd60e51b8152600401610e169061544e565b611202828261409e565b5050565b6000546001600160a01b031633146112305760405162461bcd60e51b8152600401610e169061544e565b600e8190556040517f6d61726b65744f72646572546967687454696d6552616e6765000000000000008152601901610e88565b6000546001600160a01b0316331461128d5760405162461bcd60e51b8152600401610e169061544e565b60085481106112ae5760405162461bcd60e51b8152600401610e1690615472565b60078190556040517f6d696e54726967676572506572696f64466f724d61726b65744f7264657273008152601f01610e88565b6001600160a01b03811660009081526003602052604081205415155b92915050565b601654600160281b900460ff161561132d5760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff16156113575760405162461bcd60e51b8152600401610e16906154b5565b611360336112e1565b61137c5760405162461bcd60e51b8152600401610e16906154d5565b611384613cda565b60405163c608b6c160e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af11580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141291906155fb565b9050600c5481604001516001600160401b031661142f91906156ab565b42101561144e5760405162461bcd60e51b8152600401610e16906156be565b80602001516003811115611464576114646155ab565b60608201516080830151604080516001600160401b039384168152929091166020830152849133917f7b5b2e57aed6ee99244bd22f2b43e33e9fcbf0d77a9f425d59ee2d74e1c3795d910160405180910390a4506114c0614043565b50565b60408051606081018252600080825260208201819052918101919091526114ec84348585613d4f565b949350505050565b601654600160281b900460ff161561151e5760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff16156115485760405162461bcd60e51b8152600401610e16906154b5565b611551336112e1565b61156d5760405162461bcd60e51b8152600401610e16906154d5565b611575613cda565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050856040518263ffffffff1660e01b81526004016115c891815260200190565b60a060405180830381865afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190615540565b505092506001600160401b0316925092506000821161163a5760405162461bcd60e51b8152600401610e16906156e4565b600483600581111561164e5761164e6155ab565b1461168e5760405162461bcd60e51b815260206004820152601060248201526f1393d517d0d313d4d157d3505492d15560821b6044820152606401610e16565b600c5461169b90836156ab565b4210156116ba5760405162461bcd60e51b8152600401610e16906156be565b601054604051634ebe5c3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691634ebe5c339161170d9188916001919060040161570e565b600060405180830381600087803b15801561172757600080fd5b505af115801561173b573d6000803e3d6000fd5b505060405161ffff8416925086915033907f89a3ecf5024675f1d0abc6dc42608fc41216f103c12c2c84f8ca3938bd055f0390600090a45050506114c0614043565b601654600160281b900460ff16156117a75760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff16156117d15760405162461bcd60e51b8152600401610e16906154b5565b6117da336112e1565b6117f65760405162461bcd60e51b8152600401610e16906154d5565b6117fe613cda565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050896040518263ffffffff1660e01b815260040161185491815260200190565b60a060405180830381865afa158015611871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118959190615540565b9450945094506001600160401b031694509450600084116118f15760405162461bcd60e51b81526020600482015260166024820152752727afa822a72224a723afa624a6a4aa2fa7a92222a960511b6044820152606401610e16565b6002856005811115611905576119056155ab565b146119435760405162461bcd60e51b815260206004820152600e60248201526d1393d517d3d4115397d31253525560921b6044820152606401610e16565b60006119558461ffff16348a8a613d4f565b905061196585826000015161415d565b6020810151600061197c61ffff8716838688614227565b905061198d8b8783888c600261431a565b61199e575050505050505050611aad565b6119a6613fcb565b601154604051631ea9af6b60e01b8152600481018d90526001600160401b038316602482015260448101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631ea9af6b906064015b600060405180830381600087803b158015611a2357600080fd5b505af1158015611a37573d6000803e3d6000fd5b50505050876005811115611a4d57611a4d6155ab565b6020848101518551604080516001600160401b038781168252909316938301939093528183015290518d9133917f60fab6e183a7c350210c0b457db01423b47aa3e72f5b735b8dbb3ecd3e8077439181900360600190a450505050505050505b6111c9614043565b6000546001600160a01b03163314611adf5760405162461bcd60e51b8152600401610e169061544e565b6016805460ff600160281b808304821615810265ff00000000001990931692909217928390556040517f8e47bd62470c6cba4d30c023548622607c9c84402a5655f2569b7934c36a9e4f93611b3d9390049091161515815260200190565b60405180910390a1565b6000546001600160a01b03163314611b715760405162461bcd60e51b8152600401610e169061544e565b6013818155604051726d61785472696767657273506572426c6f636b60681b815201610e88565b601654600160281b900460ff1615611bc25760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff1615611bec5760405162461bcd60e51b8152600401610e16906154b5565b611bf5336112e1565b611c115760405162461bcd60e51b8152600401610e16906154d5565b611c19613cda565b60405163095be50560e41b81526004810184905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160a060405180830381865afa158015611c83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca79190615540565b506040516366307a4f60e01b8152600481018a90529195509350600092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506366307a4f90602401608060405180830381865afa158015611d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3b91906157c3565b905060008361ffff1611611d615760405162461bcd60e51b8152600401610e16906156e4565b600081606001516001600160401b031611611da65760405162461bcd60e51b81526020600482015260056024820152641393d7d4d360da1b6044820152606401610e16565b60208101516001600160401b03166000611dc661ffff8616348989613d4f565b9050611dd682826000015161415d565b60208101516060840151600090611def9083888a614662565b9050611df9613fcb565b604051632029fcf560e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906380a7f3d490611e4c908d90600290879087906004016157df565b600060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b50508451604080516001600160401b038087168252871660208201529081019190915261ffff8a1692508c915033907fb03dbc9368faf0f8588dc8429c40a26ef9a637488f1ea5521a2ba2bfb5ff20169060600160405180910390a4505050505050506111c9614043565b6000546001600160a01b03163314611f0f5760405162461bcd60e51b8152600401610e169061544e565b60118190556040517f6f70656e506f736974696f6e43616e63656c6c6174696f6e466565467261637481526234b7b760e91b6020820152602301610e88565b601654600160281b900460ff1615611f785760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff1615611fa25760405162461bcd60e51b8152600401610e16906154b5565b611fab336112e1565b611fc75760405162461bcd60e51b8152600401610e16906154d5565b611fcf613cda565b60405163c608b6c160e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af1158015612039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205d91906155fb565b9050600281602001516003811115612077576120776155ab565b146120ba5760405162461bcd60e51b815260206004820152601360248201527215541110551157d3d491115497d393d517d4d3606a1b6044820152606401610e16565b60405163095be50560e41b81526004810185905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160a060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121489190615540565b5093509350505060006121618361ffff16348888613d4f565b905061217f84604001516001600160401b0316826000015185613e5e565b61219484606001518260200151846000614782565b6121f757836020015160038111156121ae576121ae6155ab565b87336001600160a01b0316600080516020615dcc83398151915260028860600151866020015160006040516121e6949392919061582b565b60405180910390a450505050611aad565b6121ff613fcb565b60008160200151905061221f33898760200151600289606001518661486b565b5050505050506111c9614043565b6000546001600160a01b031633146122575760405162461bcd60e51b8152600401610e169061544e565b620186a063ffffffff821611156122a25760405162461bcd60e51b815260206004820152600f60248201526e084aa8c8c8aa4bea89e9ebe90928e9608b1b6044820152606401610e16565b6016805463ffffffff191663ffffffff83169081179091556040519081527f06ddabf029f0ad871d8e8c56f73e357cc18f651f56af47fddc1884a2d31405f49060200160405180910390a150565b6000546001600160a01b0316331461231a5760405162461bcd60e51b8152600401610e169061544e565b600a54811061233b5760405162461bcd60e51b8152600401610e1690615472565b60098190556040517f6d696e54726967676572506572696f64466f724d61726b65744f726465727343815261185d60f21b6020820152602201610e88565b601654600160281b900460ff16156123a35760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff16156123cd5760405162461bcd60e51b8152600401610e16906154b5565b6123d6336112e1565b6123f25760405162461bcd60e51b8152600401610e16906154d5565b6123fa613cda565b60405163095be50560e41b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906395be50509060240160a060405180830381865afa158015612462573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124869190615540565b50506040516366307a4f60e01b815260048101889052909350600092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506366307a4f90602401608060405180830381865afa1580156124f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251991906157c3565b905060008261ffff161161253f5760405162461bcd60e51b8152600401610e16906156e4565b600081604001516001600160401b0316116125845760405162461bcd60e51b815260206004820152600560248201526404e4f5f54560dc1b6044820152606401610e16565b80516001600160401b031660006125a161ffff8516348888613d4f565b90506125b182826000015161415d565b60208101516125be613fcb565b6020820151604051632029fcf560e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916380a7f3d491612615918c916001919087906004016157df565b600060405180830381600087803b15801561262f57600080fd5b505af1158015612643573d6000803e3d6000fd5b505050506020828101518351604080516001600160401b0386811682529093169383019390935281830152905161ffff8716918a9133917fbe700227f721a08f3b755aa3348a63564c2c07890aba73de46372f7bffcaa2e2919081900360600190a450505050506111c9614043565b6000546001600160a01b031633146126dc5760405162461bcd60e51b8152600401610e169061544e565b6112028282614b22565b601654600160281b900460ff16156127105760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff161561273a5760405162461bcd60e51b8152600401610e16906154b5565b612743336112e1565b61275f5760405162461bcd60e51b8152600401610e16906154d5565b612767613cda565b60008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050896040518263ffffffff1660e01b81526004016127bd91815260200190565b60a060405180830381865afa1580156127da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fe9190615540565b9450945094506001600160401b0316945094506000841161285b5760405162461bcd60e51b81526020600482015260176024820152762727afa822a72224a723afa6a0a925a2aa2fa7a92222a960491b6044820152606401610e16565b600185600581111561286f5761286f6155ab565b146128ae5760405162461bcd60e51b815260206004820152600f60248201526e1393d517d3d4115397d3505492d155608a1b6044820152606401610e16565b60006128c08461ffff16348a8a613d4f565b90506128d185826000015186613e5e565b602081015160006128e861ffff8716838688614227565b90506128f98b8783888c600161431a565b61290a575050505050505050611aad565b612912613fcb565b6011548351604051632d90a70960e11b8152600481018e90526001600160401b0380851660248301526044820193909352911660648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635b214e1290608401611a09565b6000546001600160a01b031633146129ad5760405162461bcd60e51b8152600401610e169061544e565b600f8190556040517f74726967676572507269636546726573686e65737354696d6552616e676500008152601e01610e88565b601654600160281b900460ff1615612a0a5760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff1615612a345760405162461bcd60e51b8152600401610e16906154b5565b612a3d336112e1565b612a595760405162461bcd60e51b8152600401610e16906154d5565b612a61613cda565b60405163095be50560e41b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906395be50509060240160a060405180830381865afa158015612ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aed9190615540565b50509250505060008161ffff1611612b175760405162461bcd60e51b8152600401610e16906156e4565b6000612b298261ffff16348686613d4f565b6020810151909150612b39613fcb565b6020820151604051632029fcf560e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916380a7f3d491612b90918a916003919087906004016157df565b600060405180830381600087803b158015612baa57600080fd5b505af1158015612bbe573d6000803e3d6000fd5b505050506020828101518351604080516001600160401b0386811682529093169383019390935281830152905161ffff851691889133917f086bdd0cdd4ae322dd6112d05bdf96c020e6b90cc84ee2d39941bd716e18fb92919081900360600190a45050506111c9614043565b6060612c376002614bef565b905090565b6000546001600160a01b03163314612c665760405162461bcd60e51b8152600401610e169061544e565b60108190556040517f6d61726b65744f7264657243616e63656c4665654672616374696f6e000000008152601c01610e88565b6000546001600160a01b03163314612cc35760405162461bcd60e51b8152600401610e169061544e565b6114c081614bfc565b601654600160281b900460ff1615612cf65760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff1615612d205760405162461bcd60e51b8152600401610e16906154b5565b612d29336112e1565b612d455760405162461bcd60e51b8152600401610e16906154d5565b612d4d613cda565b60405163c608b6c160e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af1158015612db7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddb91906155fb565b9050600181602001516003811115612df557612df56155ab565b14612e385760405162461bcd60e51b815260206004820152601360248201527205550444154455f4f524445525f4e4f545f545606c1b6044820152606401610e16565b60405163095be50560e41b81526004810185905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160a060405180830381865afa158015612ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec69190615540565b509350935050506000612edf8361ffff16348888613d4f565b9050612efd84604001516001600160401b0316826000015185613e5e565b612f1284606001518260200151846001614782565b612f645783602001516003811115612f2c57612f2c6155ab565b87336001600160a01b0316600080516020615dcc83398151915260018860600151866020015160006040516121e6949392919061587d565b612f6c613fcb565b60008160200151905061221f33898760200151600189606001518661486b565b6000546001600160a01b03163314612fb65760405162461bcd60e51b8152600401610e169061544e565b60095481118015612fc85750600d5481105b612fe45760405162461bcd60e51b8152600401610e1690615472565b600a8190556040517f6d617854726967676572506572696f64466f724d61726b65744f726465727343815261185d60f21b6020820152602201610e88565b6000546001600160a01b0316331461304c5760405162461bcd60e51b8152600401610e169061544e565b6000811161306c5760405162461bcd60e51b8152600401610e1690615472565b6012819055604051733634b6b4ba39a6b0b933b4b7233930b1ba34b7b760611b8152601401610e88565b61ffff811660009081526015602052604081205463ffffffff16806130c35760165463ffffffff166130c5565b805b9392505050565b6000546001600160a01b031633146131125760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b6044820152606401610e16565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6000546001600160a01b0316331461319e5760405162461bcd60e51b8152600401610e169061544e565b620186a063ffffffff821611156131e95760405162461bcd60e51b815260206004820152600f60248201526e084aa8c8c8aa4bea89e9ebe90928e9608b1b6044820152606401610e16565b61ffff8216600081815260156020908152604091829020805463ffffffff191663ffffffff861690811790915591519182527fa2a4acd376a1168953c22b4e4bc5acdde62a49e199b28c4f9b818cd312351f8c91015b60405180910390a25050565b6000546001600160a01b031633146132755760405162461bcd60e51b8152600401610e169061544e565b600c819055604051721b585c9ad95d13dc99195c9cd51a5b595bdd5d606a1b8152601301610e88565b6000546001600160a01b031633146132c85760405162461bcd60e51b8152600401610e169061544e565b600b8190556040517f6d696e54726967676572506572696f64466f724c696d69744f726465727300008152601e01610e88565b6000546001600160a01b031633146133255760405162461bcd60e51b8152600401610e169061544e565b6016805460ff600160201b808304821615810264ff000000001990931692909217928390556040517fda88b5dfaac55549d4ddddd43a09d4b911233df354952ebc9ac2041aa185343693611b3d9390049091161515815260200190565b6000546001600160a01b031633146133ac5760405162461bcd60e51b8152600401610e169061544e565b6114c081614c8a565b601654600160281b900460ff16156133df5760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff16156134095760405162461bcd60e51b8152600401610e16906154b5565b613412336112e1565b61342e5760405162461bcd60e51b8152600401610e16906154d5565b613436613cda565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050856040518263ffffffff1660e01b815260040161348991815260200190565b60a060405180830381865afa1580156134a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ca9190615540565b505092506001600160401b031692509250600082116134fb5760405162461bcd60e51b8152600401610e16906156e4565b600183600581111561350f5761350f6155ab565b1461354e5760405162461bcd60e51b815260206004820152600f60248201526e1393d517d3d4115397d3505492d155608a1b6044820152606401610e16565b600c5461355b90836156ab565b42101561357a5760405162461bcd60e51b8152600401610e16906156be565b601054604051636e01af8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636e01af8d916135cd918891600191906004016158cf565b600060405180830381600087803b1580156135e757600080fd5b505af11580156135fb573d6000803e3d6000fd5b505060405161ffff8416925086915033907f5079795ec65f793d5a0ed74d8f8e1562b7795934b40612bf55cf0e5d55a3447990600090a45050506114c0614043565b601654600160281b900460ff16156136675760405162461bcd60e51b8152600401610e1690615497565b601654600160201b900460ff16156136915760405162461bcd60e51b8152600401610e16906154b5565b61369a336112e1565b6136b65760405162461bcd60e51b8152600401610e16906154d5565b6136be613cda565b60405163c608b6c160e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af1158015613728573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374c91906155fb565b9050600381602001516003811115613766576137666155ab565b146137b35760405162461bcd60e51b815260206004820152601a60248201527f5550444154455f4f524445525f4e4f545f54505f414e445f534c0000000000006044820152606401610e16565b60405163095be50560e41b81526004810185905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160a060405180830381865afa15801561381d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138419190615540565b50935093505050600061385a8361ffff16348888613d4f565b905061387884604001516001600160401b0316826000015185613e5e565b600061388f85606001518360200151856001614782565b905060006138a886608001518460200151866000614782565b90508115806138b5575080155b1561392657856020015160038111156138d0576138d06155ab565b89336001600160a01b0316600080516020615dcc83398151915260018a6060015188602001516139008989614d23565b60006040516139139594939291906158df565b60405180910390a4505050505050611aad565b61392e613fcb565b60008360200151905061394e338b896020015160018b606001518661486b565b61398d5760405162461bcd60e51b815260206004820152601060248201526f4641494c45445f54505f55504441544560801b6044820152606401610e16565b6139a4338b896020015160028b608001518661486b565b6139e35760405162461bcd60e51b815260206004820152601060248201526f4641494c45445f534c5f55504441544560801b6044820152606401610e16565b505050505050506111c9614043565b6001546001600160a01b031633148015613a1657506001546001600160a01b031615155b613a625760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e00006044820152606401610e16565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101613168565b6000546001600160a01b03163314613b3a5760405162461bcd60e51b8152600401610e169061544e565b806001600160a01b0316634535dc4c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9c919061592c565b613bda5760405162461bcd60e51b815260206004820152600f60248201526e10a83934b1b2ab30b634b230ba37b960891b6044820152606401610e16565b600680546001600160a01b0319166001600160a01b0383161790556040516d283934b1b2ab30b634b230ba37b960911b8152600e016040519081900381206001600160a01b0383168252907f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee4442278190602001610ebb565b6000546001600160a01b03163314613c795760405162461bcd60e51b8152600401610e169061544e565b60075481118015613c8b5750600d5481105b613ca75760405162461bcd60e51b8152600401610e1690615472565b60088190556040517f6d617854726967676572506572696f64466f724d61726b65744f7264657273008152601f01610e88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f83d08ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613d3557600080fd5b505af1158015613d49573d6000803e3d6000fd5b50505050565b6040805160608101825260008082526020820181905291810182905290613d7886868686614dbd565b60008781526004602090815260408220549083015192935063ffffffff1691613daa906001600160401b031683614e58565b90508083604001516001600160401b03161115613e095760405162461bcd60e51b815260206004820152601960248201527f434f4e464944454e43455f52414e47455f544f4f5f57494445000000000000006044820152606401610e16565b8251421015613e525760405162461bcd60e51b815260206004820152601560248201527411955515549157d4149250d157d4915413d4951151605a1b6044820152606401610e16565b50909695505050505050565b61271061ffff821611600081613e7657600754613e7a565b6009545b9050600082613e8b57600854613e8f565b600a545b90506000613e9d83886156ab565b90506000613eab83896156ab565b905081421015613efd5760405162461bcd60e51b815260206004820152601d60248201527f4d41524b45545f4f524445525f545249474745525f544f4f5f534f4f4e0000006044820152606401610e16565b600d54613f0a90896156ab565b421115613f595760405162461bcd60e51b815260206004820152601d60248201527f4d41524b45545f4f524445525f545249474745525f544f4f5f4c4154450000006044820152606401610e16565b818710158015613f695750808711155b613fc15760405162461bcd60e51b8152602060048201526024808201527f4d41524b45545f4f524445525f50524943455f4f55545f4f465f54494d455f4660448201526352414d4560e01b6064820152608401610e16565b5050505050505050565b4360009081526014602052604090205460135481106140255760405162461bcd60e51b81526020600482015260166024820152754d41585f54524947474552535f5045525f424c4f434b60501b6044820152606401610e16565b6140308160016156ab565b4360009081526014602052604090205550565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340da020f6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613d3557600080fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff1611156141065760405162461bcd60e51b815260206004820152600f60248201526e0a6a0a48a8288bea89e9ebe90928e9608b1b6044820152606401610e16565b600082815260056020908152604091829020805463ffffffff191663ffffffff8516908117909155915191825283917ffe5fd0852fab5f8ba593533cf24a4b4b235704c0e06956d0a58cc2ca0a4b6b44910161323f565b6000600b548361416d91906156ab565b9050804210156141bf5760405162461bcd60e51b815260206004820152601c60248201527f4c494d49545f4f524445525f545249474745525f544f4f5f534f4f4e000000006044820152606401610e16565b8082101561421b5760405162461bcd60e51b815260206004820152602360248201527f4c494d49545f4f524445525f50524943455f4f55545f4f465f54494d455f4652604482015262414d4560e81b6064820152608401610e16565b6111c982600f54614e72565b6000620186a08363ffffffff1611156142825760405162461bcd60e51b815260206004820152601960248201527f5350524541445f524544554354494f4e5f544f4f5f48494748000000000000006044820152606401610e16565b600085815260056020526040812054620186a0906142b0906001600160401b0388169063ffffffff16615947565b6142ba919061595e565b90506000620186a06142d263ffffffff871684615980565b6001600160401b03166142e5919061595e565b6142ef90836159ab565b9050836143055761430081876159ab565b61430f565b61430f81876159cb565b979650505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f8b6040518263ffffffff1660e01b815260040161436e91815260200190565b608060405180830381865afa15801561438b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143af91906157c3565b60405163ddf474f160e01b8152600481018c90529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ddf474f190602401608060405180830381865afa15801561441a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061443e91906157c3565b604051638f7a8fb560e01b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638f7a8fb59060240160e060405180830381865afa1580156144a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144cd91906159eb565b90506144ea836040015183604001518c84606001518d6001614f00565b9450614507836060015183606001518c84606001518d6000614f00565b93505050506000826001600160401b03166000148061452e575061452e8389896001614782565b905060006001600160401b03831615806145505750614550838a8a6000614782565b905081158061455d575080155b1561464f57601154604051636e01af8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636e01af8d916145b4918f918b91906004016158cf565b600060405180830381600087803b1580156145ce57600080fd5b505af11580156145e2573d6000803e3d6000fd5b505050508660058111156145f8576145f86155ab565b8b337ff83a7472720a3cf234601433618092ec0838ad712b481376cd7860b9fe7397558d8d89896146298a8a614d23565b60405161463a959493929190615aa5565b60405180910390a46000945050505050614658565b60019450505050505b9695505050505050565b60008061466e83613096565b90508063ffffffff1660000361468757849150506114ec565b6000620186a06146a663ffffffff84166001600160401b038a16615947565b6146b0919061595e565b905080851561475557806001600160401b0316886001600160401b0316101561471b5760405162461bcd60e51b815260206004820152601760248201527f534c5f544f4f5f534d414c4c5f464f525f4255464645520000000000000000006044820152606401610e16565b6000614727828a6159ab565b9050806001600160401b0316886001600160401b031611614748578061474a565b875b9450505050506114ec565b6000614761828a6159cb565b9050806001600160401b0316886001600160401b031610614748578061474a565b6000846001600160401b031660000361479d575060016114ec565b60006147c6856001600160401b0316600019601254146147bf57601254614e58565b6000614e58565b9050821561481d57836147f6576147e6816001600160401b038716615ae3565b866001600160401b031610614815565b614809816001600160401b0387166156ab565b866001600160401b0316115b9150506114ec565b8361484557614835816001600160401b0387166156ab565b866001600160401b031611614815565b614858816001600160401b038716615ae3565b866001600160401b0316109150506114ec565b60405163c07f992160e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c07f9921906148c0908990889088908890600401615af6565b600060405180830381600087803b1580156148da57600080fd5b505af19250505080156148eb575060015b614ac2576148f7615b06565b806308c379a00361496b575061490b615b22565b80614916575061496d565b856003811115614928576149286155ab565b87896001600160a01b0316600080516020615dcc8339815191528888888760006040516149599594939291906158df565b60405180910390a46000915050614658565b505b3d808015614997576040519150601f19603f3d011682016040523d82523d6000602084013e61499c565b606091505b50632eb752bf60e21b6149ae82615bab565b6001600160e01b03191603614a835760018560028111156149d1576149d16155ab565b14614a145760405162461bcd60e51b815260206004820152601360248201527204341505f4552524f525f4e4f545f4f4e5f545606c1b6044820152606401610e16565b60248101516044820151876003811115614a3057614a306155ab565b898b6001600160a01b0316600080516020615dcc8339815191528a8a8a886011811115614a5f57614a5f6155ab565b604051614a6f9493929190615be2565b60405180910390a460009350505050614658565b60405162461bcd60e51b81526020600482015260146024820152732aa725a727aba72fa1aaa9aa27a6afa2a92927a960611b6044820152606401610e16565b846003811115614ad457614ad46155ab565b86886001600160a01b03167ff0ac91a20375484f5a80315763782e4fe4b42bd038b08ba4939ff1a506974edf878787604051614b1293929190615c31565b60405180910390a4506001614658565b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161115614b985760405162461bcd60e51b815260206004820152601c60248201527f434f4e464944454e43455f4652414354494f4e5f544f4f5f48494748000000006044820152606401610e16565b600082815260046020908152604091829020805463ffffffff191663ffffffff8516908117909155915191825283917f88e6fad616d859d6fba20e93ab2acbf0756b6bc2d90c6002000f709f510cadb0910161323f565b606060006130c583615053565b614c05816112e1565b614c475760405162461bcd60e51b81526020600482015260136024820152721050d0d3d5539517d393d517d0531313d5d151606a1b6044820152606401610e16565b614c526002826150af565b506040516001600160a01b038216907fc985d67a353004ba149a223b2b9e5c13cca6610b11cb45b4aa029c880d8f7cb590600090a250565b614c93816112e1565b15614ce05760405162461bcd60e51b815260206004820152601760248201527f4143434f554e545f414c52454144595f414c4c4f5745440000000000000000006044820152606401610e16565b614ceb6002826150c4565b506040516001600160a01b038216907fc5944eab072face4b169928723314c5978080e99ed8f8527faedb18c06664c3590600090a250565b606082158015614d31575081155b15614d66575060408051808201909152601381527254505f414e445f534c5f544f4f5f434c4f534560681b60208201526112fd565b82614d94575060408051808201909152600c81526b54505f544f4f5f434c4f534560a01b60208201526112fd565b5060408051808201909152600c81526b534c5f544f4f5f434c4f534560a01b60208201526112fd565b6040805160608101825260008082526020820181905281830152600654915163f4a6a09360e01b815290916001600160a01b03169063f4a6a093908690614e0c90899088908890600401615c85565b60606040518083038185885af1158015614e2a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614e4f9190615d2d565b95945050505050565b6000620186a0614e688385615947565b6130c5919061595e565b6000614e7e8242615ae3565b905080831015614ec05760405162461bcd60e51b815260206004820152600d60248201526c14149250d157d513d3d7d3d311609a1b6044820152606401610e16565b428311156111c95760405162461bcd60e51b815260206004820152600d60248201526c50524943455f544f4f5f4e455760981b6044820152606401610e16565b60006001600160401b03871615614f18575085614658565b856001600160401b0316600003614f3157506000614658565b60008463ffffffff1611614f7a5760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f4c4556455241474560801b6044820152606401610e16565b600063ffffffff8516620186a06064614f9f6001600160401b03808c16908b16615947565b614fa99190615947565b614fb3919061595e565b614fbd919061595e565b9050821561500c5783614ffa57856001600160401b0316816001600160401b03161015614ff357614fee81876159ab565b615004565b6000615004565b61500481876159cb565b915050614658565b836150205761501b81876159cb565b615047565b856001600160401b0316816001600160401b031610156150445761501b81876159ab565b60005b98975050505050505050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156150a357602002820191906000526020600020905b81548152602001906001019080831161508f575b50505050509050919050565b60006130c5836001600160a01b0384166150d9565b60006130c5836001600160a01b0384166151d3565b600081815260018301602052604081205480156151c25760006150fd600183615ae3565b855490915060009061511190600190615ae3565b905080821461517657600086600001828154811061513157615131615d9f565b906000526020600020015490508087600001848154811061515457615154615d9f565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061518757615187615db5565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506112fd565b60009150506112fd565b5092915050565b600081815260018301602052604081205461521a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556112fd565b5060006112fd565b60006020828403121561523457600080fd5b5035919050565b60008083601f84011261524d57600080fd5b5081356001600160401b0381111561526457600080fd5b6020830191508360208260051b850101111561527f57600080fd5b9250929050565b60008060006040848603121561529b57600080fd5b8335925060208401356001600160401b038111156152b857600080fd5b6152c48682870161523b565b9497909650939450505050565b63ffffffff811681146114c057600080fd5b600080604083850312156152f657600080fd5b823591506020830135615308816152d1565b809150509250929050565b60006020828403121561532557600080fd5b81356001600160a01b03811681146130c557600080fd5b6000815180845260005b8181101561536257602081850181015186830182015201615346565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006130c5602083018461533c565b61ffff811681146114c057600080fd5b6000602082840312156153b757600080fd5b81356130c581615395565b6000602082840312156153d457600080fd5b81356130c5816152d1565b6020808252825182820181905260009190848201906040850190845b81811015613e525783516001600160a01b0316835292840192918401916001016153fb565b6000806040838503121561543357600080fd5b823561543e81615395565b91506020830135615308816152d1565b6020808252600a908201526927a7262cafa0a226a4a760b11b604082015260600190565b6020808252600b908201526a57524f4e475f56414c554560a81b604082015260600190565b602080825260049082015263444f4e4560e01b604082015260600190565b60208082526006908201526514105554d15160d21b604082015260600190565b6020808252601690820152752727aa2fa0a62627aba2a22faa27afaa2924a3a3a2a960511b604082015260600190565b80516006811061551457600080fd5b919050565b80516001600160401b038116811461551457600080fd5b8051801515811461551457600080fd5b600080600080600060a0868803121561555857600080fd5b61556186615505565b945061556f60208701615519565b9350604086015161557f81615395565b925061558d60608701615530565b9150608086015161559d816152d1565b809150509295509295909350565b634e487b7160e01b600052602160045260246000fd5b601f8201601f191681016001600160401b03811182821017156155f457634e487b7160e01b600052604160045260246000fd5b6040525050565b600060a0828403121561560d57600080fd5b60405160a081018181106001600160401b038211171561563d57634e487b7160e01b600052604160045260246000fd5b6040528251815260208301516004811061565657600080fd5b602082015261566760408401615519565b604082015261567860608401615519565b606082015261568960808401615519565b60808201529392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156112fd576112fd615695565b6020808252600c908201526b15d0525517d512535153d55560a21b604082015260600190565b60208082526010908201526f2727afa9aaa1a42fa827a9a4aa24a7a760811b604082015260600190565b8381526060810160028410615725576157256155ab565b602082019390935260400152919050565b60006080828403121561574857600080fd5b604051608081018181106001600160401b038211171561577857634e487b7160e01b600052604160045260246000fd5b60405290508061578783615519565b815261579560208401615519565b60208201526157a660408401615519565b60408201526157b760608401615519565b60608201525092915050565b6000608082840312156157d557600080fd5b6130c58383615736565b84815260808101600485106157f6576157f66155ab565b60208201949094526001600160401b0392831660408201529116606090910152919050565b600381106114c0576114c06155ab565b6158348561581b565b9384526001600160401b0392831660208501529116604083015260a060608301819052600c908301526b534c5f544f4f5f434c4f534560a01b60c0830152608082015260e00190565b6158868561581b565b9384526001600160401b0392831660208501529116604083015260a060608301819052600c908301526b54505f544f4f5f434c4f534560a01b60c0830152608082015260e00190565b838152606081016157258461581b565b6158e88661581b565b85815260006001600160401b03808716602084015280861660408401525060a0606083015261591a60a083018561533c565b90508260808301529695505050505050565b60006020828403121561593e57600080fd5b6130c582615530565b80820281158282048414176112fd576112fd615695565b60008261597b57634e487b7160e01b600052601260045260246000fd5b500490565b6001600160401b038181168382160280821691908281146159a3576159a3615695565b505092915050565b6001600160401b038281168282160390808211156151cc576151cc615695565b6001600160401b038181168382160190808211156151cc576151cc615695565b600060e082840312156159fd57600080fd5b60405160e081018181106001600160401b0382111715615a2d57634e487b7160e01b600052604160045260246000fd5b60405282518152615a4060208401615505565b6020820152615a5160408401615519565b60408201526060830151615a64816152d1565b6060820152615a7560808401615530565b6080820152615a8660a08401615519565b60a082015260c0830151615a99816152d1565b60c08201529392505050565b61ffff8616815260006001600160401b038087166020840152808616604084015280851660608401525060a0608083015261430f60a083018461533c565b818103818111156112fd576112fd615695565b848152608081016157f68561581b565b600060033d1115615b1f5760046000803e5060005160e01c5b90565b600060443d1015615b305790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615b5f57505050505090565b8285019150815181811115615b775750505050505090565b843d8701016020828501011115615b915750505050505090565b615ba0602082860101876155c1565b509095945050505050565b805160208201516001600160e01b03198082169291906004831015615bda5780818460040360031b1b83161693505b505050919050565b615beb8561581b565b9384526001600160401b0392831660208501529116604083015260a0606083018190526009908301526821a0a82fa2a92927a960b91b60c0830152608082015260e00190565b60608101615c3e8561581b565b9381526001600160401b039283166020820152911660409091015290565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015615d1f57868503605f190183528135368a9003601e19018112615cd657600080fd5b890184810190356001600160401b03811115615cf157600080fd5b803603821315615d0057600080fd5b615d0b878284615c5c565b965050509183019190830190600101615cb0565b509298975050505050505050565b600060608284031215615d3f57600080fd5b604051606081018181106001600160401b0382111715615d6f57634e487b7160e01b600052604160045260246000fd5b60405282518152615d8260208401615519565b6020820152615d9360408401615519565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe889460050d9a293fbe31b6ce00a37ae62020cb8c8a19cf31e9496cb13246f6e2a264697066735822122073fb93af81b8eceed65769c58f72a813312b8a351f5a27e12d530341d36d3d8864736f6c63430008180033";
17
+ static readonly bytecode = "0x6101206040526003600755603c6008556003600955603c600a55603c600b55603c600c556078600d5560b4600e55610708600f556103e8620186a060016200004891906200029e565b620000549190620002ca565b6010556103e86200006a620186a060026200029e565b620000769190620002ca565b601155620186a06200008a8160056200029e565b620000969190620002ca565b6012556003601355348015620000ab57600080fd5b506040516200628338038062006283833981016040819052620000ce9162000306565b806001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000306565b606462000145620186a060016200029e565b620001519190620002ca565b606462000163620186a0600a6200029e565b6200016f9190620002ca565b600080546001600160a01b0319163317905560805260a0526001600160a01b0390811660c0528116620001b557604051635863f78960e01b815260040160405180910390fd5b6001600160a01b03811660e081905260408051637b10399960e01b81529051637b103999916004808201926020929091908290030181865afa15801562000200573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000226919062000306565b6001600160a01b031663776af5ba6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000264573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028a919062000306565b6001600160a01b031661010052506200032d565b8082028115828204841417620002c457634e487b7160e01b600052601160045260246000fd5b92915050565b600082620002e857634e487b7160e01b600052601260045260246000fd5b500490565b6001600160a01b03811681146200030357600080fd5b50565b6000602082840312156200031957600080fd5b81516200032681620002ed565b9392505050565b60805160a05160c05160e05161010051615e1c62000467600039600081816109b9015281816113be0152818161326f01526145e501526000818161048a01528181610f960152818161110a015281816115a2015281816116dc01528181611815015281816119a901528181611a0c01528181611c9801528181611d3301528181611e8f01528181612236015281816122ae015281816123f601528181612595015281816126f40152818161286f0152818161295601528181612ff00152818161312a0152818161333f01528181613a3801528181613ecc01528181613f7d0152818161400c01528181614126015281816142100152818161434f015281816146e40152614c210152600081816137e50152613c5901526000818161064d0152613cb4015260008181610c9c01526148850152615e1c6000f3fe6080604052600436106104515760003560e01c8063771ad70d1161023f578063b16f579f11610139578063e01e4bb2116100b6578063ee3ed22e1161007a578063ee3ed22e14610d87578063f5f5ba7214610d9e578063f851a44014610dd1578063fae5a83f14610df1578063fd057e9414610e1157600080fd5b8063e01e4bb214610d13578063e0b7d50b14610d29578063e231377014610d3f578063e8051b0114610d5f578063e9c714f214610d7257600080fd5b8063b81bfa05116100fd578063b81bfa0514610c6a578063b88750a914610c8a578063bfc084d914610cbe578063c4ae316814610cde578063d99dc0c114610cf357600080fd5b8063b16f579f14610bd1578063b187bd2614610bf1578063b71d1a0c14610c12578063b71f3cfe14610c32578063b767e7e814610c4a57600080fd5b80639abf1782116101c7578063a9f7c5211161018b578063a9f7c52114610b4d578063aaf5eb6814610b60578063ad169c9c14610b7c578063ad1f2b5614610b9c578063af74c38214610bb157600080fd5b80639abf178214610aa45780639f918f4514610ac4578063a1d627a114610af7578063a5b6020814610b17578063a5e02c8d14610b2d57600080fd5b806380193b261161020e57806380193b2614610a075780638140520514610a1e57806386c7f19a14610a345780638aa1043514610a565780638f06222714610a8357600080fd5b8063771ad70d14610994578063776af5ba146109a75780637f31c2db146109db5780637f588b91146109f157600080fd5b80633b3216661161035057806358cc4b2c116102d8578063619cdd281161029c578063619cdd28146108f45780636447dc8b1461092e5780636c1bb5ca14610941578063718ddc14146109615780637670d9481461097457600080fd5b806358cc4b2c146108355780635d2cdfea146108555780635dce36fb146108885780635f48bd331461089e578063614d08f8146108be57600080fd5b806345b617131161031f57806345b61713146107b9578063490580e3146107cf5780634bdf1973146107ef5780634cdb06a5146108025780634d3691511461082257600080fd5b80633b321666146107485780633be3d6261461075b5780633ce8e10214610770578063410c0b7c146107a357600080fd5b806326b4120a116103de57806336930d0b116103a257806336930d0b1461066f57806336b669f71461068f57806338267257146106d557806338b90333146106f5578063392503e01461073257600080fd5b806326b4120a146105b55780632f86d7c2146105d5578063330596f4146105f557806333511e5e1461060b57806333a01d321461063b57600080fd5b8063221407af11610425578063221407af1461051a57806322ede93c1461052d57806325577e9f146105435780632649169814610563578063267822471461059557600080fd5b80624b8eb4146104565780630d3b0b761461047857806310b4cc13146104c957806320cb5976146104ed575b600080fd5b34801561046257600080fd5b50610476610471366004615286565b610e31565b005b34801561048457600080fd5b506104ac7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156104d557600080fd5b506104df60105481565b6040519081526020016104c0565b3480156104f957600080fd5b506104df610508366004615286565b60146020526000908152604090205481565b6104766105283660046152ea565b610f0b565b34801561053957600080fd5b506104df60115481565b34801561054f57600080fd5b5061047661055e366004615347565b6111ec565b34801561056f57600080fd5b506016546105809063ffffffff1681565b60405163ffffffff90911681526020016104c0565b3480156105a157600080fd5b506001546104ac906001600160a01b031681565b3480156105c157600080fd5b506104766105d0366004615286565b611224565b3480156105e157600080fd5b506104766105f0366004615286565b611281565b34801561060157600080fd5b506104df60095481565b34801561061757600080fd5b5061062b61062636600461538c565b611300565b60405190151581526020016104c0565b34801561064757600080fd5b506104df7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067b57600080fd5b5061047661068a366004615286565b611322565b6106a261069d3660046152ea565b6114e5565b60408051825181526020808401516001600160401b039081169183019190915292820151909216908201526060016104c0565b3480156106e157600080fd5b506104766106f0366004615286565b611518565b34801561070157600080fd5b50610725604051806040016040528060048152602001633130303760e01b81525081565b6040516104c091906153ef565b34801561073e57600080fd5b506104df600f5481565b6104766107563660046152ea565b611785565b34801561076757600080fd5b50610476611b2b565b34801561077c57600080fd5b5061058061078b366004615412565b60156020526000908152604090205463ffffffff1681565b3480156107af57600080fd5b506104df600c5481565b3480156107c557600080fd5b506104df60075481565b3480156107db57600080fd5b506104766107ea366004615286565b611bbd565b6104766107fd3660046152ea565b611c0e565b34801561080e57600080fd5b5061047661081d366004615286565b611f68565b6104766108303660046152ea565b611fd1565b34801561084157600080fd5b5061047661085036600461542f565b612064565b34801561086157600080fd5b50610580610870366004615286565b60056020526000908152604090205463ffffffff1681565b34801561089457600080fd5b506104df600a5481565b3480156108aa57600080fd5b506104766108b9366004615286565b612106565b3480156108ca57600080fd5b506107256040518060400160405280600a8152602001695472696767657273563160b01b81525081565b34801561090057600080fd5b506107256040518060400160405280600e81526020016d534b45575f494e43454e5449564560901b81525081565b61047661093c3660046152ea565b612190565b34801561094d57600080fd5b5061047661095c366004615347565b6124d1565b61047661096f3660046152ea565b612505565b34801561098057600080fd5b5061047661098f366004615286565b61276c565b6104766109a23660046152ea565b6127c9565b3480156109b357600080fd5b506104ac7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109e757600080fd5b506104df60085481565b3480156109fd57600080fd5b506104df600b5481565b348015610a1357600080fd5b506104df620186a081565b348015610a2a57600080fd5b506104df60135481565b348015610a4057600080fd5b50610a49612a2f565b6040516104c0919061544c565b348015610a6257600080fd5b506040805180820190915260048152633130303760e01b6020820152610725565b348015610a8f57600080fd5b5060165461062b90600160281b900460ff1681565b348015610ab057600080fd5b50610476610abf366004615286565b612a40565b348015610ad057600080fd5b50610580610adf366004615286565b60046020526000908152604090205463ffffffff1681565b348015610b0357600080fd5b506006546104ac906001600160a01b031681565b348015610b2357600080fd5b506104df600e5481565b348015610b3957600080fd5b50610476610b4836600461538c565b612a9d565b610476610b5b3660046152ea565b612ad0565b348015610b6c57600080fd5b506104df670de0b6b3a764000081565b348015610b8857600080fd5b50610476610b97366004615286565b612b63565b348015610ba857600080fd5b506104df606481565b348015610bbd57600080fd5b50610476610bcc366004615286565b612bfc565b348015610bdd57600080fd5b50610580610bec366004615412565b612c71565b348015610bfd57600080fd5b5060165461062b90600160201b900460ff1681565b348015610c1e57600080fd5b50610476610c2d36600461538c565b612c9e565b348015610c3e57600080fd5b506104df633b9aca0081565b348015610c5657600080fd5b50610476610c65366004615499565b612d46565b348015610c7657600080fd5b50610476610c85366004615286565b612dfc565b348015610c9657600080fd5b506104df7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cca57600080fd5b50610476610cd9366004615286565b612e4f565b348015610cea57600080fd5b50610476612eac565b348015610cff57600080fd5b50610476610d0e36600461538c565b612f33565b348015610d1f57600080fd5b506104df600d5481565b348015610d3557600080fd5b506104df60125481565b348015610d4b57600080fd5b50610476610d5a366004615286565b612f66565b610476610d6d3660046152ea565b6131d3565b348015610d7e57600080fd5b50610476613519565b348015610d9357600080fd5b50610580620186a081565b348015610daa57600080fd5b5060408051808201909152600a8152695472696767657273563160b01b6020820152610725565b348015610ddd57600080fd5b506000546104ac906001600160a01b031681565b348015610dfd57600080fd5b50610476610e0c36600461538c565b613637565b348015610e1d57600080fd5b50610476610e2c366004615286565b613755565b6000546001600160a01b03163314610e645760405162461bcd60e51b8152600401610e5b906154c7565b60405180910390fd5b801580610e7357506008548111155b80610e805750600a548111155b15610e9e57604051632635240760e21b815260040160405180910390fd5b600d8190556040517f6d61726b65744f726465727341637469766174696f6e54696d654c696d6974008152601f015b604051908190038120828252907f8cf3e35f6221b16e1670a3413180c9484bf5aa71787905909fa82a6a2662e9ab906020015b60405180910390a250565b601654600160281b900460ff1615610f36576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615610f615760405163ab35696f60e01b815260040160405180910390fd5b610f6a33611300565b610f865760405162461bcd60e51b8152600401610e5b906154eb565b610f8e6137e3565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050886040518263ffffffff1660e01b8152600401610fe291815260200190565b60e060405180830381865afa158015610fff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110239190615556565b509550505093506001600160401b03169350935082600003611058576040516354cf754d60e01b815260040160405180910390fd5b600484600581111561106c5761106c6155de565b1461108a576040516377edf34f60e01b815260040160405180910390fd5b600061109c8361ffff16348989613858565b90506110ad84826000015185613912565b6020810151806110bb6139e3565b60006110c88b8688613a33565b6020850151604051632859f7cb60e11b8152600481018e90526001600160401b039182166024820152908416604482015263ffffffff821660648201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906350b3ef9690608401600060405180830381600087803b15801561115657600080fd5b505af115801561116a573d6000803e3d6000fd5b50505050876005811115611180576111806155de565b6020858101518651604080516001600160401b038881168252909316938301939093528183015290518d9133917f5b5ec0827d50049e9f15c1d5c28dc87d620987ef82a18f0b98afac1c76076d3d9181900360600190a450505050505050506111e7613c57565b505050565b6000546001600160a01b031633146112165760405162461bcd60e51b8152600401610e5b906154c7565b6112208282613cb2565b5050565b6000546001600160a01b0316331461124e5760405162461bcd60e51b8152600401610e5b906154c7565b600e8190556040517f6d61726b65744f72646572546967687454696d6552616e6765000000000000008152601901610ecd565b6000546001600160a01b031633146112ab5760405162461bcd60e51b8152600401610e5b906154c7565b60085481106112cd57604051632635240760e21b815260040160405180910390fd5b60078190556040517f6d696e54726967676572506572696f64466f724d61726b65744f7264657273008152601f01610ecd565b6001600160a01b03811660009081526003602052604081205415155b92915050565b601654600160281b900460ff161561134d576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156113785760405163ab35696f60e01b815260040160405180910390fd5b61138133611300565b61139d5760405162461bcd60e51b8152600401610e5b906154eb565b6113a56137e3565b60405163c608b6c160e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af115801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190615661565b9050600c5481604001516001600160401b031661145091906156ea565b42101561147057604051632c79c1b960e21b815260040160405180910390fd5b80602001516003811115611486576114866155de565b60608201516080830151604080516001600160401b039384168152929091166020830152849133917f7b5b2e57aed6ee99244bd22f2b43e33e9fcbf0d77a9f425d59ee2d74e1c3795d910160405180910390a4506114e2613c57565b50565b604080516060810182526000808252602082018190529181019190915261150e84348585613858565b90505b9392505050565b601654600160281b900460ff1615611543576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561156e5760405163ab35696f60e01b815260040160405180910390fd5b61157733611300565b6115935760405162461bcd60e51b8152600401610e5b906154eb565b61159b6137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050856040518263ffffffff1660e01b81526004016115ee91815260200190565b60e060405180830381865afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f9190615556565b5050505092506001600160401b0316925092508160000361166357604051632af0900d60e21b815260040160405180910390fd5b6004836005811115611677576116776155de565b14611695576040516377edf34f60e01b815260040160405180910390fd5b600c546116a290836156ea565b4210156116c257604051632c79c1b960e21b815260040160405180910390fd5b601054604051634ebe5c3360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691634ebe5c3391611715918891600191906004016156fd565b600060405180830381600087803b15801561172f57600080fd5b505af1158015611743573d6000803e3d6000fd5b505060405161ffff8416925086915033907f89a3ecf5024675f1d0abc6dc42608fc41216f103c12c2c84f8ca3938bd055f0390600090a45050506114e2613c57565b601654600160281b900460ff16156117b0576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156117db5760405163ab35696f60e01b815260040160405180910390fd5b6117e433611300565b6118005760405162461bcd60e51b8152600401610e5b906154eb565b6118086137e3565b60008060008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be50508b6040518263ffffffff1660e01b815260040161186191815260200190565b60e060405180830381865afa15801561187e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a29190615556565b965096509650965096506001600160401b031696509650856000036118da57604051631e622ef760e01b815260040160405180910390fd5b60028760058111156118ee576118ee6155de565b1461190c5760405163ad2b657360e01b815260040160405180910390fd5b600061191e8661ffff16348c8c613858565b905061192e878260000151613d71565b6020810151600061194561ffff891683888a613dd1565b90506119568d89838a8e6002613ec4565b6119695750505050505050505050611b23565b6119716139e3565b601154604051631ea9af6b60e01b8152600481018f90526001600160401b038316602482015260448101919091526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631ea9af6b906064015b600060405180830381600087803b1580156119ee57600080fd5b505af1158015611a02573d6000803e3d6000fd5b50505050611aaf8d7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166303b90a87886040518263ffffffff1660e01b8152600401611a6591906001600160a01b0391909116815260200190565b602060405180830381865afa158015611a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa69190615725565b878b8b8961420c565b896005811115611ac157611ac16155de565b6020848101518551604080516001600160401b038781168252909316938301939093528183015290518f9133917f60fab6e183a7c350210c0b457db01423b47aa3e72f5b735b8dbb3ecd3e8077439181900360600190a4505050505050505050505b6111e7613c57565b6000546001600160a01b03163314611b555760405162461bcd60e51b8152600401610e5b906154c7565b6016805460ff600160281b808304821615810265ff00000000001990931692909217928390556040517f8e47bd62470c6cba4d30c023548622607c9c84402a5655f2569b7934c36a9e4f93611bb39390049091161515815260200190565b60405180910390a1565b6000546001600160a01b03163314611be75760405162461bcd60e51b8152600401610e5b906154c7565b6013818155604051726d61785472696767657273506572426c6f636b60681b815201610ecd565b601654600160281b900460ff1615611c39576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615611c645760405163ab35696f60e01b815260040160405180910390fd5b611c6d33611300565b611c895760405162461bcd60e51b8152600401610e5b906154eb565b611c916137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050876040518263ffffffff1660e01b8152600401611ce491815260200190565b60e060405180830381865afa158015611d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d259190615556565b5095505094509450505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f886040518263ffffffff1660e01b8152600401611d7f91815260200190565b608060405180830381865afa158015611d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc091906157cf565b90508361ffff16600003611de757604051632af0900d60e21b815260040160405180910390fd5b80606001516001600160401b0316600003611e15576040516301c65bd760e31b815260040160405180910390fd5b60208101516001600160401b03166000611e3561ffff8716348a8a613858565b9050611e45828260000151613d71565b60208101516060840151600090611e5e9083898b6144db565b9050611e686139e3565b6000611e758c888b613a33565b60405163ec18aded60e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ec18aded90611ecd908f906002908890889088906004016157eb565b600060405180830381600087803b158015611ee757600080fd5b505af1158015611efb573d6000803e3d6000fd5b50508551604080516001600160401b038088168252881660208201529081019190915261ffff8c1692508e915033907fb03dbc9368faf0f8588dc8429c40a26ef9a637488f1ea5521a2ba2bfb5ff20169060600160405180910390a45050505050505050506111e7613c57565b6000546001600160a01b03163314611f925760405162461bcd60e51b8152600401610e5b906154c7565b60118190556040517f6f70656e506f736974696f6e43616e63656c6c6174696f6e466565467261637481526234b7b760e91b6020820152602301610ecd565b601654600160281b900460ff1615611ffc576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156120275760405163ab35696f60e01b815260040160405180910390fd5b61203033611300565b61204c5760405162461bcd60e51b8152600401610e5b906154eb565b6120546137e3565b611b2383838360028060006145cc565b6000546001600160a01b0316331461208e5760405162461bcd60e51b8152600401610e5b906154c7565b620186a063ffffffff821611156120b857604051632646419960e11b815260040160405180910390fd5b6016805463ffffffff191663ffffffff83169081179091556040519081527f06ddabf029f0ad871d8e8c56f73e357cc18f651f56af47fddc1884a2d31405f49060200160405180910390a150565b6000546001600160a01b031633146121305760405162461bcd60e51b8152600401610e5b906154c7565b600a54811061215257604051632635240760e21b815260040160405180910390fd5b60098190556040517f6d696e54726967676572506572696f64466f724d61726b65744f726465727343815261185d60f21b6020820152602201610ecd565b601654600160281b900460ff16156121bb576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156121e65760405163ab35696f60e01b815260040160405180910390fd5b6121ef33611300565b61220b5760405162461bcd60e51b8152600401610e5b906154eb565b6122136137e3565b60405163095be50560e41b81526004810184905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa15801561227d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a19190615556565b50955050509350505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f876040518263ffffffff1660e01b81526004016122fa91815260200190565b608060405180830381865afa158015612317573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233b91906157cf565b90508261ffff1660000361236257604051632af0900d60e21b815260040160405180910390fd5b80604001516001600160401b031660000361239057604051634f02277b60e01b815260040160405180910390fd5b80516001600160401b031660006123ad61ffff8616348989613858565b90506123bd828260000151613d71565b60208101516123ca6139e3565b60006123d78a8789613a33565b602084015160405163ec18aded60e01b81529192506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163ec18aded91612432918e91600191889088906004016157eb565b600060405180830381600087803b15801561244c57600080fd5b505af1158015612460573d6000803e3d6000fd5b505050506020838101518451604080516001600160401b0387811682529093169383019390935281830152905161ffff8916918c9133917fbe700227f721a08f3b755aa3348a63564c2c07890aba73de46372f7bffcaa2e2919081900360600190a4505050505050506111e7613c57565b6000546001600160a01b031633146124fb5760405162461bcd60e51b8152600401610e5b906154c7565b6112208282614883565b601654600160281b900460ff1615612530576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561255b5760405163ab35696f60e01b815260040160405180910390fd5b61256433611300565b6125805760405162461bcd60e51b8152600401610e5b906154eb565b6125886137e3565b60008060008060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be50508b6040518263ffffffff1660e01b81526004016125e191815260200190565b60e060405180830381865afa1580156125fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126229190615556565b965096509650965096506001600160401b0316965096508560000361265a576040516354cf754d60e01b815260040160405180910390fd5b600187600581111561266e5761266e6155de565b1461268c576040516335637f8760e11b815260040160405180910390fd5b600061269e8661ffff16348c8c613858565b90506126af87826000015188613912565b602081015160006126c661ffff891683888a613dd1565b90506126d78d89838a8e6001613ec4565b6126ea5750505050505050505050611b23565b6126f26139e3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b214e128e8360115487600001516040518563ffffffff1660e01b81526004016119d494939291909384526001600160401b039283166020850152604084019190915216606082015260800190565b6000546001600160a01b031633146127965760405162461bcd60e51b8152600401610e5b906154c7565b600f8190556040517f74726967676572507269636546726573686e65737354696d6552616e676500008152601e01610ecd565b601654600160281b900460ff16156127f4576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff161561281f5760405163ab35696f60e01b815260040160405180910390fd5b61282833611300565b6128445760405162461bcd60e51b8152600401610e5b906154eb565b61284c6137e3565b60405163095be50560e41b81526004810184905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa1580156128b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128da9190615556565b5095505050935050508161ffff1660000361290857604051632af0900d60e21b815260040160405180910390fd5b600061291a8361ffff16348787613858565b602081015190915061292a6139e3565b6000612937888587613a33565b602084015160405163ec18aded60e01b81529192506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163ec18aded91612992918c91600391889088906004016157eb565b600060405180830381600087803b1580156129ac57600080fd5b505af11580156129c0573d6000803e3d6000fd5b505050506020838101518451604080516001600160401b0387811682529093169383019390935281830152905161ffff8716918a9133917f086bdd0cdd4ae322dd6112d05bdf96c020e6b90cc84ee2d39941bd716e18fb92919081900360600190a450505050506111e7613c57565b6060612a3b6002614950565b905090565b6000546001600160a01b03163314612a6a5760405162461bcd60e51b8152600401610e5b906154c7565b60108190556040517f6d61726b65744f7264657243616e63656c4665654672616374696f6e000000008152601c01610ecd565b6000546001600160a01b03163314612ac75760405162461bcd60e51b8152600401610e5b906154c7565b6114e28161495d565b601654600160281b900460ff1615612afb576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615612b265760405163ab35696f60e01b815260040160405180910390fd5b612b2f33611300565b612b4b5760405162461bcd60e51b8152600401610e5b906154eb565b612b536137e3565b611b2383838360018060016145cc565b6000546001600160a01b03163314612b8d5760405162461bcd60e51b8152600401610e5b906154c7565b60095481111580612ba05750600d548110155b15612bbe57604051632635240760e21b815260040160405180910390fd5b600a8190556040517f6d617854726967676572506572696f64466f724d61726b65744f726465727343815261185d60f21b6020820152602201610ecd565b6000546001600160a01b03163314612c265760405162461bcd60e51b8152600401610e5b906154c7565b80600003612c4757604051632635240760e21b815260040160405180910390fd5b6012819055604051733634b6b4ba39a6b0b933b4b7233930b1ba34b7b760611b8152601401610ecd565b61ffff811660009081526015602052604081205463ffffffff168061131c5760165463ffffffff16611511565b6000546001600160a01b03163314612ce45760405162461bcd60e51b81526020600482015260096024820152682737ba1020b236b4b760b91b6044820152606401610e5b565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a991015b60405180910390a15050565b6000546001600160a01b03163314612d705760405162461bcd60e51b8152600401610e5b906154c7565b620186a063ffffffff82161115612d9a57604051632646419960e11b815260040160405180910390fd5b61ffff8216600081815260156020908152604091829020805463ffffffff191663ffffffff861690811790915591519182527fa2a4acd376a1168953c22b4e4bc5acdde62a49e199b28c4f9b818cd312351f8c91015b60405180910390a25050565b6000546001600160a01b03163314612e265760405162461bcd60e51b8152600401610e5b906154c7565b600c819055604051721b585c9ad95d13dc99195c9cd51a5b595bdd5d606a1b8152601301610ecd565b6000546001600160a01b03163314612e795760405162461bcd60e51b8152600401610e5b906154c7565b600b8190556040517f6d696e54726967676572506572696f64466f724c696d69744f726465727300008152601e01610ecd565b6000546001600160a01b03163314612ed65760405162461bcd60e51b8152600401610e5b906154c7565b6016805460ff600160201b808304821615810264ff000000001990931692909217928390556040517fda88b5dfaac55549d4ddddd43a09d4b911233df354952ebc9ac2041aa185343693611bb39390049091161515815260200190565b6000546001600160a01b03163314612f5d5760405162461bcd60e51b8152600401610e5b906154c7565b6114e2816149eb565b601654600160281b900460ff1615612f91576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff1615612fbc5760405163ab35696f60e01b815260040160405180910390fd5b612fc533611300565b612fe15760405162461bcd60e51b8152600401610e5b906154eb565b612fe96137e3565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395be5050856040518263ffffffff1660e01b815260040161303c91815260200190565b60e060405180830381865afa158015613059573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307d9190615556565b5050505092506001600160401b031692509250816000036130b157604051632af0900d60e21b815260040160405180910390fd5b60018360058111156130c5576130c56155de565b146130e3576040516335637f8760e11b815260040160405180910390fd5b600c546130f090836156ea565b42101561311057604051632c79c1b960e21b815260040160405180910390fd5b601054604051636e01af8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636e01af8d9161316391889160019190600401615847565b600060405180830381600087803b15801561317d57600080fd5b505af1158015613191573d6000803e3d6000fd5b505060405161ffff8416925086915033907f5079795ec65f793d5a0ed74d8f8e1562b7795934b40612bf55cf0e5d55a3447990600090a45050506114e2613c57565b601654600160281b900460ff16156131fe576040516355d2d96360e01b815260040160405180910390fd5b601654600160201b900460ff16156132295760405163ab35696f60e01b815260040160405180910390fd5b61323233611300565b61324e5760405162461bcd60e51b8152600401610e5b906154eb565b6132566137e3565b60405163c608b6c160e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af11580156132c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e49190615661565b90506003816020015160038111156132fe576132fe6155de565b1461331c57604051638e85495d60e01b815260040160405180910390fd5b60405163095be50560e41b81526004810185905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa158015613386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133aa9190615556565b50505093509350505060006133c58361ffff16348888613858565b90506133e384604001516001600160401b0316826000015185613912565b60006133fa85606001518360200151856001614a84565b9050600061341386608001518460200151866000614a84565b9050811580613420575080155b15613491578560200151600381111561343b5761343b6155de565b89336001600160a01b0316600080516020615dc783398151915260018a60600151886020015161346b8989614b6d565b600060405161347e959493929190615857565b60405180910390a4505050505050611b23565b6134996139e3565b6000836020015190506134b9338b896020015160018b6060015186614c07565b6134d6576040516366464a0d60e01b815260040160405180910390fd5b6134ed338b896020015160028b6080015186614c07565b61350a576040516355fa4e8d60e01b815260040160405180910390fd5b505050505050506111e7613c57565b6001546001600160a01b03163314801561353d57506001546001600160a01b031615155b6135895760405162461bcd60e51b815260206004820152601e60248201527f4e6f7420746865204558495354494e472070656e64696e672061646d696e00006044820152606401610e5b565b60008054600180546001600160a01b038082166001600160a01b031980861682179096559490911690915560408051919092168082526020820184905292917ff9ffabca9c8276e99321725bcb43fb076a6c66a54b7f21c4e8146d8519b417dc910160405180910390a1600154604080516001600160a01b03808516825290921660208301527fca4f2f25d0898edd99413412fb94012f9e54ec8142f9b093e7720646a95b16a99101612d3a565b6000546001600160a01b031633146136615760405162461bcd60e51b8152600401610e5b906154c7565b806001600160a01b0316634535dc4c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c391906158a4565b6136e057604051633b0a14a760e01b815260040160405180910390fd5b600680546001600160a01b0319166001600160a01b0383161790556040516d283934b1b2ab30b634b230ba37b960911b8152600e016040519081900381206001600160a01b0383168252907f943e9d45a11aaae5d87503e3bc248665d9807856e5cf2bdb4a988bee4442278190602001610f00565b6000546001600160a01b0316331461377f5760405162461bcd60e51b8152600401610e5b906154c7565b600754811115806137925750600d548110155b156137b057604051632635240760e21b815260040160405180910390fd5b60088190556040517f6d617854726967676572506572696f64466f724d61726b65744f7264657273008152601f01610ecd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f83d08ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561383e57600080fd5b505af1158015613852573d6000803e3d6000fd5b50505050565b604080516060810182526000808252602082018190529181018290529061388186868686614e73565b60008781526004602090815260408220549083015192935063ffffffff16916138b3906001600160401b031683614f0e565b90508083604001516001600160401b031611156138e3576040516356365bf760e01b815260040160405180910390fd5b825142101561390457604051626f84e160e11b815260040160405180910390fd5b50909150505b949350505050565b61271061ffff82161160008161392a5760075461392e565b6009545b905060008261393f57600854613943565b600a545b9050600061395183886156ea565b9050600061395f83896156ea565b90508142101561398257604051631c954b4f60e21b815260040160405180910390fd5b600d5461398f90896156ea565b4211156139ae5760405162ca779960e21b815260040160405180910390fd5b818710806139bb57508087115b156139d957604051638b291a5360e01b815260040160405180910390fd5b5050505050505050565b436000908152601460205260409020546013548110613a1557604051630162832b60e61b815260040160405180910390fd5b613a208160016156ea565b4360009081526014602052604090205550565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ab89190615725565b604080518082018252600e81526d534b45575f494e43454e5449564560901b60208201529051632c652ce760e11b81526001600160a01b0392909216916358ca59ce91613b07916004016153ef565b602060405180830381865afa158015613b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b489190615725565b90506001600160a01b038116613b62576000915050611511565b6040516330c9e15760e21b8152600481018690526001600160a01b03858116602483015261ffff8516604483015282169063c327855c906064016020604051808303816000875af1925050508015613bd7575060408051601f3d908101601f19168201909252613bd4918101906158bf565b60015b613c4e573d808015613c05576040519150601f19603f3d011682016040523d82523d6000602084013e613c0a565b606091505b50857f016ef3e646cfc2493bc3c5e66d4a0ab6cedd692c3caef68704146982fc98660a82604051613c3b91906153ef565b60405180910390a2600092505050611511565b91506115119050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340da020f6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561383e57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161115613d1a5760405162461bcd60e51b815260206004820152600f60248201526e0a6a0a48a8288bea89e9ebe90928e9608b1b6044820152606401610e5b565b600082815260056020908152604091829020805463ffffffff191663ffffffff8516908117909155915191825283917ffe5fd0852fab5f8ba593533cf24a4b4b235704c0e06956d0a58cc2ca0a4b6b449101612df0565b6000600b5483613d8191906156ea565b905080421015613da45760405163eb72c9ab60e01b815260040160405180910390fd5b80821015613dc55760405163a765b7ab60e01b815260040160405180910390fd5b6111e782600f54614f28565b6000620186a08363ffffffff161115613e2c5760405162461bcd60e51b815260206004820152601960248201527f5350524541445f524544554354494f4e5f544f4f5f48494748000000000000006044820152606401610e5b565b600085815260056020526040812054620186a090613e5a906001600160401b0388169063ffffffff166158dc565b613e6491906158f3565b90506000620186a0613e7c63ffffffff871684615915565b6001600160401b0316613e8f91906158f3565b613e999083615940565b905083613eaf57613eaa8187615940565b613eb9565b613eb98187615960565b979650505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166366307a4f8b6040518263ffffffff1660e01b8152600401613f1891815260200190565b608060405180830381865afa158015613f35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f5991906157cf565b60405163ddf474f160e01b8152600481018c90529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ddf474f190602401608060405180830381865afa158015613fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fe891906157cf565b604051638f7a8fb560e01b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638f7a8fb59060240160e060405180830381865afa158015614053573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140779190615980565b9050614094836040015183604001518c84606001518d6001614f78565b94506140b1836060015183606001518c84606001518d6000614f78565b93505050506000826001600160401b0316600014806140d857506140d88389896001614a84565b905060006001600160401b03831615806140fa57506140fa838a8a6000614a84565b9050811580614107575080155b156141f957601154604051636e01af8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636e01af8d9161415e918f918b9190600401615847565b600060405180830381600087803b15801561417857600080fd5b505af115801561418c573d6000803e3d6000fd5b505050508660058111156141a2576141a26155de565b8b337ff83a7472720a3cf234601433618092ec0838ad712b481376cd7860b9fe7397558d8d89896141d38a8a614b6d565b6040516141e4959493929190615a3a565b60405180910390a46000945050505050614202565b60019450505050505b9695505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561426c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142909190615725565b604080518082018252600e81526d534b45575f494e43454e5449564560901b60208201529051632c652ce760e11b81526001600160a01b0392909216916358ca59ce916142df916004016153ef565b602060405180830381865afa1580156142fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143209190615725565b90506001600160a01b03811661433657506144d3565b60405163f555f69760e01b8152600481018890526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f555f6979060240160a060405180830381865afa15801561439e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143c29190615a78565b905060006143da84836020015163ffffffff166150a9565b604051632721548d60e21b8152600481018b90526001600160a01b038a81166024830152898116604483015261ffff89166064830152871515608483015260a4820187905260c4820183905291925090841690639c8552349060e401600060405180830381600087803b15801561445057600080fd5b505af1925050508015614461575060015b6144cf573d80801561448f576040519150601f19603f3d011682016040523d82523d6000602084013e614494565b606091505b50897f3961e1425e2fd3d7681d1d6266aab1d85c34839a03fdfd9756864966f6e133b7826040516144c591906153ef565b60405180910390a2505b5050505b505050505050565b6000806144e783612c71565b90508063ffffffff16600003614500578491505061390a565b6000620186a061451f63ffffffff84166001600160401b038a166158dc565b61452991906158f3565b905080851561459f57806001600160401b0316886001600160401b031610156145655760405163ac658add60e01b815260040160405180910390fd5b6000614571828a615940565b9050806001600160401b0316886001600160401b0316116145925780614594565b875b94505050505061390a565b60006145ab828a615960565b9050806001600160401b0316886001600160401b0316106145925780614594565b60405163c608b6c160e01b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c608b6c19060240160a0604051808303816000875af1158015614636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061465a9190615661565b905083600381111561466e5761466e6155de565b81602001516003811115614684576146846155de565b146146c15781156146a857604051639097017560e01b815260040160405180910390fd5b604051633ee7586d60e21b815260040160405180910390fd5b60405163095be50560e41b81526004810188905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906395be50509060240160e060405180830381865afa15801561472b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061474f9190615556565b505050935093505050600061476a8361ffff16348b8b613858565b905061478884604001516001600160401b0316826000015185613912565b61479c846060015182602001518488614a84565b61485457836020015160038111156147b6576147b66155de565b8a336001600160a01b0316600080516020615dc783398151915289886060015186602001518b61480a576040518060400160405280600c81526020016b534c5f544f4f5f434c4f534560a01b815250614830565b6040518060400160405280600c81526020016b54505f544f4f5f434c4f534560a01b8152505b6000604051614843959493929190615857565b60405180910390a4505050506144d3565b61485c6139e3565b614876338b86602001518988606001518660200151614c07565b5050505050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff1611156148f95760405162461bcd60e51b815260206004820152601c60248201527f434f4e464944454e43455f4652414354494f4e5f544f4f5f48494748000000006044820152606401610e5b565b600082815260046020908152604091829020805463ffffffff191663ffffffff8516908117909155915191825283917f88e6fad616d859d6fba20e93ab2acbf0756b6bc2d90c6002000f709f510cadb09101612df0565b60606000611511836150b7565b61496681611300565b6149a85760405162461bcd60e51b81526020600482015260136024820152721050d0d3d5539517d393d517d0531313d5d151606a1b6044820152606401610e5b565b6149b3600282615113565b506040516001600160a01b038216907fc985d67a353004ba149a223b2b9e5c13cca6610b11cb45b4aa029c880d8f7cb590600090a250565b6149f481611300565b15614a415760405162461bcd60e51b815260206004820152601760248201527f4143434f554e545f414c52454144595f414c4c4f5745440000000000000000006044820152606401610e5b565b614a4c600282615128565b506040516001600160a01b038216907fc5944eab072face4b169928723314c5978080e99ed8f8527faedb18c06664c3590600090a250565b6000846001600160401b0316600003614a9f5750600161390a565b6000614ac8856001600160401b031660001960125414614ac157601254614f0e565b6000614f0e565b90508215614b1f5783614af857614ae8816001600160401b038716615ab9565b866001600160401b031610614b17565b614b0b816001600160401b0387166156ea565b866001600160401b0316115b91505061390a565b83614b4757614b37816001600160401b0387166156ea565b866001600160401b031611614b17565b614b5a816001600160401b038716615ab9565b866001600160401b03161091505061390a565b606082158015614b7b575081155b15614bb0575060408051808201909152601381527254505f414e445f534c5f544f4f5f434c4f534560681b602082015261131c565b82614bde575060408051808201909152600c81526b54505f544f4f5f434c4f534560a01b602082015261131c565b5060408051808201909152600c81526b534c5f544f4f5f434c4f534560a01b602082015261131c565b60405163c07f992160e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c07f992190614c5c908990889088908890600401615acc565b600060405180830381600087803b158015614c7657600080fd5b505af1925050508015614c87575060015b614e1357614c93615b01565b806308c379a003614d075750614ca7615b1d565b80614cb25750614d09565b856003811115614cc457614cc46155de565b87896001600160a01b0316600080516020615dc7833981519152888888876000604051614cf5959493929190615857565b60405180910390a46000915050614202565b505b3d808015614d33576040519150601f19603f3d011682016040523d82523d6000602084013e614d38565b606091505b50632eb752bf60e21b614d4a82615ba6565b6001600160e01b03191603614dfa576001856002811115614d6d57614d6d6155de565b14614d8b5760405163b39155f760e01b815260040160405180910390fd5b60248101516044820151876003811115614da757614da76155de565b898b6001600160a01b0316600080516020615dc78339815191528a8a8a886011811115614dd657614dd66155de565b604051614de69493929190615bdd565b60405180910390a460009350505050614202565b604051630992185360e41b815260040160405180910390fd5b846003811115614e2557614e256155de565b86886001600160a01b03167ff0ac91a20375484f5a80315763782e4fe4b42bd038b08ba4939ff1a506974edf878787604051614e6393929190615c2c565b60405180910390a4506001614202565b6040805160608101825260008082526020820181905281830152600654915163f4a6a09360e01b815290916001600160a01b03169063f4a6a093908690614ec290899088908890600401615c80565b60606040518083038185885af1158015614ee0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190614f059190615d28565b95945050505050565b6000620186a0614f1e83856158dc565b61151191906158f3565b6000614f348242615ab9565b905080831015614f575760405163c9cf1f8b60e01b815260040160405180910390fd5b428311156111e7576040516314778a4960e31b815260040160405180910390fd5b60006001600160401b03871615614f90575085614202565b856001600160401b0316600003614fa957506000614202565b8363ffffffff16600003614fd057604051633fe89cb960e11b815260040160405180910390fd5b600063ffffffff8516620186a06064614ff56001600160401b03808c16908b166158dc565b614fff91906158dc565b61500991906158f3565b61501391906158f3565b90508215615062578361505057856001600160401b0316816001600160401b03161015615049576150448187615940565b61505a565b600061505a565b61505a8187615960565b915050614202565b83615076576150718187615960565b61509d565b856001600160401b0316816001600160401b0316101561509a576150718187615940565b60005b98975050505050505050565b60006064614f1e83856158dc565b60608160000180548060200260200160405190810160405280929190818152602001828054801561510757602002820191906000526020600020905b8154815260200190600101908083116150f3575b50505050509050919050565b6000611511836001600160a01b03841661513d565b6000611511836001600160a01b038416615237565b60008181526001830160205260408120548015615226576000615161600183615ab9565b855490915060009061517590600190615ab9565b90508082146151da57600086600001828154811061519557615195615d9a565b90600052602060002001549050808760000184815481106151b8576151b8615d9a565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806151eb576151eb615db0565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061131c565b600091505061131c565b5092915050565b600081815260018301602052604081205461527e5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561131c565b50600061131c565b60006020828403121561529857600080fd5b5035919050565b60008083601f8401126152b157600080fd5b5081356001600160401b038111156152c857600080fd5b6020830191508360208260051b85010111156152e357600080fd5b9250929050565b6000806000604084860312156152ff57600080fd5b8335925060208401356001600160401b0381111561531c57600080fd5b6153288682870161529f565b9497909650939450505050565b63ffffffff811681146114e257600080fd5b6000806040838503121561535a57600080fd5b82359150602083013561536c81615335565b809150509250929050565b6001600160a01b03811681146114e257600080fd5b60006020828403121561539e57600080fd5b813561151181615377565b6000815180845260005b818110156153cf576020818501810151868301820152016153b3565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061151160208301846153a9565b61ffff811681146114e257600080fd5b60006020828403121561542457600080fd5b813561151181615402565b60006020828403121561544157600080fd5b813561151181615335565b6020808252825182820181905260009190848201906040850190845b8181101561548d5783516001600160a01b031683529284019291840191600101615468565b50909695505050505050565b600080604083850312156154ac57600080fd5b82356154b781615402565b9150602083013561536c81615335565b6020808252600a908201526927a7262cafa0a226a4a760b11b604082015260600190565b6020808252601690820152752727aa2fa0a62627aba2a22faa27afaa2924a3a3a2a960511b604082015260600190565b80516006811061552a57600080fd5b919050565b80516001600160401b038116811461552a57600080fd5b8051801515811461552a57600080fd5b600080600080600080600060e0888a03121561557157600080fd5b61557a8861551b565b96506155886020890161552f565b9550604088015161559881615402565b94506155a660608901615546565b935060808801516155b681615335565b60a08901519093506155c781615377565b8092505060c0880151905092959891949750929550565b634e487b7160e01b600052602160045260246000fd5b60a081018181106001600160401b038211171561562157634e487b7160e01b600052604160045260246000fd5b60405250565b601f8201601f191681016001600160401b038111828210171561565a57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060a0828403121561567357600080fd5b60405161567f816155f4565b8251815260208301516004811061569557600080fd5b60208201526156a66040840161552f565b60408201526156b76060840161552f565b60608201526156c86080840161552f565b60808201529392505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561131c5761131c6156d4565b8381526060810160028410615714576157146155de565b602082019390935260400152919050565b60006020828403121561573757600080fd5b815161151181615377565b60006080828403121561575457600080fd5b604051608081018181106001600160401b038211171561578457634e487b7160e01b600052604160045260246000fd5b6040529050806157938361552f565b81526157a16020840161552f565b60208201526157b26040840161552f565b60408201526157c36060840161552f565b60608201525092915050565b6000608082840312156157e157600080fd5b6115118383615742565b85815260a0810160048610615802576158026155de565b8560208301526001600160401b03808616604084015280851660608401525063ffffffff831660808301529695505050505050565b600381106114e2576114e26155de565b8381526060810161571484615837565b61586086615837565b85815260006001600160401b03808716602084015280861660408401525060a0606083015261589260a08301856153a9565b90508260808301529695505050505050565b6000602082840312156158b657600080fd5b61151182615546565b6000602082840312156158d157600080fd5b815161151181615335565b808202811582820484141761131c5761131c6156d4565b60008261591057634e487b7160e01b600052601260045260246000fd5b500490565b6001600160401b03818116838216028082169190828114615938576159386156d4565b505092915050565b6001600160401b03828116828216039080821115615230576152306156d4565b6001600160401b03818116838216019080821115615230576152306156d4565b600060e0828403121561599257600080fd5b60405160e081018181106001600160401b03821117156159c257634e487b7160e01b600052604160045260246000fd5b604052825181526159d56020840161551b565b60208201526159e66040840161552f565b604082015260608301516159f981615335565b6060820152615a0a60808401615546565b6080820152615a1b60a0840161552f565b60a082015260c0830151615a2e81615335565b60c08201529392505050565b61ffff8616815260006001600160401b038087166020840152808616604084015280851660608401525060a06080830152613eb960a08301846153a9565b600060a08284031215615a8a57600080fd5b604051615a96816155f4565b825181526020830151615aa881615335565b60208201526156a660408401615546565b8181038181111561131c5761131c6156d4565b84815260808101615adc85615837565b60208201949094526001600160401b0392831660408201529116606090910152919050565b600060033d1115615b1a5760046000803e5060005160e01c5b90565b600060443d1015615b2b5790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715615b5a57505050505090565b8285019150815181811115615b725750505050505090565b843d8701016020828501011115615b8c5750505050505090565b615b9b60208286010187615627565b509095945050505050565b805160208201516001600160e01b03198082169291906004831015615bd55780818460040360031b1b83161693505b505050919050565b615be685615837565b9384526001600160401b0392831660208501529116604083015260a0606083018190526009908301526821a0a82fa2a92927a960b91b60c0830152608082015260e00190565b60608101615c3985615837565b9381526001600160401b039283166020820152911660409091015290565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b87811015615d1a57868503605f190183528135368a9003601e19018112615cd157600080fd5b890184810190356001600160401b03811115615cec57600080fd5b803603821315615cfb57600080fd5b615d06878284615c57565b965050509183019190830190600101615cab565b509298975050505050505050565b600060608284031215615d3a57600080fd5b604051606081018181106001600160401b0382111715615d6a57634e487b7160e01b600052604160045260246000fd5b60405282518152615d7d6020840161552f565b6020820152615d8e6040840161552f565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe889460050d9a293fbe31b6ce00a37ae62020cb8c8a19cf31e9496cb13246f6e2a2646970667358221220abfc06c5c195689d2b119005e2609ba1f967611a24db34693617b50aa1bf53f764736f6c63430008180033";
18
18
  static readonly abi: readonly [{
19
19
  readonly inputs: readonly [{
20
20
  readonly internalType: "contract ITradingFloorV1";
@@ -23,6 +23,142 @@ export declare class TriggersV1__factory extends ContractFactory {
23
23
  }];
24
24
  readonly stateMutability: "nonpayable";
25
25
  readonly type: "constructor";
26
+ }, {
27
+ readonly inputs: readonly [];
28
+ readonly name: "BufferTooHigh";
29
+ readonly type: "error";
30
+ }, {
31
+ readonly inputs: readonly [];
32
+ readonly name: "CapErrorNotOnTp";
33
+ readonly type: "error";
34
+ }, {
35
+ readonly inputs: readonly [];
36
+ readonly name: "ConfidenceRangeTooWide";
37
+ readonly type: "error";
38
+ }, {
39
+ readonly inputs: readonly [];
40
+ readonly name: "ContractDone";
41
+ readonly type: "error";
42
+ }, {
43
+ readonly inputs: readonly [];
44
+ readonly name: "ContractPaused";
45
+ readonly type: "error";
46
+ }, {
47
+ readonly inputs: readonly [];
48
+ readonly name: "FailedSlUpdate";
49
+ readonly type: "error";
50
+ }, {
51
+ readonly inputs: readonly [];
52
+ readonly name: "FailedTpUpdate";
53
+ readonly type: "error";
54
+ }, {
55
+ readonly inputs: readonly [];
56
+ readonly name: "FuturePriceReported";
57
+ readonly type: "error";
58
+ }, {
59
+ readonly inputs: readonly [];
60
+ readonly name: "InvalidLeverage";
61
+ readonly type: "error";
62
+ }, {
63
+ readonly inputs: readonly [];
64
+ readonly name: "LimitOrderPriceOutOfTimeFrame";
65
+ readonly type: "error";
66
+ }, {
67
+ readonly inputs: readonly [];
68
+ readonly name: "LimitOrderTriggerTooSoon";
69
+ readonly type: "error";
70
+ }, {
71
+ readonly inputs: readonly [];
72
+ readonly name: "MarketOrderPriceOutOfTimeFrame";
73
+ readonly type: "error";
74
+ }, {
75
+ readonly inputs: readonly [];
76
+ readonly name: "MarketOrderTriggerTooLate";
77
+ readonly type: "error";
78
+ }, {
79
+ readonly inputs: readonly [];
80
+ readonly name: "MarketOrderTriggerTooSoon";
81
+ readonly type: "error";
82
+ }, {
83
+ readonly inputs: readonly [];
84
+ readonly name: "MaxTriggersPerBlock";
85
+ readonly type: "error";
86
+ }, {
87
+ readonly inputs: readonly [];
88
+ readonly name: "NoPendingLimitOrder";
89
+ readonly type: "error";
90
+ }, {
91
+ readonly inputs: readonly [];
92
+ readonly name: "NoPendingMarketOrder";
93
+ readonly type: "error";
94
+ }, {
95
+ readonly inputs: readonly [];
96
+ readonly name: "NoSl";
97
+ readonly type: "error";
98
+ }, {
99
+ readonly inputs: readonly [];
100
+ readonly name: "NoSuchPosition";
101
+ readonly type: "error";
102
+ }, {
103
+ readonly inputs: readonly [];
104
+ readonly name: "NoTp";
105
+ readonly type: "error";
106
+ }, {
107
+ readonly inputs: readonly [];
108
+ readonly name: "NotCloseMarket";
109
+ readonly type: "error";
110
+ }, {
111
+ readonly inputs: readonly [];
112
+ readonly name: "NotOpenLimit";
113
+ readonly type: "error";
114
+ }, {
115
+ readonly inputs: readonly [];
116
+ readonly name: "NotOpenMarket";
117
+ readonly type: "error";
118
+ }, {
119
+ readonly inputs: readonly [];
120
+ readonly name: "NotPriceValidator";
121
+ readonly type: "error";
122
+ }, {
123
+ readonly inputs: readonly [];
124
+ readonly name: "PriceTooNew";
125
+ readonly type: "error";
126
+ }, {
127
+ readonly inputs: readonly [];
128
+ readonly name: "PriceTooOld";
129
+ readonly type: "error";
130
+ }, {
131
+ readonly inputs: readonly [];
132
+ readonly name: "SlTooSmallForBuffer";
133
+ readonly type: "error";
134
+ }, {
135
+ readonly inputs: readonly [];
136
+ readonly name: "UnknownCustomError";
137
+ readonly type: "error";
138
+ }, {
139
+ readonly inputs: readonly [];
140
+ readonly name: "UpdateOrderNotSl";
141
+ readonly type: "error";
142
+ }, {
143
+ readonly inputs: readonly [];
144
+ readonly name: "UpdateOrderNotTp";
145
+ readonly type: "error";
146
+ }, {
147
+ readonly inputs: readonly [];
148
+ readonly name: "UpdateOrderNotTpAndSl";
149
+ readonly type: "error";
150
+ }, {
151
+ readonly inputs: readonly [];
152
+ readonly name: "WaitTimeout";
153
+ readonly type: "error";
154
+ }, {
155
+ readonly inputs: readonly [];
156
+ readonly name: "WrongParams";
157
+ readonly type: "error";
158
+ }, {
159
+ readonly inputs: readonly [];
160
+ readonly name: "WrongValue";
161
+ readonly type: "error";
26
162
  }, {
27
163
  readonly anonymous: false;
28
164
  readonly inputs: readonly [{
@@ -348,6 +484,36 @@ export declare class TriggersV1__factory extends ContractFactory {
348
484
  }];
349
485
  readonly name: "PositionUpdateTimeoutTriggered";
350
486
  readonly type: "event";
487
+ }, {
488
+ readonly anonymous: false;
489
+ readonly inputs: readonly [{
490
+ readonly indexed: true;
491
+ readonly internalType: "bytes32";
492
+ readonly name: "positionId";
493
+ readonly type: "bytes32";
494
+ }, {
495
+ readonly indexed: false;
496
+ readonly internalType: "bytes";
497
+ readonly name: "reason";
498
+ readonly type: "bytes";
499
+ }];
500
+ readonly name: "SkewIncentivePullFailed";
501
+ readonly type: "event";
502
+ }, {
503
+ readonly anonymous: false;
504
+ readonly inputs: readonly [{
505
+ readonly indexed: true;
506
+ readonly internalType: "bytes32";
507
+ readonly name: "positionId";
508
+ readonly type: "bytes32";
509
+ }, {
510
+ readonly indexed: false;
511
+ readonly internalType: "bytes";
512
+ readonly name: "reason";
513
+ readonly type: "bytes";
514
+ }];
515
+ readonly name: "SkewIncentiveRecordFailed";
516
+ readonly type: "event";
351
517
  }, {
352
518
  readonly anonymous: false;
353
519
  readonly inputs: readonly [{
@@ -578,6 +744,16 @@ export declare class TriggersV1__factory extends ContractFactory {
578
744
  }];
579
745
  readonly stateMutability: "view";
580
746
  readonly type: "function";
747
+ }, {
748
+ readonly inputs: readonly [];
749
+ readonly name: "DYN_ROLE_SKEW_INCENTIVE";
750
+ readonly outputs: readonly [{
751
+ readonly internalType: "string";
752
+ readonly name: "";
753
+ readonly type: "string";
754
+ }];
755
+ readonly stateMutability: "view";
756
+ readonly type: "function";
581
757
  }, {
582
758
  readonly inputs: readonly [];
583
759
  readonly name: "FRACTION_SCALE";
@@ -1 +1 @@
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;AAsuDxD,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,g0iDAAa;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"}
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,8wiDAAa;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"}