@wormhole-foundation/sdk-evm-ntt 3.0.0-multi-token.beta.0 → 3.0.0-multi-token.beta.2

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 (193) hide show
  1. package/dist/cjs/axelar.d.ts +35 -0
  2. package/dist/cjs/axelar.d.ts.map +1 -0
  3. package/dist/cjs/axelar.js +168 -0
  4. package/dist/cjs/axelar.js.map +1 -0
  5. package/dist/cjs/ethers-contracts/{multiTokenNtt/1_1_0/GmpManager.sol → 1_1_0}/GmpManager.d.ts +55 -2
  6. package/dist/cjs/ethers-contracts/1_1_0/GmpManager.d.ts.map +1 -0
  7. package/dist/cjs/ethers-contracts/1_1_0/GmpManager.js.map +1 -0
  8. package/dist/cjs/ethers-contracts/{multiTokenNtt/1_1_0/MultiTokenNtt.sol → 1_1_0}/MultiTokenNtt.d.ts +59 -51
  9. package/dist/cjs/ethers-contracts/1_1_0/MultiTokenNtt.d.ts.map +1 -0
  10. package/dist/cjs/ethers-contracts/1_1_0/MultiTokenNtt.js.map +1 -0
  11. package/dist/cjs/ethers-contracts/1_1_0/factories/GmpManager__factory.d.ts +1301 -0
  12. package/dist/cjs/ethers-contracts/{multiTokenNtt/1_1_0/factories/GmpManager.sol → 1_1_0/factories}/GmpManager__factory.d.ts.map +1 -1
  13. package/dist/cjs/ethers-contracts/1_1_0/factories/GmpManager__factory.js +1704 -0
  14. package/dist/cjs/ethers-contracts/1_1_0/factories/GmpManager__factory.js.map +1 -0
  15. package/dist/cjs/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.d.ts +1350 -0
  16. package/dist/cjs/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.d.ts.map +1 -0
  17. package/dist/cjs/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.js +1777 -0
  18. package/dist/cjs/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.js.map +1 -0
  19. package/dist/cjs/ethers-contracts/1_1_0/factories/NttManager__factory.d.ts +374 -14
  20. package/dist/cjs/ethers-contracts/1_1_0/factories/NttManager__factory.d.ts.map +1 -1
  21. package/dist/cjs/ethers-contracts/1_1_0/factories/NttManager__factory.js +487 -23
  22. package/dist/cjs/ethers-contracts/1_1_0/factories/NttManager__factory.js.map +1 -1
  23. package/dist/cjs/ethers-contracts/1_1_0/index.d.ts +4 -0
  24. package/dist/cjs/ethers-contracts/1_1_0/index.d.ts.map +1 -1
  25. package/dist/cjs/ethers-contracts/1_1_0/index.js +5 -1
  26. package/dist/cjs/ethers-contracts/1_1_0/index.js.map +1 -1
  27. package/dist/cjs/ethers-contracts/multiTokenNtt/index.d.ts +3 -4
  28. package/dist/cjs/ethers-contracts/multiTokenNtt/index.d.ts.map +1 -1
  29. package/dist/cjs/ethers-contracts/multiTokenNtt/index.js +3 -4
  30. package/dist/cjs/ethers-contracts/multiTokenNtt/index.js.map +1 -1
  31. package/dist/cjs/index.d.ts +1 -1
  32. package/dist/cjs/index.d.ts.map +1 -1
  33. package/dist/cjs/index.js +1 -1
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/cjs/multiTokenNtt.d.ts +18 -14
  36. package/dist/cjs/multiTokenNtt.d.ts.map +1 -1
  37. package/dist/cjs/multiTokenNtt.js +151 -95
  38. package/dist/cjs/multiTokenNtt.js.map +1 -1
  39. package/dist/cjs/multiTokenNttBindings.d.ts +11 -11
  40. package/dist/cjs/multiTokenNttBindings.d.ts.map +1 -1
  41. package/dist/cjs/multiTokenNttWithExecutor.d.ts +5 -8
  42. package/dist/cjs/multiTokenNttWithExecutor.d.ts.map +1 -1
  43. package/dist/cjs/multiTokenNttWithExecutor.js +19 -40
  44. package/dist/cjs/multiTokenNttWithExecutor.js.map +1 -1
  45. package/dist/cjs/ntt.d.ts.map +1 -1
  46. package/dist/cjs/ntt.js +4 -5
  47. package/dist/cjs/ntt.js.map +1 -1
  48. package/dist/cjs/nttWithExecutor.d.ts +6 -6
  49. package/dist/cjs/nttWithExecutor.d.ts.map +1 -1
  50. package/dist/cjs/nttWithExecutor.js +36 -32
  51. package/dist/cjs/nttWithExecutor.js.map +1 -1
  52. package/dist/esm/axelar.d.ts +35 -0
  53. package/dist/esm/axelar.d.ts.map +1 -0
  54. package/dist/esm/axelar.js +158 -0
  55. package/dist/esm/axelar.js.map +1 -0
  56. package/dist/esm/ethers-contracts/{multiTokenNtt/1_1_0/GmpManager.sol → 1_1_0}/GmpManager.d.ts +55 -2
  57. package/dist/esm/ethers-contracts/1_1_0/GmpManager.d.ts.map +1 -0
  58. package/dist/esm/ethers-contracts/1_1_0/GmpManager.js.map +1 -0
  59. package/dist/esm/ethers-contracts/{multiTokenNtt/1_1_0/MultiTokenNtt.sol → 1_1_0}/MultiTokenNtt.d.ts +59 -51
  60. package/dist/esm/ethers-contracts/1_1_0/MultiTokenNtt.d.ts.map +1 -0
  61. package/dist/esm/ethers-contracts/1_1_0/MultiTokenNtt.js.map +1 -0
  62. package/dist/esm/ethers-contracts/1_1_0/factories/GmpManager__factory.d.ts +1301 -0
  63. package/dist/esm/ethers-contracts/{multiTokenNtt/1_1_0/factories/GmpManager.sol → 1_1_0/factories}/GmpManager__factory.d.ts.map +1 -1
  64. package/dist/esm/ethers-contracts/1_1_0/factories/GmpManager__factory.js +1700 -0
  65. package/dist/esm/ethers-contracts/1_1_0/factories/GmpManager__factory.js.map +1 -0
  66. package/dist/esm/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.d.ts +1350 -0
  67. package/dist/esm/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.d.ts.map +1 -0
  68. package/dist/esm/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.js +1773 -0
  69. package/dist/esm/ethers-contracts/1_1_0/factories/MultiTokenNtt__factory.js.map +1 -0
  70. package/dist/esm/ethers-contracts/1_1_0/factories/NttManager__factory.d.ts +374 -14
  71. package/dist/esm/ethers-contracts/1_1_0/factories/NttManager__factory.d.ts.map +1 -1
  72. package/dist/esm/ethers-contracts/1_1_0/factories/NttManager__factory.js +487 -23
  73. package/dist/esm/ethers-contracts/1_1_0/factories/NttManager__factory.js.map +1 -1
  74. package/dist/esm/ethers-contracts/1_1_0/index.d.ts +4 -0
  75. package/dist/esm/ethers-contracts/1_1_0/index.d.ts.map +1 -1
  76. package/dist/esm/ethers-contracts/1_1_0/index.js +2 -0
  77. package/dist/esm/ethers-contracts/1_1_0/index.js.map +1 -1
  78. package/dist/esm/ethers-contracts/multiTokenNtt/index.d.ts +3 -4
  79. package/dist/esm/ethers-contracts/multiTokenNtt/index.d.ts.map +1 -1
  80. package/dist/esm/ethers-contracts/multiTokenNtt/index.js +3 -4
  81. package/dist/esm/ethers-contracts/multiTokenNtt/index.js.map +1 -1
  82. package/dist/esm/index.d.ts +1 -1
  83. package/dist/esm/index.d.ts.map +1 -1
  84. package/dist/esm/index.js +1 -1
  85. package/dist/esm/index.js.map +1 -1
  86. package/dist/esm/multiTokenNtt.d.ts +18 -14
  87. package/dist/esm/multiTokenNtt.d.ts.map +1 -1
  88. package/dist/esm/multiTokenNtt.js +151 -95
  89. package/dist/esm/multiTokenNtt.js.map +1 -1
  90. package/dist/esm/multiTokenNttBindings.d.ts +11 -11
  91. package/dist/esm/multiTokenNttBindings.d.ts.map +1 -1
  92. package/dist/esm/multiTokenNttWithExecutor.d.ts +5 -8
  93. package/dist/esm/multiTokenNttWithExecutor.d.ts.map +1 -1
  94. package/dist/esm/multiTokenNttWithExecutor.js +20 -41
  95. package/dist/esm/multiTokenNttWithExecutor.js.map +1 -1
  96. package/dist/esm/ntt.d.ts.map +1 -1
  97. package/dist/esm/ntt.js +1 -2
  98. package/dist/esm/ntt.js.map +1 -1
  99. package/dist/esm/nttWithExecutor.d.ts +6 -6
  100. package/dist/esm/nttWithExecutor.d.ts.map +1 -1
  101. package/dist/esm/nttWithExecutor.js +40 -36
  102. package/dist/esm/nttWithExecutor.js.map +1 -1
  103. package/package.json +6 -6
  104. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/GmpManager.d.ts.map +0 -1
  105. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/GmpManager.js.map +0 -1
  106. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/index.d.ts +0 -2
  107. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/index.d.ts.map +0 -1
  108. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/index.js +0 -3
  109. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/index.js.map +0 -1
  110. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/MultiTokenNtt.d.ts.map +0 -1
  111. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/MultiTokenNtt.js.map +0 -1
  112. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/index.d.ts +0 -2
  113. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/index.d.ts.map +0 -1
  114. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/index.js +0 -3
  115. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/index.js.map +0 -1
  116. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/common.d.ts +0 -51
  117. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/common.d.ts.map +0 -1
  118. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/common.js +0 -3
  119. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/common.js.map +0 -1
  120. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/GmpManager__factory.d.ts +0 -1231
  121. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/GmpManager__factory.js +0 -1611
  122. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/GmpManager__factory.js.map +0 -1
  123. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/index.d.ts +0 -2
  124. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/index.d.ts.map +0 -1
  125. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/index.js +0 -9
  126. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/index.js.map +0 -1
  127. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/MultiTokenNtt__factory.d.ts +0 -1354
  128. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/MultiTokenNtt__factory.d.ts.map +0 -1
  129. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/MultiTokenNtt__factory.js +0 -1781
  130. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/MultiTokenNtt__factory.js.map +0 -1
  131. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/index.d.ts +0 -2
  132. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/index.d.ts.map +0 -1
  133. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/index.js +0 -9
  134. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/index.js.map +0 -1
  135. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/index.d.ts +0 -3
  136. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/index.d.ts.map +0 -1
  137. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/index.js +0 -32
  138. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/factories/index.js.map +0 -1
  139. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/index.d.ts +0 -5
  140. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/index.d.ts.map +0 -1
  141. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/index.js +0 -8
  142. package/dist/cjs/ethers-contracts/multiTokenNtt/1_1_0/index.js.map +0 -1
  143. package/dist/cjs/trimmedAmount.d.ts +0 -9
  144. package/dist/cjs/trimmedAmount.d.ts.map +0 -1
  145. package/dist/cjs/trimmedAmount.js +0 -30
  146. package/dist/cjs/trimmedAmount.js.map +0 -1
  147. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/GmpManager.d.ts.map +0 -1
  148. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/GmpManager.js.map +0 -1
  149. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/index.d.ts +0 -2
  150. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/index.d.ts.map +0 -1
  151. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/index.js +0 -2
  152. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/GmpManager.sol/index.js.map +0 -1
  153. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/MultiTokenNtt.d.ts.map +0 -1
  154. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/MultiTokenNtt.js.map +0 -1
  155. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/index.d.ts +0 -2
  156. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/index.d.ts.map +0 -1
  157. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/index.js +0 -2
  158. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/MultiTokenNtt.sol/index.js.map +0 -1
  159. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/common.d.ts +0 -51
  160. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/common.d.ts.map +0 -1
  161. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/common.js +0 -2
  162. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/common.js.map +0 -1
  163. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/GmpManager__factory.d.ts +0 -1231
  164. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/GmpManager__factory.js +0 -1607
  165. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/GmpManager__factory.js.map +0 -1
  166. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/index.d.ts +0 -2
  167. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/index.d.ts.map +0 -1
  168. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/index.js +0 -5
  169. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/GmpManager.sol/index.js.map +0 -1
  170. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/MultiTokenNtt__factory.d.ts +0 -1354
  171. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/MultiTokenNtt__factory.d.ts.map +0 -1
  172. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/MultiTokenNtt__factory.js +0 -1777
  173. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/MultiTokenNtt__factory.js.map +0 -1
  174. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/index.d.ts +0 -2
  175. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/index.d.ts.map +0 -1
  176. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/index.js +0 -5
  177. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/MultiTokenNtt.sol/index.js.map +0 -1
  178. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/index.d.ts +0 -3
  179. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/index.d.ts.map +0 -1
  180. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/index.js +0 -6
  181. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/factories/index.js.map +0 -1
  182. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/index.d.ts +0 -5
  183. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/index.d.ts.map +0 -1
  184. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/index.js +0 -3
  185. package/dist/esm/ethers-contracts/multiTokenNtt/1_1_0/index.js.map +0 -1
  186. package/dist/esm/trimmedAmount.d.ts +0 -9
  187. package/dist/esm/trimmedAmount.d.ts.map +0 -1
  188. package/dist/esm/trimmedAmount.js +0 -24
  189. package/dist/esm/trimmedAmount.js.map +0 -1
  190. /package/dist/cjs/ethers-contracts/{multiTokenNtt/1_1_0/GmpManager.sol → 1_1_0}/GmpManager.js +0 -0
  191. /package/dist/cjs/ethers-contracts/{multiTokenNtt/1_1_0/MultiTokenNtt.sol → 1_1_0}/MultiTokenNtt.js +0 -0
  192. /package/dist/esm/ethers-contracts/{multiTokenNtt/1_1_0/GmpManager.sol → 1_1_0}/GmpManager.js +0 -0
  193. /package/dist/esm/ethers-contracts/{multiTokenNtt/1_1_0/MultiTokenNtt.sol → 1_1_0}/MultiTokenNtt.js +0 -0
@@ -14,7 +14,7 @@ const _abi = [
14
14
  {
15
15
  name: "_mode",
16
16
  type: "uint8",
17
- internalType: "enum IManagerBase.Mode",
17
+ internalType: "enum INttManager.Mode",
18
18
  },
19
19
  {
20
20
  name: "_chainId",
@@ -231,7 +231,7 @@ const _abi = [
231
231
  {
232
232
  name: "",
233
233
  type: "tuple",
234
- internalType: "struct IRateLimiter.RateLimitParams",
234
+ internalType: "struct RateLimitLib.RateLimitParams",
235
235
  components: [
236
236
  {
237
237
  name: "limit",
@@ -289,6 +289,19 @@ const _abi = [
289
289
  ],
290
290
  stateMutability: "view",
291
291
  },
292
+ {
293
+ type: "function",
294
+ name: "getKnownChains",
295
+ inputs: [],
296
+ outputs: [
297
+ {
298
+ name: "",
299
+ type: "uint16[]",
300
+ internalType: "uint16[]",
301
+ },
302
+ ],
303
+ stateMutability: "pure",
304
+ },
292
305
  {
293
306
  type: "function",
294
307
  name: "getMigratesImmutables",
@@ -323,7 +336,7 @@ const _abi = [
323
336
  {
324
337
  name: "",
325
338
  type: "tuple",
326
- internalType: "struct IRateLimiter.RateLimitParams",
339
+ internalType: "struct RateLimitLib.RateLimitParams",
327
340
  components: [
328
341
  {
329
342
  name: "limit",
@@ -432,10 +445,121 @@ const _abi = [
432
445
  ],
433
446
  stateMutability: "view",
434
447
  },
448
+ {
449
+ type: "function",
450
+ name: "getReceiveTransceiversForChain",
451
+ inputs: [
452
+ {
453
+ name: "sourceChain",
454
+ type: "uint16",
455
+ internalType: "uint16",
456
+ },
457
+ ],
458
+ outputs: [
459
+ {
460
+ name: "transceivers",
461
+ type: "address[]",
462
+ internalType: "address[]",
463
+ },
464
+ {
465
+ name: "threshold",
466
+ type: "uint8",
467
+ internalType: "uint8",
468
+ },
469
+ ],
470
+ stateMutability: "view",
471
+ },
472
+ {
473
+ type: "function",
474
+ name: "getReceiveTransceiversWithIndicesForChain",
475
+ inputs: [
476
+ {
477
+ name: "sourceChain",
478
+ type: "uint16",
479
+ internalType: "uint16",
480
+ },
481
+ ],
482
+ outputs: [
483
+ {
484
+ name: "transceivers",
485
+ type: "tuple[]",
486
+ internalType: "struct TransceiverRegistry.TransceiverWithIndex[]",
487
+ components: [
488
+ {
489
+ name: "transceiver",
490
+ type: "address",
491
+ internalType: "address",
492
+ },
493
+ {
494
+ name: "index",
495
+ type: "uint8",
496
+ internalType: "uint8",
497
+ },
498
+ ],
499
+ },
500
+ ],
501
+ stateMutability: "view",
502
+ },
503
+ {
504
+ type: "function",
505
+ name: "getSendTransceiversForChain",
506
+ inputs: [
507
+ {
508
+ name: "targetChain",
509
+ type: "uint16",
510
+ internalType: "uint16",
511
+ },
512
+ ],
513
+ outputs: [
514
+ {
515
+ name: "transceivers",
516
+ type: "address[]",
517
+ internalType: "address[]",
518
+ },
519
+ ],
520
+ stateMutability: "view",
521
+ },
522
+ {
523
+ type: "function",
524
+ name: "getSendTransceiversWithIndicesForChain",
525
+ inputs: [
526
+ {
527
+ name: "targetChain",
528
+ type: "uint16",
529
+ internalType: "uint16",
530
+ },
531
+ ],
532
+ outputs: [
533
+ {
534
+ name: "transceivers",
535
+ type: "tuple[]",
536
+ internalType: "struct TransceiverRegistry.TransceiverWithIndex[]",
537
+ components: [
538
+ {
539
+ name: "transceiver",
540
+ type: "address",
541
+ internalType: "address",
542
+ },
543
+ {
544
+ name: "index",
545
+ type: "uint8",
546
+ internalType: "uint8",
547
+ },
548
+ ],
549
+ },
550
+ ],
551
+ stateMutability: "view",
552
+ },
435
553
  {
436
554
  type: "function",
437
555
  name: "getThreshold",
438
- inputs: [],
556
+ inputs: [
557
+ {
558
+ name: "sourceChain",
559
+ type: "uint16",
560
+ internalType: "uint16",
561
+ },
562
+ ],
439
563
  outputs: [
440
564
  {
441
565
  name: "",
@@ -497,8 +621,13 @@ const _abi = [
497
621
  },
498
622
  {
499
623
  type: "function",
500
- name: "isMessageApproved",
624
+ name: "isMessageApprovedForChain",
501
625
  inputs: [
626
+ {
627
+ name: "sourceChain",
628
+ type: "uint16",
629
+ internalType: "uint16",
630
+ },
502
631
  {
503
632
  name: "digest",
504
633
  type: "bytes32",
@@ -565,6 +694,30 @@ const _abi = [
565
694
  ],
566
695
  stateMutability: "view",
567
696
  },
697
+ {
698
+ type: "function",
699
+ name: "messageAttestationsForChain",
700
+ inputs: [
701
+ {
702
+ name: "sourceChain",
703
+ type: "uint16",
704
+ internalType: "uint16",
705
+ },
706
+ {
707
+ name: "digest",
708
+ type: "bytes32",
709
+ internalType: "bytes32",
710
+ },
711
+ ],
712
+ outputs: [
713
+ {
714
+ name: "count",
715
+ type: "uint8",
716
+ internalType: "uint8",
717
+ },
718
+ ],
719
+ stateMutability: "view",
720
+ },
568
721
  {
569
722
  type: "function",
570
723
  name: "migrate",
@@ -580,7 +733,7 @@ const _abi = [
580
733
  {
581
734
  name: "",
582
735
  type: "uint8",
583
- internalType: "enum IManagerBase.Mode",
736
+ internalType: "enum INttManager.Mode",
584
737
  },
585
738
  ],
586
739
  stateMutability: "view",
@@ -673,6 +826,60 @@ const _abi = [
673
826
  ],
674
827
  stateMutability: "view",
675
828
  },
829
+ {
830
+ type: "function",
831
+ name: "registerKnownChain",
832
+ inputs: [
833
+ {
834
+ name: "peerChainId",
835
+ type: "uint16",
836
+ internalType: "uint16",
837
+ },
838
+ {
839
+ name: "peerAddress",
840
+ type: "bytes32",
841
+ internalType: "bytes32",
842
+ },
843
+ ],
844
+ outputs: [],
845
+ stateMutability: "nonpayable",
846
+ },
847
+ {
848
+ type: "function",
849
+ name: "removeReceiveTransceiverForChain",
850
+ inputs: [
851
+ {
852
+ name: "sourceChain",
853
+ type: "uint16",
854
+ internalType: "uint16",
855
+ },
856
+ {
857
+ name: "transceiver",
858
+ type: "address",
859
+ internalType: "address",
860
+ },
861
+ ],
862
+ outputs: [],
863
+ stateMutability: "nonpayable",
864
+ },
865
+ {
866
+ type: "function",
867
+ name: "removeSendTransceiverForChain",
868
+ inputs: [
869
+ {
870
+ name: "targetChain",
871
+ type: "uint16",
872
+ internalType: "uint16",
873
+ },
874
+ {
875
+ name: "transceiver",
876
+ type: "address",
877
+ internalType: "address",
878
+ },
879
+ ],
880
+ outputs: [],
881
+ stateMutability: "nonpayable",
882
+ },
676
883
  {
677
884
  type: "function",
678
885
  name: "removeTransceiver",
@@ -745,10 +952,51 @@ const _abi = [
745
952
  outputs: [],
746
953
  stateMutability: "nonpayable",
747
954
  },
955
+ {
956
+ type: "function",
957
+ name: "setReceiveTransceiverForChain",
958
+ inputs: [
959
+ {
960
+ name: "sourceChain",
961
+ type: "uint16",
962
+ internalType: "uint16",
963
+ },
964
+ {
965
+ name: "transceiver",
966
+ type: "address",
967
+ internalType: "address",
968
+ },
969
+ ],
970
+ outputs: [],
971
+ stateMutability: "nonpayable",
972
+ },
973
+ {
974
+ type: "function",
975
+ name: "setSendTransceiverForChain",
976
+ inputs: [
977
+ {
978
+ name: "targetChain",
979
+ type: "uint16",
980
+ internalType: "uint16",
981
+ },
982
+ {
983
+ name: "transceiver",
984
+ type: "address",
985
+ internalType: "address",
986
+ },
987
+ ],
988
+ outputs: [],
989
+ stateMutability: "nonpayable",
990
+ },
748
991
  {
749
992
  type: "function",
750
993
  name: "setThreshold",
751
994
  inputs: [
995
+ {
996
+ name: "sourceChain",
997
+ type: "uint16",
998
+ internalType: "uint16",
999
+ },
752
1000
  {
753
1001
  name: "threshold",
754
1002
  type: "uint8",
@@ -972,6 +1220,31 @@ const _abi = [
972
1220
  ],
973
1221
  anonymous: false,
974
1222
  },
1223
+ {
1224
+ type: "event",
1225
+ name: "InboundTransferLimitUpdated",
1226
+ inputs: [
1227
+ {
1228
+ name: "chainId",
1229
+ type: "uint16",
1230
+ indexed: true,
1231
+ internalType: "uint16",
1232
+ },
1233
+ {
1234
+ name: "oldLimit",
1235
+ type: "uint256",
1236
+ indexed: false,
1237
+ internalType: "uint256",
1238
+ },
1239
+ {
1240
+ name: "newLimit",
1241
+ type: "uint256",
1242
+ indexed: false,
1243
+ internalType: "uint256",
1244
+ },
1245
+ ],
1246
+ anonymous: false,
1247
+ },
975
1248
  {
976
1249
  type: "event",
977
1250
  name: "InboundTransferQueued",
@@ -1080,6 +1353,25 @@ const _abi = [
1080
1353
  ],
1081
1354
  anonymous: false,
1082
1355
  },
1356
+ {
1357
+ type: "event",
1358
+ name: "OutboundTransferLimitUpdated",
1359
+ inputs: [
1360
+ {
1361
+ name: "oldLimit",
1362
+ type: "uint256",
1363
+ indexed: false,
1364
+ internalType: "uint256",
1365
+ },
1366
+ {
1367
+ name: "newLimit",
1368
+ type: "uint256",
1369
+ indexed: false,
1370
+ internalType: "uint256",
1371
+ },
1372
+ ],
1373
+ anonymous: false,
1374
+ },
1083
1375
  {
1084
1376
  type: "event",
1085
1377
  name: "OutboundTransferQueued",
@@ -1212,6 +1504,56 @@ const _abi = [
1212
1504
  ],
1213
1505
  anonymous: false,
1214
1506
  },
1507
+ {
1508
+ type: "event",
1509
+ name: "ReceiveTransceiverUpdatedForChain",
1510
+ inputs: [
1511
+ {
1512
+ name: "sourceChain",
1513
+ type: "uint16",
1514
+ indexed: false,
1515
+ internalType: "uint16",
1516
+ },
1517
+ {
1518
+ name: "transceiver",
1519
+ type: "address",
1520
+ indexed: false,
1521
+ internalType: "address",
1522
+ },
1523
+ {
1524
+ name: "enabled",
1525
+ type: "bool",
1526
+ indexed: false,
1527
+ internalType: "bool",
1528
+ },
1529
+ ],
1530
+ anonymous: false,
1531
+ },
1532
+ {
1533
+ type: "event",
1534
+ name: "SendTransceiverUpdatedForChain",
1535
+ inputs: [
1536
+ {
1537
+ name: "targetChain",
1538
+ type: "uint16",
1539
+ indexed: false,
1540
+ internalType: "uint16",
1541
+ },
1542
+ {
1543
+ name: "transceiver",
1544
+ type: "address",
1545
+ indexed: false,
1546
+ internalType: "address",
1547
+ },
1548
+ {
1549
+ name: "enabled",
1550
+ type: "bool",
1551
+ indexed: false,
1552
+ internalType: "bool",
1553
+ },
1554
+ ],
1555
+ anonymous: false,
1556
+ },
1215
1557
  {
1216
1558
  type: "event",
1217
1559
  name: "ThresholdChanged",
@@ -1231,6 +1573,25 @@ const _abi = [
1231
1573
  ],
1232
1574
  anonymous: false,
1233
1575
  },
1576
+ {
1577
+ type: "event",
1578
+ name: "ThresholdUpdatedForChain",
1579
+ inputs: [
1580
+ {
1581
+ name: "sourceChain",
1582
+ type: "uint16",
1583
+ indexed: false,
1584
+ internalType: "uint16",
1585
+ },
1586
+ {
1587
+ name: "threshold",
1588
+ type: "uint8",
1589
+ indexed: false,
1590
+ internalType: "uint8",
1591
+ },
1592
+ ],
1593
+ anonymous: false,
1594
+ },
1234
1595
  {
1235
1596
  type: "event",
1236
1597
  name: "TransceiverAdded",
@@ -1295,13 +1656,13 @@ const _abi = [
1295
1656
  {
1296
1657
  name: "recipient",
1297
1658
  type: "bytes32",
1298
- indexed: false,
1659
+ indexed: true,
1299
1660
  internalType: "bytes32",
1300
1661
  },
1301
1662
  {
1302
1663
  name: "refundAddress",
1303
1664
  type: "bytes32",
1304
- indexed: false,
1665
+ indexed: true,
1305
1666
  internalType: "bytes32",
1306
1667
  },
1307
1668
  {
@@ -1331,6 +1692,19 @@ const _abi = [
1331
1692
  ],
1332
1693
  anonymous: false,
1333
1694
  },
1695
+ {
1696
+ type: "event",
1697
+ name: "TransferSent",
1698
+ inputs: [
1699
+ {
1700
+ name: "digest",
1701
+ type: "bytes32",
1702
+ indexed: true,
1703
+ internalType: "bytes32",
1704
+ },
1705
+ ],
1706
+ anonymous: false,
1707
+ },
1334
1708
  {
1335
1709
  type: "event",
1336
1710
  name: "Upgraded",
@@ -1457,6 +1831,22 @@ const _abi = [
1457
1831
  },
1458
1832
  ],
1459
1833
  },
1834
+ {
1835
+ type: "error",
1836
+ name: "IncorrectPrefix",
1837
+ inputs: [
1838
+ {
1839
+ name: "prefix",
1840
+ type: "bytes4",
1841
+ internalType: "bytes4",
1842
+ },
1843
+ ],
1844
+ },
1845
+ {
1846
+ type: "error",
1847
+ name: "InvalidChainId",
1848
+ inputs: [],
1849
+ },
1460
1850
  {
1461
1851
  type: "error",
1462
1852
  name: "InvalidFork",
@@ -1478,6 +1868,22 @@ const _abi = [
1478
1868
  name: "InvalidInitialization",
1479
1869
  inputs: [],
1480
1870
  },
1871
+ {
1872
+ type: "error",
1873
+ name: "InvalidInstructionIndex",
1874
+ inputs: [
1875
+ {
1876
+ name: "providedIndex",
1877
+ type: "uint256",
1878
+ internalType: "uint256",
1879
+ },
1880
+ {
1881
+ name: "numTransceivers",
1882
+ type: "uint256",
1883
+ internalType: "uint256",
1884
+ },
1885
+ ],
1886
+ },
1481
1887
  {
1482
1888
  type: "error",
1483
1889
  name: "InvalidMode",
@@ -1567,6 +1973,22 @@ const _abi = [
1567
1973
  name: "InvalidTransceiverZeroAddress",
1568
1974
  inputs: [],
1569
1975
  },
1976
+ {
1977
+ type: "error",
1978
+ name: "LengthMismatch",
1979
+ inputs: [
1980
+ {
1981
+ name: "encodedLength",
1982
+ type: "uint256",
1983
+ internalType: "uint256",
1984
+ },
1985
+ {
1986
+ name: "expectedLength",
1987
+ type: "uint256",
1988
+ internalType: "uint256",
1989
+ },
1990
+ ],
1991
+ },
1570
1992
  {
1571
1993
  type: "error",
1572
1994
  name: "MessageNotApproved",
@@ -1583,6 +2005,28 @@ const _abi = [
1583
2005
  name: "NoEnabledTransceivers",
1584
2006
  inputs: [],
1585
2007
  },
2008
+ {
2009
+ type: "error",
2010
+ name: "NoThresholdConfiguredForChain",
2011
+ inputs: [
2012
+ {
2013
+ name: "chainId",
2014
+ type: "uint16",
2015
+ internalType: "uint16",
2016
+ },
2017
+ ],
2018
+ },
2019
+ {
2020
+ type: "error",
2021
+ name: "NoTransceiversConfiguredForChain",
2022
+ inputs: [
2023
+ {
2024
+ name: "chainId",
2025
+ type: "uint16",
2026
+ internalType: "uint16",
2027
+ },
2028
+ ],
2029
+ },
1586
2030
  {
1587
2031
  type: "error",
1588
2032
  name: "NonRegisteredTransceiver",
@@ -1621,6 +2065,11 @@ const _abi = [
1621
2065
  },
1622
2066
  ],
1623
2067
  },
2068
+ {
2069
+ type: "error",
2070
+ name: "NotImplemented",
2071
+ inputs: [],
2072
+ },
1624
2073
  {
1625
2074
  type: "error",
1626
2075
  name: "NotInitializing",
@@ -1701,6 +2150,17 @@ const _abi = [
1701
2150
  },
1702
2151
  ],
1703
2152
  },
2153
+ {
2154
+ type: "error",
2155
+ name: "PayloadTooLong",
2156
+ inputs: [
2157
+ {
2158
+ name: "size",
2159
+ type: "uint256",
2160
+ internalType: "uint256",
2161
+ },
2162
+ ],
2163
+ },
1704
2164
  {
1705
2165
  type: "error",
1706
2166
  name: "PeerNotRegistered",
@@ -1844,6 +2304,22 @@ const _abi = [
1844
2304
  name: "UnexpectedMsgValue",
1845
2305
  inputs: [],
1846
2306
  },
2307
+ {
2308
+ type: "error",
2309
+ name: "UnorderedInstructions",
2310
+ inputs: [
2311
+ {
2312
+ name: "lastIndex",
2313
+ type: "uint256",
2314
+ internalType: "uint256",
2315
+ },
2316
+ {
2317
+ name: "instructionIndex",
2318
+ type: "uint256",
2319
+ internalType: "uint256",
2320
+ },
2321
+ ],
2322
+ },
1847
2323
  {
1848
2324
  type: "error",
1849
2325
  name: "ZeroAmount",
@@ -1855,29 +2331,17 @@ const _abi = [
1855
2331
  inputs: [],
1856
2332
  },
1857
2333
  ];
1858
- const _bytecode = "0x61016034620005cb57601f620065b138819003918201601f19168301916001600160401b038311848410176200057e5780849260a094604052833981010312620005cb578051906001600160a01b0382168203620005cb576020810151916002831015620005cb5760408201519161ffff83168303620005cb576060810151906001600160401b03821690818303620005cb576080015180159182158203620005cb5715809281620005c2575b508215620005a6575b505062000594576080527f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8954620001147e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e15460ff8360081c1614620005d0565b7ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f5460005b60ff8360081c168110620003f157505060005b60ff8260081c1681106200035d5750604060ff6200016d92161115620005d0565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c166200034b576002600160401b03196001600160401b03821601620002ff575b50503060a05260c0526101009182526101209081526101404681523360e05260405191615f6393846200064e85396080518481816114d401528181611b1401528181611fb1015281816129e20152818161342d015281816139b5015281816140310152818161554f0152818161566201528181615722015281816158410152615909015260a05184614f95015260c0518481816102900152818161051401528181610561015281816128ce0152818161382501528181613eaf0152818161476d01528181614bac0152614c5c015260e05184611c590152518381816104ab0152818161202a015281816121560152818161291c015281816138a701528181613f2c0152614b3401525182818161137c01528181611e500152818161298501526133b701525181818161044901528181613aa1015281816140f90152818161463e0152614ae60152f35b6001600160401b0319166001600160401b039081179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880620001b6565b60405163f92ee8a960e01b8152600490fd5b60018101808211620003db575b60ff8360081c1681106200038a57506200038490620005ee565b6200014c565b620003d590620003cf6200039e84620005fe565b9054620003ab84620005fe565b9054600391821b1c6001600160a01b039081169390911b9190911c161415620005d0565b620005ee565b6200036a565b634e487b7160e01b600052601160045260246000fd5b620003fc81620005fe565b9054600382901b81901c6001600160a01b031660009081527f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f602052604090819020905192906001600160401b0360608501908111908511176200057e5760608401604052546200049e60ff821615801592838752602087019360ff808360081c1615928315875260101c16908160408a01529262000561575b5050620005d0565b60018060401b03600160ff6040870151161b87161615159051151592600092835b60ff8a60081c1681106200050f575b5050508262000509959492620004ee620003cf95620004f79414620005d0565b151514620005d0565b60ff60408188169201511610620005d0565b62000139565b6200051a81620005fe565b9054600391821b1c6001600160a01b039081169184901b85901c16146200054c576200054690620005ee565b620004bf565b5060019350849150829050620004ee620004ce565b9091508162000574575b50388062000496565b905015386200056b565b634e487b7160e01b600052604160045260246000fd5b60405163e543ef0560e01b8152600490fd5b15915081620005b9575b503880620000b5565b905038620005b0565b925038620000ac565b600080fd5b15620005d857565b634e487b7160e01b600052600160045260246000fd5b6000198114620003db5760010190565b7e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e18054821015620006375760005260206000200190600090565b634e487b7160e01b600052603260045260246000fdfe6080604052600436101561001257600080fd5b6000803560e01c80630271725014612c5f578063036de8af14612bd45780630677df5414612bb55780630900f0101461274e578063186ce612146126f957806319017175146126c35780631f97c9a8146124d1578063203e4a9b146121ce57806323d75e311461219a578063295a521214612140578063396c16b7146121045780633b97e856146120e95780633f4ba83a146120755780634b4fd03b14612017578063689f90c314611fd557806374aa7bfc14611f915780637c91863414611e025780638129fc1c14611bcd5780638413bcba14611ab15780638456cb5914611a3457806386e11ffa14611a0f57806389c619dd146119af5780638da5cb5b146119795780638e3ba8c9146119425780638fd3ab80146118035780639057412d14611686578063961b94d01461162857806397c35146146113a05780639a8a0592146113615780639d782454146111265780639f86029c14610e105780639fd0506d14610dda578063b150fc5514610c2d578063b187bd2614610bff578063b293f97f14610b69578063b4d591bb14610aa8578063c0b07bde14610a62578063c128d170146109e6578063d788c1471461095b578063da4856a114610928578063e5a986031461087c578063e75235b81461084e578063f2fde38b14610709578063f5cfec18146106e6578063f7514fbc146102bf578063fc0c546a1461027a5763fd96063c1461022257600080fd5b346102775760203660031901126102775760606102406004356154ad565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b031690820152f35b80fd5b50346102775780600319360112610277576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5034610277576020366003190112610277576004356001600160401b03811681036106e2576102ec615cfd565b6002600080516020615dce83398151915254146106d0576001600160401b038116600052600080516020615eae83398151915260205260406000206040519061033482612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a083015260405190818560048301549261039b84613755565b80845293600181169081156106ae575060011461066a575b506103c092500382612db6565b60c08201526001600160401b03606082015116156106495760a08101516001600160a01b031633810361061c5750606061048c60407ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd07936001600160401b038616600052600080516020615eae833981519152602052610442826000206137a6565b015161046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b610475614c36565b906001600160401b0360ff82169160081c16615b6c565b926001600160401b0360405191168152336020820152836040820152a17f000000000000000000000000000000000000000000000000000000000000000060028110156106065780610556575060405163a9059cbb60e01b602082015233602482015260448101919091526105419061051281606481015b03601f198101835282612db6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316614438565b6001600080516020615ece8339815191525580f35b600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316803b156105e5576040516340c10f1960e01b815233600482015260248101929092526000908290604490829084905af180156105d9576105ca575b50610541565b6105d390612d1c565b386105c4565b6040513d6000823e3d90fd5b600080fd5b6040516366001a8960e01b815260ff9091166004820152602490fd5b634e487b7160e01b600052602160045260246000fd5b60405163ceb40a8560e01b81523360048201526001600160a01b03919091166024820152604490fd5b0390fd5b604051635feafa3160e11b81526001600160401b0383166004820152602490fd5b60040187525060208620909186915b8183106106925750509060206103c092820101386103b3565b6020919350806001915483858801015201910190918392610679565b9050602092506103c094915060ff191682840152151560051b820101386103b3565b6040516309e3d0f360e11b8152600490fd5b5080fd5b50346102775780600319360112610277576020610701615496565b604051908152f35b5034610277576020366003190112610277576001600160a01b03600435818116908181036108195761074a9061073d615cc4565b610745615cc4565b615c50565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97891825460ff600080516020615e4e8339815191525416808203610830575050908391825b845481101561082c578460005281817f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd1015416803b1561082857848091602460405180948193632c7b84dd60e11b83528960048401525af190811561081d578591610805575b505061080090612ff6565b61078f565b61080e90612d1c565b6108195783386107f5565b8380fd5b6040513d87823e3d90fd5b8480fd5b8380f35b604492506040519163d2a13a2960e01b835260048301526024820152fd5b5034610277578060031936011261027757602060ff600080516020615d4e8339815191525416604051908152f35b50346102775760203660031901126102775760043560ff8116908181036105e5576108a5615cc4565b8115610916577f2a855b929b9a53c6fb5b5ed248b27e502b709c088e036a5aa17620c8fc5085a99161091060ff92600080516020615d4e833981519152805493851985161790556108f4613275565b6040805160ff9490951684168552921660208401528291820190565b0390a180f35b60405163831761d760e01b8152600490fd5b50346102775761093736612e39565b906002600080516020615dce83398151915254146106d0576109589261333e565b80f35b50346102775760203660031901126102775761ffff610978612cb2565b610980614d41565b5016600052600080516020615e6e8339815191526020526109e26109a76040600020615071565b6040519182918291909160406001600160401b038160608401956001600160481b038082511686526020820151166020860152015116910152565b0390f35b50346102775760203660031901126102775761ffff90610a04612cb2565b906020604051610a1381612d65565b828152015216600052600080516020615d2e83398151915260205260408060002060ff8251610a4181612d65565b60208260018554958685520154169101908152835192835251166020820152f35b50346102775780600319360112610277576109e2604051610a8281612d65565b60058152640312e312e360dc1b6020820152604051918291602083526020830190612cf7565b50346102775780600319360112610277576040518091600080516020615e0e83398151915290815480845260208094019081938352600080516020615d6e83398151915290835b818110610b4c5750505084610b05910385612db6565b60405193838594850191818652518092526040850193925b828110610b2c57505050500390f35b83516001600160a01b031685528695509381019392810192600101610b1d565b82546001600160a01b031684529286019260019283019201610aef565b5060c036600319011261027757610b7e612cc3565b906084359182151583036106e25760a4356001600160401b03928382116102775750610bae903690600401612df2565b610bb6615cfd565b6002600080516020615dce83398151915254146106d057602093610be4926064359060443590600435613e93565b6001600080516020615ece8339815191525560405191168152f35b503461027757806003193601126102775760206002600080516020615dce8339815191525414604051908152f35b503461027757806003193601126102775760405180600080516020615e0e83398151915280548084526020809401918552600080516020615d6e83398151915290855b818110610dbd5750505081610c86910382612db6565b8051610c9181612eba565b91610c9f6040519384612db6565b818352601f19610cae83612eba565b01855b818110610da1575050845b828110610d1d575050506040519180830190808452825180925280604085019301945b828110610cec5784840385f35b85518051151585528083015115158584015260409081015160ff169085015294810194606090930192600101610cdf565b929492610d99906001600160a01b03610d368285613005565b5116600052600080516020615e8e8339815191528652604060002060405190610d5e82612d4a565b5460ff9081811615158352818160081c1615158984015260101c166040820152610d888289613005565b52610d938188613005565b50612ff6565b949294610cbc565b8590610dae979597614d41565b82828a01015201959395610cb1565b82546001600160a01b031684529285019260019283019201610c70565b5034610277578060031936011261027757600080516020615eee833981519152546040516001600160a01b039091168152602090f35b5034610277576020806003193601126106e2576001600160a01b0390600435828116919082810361082857610e43615cc4565b82156111145782600052600080516020615e8e83398151915280835260ff918260406000205416156110fb57846000528184528260406000205460081c16156110e25784600052818452604060002061ff001990818154169055600080516020615e4e833981519152928354858160081c169283156110ce5761ff0060001980950160081b169116178455600080516020615dee8339815191528054918860005287526001600160401b03600192610f1082858a60406000205460101c161b198316169282168310614d24565b6001600160401b0319161790558897600080516020615e0e8339815191528054938b5b858110610fc8575b505050505050918091610f836040969594610f767f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f99614d24565b610f7e614d60565b614e4b565b5460081c16600080516020615d4e8339815191529081548381168210610fba575b50505416908351928352820152a1610958613275565b60ff19161781553880610fa4565b838b610fd383613244565b929054600393841b1c1614610ff15750610fec90612ff6565b610f33565b9590918093959798999a9b9c5081019081116110ba57906110258461101861104494613244565b905490891b1c1691613244565b90919082549060031b9160018060a01b03809116831b921b1916179055565b825480156110a657946040999794610f83948a9894610f76947f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f9e9c99019261108c84613244565b81939154921b1b1916905555998496979899839650610f3b565b634e487b7160e01b8c52603160045260248cfd5b634e487b7160e01b8d52601160045260248dfd5b634e487b7160e01b8b52601160045260248bfd5b6040516307d86e9160e21b815260048101869052602490fd5b604051630d583f4760e41b815260048101869052602490fd5b604051632f44bd7760e01b8152600490fd5b50346102775761113536612e39565b9033600052600080516020615e8e83398151915260209080825260ff60406000205460081c161561134957600080516020615dce8339815191529160028354146106d05761ffff861680600052600080516020615d2e8339815191528252846040600020540361132b575060405163b3f07bbd60e01b8152918183806111bf898b60048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49283156113205788936112f1575b503360005280825261120360ff60406000205460101c168461320e565b6112d85760606112b793927f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e592336000528082528a6001600160401b03610100600160481b03604082600160ff836000205460101c161b1693898152600080516020615d8e833981519152875220928354928360081c161760081b1690610100600160481b03191617905533600052815260ff60406000205460101c166040519185835233908301526040820152a16131a1565b6112bf578480f35b546002146106d0576112d09261333e565b388080808480f35b604051631089c4a160e11b815260048101849052602490fd5b9092508181813d8311611319575b6113098183612db6565b810103126105e5575191386111e6565b503d6112ff565b6040513d8a823e3d90fd5b6044908560405191635788c0fd60e11b835260048301526024820152fd5b60405163a0ae911d60e01b8152336004820152602490fd5b5034610277578060031936011261027757602060405161ffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b506020366003190112610277576001600160401b0360043516908160043503610277576113cb615cfd565b6002600080516020615dce83398151915254146106d05781600052600080516020615eae8339815191526020526040600020916040519261140b84612d2f565b805484526001810154602085015261ffff60028201546001600160481b03811660408701526001600160401b038160481c16606087015260881c16608085015260018060a01b0360038201541660a08501526040518381949060048401549361147385613755565b808552946001811690811561160457506001146115bf575b505061149992500383612db6565b60c083019182526001600160401b03606084015116156115a7576114ca6001600160401b0360608501511642613194565b6001600160401b037f0000000000000000000000000000000000000000000000000000000000000000161161157c579161155991602093600052600080516020615eae833981519152845261152260406000206137a6565b6001600160481b036040830151169161ffff608082015116815190868301519260a0600180821b0391015116935194600435614632565b6001600080516020615ece833981519152556001600160401b0360405191168152f35b6044906001600160401b036060850151166040519163c06cf05f60e01b835260048301526024820152fd5b60249060405190635feafa3160e11b82526004820152fd5b60049193949250018252602082205b8183106115e857505090602061149992820101388061148b565b60209193508060019154838589010152019101909184926115ce565b9150506020925061149994915060ff191682840152151560051b820101388061148b565b5060603660031901126102775761163d612cc3565b604435611648615cfd565b6002600080516020615dce83398151915254146106d05760209181611559926040519261167484612d65565b60018452853681860137600435613808565b5034610277576040366003190112610277576116a0612cb2565b6024356001600160401b0381116117ff576116bf903690600401612df2565b91604051918290600080516020615e0e833981519152828154918287526020809701908652600080516020615d6e83398151915292865b888282106117e05750505061170d92500383612db6565b826117378351966040519788928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156117d55783949561177094926117b1575b50613039565b604051926040840160408552835180915285606086019401915b81811061179d5750505082938301520390f35b82518552938601939186019160010161178a565b6117ce9192503d8087833e6117c68183612db6565b810190612f24565b903861176a565b6040513d85823e3d90fd5b85546001600160a01b03168452600195860195889550930192016116f6565b8280fd5b503461027757806003193601126102775761181c614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0080546001600160401b0380821690600182019181831161192c5760ff8460401c1690811561191f575b5061190d57600160401b911680926001600160481b03191617179081835560ff7f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e5416156118fb577fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2926020926118db613275565b6118e3614d60565b68ff000000000000000019169055604051908152a180f35b604051632866815360e11b8152600490fd5b60405163f92ee8a960e01b8152600490fd5b9050818316111538611866565b634e487b7160e01b600052601160045260246000fd5b50346102775760403660031901126102775760243560ff811681036105e55761196f60209160043561320e565b6040519015158152f35b5034610277578060031936011261027757600080516020615dae833981519152546040516001600160a01b039091168152602090f35b503461027757602036600319011261027757611a046001600160401b036020926040600080516020615dee83398151915254916004358152600080516020615d8e8339815191528652205460081c1616615a8e565b60ff60405191168152f35b5034610277578060031936011261027757611a28614d41565b506109e26109a7615029565b5034610277578060031936011261027757600080516020615dae83398151915254611a67906001600160a01b0316614fd6565b600080516020615dce83398151915260028154146106d057600290557f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2602060405160018152a180f35b503461027757602036600319011261027757600435611ace615cfd565b6002600080516020615dce83398151915254146106d057611aee816154ad565b602081016001600160401b03908181511615611bb457611b118282511642613194565b827f00000000000000000000000000000000000000000000000000000000000000001611611b92578385527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b8602052604080862086815560010186905583015183518691610541916001600160481b0316906001600160a01b031687614adb565b516040516301cb739d60e71b8152600481019490945216602483015250604490fd5b604051630301bcaf60e61b815260048101859052602490fd5b508060031936011261027757611be1614f92565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460ff8160401c1615906001600160401b03811680159081611dfa575b6001149081611df0575b159081611de7575b5061190d5767ffffffffffffffff198116600117835581611dc8575b50611c57615c0f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381163303611d9f575034611d8d57611c96615c0f565b611c9e615c0f565b611ca6615c0f565b6001600080516020615dce83398151915255600080516020615eee83398151915280546001600160a01b03191633179055611cdf615c0f565b611ce7615c0f565b611cf033615c50565b611cf8615c0f565b611d00615c0f565b6001600080516020615ece83398151915255611d37610100600160481b0360ff611d30611d2b614c36565b615b35565b16176150d1565b611d3f613275565b611d47614d60565b611d4f575080f35b68ff00000000000000001981541690557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b60405163bd28e88960e01b8152600490fd5b604051636345072160e11b81526001600160a01b03919091166004820152336024820152604490fd5b68ffffffffffffffffff19166801000000000000000117825538611c4e565b90501538611c32565b303b159150611c2a565b839150611c20565b503461027757608036600319011261027757611e1c612cb2565b60243560443560ff81168091036105e557611e35615cc4565b61ffff809316928315611f7f578215611f6d578115611f5b577f0000000000000000000000000000000000000000000000000000000000000000168314611f49577f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9160809184600052600080516020615d2e833981519152918260205260ff604060002081600160405192611eca84612d65565b805484520154169460208201958652886000526020526001604060002084815501848319825416179055611f2c611f0b611f02614c36565b80606435615bc7565b89600052600080516020615e6e8339815191526020526040600020906152cf565b51935116604051938452602084015260408301526060820152a280f35b60405163101b8f9560e11b8152600490fd5b60405163ade64f0b60e01b8152600490fd5b60405163f839a0cb60e01b8152600490fd5b60405163100b0f2760e11b8152600490fd5b503461027757806003193601126102775760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610277578060031936011261027757602060ff7f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb54166040519015158152f35b50346102775780600319360112610277577f00000000000000000000000000000000000000000000000000000000000000009060028210156120615760208260ff60405191168152f35b634e487b7160e01b81526021600452602490fd5b503461027757806003193601126102775761208e615cc4565b600080516020615dce83398151915260028154036120d757600190557fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b06020604051838152a180f35b604051637e38d1d360e11b8152600490fd5b50346102775780600319360112610277576020611a04614c36565b50346102775760203660031901126102775760ff60406020926004358152600080516020615d8e83398151915284522054166040519015158152f35b50346102775780600319360112610277576040517f0000000000000000000000000000000000000000000000000000000000000000600281101561218657602092508152f35b634e487b7160e01b83526021600452602483fd5b503461027757806003193601126102775760206001600160401b03600080516020615e2e8339815191525416604051908152f35b5034610277576020806003193601126106e2576004356001600160a01b03811691828203610819576121fe615cc4565b82156111145782600052600080516020615e8e8339815191529182825260ff9081604060002054166000146123a75784600052838352604060002061010061ff00198254161790555b600080516020615e0e83398151915290815491600160401b831015612391578261102591600161227995019055613244565b600080516020615e4e83398151915292835461ff0061229c848360081c16614d13565b60081b169061ff00191617809455600080516020615dee83398151915280546001600160401b0390818116918860005284875260018660406000205460101c161b1682179182146123785767ffffffffffffffff19161790557ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda594606094909390929091612328614d60565b84600052825280600080516020615d4e833981519152805482811615612369575b5054169260405194855260081c16908301526040820152a1610958613275565b60ff1916600117815538612349565b604051638d68f84d60e01b815260048101899052602490fd5b634e487b7160e01b600052604160045260246000fd5b600080516020615e4e8339815191528281541660408110156124bf57604051906123d082612d4a565b6001825285820190600182526040830190815288600052878752604060002092511515918662ff000061ff0086549351151560081b16935160101b1693169062ffffff19161717179055805483612428818316614d13565b169060ff19161790557f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed978805490600160401b82101561239157600182018082558210156124a9576000527f357eda4c1707ce60b55a439f3dc12fcacea5ca0fd863e2fc179a916cf05fccd10180546001600160a01b03191686179055612247565b634e487b7160e01b600052603260045260246000fd5b60405163891684c360e01b8152600490fd5b5034610277576020366003190112610277576004356001600160401b0381168091036106e257606060c060405161250781612d2f565b84815284602082015284604082015284838201528460808201528460a08201520152600052600080516020615eae83398151915260205260406000206040519061255082612d2f565b805482526001810154602083015261ffff60028201546001600160481b03811660408501526001600160401b038160481c16606085015260881c16608083015260018060a01b0360038201541660a0830152604051838194906004840154936125b885613755565b808552946001811690811561269f575060011461265a575b50506125de92500383612db6565b60c081019182526109e26040519283926020845280516020850152602081015160408501526001600160481b0360408201511660608501526001600160401b03606082015116608085015261ffff60808201511660a085015260a0600180821b039101511660c08401525160e080840152610100830190612cf7565b60049193949250018252602082205b8183106126835750509060206125de9282010138806125d0565b6020919350806001915483858901015201910190918492612669565b915050602092506125de94915060ff191682840152151560051b82010138806125d0565b5034610277576020366003190112610277576126dd615cc4565b6109586126f46126eb614c36565b80600435615bc7565b6150d1565b503461027757604036600319011261027757610958612716612cc3565b61271e615cc4565b61ffff61272c6126eb614c36565b9116600052600080516020615e6e8339815191526020526040600020906152cf565b5034610277576020806003193601126106e2576001600160a01b03600435818116908181036108285761277f615cc4565b612787614f92565b3b15612b5a577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b031916821790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a27f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4e9182549161281460ff841615614d24565b60ff199283166001178455303b156108285760405163011fa75760e71b8152858160048183305af18015612b0f57612b47575b5060405163689f90c360e01b81528281600481305afa908115612b0f578691612b1a575b50156128a3575b50507f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cb818154169055815416905580f35b604051637e062a3560e11b81528281600481305afa908115612b0f578691612ad1575b50816128f6927f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b6040516314ad290960e11b81528181600481305afa90811561081d578591612a9b575b507f0000000000000000000000000000000000000000000000000000000000000000906002821015612a87576002811015612a87576129589114614d24565b604051634d4502c960e11b81528181600481305afa801561081d578590612a51575b6129ad915061ffff807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b604051631d2a9eff60e21b8152908082600481305afa90811561081d578591612a11575b50612a0a91506001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016911614614d24565b3880612872565b905081813d8311612a4a575b612a278183612db6565b8101031261081957516001600160401b038116810361081957612a0a90386129d1565b503d612a1d565b508181813d8311612a80575b612a678183612db6565b8101031261082857612a7b6129ad9161332f565b61297a565b503d612a5d565b634e487b7160e01b86526021600452602486fd5b90508181813d8311612aca575b612ab28183612db6565b81010312610828575160028110156108285738612919565b503d612aa8565b90508281813d8311612b08575b612ae88183612db6565b81010312612b045751908082168203612b0457906128f66128c6565b8580fd5b503d612ade565b6040513d88823e3d90fd5b612b3a9150833d8511612b40575b612b328183612db6565b810190614420565b3861286b565b503d612b28565b612b5390959195612d1c565b9338612847565b60405162461bcd60e51b815260048101849052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b503461027757602036600319011261027757602061196f6004356131a1565b5034610277576020366003190112610277576004356001600160a01b03818116918290036117ff57612c1681600080516020615dae8339815191525416614fd6565b600080516020615eee83398151915280546001600160a01b031981168417909155167f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef68380a380f35b50346102775760203660031901126102775761070161046d612cad604060209461ffff612c8a612cb2565b612c92614d41565b50168152600080516020615e6e833981519152865220615071565b615543565b6004359061ffff821682036105e557565b6024359061ffff821682036105e557565b60005b838110612ce75750506000910152565b8181015183820152602001612cd7565b90602091612d1081518092818552858086019101612cd4565b601f01601f1916010190565b6001600160401b03811161239157604052565b60e081019081106001600160401b0382111761239157604052565b606081019081106001600160401b0382111761239157604052565b604081019081106001600160401b0382111761239157604052565b608081019081106001600160401b0382111761239157604052565b60a081019081106001600160401b0382111761239157604052565b90601f801991011681019081106001600160401b0382111761239157604052565b6001600160401b03811161239157601f01601f191660200190565b81601f820112156105e557803590612e0982612dd7565b92612e176040519485612db6565b828452602083830101116105e557816000926020809301838601378301015290565b90600319906060828401126105e55760043561ffff811681036105e5579260243592604435916001600160401b03918284116105e55760609084830301126105e55760405192612e8884612d4a565b806004013584526024810135602085015260448101359283116105e557612eb29201600401612df2565b604082015290565b6001600160401b0381116123915760051b60200190565b519060ff821682036105e557565b81601f820112156105e5578051612ef581612dd7565b92612f036040519485612db6565b818452602082840101116105e557612f219160208085019101612cd4565b90565b9060209081838203126105e55782516001600160401b03938482116105e557019080601f830112156105e5578151612f5b81612eba565b94604090612f6b82519788612db6565b828752858088019360051b860101948486116105e557868101935b868510612f9857505050505050505090565b84518381116105e55782019084601f1983890301126105e557845190612fbd82612d65565b612fc88a8401612ed1565b825285830151918583116105e557612fe7898c80969581960101612edf565b83820152815201940193612f86565b600019811461192c5760010190565b80518210156124a95760209160051b010190565b9060406020612f219360ff81511684520151918160208201520190612cf7565b90929180519161304883612eba565b9260409161305883519586612db6565b818552601f1961306783612eba565b01602090368288013760009788955b84871061308857505050505050509190565b909192939495988685613101868d6130a760018060a01b039188613005565b511680600052600080516020615e8e83398151915282526130d260ff866000205460101c1689613005565b51908551808095819463b5634c7360e01b835261ffff60049916898401526024998a8401526044830190613019565b03915afa90811561318957908d91600091613157575b5061312381928d613005565b5283018093116131445750506131399099612ff6565b959493929190613076565b601190634e487b7160e01b600052526000fd5b91508782813d8311613182575b61316e8183612db6565b810103126102775750518c90613123613117565b503d613164565b8a513d6000823e3d90fd5b9190820391821161192c57565b6001600160401b039060ff6131fa81600080516020615d4e8339815191525416938493600080516020615dee8339815191525490600052600080516020615d8e83398151915260205260406000205460081c1616615a8e565b1610159081613207575090565b9050151590565b906001600160401b0391600052600080516020615d8e833981519152602052600160ff60406000205460081c92161b1616151590565b600080516020615e0e83398151915280548210156124a957600052600080516020615d6e8339815191520190600090565b60ff600080516020615d4e833981519152541660405161329481612d65565b60ff600080516020615e4e83398151915254818116835260081c168060208301528083116132cf57505160ff166132c85750565b1561091657565b82604491604051916313c3d1b160e01b835260048301526024820152fd5b9060606040612f219380518452602081015160208501520151918160408201520190612cf7565b60409061ffff612f21949316815281602082015201906132ed565b519061ffff821682036105e557565b91908161334b9184613635565b9190916136305760408091015191815192635399ded560e11b8452608084806133806020948560048401526024830190612cf7565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af4938415613625576000946135b0575b5061ffff9283606086015116847f0000000000000000000000000000000000000000000000000000000000000000168082036135955750506133e8614c36565b816134118751928061340c816001600160401b03968760ff82169160081c16615b6c565b615bc7565b960151908160a01c61357e576001600160a01b039182169560007f0000000000000000000000000000000000000000000000000000000000000000831615613577575061345c614d41565b508816600052600080516020615e6e8339815191528452613482612cad84600020615071565b61348c8882615b00565b81808960081c169160081c16105b6134bf57505050506134af6134bd9484615836565b6134b883615716565b614adb565b565b7f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f316297509561355b83959694976001939451926134fa84612d4a565b6001600160481b038091168452898401908242168252888501978852896000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b88b52886000209451166001600160481b0319855416178455511682615a25565b019151166001600160601b0360a01b82541617905551908152a1565b905061349a565b50602491519063033b960d60e41b82526004820152fd5b6044925191631ee5902560e11b835260048301526024820152fd5b6080949194813d821161361d575b816135cb60809383612db6565b810103126106e2578351916135df83612d80565b8151906001600160481b038216820361027757508252848101518583015283810151848301526136119060600161332f565b606082015292386133a8565b3d91506135be565b83513d6000823e3d90fd5b505050565b60405163b3f07bbd60e01b81529193926020918391829161365a919060048401613314565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d9576000916136eb575b5061368c816131a1565b156136d35761369a8161371c565b92836136a857509150600090565b7f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef2600080a360009190565b60249060405190630451c4fb60e41b82526004820152fd5b906020823d8211613714575b8161370460209383612db6565b8101031261027757505138613682565b3d91506136f7565b600052600080516020615d8e8339815191526020526040600020805460ff811661374e5760ff19166001179055600090565b5050600190565b90600182811c92168015613785575b602083101461376f57565b634e487b7160e01b600052602260045260246000fd5b91607f1691613764565b81811061379a575050565b6000815560010161378f565b6004600091828155826001820155826002820155826003820155016137cb8154613755565b806137d557505050565b82601f82116001146137e657505055565b9091808252613804601f60208420940160051c84016001850161378f565b5555565b9194939290946000958315613e81578115613e6f578215613e5d577f000000000000000000000000000000000000000000000000000000000000000061384e3082614cb6565b9061389160018060a01b03821696604051906323b872dd60e01b602083015233602483015230604483015260648201526064815261388b81612d9b565b87614438565b6138a48261389f3084614cb6565b613194565b957f00000000000000000000000000000000000000000000000000000000000000006002811015613e49579060018b9214613dc2575b5050505061ffff8116600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b5761391d613915614c36565b918287615bc7565b906001600160401b038260081c1661393a60ff8416928383615b6c565b808803613d9b575061395c61396191613954611d2b614c36565b938491615b6c565b6155ee565b98600080516020615e2e83398151915254966001600160401b0380891614613d875767ffffffffffffffff1988166001600160401b03898116600101811691909117600080516020615e2e833981519152557f00000000000000000000000000000000000000000000000000000000000000001615613d81576139e2614d41565b506139ee612cad615029565b613a0b8c610100600160481b0360ff87169160081b161782615b00565b6001600160401b03808d610100600160481b0360ff88169160081b161760081c169160081c16105b613d5b578180613d53575b613a8757505082612f219899610100600160481b0360ff84613a6b82613a779716848660081b1617615656565b169160081b16176158fe565b6001600160401b03339516614632565b61ffff95979896919a506001600160481b03939250613ac57f0000000000000000000000000000000000000000000000000000000000000000615a4d565b613acd615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a260405196613b1a88612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b0319825416178155613bb56001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f57613c168354613755565b601f8111613d04575b50602090601f8311600114613c9857906001600160401b03959683613c8d575b50508160011b916000199060031b1c19161790555b7f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b1690565b015190503880613c3f565b95601f19831684885260208820975b818110613cec5750916001600160401b03969791846001959410613cd3575b505050811b019055613c54565b015160001960f88460031b161c19169055388080613cc6565b83830151895560019098019760209384019301613ca7565b613d2f9084835260208320601f850160051c81019160208610613d35575b601f0160051c019061378f565b38613c1f565b9091508190613d22565b634e487b7160e01b81526041600452602490fd5b506000613a3e565b604490613d66615496565b90604051916326fb55dd60e01b835260048301526024820152fd5b81613a33565b634e487b7160e01b82526011600452602482fd5b87613da860449282613194565b604051916338f831a560e11b835260048301526024820152fd5b803b156106e2578190602460405180948193630852cd8d60e31b83528c60048401525af18015613e3e57613e29575b50613dfd903090614cb6565b808203613e0b5788816138da565b60449250604051916302156a8f60e01b835260048301526024820152fd5b98613e37613dfd929a612d1c565b9890613df1565b6040513d8c823e3d90fd5b634e487b7160e01b8b52602160045260248bfd5b60405163717f139360e11b8152600490fd5b604051634e46966960e11b8152600490fd5b604051631f2a200560e01b8152600490fd5b95949392919060008715613e81578215613e6f578315613e5d577f0000000000000000000000000000000000000000000000000000000000000000613ed83082614cb6565b90613f1b60018060a01b0382169a604051906323b872dd60e01b6020830152336024830152306044830152606482015260648152613f1581612d9b565b8b614438565b613f298261389f3084614cb6565b997f0000000000000000000000000000000000000000000000000000000000000000600281101561440c576001146143a2575b50505061ffff8216600052600080516020615d2e83398151915260205260ff600160406000200154168015611f5b57613f9e613f96614c36565b91828b615bc7565b916001600160401b038360081c16613fbb60ff8516938483615b6c565b808c03614395575061395c613fdd91613fd5611d2b614c36565b948591615b6c565b99600080516020615e2e83398151915254976001600160401b03808a16146143815767ffffffffffffffff1989166001600160401b038a8116600101811691909117600080516020615e2e833981519152557f0000000000000000000000000000000000000000000000000000000000000000161561437b5761405e614d41565b508b6001600160401b0380614074612cad615029565b9260081b610100600160481b031660ff8816176140918185615b00565b60081c169160081c16105b811580614374575b6143695781614361575b506140df57505082612f219899610100600160481b0360ff613a7794169160081b16176140da81615656565b6158fe565b61ffff95979896919a506001600160481b0393925061411d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b614125615496565b604051916001600160401b038b168352602083015260408201527ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a60603392a26040519661417288612d2f565b875260208701521660408501526001600160401b03421660608501521660808301523360a083015260c08201526001600160401b038216600052600080516020615eae83398151915260205260c0600460406000208351815560208401516001820155600281016001600160481b036040860151166001600160481b031982541617815561420d6001600160401b0360608701511682615a25565b608085015181549061ffff60881b9060881b169061ffff60881b19161790556003810160018060a01b0360a0860151166001600160601b0360a01b82541617905501910151938451906001600160401b038211613d3f5761426e8354613755565b601f8111614331575b50602090601f83116001146142df57906001600160401b03959683613c8d5750508160011b916000199060031b1c19161790557f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f60206040518484168152a1613c89346145db565b95601f19831684885260208820975b8181106143195750916001600160401b03969791846001959410613cd357505050811b019055613c54565b838301518955600190980197602093840193016142ee565b61435b9084835260208320601f850160051c81019160208610613d3557601f0160051c019061378f565b38614277565b9050386140ae565b604483613d66615496565b50806140a4565b8261409c565b634e487b7160e01b83526011600452602483fd5b8b613da860449282613194565b803b156108195783809160248d6040519485938492630852cd8d60e31b845260048401525af18015614401576143ec575b506143df903090614cb6565b808203613e0b5780613f5c565b926143fa6143df9294612d1c565b92906143d3565b6040513d86823e3d90fd5b634e487b7160e01b85526021600452602485fd5b908160209103126105e5575180151581036105e55790565b604051614496916001600160a01b031661445182612d65565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1614490614512565b91614542565b805190816144a357505050565b82806144b3938301019101614420565b156144bb5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b3d1561453d573d9061452382612dd7565b916145316040519384612db6565b82523d6000602084013e565b606090565b919290156145a45750815115614556575090565b3b1561455f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156145b75750805190602001fd5b60405162461bcd60e51b815260206004820152908190610645906024830190612cf7565b600080808084335af16145ec614512565b50156145f55750565b60249060405190630b288dc560e21b82526004820152fd5b906020828203126105e55781516001600160401b0381116105e557612f219201612edf565b959492949391936146627f0000000000000000000000000000000000000000000000000000000000000000615a4d565b6040518081600080516020615e0e83398151915260208154938481520190600052600080516020615d6e8339815191529260005b818110614ab95750506146ab92500382612db6565b7f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed9785491815115614aa7576146fe6000916040519485928392635b10743960e11b8452604060048501526044840190612cf7565b906024830152038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d957600092614a8a575b50614738818388613039565b95863410614a6b5761474a8734613194565b80614a5c575b506040519061475e82612d80565b6001600160481b0386811683527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840190815260408085018d815261ffff8d81166060880190815292516315cfa3cb60e11b81529651909416600487015291516024860152905160448501525116606483015260008260848173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49182156105d95761485d926000928d928492614a40575b506001600160401b036040519361482685612d4a565b16835260018060a01b031660208301526040820152604051809381926311692f3760e31b83526020600484015260248301906132ed565b038173__$93083e246e55d56d98f3df2872cd16bfd0$__5af49081156105d957600091614a1d575b5061ffff8816600052600080516020615d2e833981519152602052604060002054938351938515614a015760005b8581106149265750505050505050927fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982949261ffff926148f760c096610475614c36565b906040519586526020860152604085015260608401521660808201526001600160401b03841660a0820152a190565b6001600160a01b036149388284613005565b5116906149458187613005565b5182600052600080516020615e8e83398151915260205261497160ff60406000205460101c1686613005565b51833b156105e5576149b79361ffff8f936000948f8e906149c98d6040519b8c998a988997634b5b050560e01b895216600488015260a0602488015260a4870190613019565b85810360031901604487015290612cf7565b916064840152608483015203925af19182156105d9576149ed926149f25750612ff6565b6148b3565b6149fb90612d1c565b38610d93565b604051630ebc95af60e21b815261ffff8b166004820152602490fd5b614a3a91503d806000833e614a328183612db6565b81019061460d565b38614885565b614a559192503d8086833e614a328183612db6565b9038614810565b614a65906145db565b38614750565b6040516306a91e3760e51b815260048101889052346024820152604490fd5b614aa09192503d806000833e6117c68183612db6565b903861472c565b6040516334e7b19560e11b8152600490fd5b84546001600160a01b0316835260019485019486945060209093019201614696565b9291614b0a9061046d7f0000000000000000000000000000000000000000000000000000000000000000615a4d565b906000937f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a918580a27f00000000000000000000000000000000000000000000000000000000000000009360028510156120615784614b9f575060405163a9059cbb60e01b60208201526001600160a01b03909116602482015260448101919091529091506134bd906105128160648101610504565b9193600181036105ea57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690813b156117ff576040516340c10f1960e01b81526001600160a01b03919091166004820152602481019490945291929181908390604490829084905af1908115614c2a5750614c215750565b6134bd90612d1c565b604051903d90823e3d90fd5b600080604051602081019063313ce56760e01b825260048152614c5881612d65565b51907f00000000000000000000000000000000000000000000000000000000000000005afa614c85614512565b9015614ca4576020818051810103126105e5576020612f219101612ed1565b604051631222cd8360e01b8152600490fd5b6040516370a0823160e01b602082019081526001600160a01b039093166024808301919091528152600092839291614ced81612d4a565b51915afa614cf9614512565b9015614ca4576020818051810103126105e5576020015190565b60ff1660ff811461192c5760010190565b15614d2b57565b634e487b7160e01b600052600160045260246000fd5b60405190614d4e82612d4a565b60006040838281528260208201520152565b600080516020615e4e8339815191525460ff8160081c16614d91600080516020615e0e833981519152548214614d24565b60005b818110614e1f575060005b818110614db8575050604060ff6134bd92161115614d24565b6001810180821161192c575b828110614dda5750614dd590612ff6565b614d9f565b614e1a90614e15614dea84613244565b905490614df684613244565b92909160018060a01b03809354600395861b1c16931b1c161415614d24565b612ff6565b614dc4565b80614e15614e2f614e4693613244565b905460039190911b1c6001600160a01b0316614e4b565b614d94565b6001600160a01b039081166000818152600080516020615e8e8339815191526020526040908190209051929190614e8184612d4a565b5460ff91614ebd838316158015938488526020880197604087808460081c16159384158c5260101c1691019581875292614f78575b5050614d24565b600080516020615dee83398151915254946001600160401b0360019687868651161b1616151590511515916000968791600080516020615e4e8339815191525497878960081c16935b848110614f3a575b5050505050816134bd96614f28869594614f309414614d24565b151514614d24565b5116911611614d24565b8282614f4583613244565b90549060031b1c1614614f6057614f5b90612ff6565b614f06565b50919850849250839150614f289050826134bd614f0e565b90915081614f89575b503880614eb6565b90501538614f81565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614614fc457565b604051633c64f99360e21b8152600490fd5b600080516020615eee83398151915254336001600160a01b03918216141591908261501c575b505061500457565b60405163e2a08e5d60e01b8152336004820152602490fd5b1633141590503880614ffc565b6040519061503682612d4a565b8160406001600160401b03600080516020615f0e833981519152546001600160481b0380821685528160481c16602085015260901c16910152565b9060405161507e81612d4a565b60406001600160401b038294546001600160481b0380821685528160481c16602085015260901c16910152565b90600160481b600160901b0382549160481b1690600160481b600160901b031916179055565b600080516020615f0e8339815191529081546001600160481b03908181166001600160401b036008918184841c168015806152c4575b15615175575050855471ffffffffffffffffff0000000000000000001916604886901b600160481b600160901b03161786555050505b825479ffffffffffffffff000000000000000000ffffffffffffffffff19169116174260901b67ffffffffffffffff60901b16179055565b86615181612cad615029565b92600061518e8383615ade565b1561525a57506151ad92916151a291615b00565b8388861c1690615a75565b610100600160481b039290841b831660ff8616176151cb8184615ade565b1561524c578160ff92826151e26151ef9487615b00565b871c169084871c16615a75565b9116921b16175b6152008482615ade565b61522a57600160481b600160901b039060481b1690600160481b600160901b03191617835561513d565b604051631e74e8fb60e31b815290831660048201528383166024820152604490fd5b5050905060ff9150166151f6565b949395929061526c9061527693615b00565b8389841c16615a75565b9260ff881694838087610100600160481b038098871b16176152988185615b00565b851c1691841c16019283116152b057501b16176151f6565b634e487b7160e01b81526011600452602490fd5b5060ff851615615107565b919080546001600160481b03808216916001600160401b03926008908483831c1680158061548b575b1561535e5750505050846153106134bd9596856150ab565b835467ffffffffffffffff60901b19919092161679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617429190911660901b67ffffffffffffffff60901b16179055565b85908961536d612cad8a615071565b93600061537a8383615ade565b1561543557509161539261539d9260ff979894615b00565b838c881c1690615a75565b610100600160481b039490861b85169116176153b98184615ade565b156154275760ff91816153cf6153dc9386615b00565b861c168784871c16615a75565b9116921b16175b6153ed8682615ade565b61540557946154006134bd9596856150ab565b615310565b604051631e74e8fb60e31b815290821660048201529085166024820152604490fd5b5050905060ff9150166153e3565b949650615450935061544691615b00565b868a851c16615a75565b9160ff891693868086610100600160481b038097861b16176154728185615b00565b841c1691831c1601918683116152b057501b16176153e3565b5060ff8416156152f8565b61549e614d41565b50612f2161046d612cad615029565b6154b5614d41565b506000527f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b86020526040600020604051906154ef82612d4a565b80546001600160481b038116835260481c6001600160401b03166020830152600101546001600160a01b0316604082015290565b811561552d570490565b634e487b7160e01b600052601260045260246000fd5b6001600160401b0390817f0000000000000000000000000000000000000000000000000000000000000000169182156155d7576155c4828260ff936040610100600160481b03960151164203816155a8602085019889519383875160081c1602615523565b9160081c1601915160081c168082106000146155d057506155ee565b9251169160081b161790565b90506155ee565b506020015160ff16610100600160481b0317919050565b6001600160401b0390818111615602571690565b60405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608490fd5b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761568f614d41565b50600160481b600160901b036156a6612cad615029565b610100600160481b0360ff6156e1600080516020615f0e83398151915296808854976156d28188615b00565b60081c16908560081c16615a75565b92169160081b161760481b16906001600160401b0360901b4260901b1690600160481b600160d01b03191617179055565b5050565b6001600160401b0390817f000000000000000000000000000000000000000000000000000000000000000016156157125761574f614d41565b5061575b612cad615029565b90600160481b600160901b03600080516020615f0e83398151915293845493816001600160401b0360901b4260901b16946157968184615b00565b60081c16828260081c16018281116000146158225750610100600160481b0360ff6157c0846155ee565b92169160081b1617906001600160481b038516906157de8284615b00565b80856001600160401b0360901b1988161760081c16908360081c161060001461581b57505b60481b1691600160481b600160d01b03191617179055565b9050615803565b60ff6157c0610100600160481b03926155ee565b6001600160401b03807f0000000000000000000000000000000000000000000000000000000000000000161561363057610100600160481b0360ff6158f061ffff6134bd96615883614d41565b50169384600052600080516020615e6e833981519152806020526158ad612cad6040600020615071565b60009687526020919091526040909520805467ffffffffffffffff60901b191642831660901b67ffffffffffffffff60901b161781559581906156d28188615b00565b92169160081b1617906150ab565b6001600160401b03807f000000000000000000000000000000000000000000000000000000000000000016156136305761ffff6134bd9361593d614d41565b5016600090808252600080516020615e6e83398151915280602052615967612cad60408520615071565b91835260205260408220805467ffffffffffffffff60901b191642851660901b67ffffffffffffffff60901b161781559383906159a48184615b00565b60081c16838260081c1601838111600014615a115750610100600160481b0360ff6159ce856155ee565b92169160081b1617918084546001600160481b038116936159ef8587615b00565b5060081c16908360081c1610600014615a095750906150ab565b9050906150ab565b60ff6159ce610100600160481b03926155ee565b9067ffffffffffffffff60481b82549160481b169067ffffffffffffffff60481b1916179055565b468103615a575750565b604490604051906377d879fb60e01b82526004820152466024820152fd5b6001600160401b03918216908216039190821161192c57565b60009182915b6001600160401b03908181168015615ad65760001901918211615ac2571691615abc90614d13565b91615a94565b634e487b7160e01b85526011600452602485fd5b505050915090565b90615ae98183615b00565b6001600160401b03809160081c169160081c161190565b60ff9182169116818103615b12575050565b604051635ce6db6160e11b815260ff918216600482015291166024820152604490fd5b60ff811660081015612f215750600890565b9060ff8091169116039060ff821161192c57565b60ff16604d811161192c57600a0a90565b919060ff821660ff8216818114615bc0571115615b9f57615b94612f219392615b9992615b47565b615b5b565b90615523565b615b9490615bac92615b47565b9081810291818304149015171561192c5790565b5050505090565b615bfa61395c60ff92610100600160481b039495615be487615b35565b908581168683161015615c055750958691615b6c565b92169160081b161790565b9050958691615b6c565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615615c3e57565b604051631afcd79f60e31b8152600490fd5b6001600160a01b03908116908115615cab57600080516020615dae83398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020615dae833981519152546001600160a01b03163303615ce557565b60405163118cdaa760e01b8152336004820152602490fd5b600080516020615ece8339815191526002815414615d1b5760029055565b604051633ee5aeb560e01b8152600490fdfeebcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef047028352a8b3feae1a85fba43bc13f990568bb1637dce33d3dbfd791a0808b7f6c3cb3f3ae91330f31ba2bc0ff8855fc834fb66dc27e8e0b1a398617dabaa5a668dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abdda9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930064bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b8258022fd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb11f00758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e1ad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a768561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d89efb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1549bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a7f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ed9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00bfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad12497c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea9220420a2646970667358221220f05bfca11e4f4e6b5c38d73a662c13522a3f5f5988d02259aab20e583604ccb064736f6c63430008130033";
1859
- const isSuperArgs = (xs) => {
1860
- return (typeof xs[0] === "string" ||
1861
- Array.isArray(xs[0]) ||
1862
- "_isInterface" in xs[0]);
1863
- };
2334
+ const _bytecode = "0x6101606040523480156200001257600080fd5b50604051620080d1380380620080d18339810160408190526200003591620001c9565b8282826001600160401b0382161580156200004e575080155b806200006b57506001600160401b038216158015906200006b5750805b156200008a5760405163e543ef0560e01b815260040160405180910390fd5b506001600160401b0316608052620000a1620000ff565b3060a05261ffff1660e05246610100523360c0526001600160a01b03851661012052836001811115620000d857620000d862000263565b610140816001811115620000f057620000f062000263565b81525050505050505062000279565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620001505760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001b05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80518015158114620001c457600080fd5b919050565b600080600080600060a08688031215620001e257600080fd5b85516001600160a01b0381168114620001fa57600080fd5b6020870151909550600281106200021057600080fd5b604087015190945061ffff811681146200022957600080fd5b60608701519093506001600160401b03811681146200024757600080fd5b91506200025760808701620001b3565b90509295509295909350565b634e487b7160e01b600052602160045260246000fd5b60805160a05160c05160e051610100516101205161014051617cd06200040160003960008181610529015281816111f9015281816134af01528181613521015281816135df01528181613b5e015261486e015260008181610b4901528181611086015281816134f10152818161357c01528181613ac401528181613af801528181613b2701528181613ba901528181613c14015281816147cc01526154430152600081816133e801528181613ccb01526152770152600081816108820152818161131b01528181613e0601528181615c6201528181615cb20152615e7c015260008181614e130152614e4f0152600061332e0152600081816106ad01528181610bd00152818161162d01528181611b3c015281816123ca01528181612a8801528181612b5f01528181614920015281816161ea015281816162260152818161641c0152818161645401528181616484015281816164bd015281816169580152818161699401528181616ab901528181616af201528181616b360152616b6e0152617cd06000f3fe6080604052600436106103815760003560e01c806389c619dd116101d1578063b150fc5511610102578063da4856a1116100a0578063f5cfec181161006f578063f5cfec1814610b02578063f7514fbc14610b17578063fc0c546a14610b37578063fd96063c14610b6b57600080fd5b8063da4856a114610a75578063db5fdb9114610a95578063e54ff04014610ac2578063f2fde38b14610ae257600080fd5b8063b4d591bb116100dc578063b4d591bb146109c4578063c0b07bde146109d9578063c128d17014610a17578063d788c14714610a5557600080fd5b8063b150fc551461097a578063b187bd261461099c578063b293f97f146109b157600080fd5b80639a8a05921161016f5780639f86029c116101495780639f86029c146108f75780639fd0506d14610917578063adaf575f1461092c578063b13c82ea1461095a57600080fd5b80639a8a0592146108705780639ab730d7146108b75780639d782454146108d757600080fd5b80638fd3ab80116101ab5780638fd3ab80146108075780639057412d1461081c578063961b94d01461084a57806397c351461461085d57600080fd5b806389c619dd1461079a5780638da5cb5b146107ba5780638e3ba8c9146107e757600080fd5b80633a495e0b116102b65780636a4db160116102545780638129fc1c116102235780638129fc1c1461070f5780638413bcba146107175780638456cb591461073757806386e11ffa1461074c57600080fd5b80636a4db1601461067b57806374aa7bfc1461069b5780637c918634146106cf5780637c9d2708146106ef57600080fd5b8063451d533211610290578063451d5332146106045780634b4fd03b146106315780634f4bb3e514610646578063689f90c31461066657600080fd5b80633a495e0b146105ba5780633b97e856146105da5780633f4ba83a146105ef57600080fd5b8063203e4a9b11610323578063295a5212116102fd578063295a521214610517578063295d819e146105585780633951cbe614610578578063396c16b71461059a57600080fd5b8063203e4a9b146104985780632310dd3c146104b857806323d75e31146104ea57600080fd5b80630900f0101161035f5780630900f0101461040b578063186ce6121461042b578063190171751461044b5780631f97c9a81461046b57600080fd5b80630271725014610386578063036de8af146103b957806307299652146103db575b600080fd5b34801561039257600080fd5b506103a66103a1366004616ea5565b610bc8565b6040519081526020015b60405180910390f35b3480156103c557600080fd5b506103d96103d4366004616ed7565b610c3a565b005b3480156103e757600080fd5b506103fb6103f6366004616ef4565b610ca6565b60405190151581526020016103b0565b34801561041757600080fd5b506103d9610426366004616ed7565b610ce6565b34801561043757600080fd5b506103d9610446366004616f20565b610cfa565b34801561045757600080fd5b506103d9610466366004616f50565b610d27565b34801561047757600080fd5b5061048b610486366004616f7e565b610d52565b6040516103b09190616feb565b3480156104a457600080fd5b506103d96104b3366004616ed7565b610eae565b3480156104c457600080fd5b506104d86104d3366004616ea5565b610f1e565b60405160ff90911681526020016103b0565b3480156104f657600080fd5b506104ff610f29565b6040516001600160401b0390911681526020016103b0565b34801561052357600080fd5b5061054b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516103b09190617077565b34801561056457600080fd5b506103d9610573366004616ef4565b610f42565b34801561058457600080fd5b5061058d610f55565b6040516103b0919061709f565b3480156105a657600080fd5b506103fb6105b5366004616f50565b610fdb565b3480156105c657600080fd5b506103d96105d53660046170e7565b610ff9565b3480156105e657600080fd5b506104d861104b565b3480156105fb57600080fd5b506103d961112f565b34801561061057600080fd5b5061062461061f366004616ea5565b611141565b6040516103b09190617159565b34801561063d57600080fd5b506104d86111f5565b34801561065257600080fd5b506104d8610661366004616ef4565b61122e565b34801561067257600080fd5b506103fb611249565b34801561068757600080fd5b506103d961069636600461717b565b61125c565b3480156106a757600080fd5b506104ff7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106db57600080fd5b506103d96106ea3660046171a9565b6112aa565b3480156106fb57600080fd5b506103d961070a3660046170e7565b611477565b6103d96114bd565b34801561072357600080fd5b506103d9610732366004616f50565b6115bf565b34801561074357600080fd5b506103d9611706565b34801561075857600080fd5b50610761611719565b6040805182516001600160481b03908116825260208085015190911690820152918101516001600160401b0316908201526060016103b0565b3480156107a657600080fd5b506104d86107b5366004616f50565b61177d565b3480156107c657600080fd5b506107cf61178b565b6040516001600160a01b0390911681526020016103b0565b3480156107f357600080fd5b506103fb6108023660046171f1565b6117b9565b34801561081357600080fd5b506103d96117f3565b34801561082857600080fd5b5061083c6108373660046172b8565b6118f5565b6040516103b0929190617307565b6104ff61085836600461734f565b611939565b6104ff61086b366004616f7e565b6119b3565b34801561087c57600080fd5b506108a47f000000000000000000000000000000000000000000000000000000000000000081565b60405161ffff90911681526020016103b0565b3480156108c357600080fd5b506103d96108d23660046170e7565b611c5a565b3480156108e357600080fd5b506103d96108f2366004617387565b611ca0565b34801561090357600080fd5b506103d9610912366004616ed7565b611d8d565b34801561092357600080fd5b506107cf611e1c565b34801561093857600080fd5b5061094c610947366004616ea5565b611e35565b6040516103b092919061743d565b34801561096657600080fd5b506103d96109753660046170e7565b611f04565b34801561098657600080fd5b5061098f611f4a565b6040516103b09190617462565b3480156109a857600080fd5b506103fb6120d4565b6104ff6109bf3660046174d0565b6120e9565b3480156109d057600080fd5b5061062461214a565b3480156109e557600080fd5b50610a0a604051806040016040528060058152602001640312e312e360dc1b81525081565b6040516103b0919061754d565b348015610a2357600080fd5b50610a37610a32366004616ea5565b6121b1565b604080518251815260209283015160ff1692810192909252016103b0565b348015610a6157600080fd5b50610761610a70366004616ea5565b612201565b348015610a8157600080fd5b506103d9610a90366004617387565b61227c565b348015610aa157600080fd5b50610ab5610ab0366004616ea5565b6122cd565b6040516103b09190617560565b348015610ace57600080fd5b50610ab5610add366004616ea5565b6122f8565b348015610aee57600080fd5b506103d9610afd366004616ed7565b612304565b348015610b0e57600080fd5b506103a66123c2565b348015610b2357600080fd5b506103d9610b32366004616f7e565b612418565b348015610b4357600080fd5b506107cf7f000000000000000000000000000000000000000000000000000000000000000081565b348015610b7757600080fd5b50610b8b610b86366004616f50565b61265d565b6040805182516001600160481b031681526020808401516001600160401b031690820152918101516001600160a01b0316908201526060016103b0565b600080610c117f0000000000000000000000000000000000000000000000000000000000000000610bf76126d7565b61ffff861660009081526020919091526040902090612705565b90506000610c1d61104b565b9050610c326001600160481b038316826127cb565b949350505050565b610c4a610c4561178b565b6127eb565b6000610c54612834565b80546001600160a01b038481166001600160a01b031983168117845560405193945091169182907f51c4874e0f23f262e04a38c51751336dde72126d67f53eb672aaff02996b3ef690600090a3505050565b600080610cb284612862565b90506000610cc0858561122e565b90508160ff168160ff1610158015610cdb575060008260ff16115b925050505b92915050565b610cee6128be565b610cf7816128f0565b50565b610d026128be565b6000610d0c61104b565b9050610d22610d1c8483806129fe565b83612a4b565b505050565b610d2f6128be565b6000610d3961104b565b9050610d4e610d498383806129fe565b612b35565b5050565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810191909152610d95612bf2565b6001600160401b0383811660009081526020928352604090819020815160e0810183528154815260018201549481019490945260028101546001600160481b03811692850192909252600160481b82049092166060840152600160881b900461ffff16608083015260038101546001600160a01b031660a083015260048101805460c084019190610e25906175ae565b80601f0160208091040260200160405190810160405280929190818152602001828054610e51906175ae565b8015610e9e5780601f10610e7357610100808354040283529160200191610e9e565b820191906000526020600020905b815481529060010190602001808311610e8157829003601f168201915b5050505050815250509050919050565b610eb66128be565b610ebf81612c20565b507ff05962b5774c658e85ed80c91a75af9d66d2af2253dda480f90bce78aff5eda581610eea612ed2565b54604080516001600160a01b03909316835261010090910460ff16602083015260009082015260600160405180910390a150565b6000610ce082612862565b6000610f33612f00565b546001600160401b0316919050565b610f4c8282612f2e565b610d4e82612f77565b6060610f5f613024565b805480602002602001604051908101604052809291908181526020018280548015610fd157602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610f985790505b5050505050905090565b6000610fe5613052565b600092835260205250604090205460ff1690565b6110016128be565b61100b8282613080565b7f6b9b1f20ce684fc1c23217395b766f44fb36a93fb907e41e4243fe2f9c101c2d8282600160405161103f939291906175e8565b60405180910390a15050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051600091829182916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916110b1919061760f565b600060405180830381855afa9150503d80600081146110ec576040519150601f19603f3d011682016040523d82523d6000602084013e6110f1565b606091505b50915091508161111457604051631222cd8360e01b815260040160405180910390fd5b80806020019051810190611128919061762b565b9250505090565b6111376128be565b61113f6130b4565b565b6060600061114d61311a565b61ffff8416600090815260209190915260408120600181015490925090036111935760405163186b202960e11b815261ffff841660048201526024015b60405180910390fd5b600181018054604080516020808402820181019092528281529291908301828280156111e857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111ca575b5050505050915050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000600181111561122957611229617061565b905090565b600061124261123d8484613148565b613187565b9392505050565b60006112536131ba565b5460ff16919050565b6112646128be565b61126e82826131e8565b6040805161ffff8416815260ff831660208201527f463734bd482c3b124a4f4ee8cbda3b9beb1aa70b7346ca456fec770efc446c7b910161103f565b6112b26128be565b8361ffff166000036112d75760405163100b0f2760e11b815260040160405180910390fd5b826112f55760405163f839a0cb60e01b815260040160405180910390fd5b8160ff166000036113195760405163ade64f0b60e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061ffff168461ffff16036113615760405163101b8f9560e11b815260040160405180910390fd5b600061136b6132a4565b61ffff8616600090815260209182526040908190208151808301909252805482526001015460ff16918101919091529050836113a56132a4565b61ffff871660009081526020919091526040902055826113c36132a4565b61ffff8716600090815260209190915260408120600101805460ff191660ff93909316929092179091556113f561104b565b905061140b6114058483806129fe565b87612a4b565b61141486612f77565b81516020808401516040805193845260ff918216928401929092529082018790528516606082015261ffff8716907f1456404e7f41f35c3daac941bb50bad417a66275c3040061b4287d787719599d9060800160405180910390a2505050505050565b61147f6128be565b61148982826132d2565b7f9a8d72d56c46cf95458ced32b1aa082ed04dd70c7119b6779521bb1893ee0b738282600160405161103f939291906175e8565b6114c5613324565b600080516020617c7b8339815191528054600160401b810460ff1615906001600160401b03166000811580156114f85750825b90506000826001600160401b031660011480156115145750303b155b905081158015611522575080155b156115405760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561156a57845460ff60401b1916600160401b1785555b61157261336d565b83156115b857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6115c761337d565b6115cf6120d4565b156115ed576040516309e3d0f360e11b815260040160405180910390fd5b60006115f88261265d565b905080602001516001600160401b031660000361162b57604051630301bcaf60e61b81526004810183905260240161118a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b031681602001516001600160401b03164261166e919061765e565b10156116a55760208101516040516301cb739d60e71b8152600481018490526001600160401b03909116602482015260440161118a565b6116ad6133b5565b6000838152602091909152604080822080546001600160881b031916815560010180546001600160a01b031916905582015182516116ee92859291906133e3565b50610cf76001600080516020617c5b83398151915255565b611711610c4561178b565b61113f613642565b604080516060810182526000808252602082018190529181019190915261173e6136a3565b6040805160608101825291546001600160481b038082168452600160481b8204166020840152600160901b90046001600160401b031690820152919050565b6000610ce061123d836136d1565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b600080600160ff84161b6117cb613052565b600086815260209190915260409020546101009004166001600160401b031611905092915050565b6117fb613324565b61180361370d565b61180e906001617671565b600080516020617c7b8339815191528054600160401b900460ff1680611841575080546001600160401b03808416911610155b1561185f5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611888613723565b5460ff166118a957604051632866815360e11b815260040160405180910390fd5b6118b1613375565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200161103f565b6060600080611902613751565b549050600061191086611141565b9050600061191e868461377f565b905061192b8782846138de565b945094505050509250929050565b600061194361337d565b61194b6120d4565b15611969576040516309e3d0f360e11b815260040160405180910390fd5b60408051600180825281830190925261199a9186918691869182916000919060208201818036833701905050613a5e565b90506112426001600080516020617c5b83398151915255565b60006119bd61337d565b6119c56120d4565b156119e3576040516309e3d0f360e11b815260040160405180910390fd5b60006119ed612bf2565b6001600160401b0384811660009081526020928352604090819020815160e0810183528154815260018201549481019490945260028101546001600160481b03811692850192909252600160481b82049092166060840152600160881b900461ffff16608083015260038101546001600160a01b031660a083015260048101805460c084019190611a7d906175ae565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa9906175ae565b8015611af65780601f10611acb57610100808354040283529160200191611af6565b820191906000526020600020905b815481529060010190602001808311611ad957829003601f168201915b505050505081525050905080606001516001600160401b0316600003611b3a57604051635feafa3160e11b81526001600160401b038416600482015260240161118a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b031681606001516001600160401b031642611b7d919061765e565b1015611bb557606081015160405163c06cf05f60e01b81526001600160401b038086166004830152909116602482015260440161118a565b611bbd612bf2565b6001600160401b038416600090815260209190915260408120818155600181018290556002810180546001600160981b03191690556003810180546001600160a01b031916905590611c126004830182616e4b565b5050611c3b8382604001518360800151846000015185602001518660a001518760c00151613cc4565b915050611c556001600080516020617c5b83398151915255565b919050565b611c626128be565b611c6c8282613e69565b7f9a8d72d56c46cf95458ced32b1aa082ed04dd70c7119b6779521bb1893ee0b738282600060405161103f939291906175e8565b611ca8613ec1565b3360009081526020919091526040902054610100900460ff16611ce05760405163a0ae911d60e01b815233600482015260240161118a565b611ce86120d4565b15611d06576040516309e3d0f360e11b815260040160405180910390fd5b611d108383612f2e565b6000611d1c8483613eef565b9050611d288482610ca6565b15611d875760405163da4856a160e01b8152309063da4856a190611d5490879087908790600401617698565b600060405180830381600087803b158015611d6e57600080fd5b505af1158015611d82573d6000803e3d6000fd5b505050505b50505050565b611d956128be565b6000611d9f612ed2565b54610100900460ff16905060018111611dcb5760405163831761d760e01b815260040160405180910390fd5b611dd482613f54565b611ddd82614063565b604080516001600160a01b0384168152600060208201527f697a3853515b88013ad432f29f53d406debc9509ed6d9313dcfe115250fcd18f910161103f565b6000611e26612834565b546001600160a01b0316919050565b6060600080611e4261432b565b61ffff851660009081526020919091526040902060018101549091501580611e6f5750600281015460ff16155b15611e935760405163186b202960e11b815261ffff8516600482015260240161118a565b600281015460018201805460408051602080840282018101909252828152929360ff1692918491830182828015611ef357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611ed5575b505050505091509250925050915091565b611f0c6128be565b611f168282614359565b7f6b9b1f20ce684fc1c23217395b766f44fb36a93fb907e41e4243fe2f9c101c2d8282600060405161103f939291906175e8565b60606000611f56614383565b805480602002602001604051908101604052809291908181526020018280548015611faa57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611f8c575b505050505090506000815190506000816001600160401b03811115611fd157611fd1617216565b60405190808252806020026020018201604052801561201c57816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181611fef5790505b50905060005b828110156120cc57612032613ec1565b6000858381518110612046576120466176d8565b6020908102919091018101516001600160a01b031682528181019290925260409081016000208151606081018352905460ff80821615158352610100820481161515948301949094526201000090049092169082015282518390839081106120b0576120b06176d8565b6020026020010181905250806120c5906176ee565b9050612022565b509392505050565b6000806120df6143b0565b5460021492915050565b60006120f361337d565b6120fb6120d4565b15612119576040516309e3d0f360e11b815260040160405180910390fd5b612127878787878787613a5e565b90506121406001600080516020617c5b83398151915255565b9695505050505050565b6060612154614383565b805480602002602001604051908101604052809291908181526020018280548015610fd157602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161218a575050505050905090565b60408051808201909152600080825260208201526121cd6132a4565b61ffff909216600090815260209283526040908190208151808301909252805482526001015460ff16928101929092525090565b60408051606081018252600080825260208201819052918101919091526122266126d7565b61ffff9290921660009081526020928352604090819020815160608101835290546001600160481b038082168352600160481b82041694820194909452600160901b9093046001600160401b0316908301525090565b6122846120d4565b156122a2576040516309e3d0f360e11b815260040160405180910390fd5b6000806122b08585856143de565b9150915080156122c1575050505050565b6115b885858585614472565b606060006122d961432b565b61ffff841660009081526020919091526040902090506112428161447e565b606060006122d961311a565b61230c6128be565b6123158161460b565b600061231f613751565b9050612329614646565b60005b8154811015610d2257818181548110612347576123476176d8565b600091825260209091200154604051632c7b84dd60e11b81526001600160a01b038581166004830152909116906358f709ba90602401600060405180830381600087803b15801561239757600080fd5b505af11580156123ab573d6000803e3d6000fd5b5050505080806123ba906176ee565b91505061232c565b6000806123f77f00000000000000000000000000000000000000000000000000000000000000006123f16136a3565b90612705565b9050600061240361104b565b90506111286001600160481b038316826127cb565b61242061337d565b6124286120d4565b15612446576040516309e3d0f360e11b815260040160405180910390fd5b6000612450612bf2565b6001600160401b0383811660009081526020928352604090819020815160e0810183528154815260018201549481019490945260028101546001600160481b03811692850192909252600160481b82049092166060840152600160881b900461ffff16608083015260038101546001600160a01b031660a083015260048101805460c0840191906124e0906175ae565b80601f016020809104026020016040519081016040528092919081815260200182805461250c906175ae565b80156125595780601f1061252e57610100808354040283529160200191612559565b820191906000526020600020905b81548152906001019060200180831161253c57829003601f168201915b505050505081525050905080606001516001600160401b031660000361259d57604051635feafa3160e11b81526001600160401b038316600482015260240161118a565b60a08101516001600160a01b031633146125e15760a081015160405163ceb40a8560e01b81523360048201526001600160a01b03909116602482015260440161118a565b6125e9612bf2565b6001600160401b038316600090815260209190915260408120818155600181018290556002810180546001600160981b03191690556003810180546001600160a01b03191690559061263e6004830182616e4b565b50506116ee826001600160401b031660001b33836040015160016133e3565b60408051606081018252600080825260208201819052918101919091526126826133b5565b60009283526020908152604092839020835160608101855281546001600160481b0381168252600160481b90046001600160401b031692810192909252600101546001600160a01b0316928101929092525090565b600080610ce060017fefb21dcaedea63b55c44882f329622e13a8d0f5b947b3a372826208a9003da1661765e565b6000816001600160401b0316600003612736578254600160481b900460ff1668ffffffffffffffff00179050610ce0565b82546001600160401b03600160901b820481164203916000918581169160081c1683028161276657612766617707565b86546001600160401b03600160481b8204600890811c821694909304939093019350600092612799928592901c16614697565b90506121406127a7826146ad565b8754600160481b900460ff1660ff1660089190911b68ffffffffffffffff00161790565b60006001600160401b03600884901c1660ff841682612140838387614719565b336127f4611e1c565b6001600160a01b03161415801561281457506001600160a01b0381163314155b15610cf75760405163e2a08e5d60e01b815233600482015260240161118a565b600080610ce060017fbfa91572ce1e5fe8776a160d3b1f862e83f5ee2c080a7423b4761602a3ad124a61765e565b60008061286d61432b565b61ffff8416600090815260209190915260408120600281015490925060ff1690036128b157604051631fc0a48b60e01b815261ffff8416600482015260240161118a565b6002015460ff1692915050565b336128c761178b565b6001600160a01b03161461113f5760405163118cdaa760e01b815233600482015260240161118a565b6128f8613324565b61290181614782565b600061290b613723565b805490915060ff16156129205761292061771d565b805460ff191660011781556040805163011fa75760e71b815290513091638fd3ab8091600480830192600092919082900301818387803b15801561296357600080fd5b505af1158015612977573d6000803e3d6000fd5b50505050306001600160a01b031663689f90c36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129dd9190617733565b6129e9576129e96147c2565b6129f360006149c0565b805460ff1916905550565b600080612a15612a0f6008866149db565b846149db565b90506000612a24868684614719565b9050612140612a32826146ad565b8360ff1660089190911b68ffffffffffffffff00161790565b6000612a556126d7565b61ffff831660009081526020919091526040812080549092506001600160481b031690612a8061104b565b9050612aca857f0000000000000000000000000000000000000000000000000000000000000000612aaf6126d7565b61ffff881660009081526020919091526040902091906149f0565b61ffff84167f739ed886fd81a3ddc9f4b327ab69152e513cd45b26fda0c73660eaca8e119301612b036001600160481b038516846127cb565b612b166001600160481b038916856127cb565b6040805192835260208301919091520160405180910390a25050505050565b6000612b3f6136a3565b80549091506001600160481b03166000612b5761104b565b9050612b8d847f0000000000000000000000000000000000000000000000000000000000000000612b866136a3565b91906149f0565b7f7e3b0fc388be9d36273f66210aed83be975df3a9adfffa4c734033f498f362cd612bc16001600160481b038416836127cb565b612bd46001600160481b038716846127cb565b6040805192835260208301919091520160405180910390a150505050565b600080610ce060017f852fa0677fef8612c6c15b518c9fa56761e9ed15cfd5c6e5399e5467985ac7ee61765e565b600080612c2b613ec1565b90506000612c37614aba565b90506000612c43614383565b90506000612c4f612ed2565b90506001600160a01b038616612c7857604051632f44bd7760e01b815260040160405180910390fd5b6001600160a01b03861660009081526020859052604090205460ff1615612cc3576001600160a01b0386166000908152602085905260409020805461ff001916610100179055612dc0565b8054604060ff90911610612cea5760405163891684c360e01b815260040160405180910390fd5b6040805160608101825260018082526020808301918252845460ff9081168486019081526001600160a01b038c166000908152928a905294822093518454935195518216620100000262ff0000199615156101000261ff00199215159290921661ffff19909516949094171794909416919091179091558254909116908290612d7283617750565b91906101000a81548160ff021916908360ff16021790555050612d93613751565b8054600181018255600091825260209091200180546001600160a01b0319166001600160a01b0388161790555b81546001808201845560008481526020902090910180546001600160a01b0319166001600160a01b0389161790558154610100900460ff16908290612e0483617750565b82546101009290920a60ff8181021990931691831602179091556001600160a01b03881660009081526020879052604090205485546001620100009092049092161b6001600160401b0391821681811793509116811703612e8357604051638d68f84d60e01b81526001600160a01b038816600482015260240161118a565b835467ffffffffffffffff19166001600160401b038216178455612ea5614ae8565b505050506001600160a01b0392909216600090815260209290925250604090205462010000900460ff1690565b600080610ce060017f8561949d1c6242cee5c5a5aeb6b9c190ee611d7742fcec65d9e5b1341ea04d8a61765e565b600080610ce060017fad78307a8b51804c575f26039dcb87c58925afb3b7c08732f3b21b942aed7a7761765e565b80612f376132a4565b61ffff84166000908152602091909152604090205414610d4e57604051635788c0fd60e11b815261ffff831660048201526024810182905260440161118a565b6000612f81613024565b905060005b8154811015612fe4578261ffff16828281548110612fa657612fa66176d8565b60009182526020909120601082040154600f9091166002026101000a900461ffff1603612fd257505050565b80612fdc816176ee565b915050612f86565b5080546001810182556000918252602090912060108204018054600f9092166002026101000a61ffff818102199093169390921691909102919091179055565b600080610ce060017f8571232e6643c3c4913142bb252555aaa29e5ecb8975f1d3b7aa29ede8f2ed1e61765e565b600080610ce060017f68dfeeddfa5e4e9adceec01a3aba274bdcbab3f6ac9956417a4332f2b08abddb61765e565b600061308a61311a565b61ffff841660009081526020919091526040902090506130ab838383614c29565b610d2283612f77565b6130bc6120d4565b6130d957604051637e38d1d360e11b815260040160405180910390fd5b6130e36001614d87565b604051600081527fe11c2112add17fb763d3bd59f63b10429c3e11373da4fb8ef6725107a2fdc4b0906020015b60405180910390a1565b600080610ce060017faf3e857a2ae24065b1bd005f8a72dea35481e3cf2e40353c4c7dac4b0051e8fc61765e565b60008061315484614d94565b90508061315f613052565b600085815260209190915260409020546101009004166001600160401b031691505092915050565b60005b6001600160401b03821615611c55576131a460018361776f565b90911690806131b281617750565b91505061318a565b600080610ce060017f5443fea4dc453d96b81ce55b62e11a4094cc4cbb8a360956a7253cfdb42506cc61765e565b8161ffff1660000361320d57604051633d23e4d160e11b815260040160405180910390fd5b8060ff166000036132315760405163831761d760e01b815260040160405180910390fd5b600061323b61432b565b61ffff8416600090815260209190915260409020600181015490915060ff808216908416111561328b576040516313c3d1b160e01b815260ff80851660048301528216602482015260440161118a565b50600201805460ff191660ff9290921691909117905550565b600080610ce060017febcc9f646b0f459ff8f387587d536b0af3484cf442e1577400f322334e7d1ef161765e565b60006132dc61432b565b61ffff841660009081526020919091526040902090506132fd838383614c29565b600281015460ff166000036130ab5760028101805460ff19166001179055610d2283612f77565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361113f57604051633c64f99360e21b815260040160405180910390fd5b613375614e00565b61113f614ae8565b600080516020617c5b8339815191528054600119016133af57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600080610ce060017f4e8909a01183a67951f5a6147d6e76ed02ea890c72afea01a9edee91edc609b961765e565b61340c7f0000000000000000000000000000000000000000000000000000000000000000614ec6565b600061342961341961104b565b6001600160481b038516906127cb565b9050811561347f57604080518681526001600160a01b03861660208201529081018290527ff80e572ae1b63e2449629b6c7d783add85c36473926f216077f17ee002bcfd079060600160405180910390a16134ab565b60405185907f504e6efe18ab9eed10dc6501a417f5b12a2f7f2b1593aed9b89f9bce3cf29a9190600090a25b60007f000000000000000000000000000000000000000000000000000000000000000060018111156134df576134df617061565b0361351d576135186001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583614eef565b6115b8565b60017f0000000000000000000000000000000000000000000000000000000000000000600181111561355157613551617061565b036135dd576040516340c10f1960e01b81526001600160a01b038581166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401600060405180830381600087803b1580156135c057600080fd5b505af11580156135d4573d6000803e3d6000fd5b505050506115b8565b7f0000000000000000000000000000000000000000000000000000000000000000600181111561360f5761360f617061565b6040516366001a8960e01b815260ff909116600482015260240161118a565b6001600080516020617c5b83398151915255565b61364a6120d4565b15613668576040516309e3d0f360e11b815260040160405180910390fd5b6136726002614d87565b604051600181527f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd290602001613110565b600080610ce060017f7c25289a27ec8c9be54d4a154cf80490d69bda989cdb8328232e08fea922042161765e565b6000806136dc614f52565b9050806136e7613052565b60009485526020526040909320546101009004929092166001600160401b031692915050565b6000600080516020617c7b833981519152610f33565b600080610ce060017f7487ca88d037ca20519908b1ee7556206bef53bce0226a348750cb9d4f688e4f61765e565b600080610ce060017f3031d39df71efbb605646fc51d7571499445af538fa6dd17ce8c07e8118ed97961765e565b6001828101516060919060ff166000846001600160401b038111156137a6576137a6617216565b6040519080825280602002602001820160405280156137ec57816020015b6040805180820190915260008152606060208201528152602001906001900390816137c45790505b5090506000805b838110156138c95760408051808201909152600081526060602082015261381a8987614f5c565b815190975090915082158015906138345750838160ff1611155b1561385e57604051630555a4b960e01b81526004810185905260ff8216602482015260440161118a565b888160ff161061388d5760405163344fa80b60e11b815260ff82166004820152602481018a905260440161118a565b8060ff16935081858260ff16815181106138a9576138a96176d8565b6020026020010181905250505080806138c1906176ee565b9150506137f3565b506138d48785614fae565b5095945050505050565b8051606090600090816138ef613ec1565b90506000826001600160401b0381111561390b5761390b617216565b604051908082528060200260200182016040528015613934578160200160208202803683370190505b5090506000805b84811015613a4d576000888281518110613957576139576176d8565b6020908102919091018101516001600160a01b03811660008181529288905260408320548d5192945062010000900460ff16929163b5634c73908f908f90869081106139a5576139a56176d8565b60200260200101516040518363ffffffff1660e01b81526004016139ca9291906177b1565b602060405180830381865afa1580156139e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a0b91906177ce565b905080868581518110613a2057613a206176d8565b6020908102919091010152613a3581866177e7565b94505050508080613a45906176ee565b91505061393b565b50909450925050505b935093915050565b600086600003613a8157604051631f2a200560e01b815260040160405180910390fd5b84613a9f57604051634e46966960e11b815260040160405180910390fd5b83613abd5760405163717f139360e11b815260040160405180910390fd5b6000613ae97f000000000000000000000000000000000000000000000000000000000000000030614fdc565b9050613b206001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308b6150ad565b6000613b4c7f000000000000000000000000000000000000000000000000000000000000000030614fdc565b9050613b58828261765e565b985060017f00000000000000000000000000000000000000000000000000000000000000006001811115613b8e57613b8e617061565b03613c6757604051630852cd8d60e31b8152600481018a90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b158015613bf557600080fd5b505af1158015613c09573d6000803e3d6000fd5b505050506000613c397f000000000000000000000000000000000000000000000000000000000000000030614fdc565b9050808314613c65576040516302156a8f60e01b8152600481018490526024810182905260440161118a565b505b50506000613c7588886150e5565b90506000613c8161519d565b90506000613c958a8a8a8a8a8a89896151fa565b90508015613ca7575091506121409050565b613cb682848b8b8b338b613cc4565b9a9950505050505050505050565b6000613cef7f0000000000000000000000000000000000000000000000000000000000000000614ec6565b600080600080613cff8a87615338565b929650909450925090508b6000613d1a8d8c8e858d8f6153f7565b90506000613d636040518060600160405280856001600160401b031660001b8152602001613d4e8d6001600160a01b031690565b8152602001613d5c856154a2565b90526155cf565b90508c613d91818d613d736132a4565b61ffff851660009081526020919091526040902054898b8d8861562a565b8e8c8e7fe54e51e42099622516fa3b48e9733581c9dbdcb771cafb093f745a0532a35982613dd0613dc061104b565b6001600160481b038616906127cb565b60408051918252602082018b905261ffff8716908201526001600160401b038916606082015260800160405180910390a3613e2b7f000000000000000000000000000000000000000000000000000000000000000084615777565b6040517f3e6ae56314c6da8b461d872f41c6d0bb69317b9d0232805aaccfa45df1a16fa090600090a250929f9e505050505050505050505050505050565b6000613e7361432b565b61ffff84166000908152602091909152604081209150613e9383836157aa565b600283015490915060ff80831691161115611d875760028201805460ff831660ff1990911617905550505050565b600080610ce060017f49bca747e973430e858f2f5de357b8dba36ea6d375b81bdb5d53dfaabf0b3a8061765e565b600080613efc84846159da565b9050613f2981613f0a613ec1565b336000908152602091909152604090205462010000900460ff166117b9565b15613f4a57604051631089c4a160e11b81526004810182905260240161118a565b61124281336159ee565b6000613f5e613024565b90506000613f6a613ec1565b6001600160a01b0384166000908152602091909152604081205462010000900460ff1691506001821b905b83548110156115b8576000848281548110613fb257613fb26176d8565b600091825260208220601082040154600f9091166002026101000a900461ffff169150613fdd61311a565b61ffff8316600090815260209190915260409020805490915084166001600160401b031615614010576140108288614359565b600061401a61432b565b61ffff8416600090815260209190915260409020805490915085166001600160401b03161561404d5761404d8389613e69565b505050808061405b906176ee565b915050613f95565b600061406d613ec1565b90506000614079614aba565b90506000614085614383565b90506001600160a01b0384166140ae57604051632f44bd7760e01b815260040160405180910390fd5b6001600160a01b03841660009081526020849052604090205460ff166140f257604051630d583f4760e41b81526001600160a01b038516600482015260240161118a565b6001600160a01b038416600090815260208490526040902054610100900460ff1661413b576040516307d86e9160e21b81526001600160a01b038516600482015260240161118a565b6001600160a01b0384166000908152602084905260409020805461ff0019169055614164612ed2565b8054610100900460ff1690600161417a836177fa565b82546101009290920a60ff8181021990931691831602179091556001600160a01b03861660009081526020869052604090205484546001600160401b036001620100009093049093169190911b198116821692501681106141dd576141dd61771d565b825467ffffffffffffffff19166001600160401b0382161783558154600090815b8181101561430357876001600160a01b0316858281548110614222576142226176d8565b6000918252602090912001546001600160a01b0316036142f1578461424860018461765e565b81548110614258576142586176d8565b9060005260206000200160009054906101000a90046001600160a01b0316858281548110614288576142886176d8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550848054806142c6576142c6617817565b600082815260209020810160001990810180546001600160a01b031916905501905560019250614303565b806142fb816176ee565b9150506141fe565b50816143115761431161771d565b614319614ae8565b61432287615a8f565b50505050505050565b600080610ce060017faf0a382368c2faefe3458a9184c278f02a5091cca99095e9051eb2cf76449aff61765e565b600061436361311a565b61ffff84166000908152602091909152604090209050611d8782826157aa565b600080610ce060017e758a264b9bdbe3295fe36bd6ff7abaa122f48bf70e90af04a1b8a32d21e4e261765e565b600080610ce060017f64bacf405c5d7f563d3ba5252584a52c37e4fee380fd825b10666c27b825802361765e565b60008060006143ed86856159da565b90506143f98682610ca6565b61441957604051630451c4fb60e41b81526004810182905260240161118a565b600061442482615c0e565b9050801561446657604051829087907f4069dff8c9df7e38d2867c0910bd96fd61787695e5380281148c04932d02bef290600090a3600093509150613a569050565b90969095509350505050565b611d8784848484615c4f565b60606000826001018054806020026020016040519081016040528092919081815260200182805480156144da57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116144bc575b5050505050905080516001600160401b038111156144fa576144fa617216565b60405190808252806020026020018201604052801561453f57816020015b60408051808201909152600080825260208201528152602001906001900390816145185790505b509150600061454c613ec1565b905060005b8251811015614603576040518060400160405280848381518110614577576145776176d8565b60200260200101516001600160a01b031681526020018360008685815181106145a2576145a26176d8565b6020908102919091018101516001600160a01b031682528101919091526040016000205462010000900460ff16905284518590839081106145e5576145e56176d8565b602002602001018190525080806145fb906176ee565b915050614551565b505050919050565b6146136128be565b6001600160a01b03811661463d57604051631e4fbdf760e01b81526000600482015260240161118a565b610cf781615d5b565b61464e612ed2565b5460ff1661465a613751565b541461113f57614668613751565b54614671612ed2565b5460405163d2a13a2960e01b8152600481019290925260ff16602482015260440161118a565b60008183106146a65781611242565b5090919050565b60006001600160401b038211156147155760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b606482015260840161118a565b5090565b60008160ff168360ff160361472f575082611242565b8160ff168360ff16111561476357614747828461782d565b61475290600a61792a565b61475c9085617939565b9050611242565b61476d838361782d565b61477890600a61792a565b61475c908561795b565b61478b81615dcc565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6147ca615e7a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316306001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614832573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148569190617972565b6001600160a01b03161461486c5761486c61771d565b7f0000000000000000000000000000000000000000000000000000000000000000600181111561489e5761489e617061565b306001600160a01b031663295a52126040518163ffffffff1660e01b8152600401602060405180830381865afa1580156148dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614900919061798f565b600181111561491157614911617061565b1461491e5761491e61771d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316306001600160a01b03166374aa7bfc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149aa91906179b0565b6001600160401b03161461113f5761113f61771d565b806149c96131ba565b805460ff191691151591909117905550565b60008160ff168360ff16106146a65781611242565b82546001600160481b0316614a0481615f12565b15614a3257835468ffffffffffffffffff60481b1916600160481b6001600160481b03851602178455614a75565b6000614a3e8584612705565b9050614a4b848383615f32565b85546001600160481b0391909116600160481b0268ffffffffffffffffff60481b19909116178555505b505081546001600160481b039190911679ffffffffffffffff000000000000000000ffffffffffffffffff1990911617600160901b426001600160401b031602179055565b600080610ce060017ffd6568c039679b3b7cc93c26c41d9379b7b1bec1677120493b467688302cb12061765e565b6000614af2612ed2565b90506000614afe614383565b82548154919250610100900460ff16908114614b1c57614b1c61771d565b60005b81811015614b6857614b56838281548110614b3c57614b3c6176d8565b6000918252602090912001546001600160a01b0316615a8f565b80614b60816176ee565b915050614b1f565b5060005b81811015614c11576000614b818260016177e7565b90505b82811015614bfe57838181548110614b9e57614b9e6176d8565b60009182526020909120015484546001600160a01b0390911690859084908110614bca57614bca6176d8565b6000918252602090912001546001600160a01b031603614bec57614bec61771d565b80614bf6816176ee565b915050614b84565b5080614c09816176ee565b915050614b6c565b508254604060ff9091161115610d2257610d2261771d565b6000614c33613ec1565b90506001600160a01b038316614c5c57604051632f44bd7760e01b815260040160405180910390fd5b8361ffff16600003614c8157604051633d23e4d160e11b815260040160405180910390fd5b6001600160a01b038316600090815260208290526040902054610100900460ff16614cca576040516307d86e9160e21b81526001600160a01b038416600482015260240161118a565b6001600160a01b03831660009081526020829052604090205482546201000090910460ff16906001821b906001600160401b039082161615614d2a57604051638d68f84d60e01b81526001600160a01b038616600482015260240161118a565b835467ffffffffffffffff1981166001600160401b03918216929091169190911717835550506001908101805491820181556000908152602090200180546001600160a01b0319166001600160a01b039290921691909117905550565b80614d906143b0565b5550565b600080614d9f61432b565b61ffff841660009081526020919091526040902060018101549091501580614dcc5750600281015460ff16155b15614df05760405163186b202960e11b815261ffff8416600482015260240161118a565b546001600160401b031692915050565b614e08615fcc565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614614e8257604051636345072160e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600482015233602482015260440161118a565b3415614ea15760405163bd28e88960e01b815260040160405180910390fd5b614eab3333616003565b614eb361601d565b61113f610d49614ec161104b565b61602d565b468114610cf7576040516377d879fb60e01b81526004810182905246602482015260440161118a565b6040516001600160a01b038316602482015260448101829052610d2290849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152616051565b6000610f33614aba565b604080518082019091526000815260606020820152818301600181015160ff90811683526002918201519184019190614f9a90869084908416616123565b846020018194508290525050509250929050565b80825114610d4e5781516040516355c5b3e360e11b815260048101919091526024810182905260440161118a565b604080516001600160a01b0383811660248084019190915283518084039091018152604490920183526020820180516001600160e01b03166370a0823160e01b17905291516000928392839291871691615036919061760f565b600060405180830381855afa9150503d8060008114615071576040519150601f19603f3d011682016040523d82523d6000602084013e615076565b606091505b50915091508161509957604051631222cd8360e01b815260040160405180910390fd5b80806020019051810190610cdb91906177ce565b6040516001600160a01b0380851660248301528316604482015260648101829052611d879085906323b872dd60e01b90608401614f1b565b6000806150f06132a4565b61ffff84166000908152602091909152604081206001015460ff16915081900361512d5760405163ade64f0b60e01b815260040160405180910390fd5b60008061513861104b565b90506151458682856129fe565b9150600061515c6001600160481b038416836127cb565b90508087146151925786615170828261765e565b6040516338f831a560e11b81526004810192909252602482015260440161118a565b509095945050505050565b60006151a7612f00565b546001600160401b031690506151bb612f00565b80546001600160401b03169060006151d2836179cd565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505090565b60008061521861520861104b565b6001600160481b03861690616197565b90506000615225826161e6565b9050861580156152325750805b156152635761523f6123c2565b6040516326fb55dd60e01b81526004810191909152602481018c905260440161118a565b86801561526d5750805b156153125761529b7f0000000000000000000000000000000000000000000000000000000000000000614ec6565b337ff33512b84e24a49905c26c6991942fc5a9652411769fc1e448f967cdb049f08a858d6152c76123c2565b604080516001600160401b03909416845260208401929092529082015260600160405180910390a26152fe84868c8c8c338c616254565b615307346163ae565b60019250505061532c565b61531b8261641a565b615325828b616482565b6000925050505b98975050505050505050565b606080606060008061534987611141565b905060606000615357613751565b548351909150600081900361537f576040516334e7b19560e11b815260040160405180910390fd5b615389898361377f565b9250505060008061539b8a84866138de565b91509150803410156153c9576040516306a91e3760e51b81526004810182905234602482015260440161118a565b60006153d5823461765e565b905080156153e6576153e6816163ae565b509299919850965090945092505050565b6040805160a08101825260008082526020820181905291810182905260608082019290925260808101919091526040518060a00160405280886001600160481b0316815260200161546e7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690565b81526020018781526020018661ffff1681526020016040518060200160405280600081525081525090509695505050505050565b805160808201515160609190156155485760808301515161ffff10156154e45782608001515160405163a341969160e01b815260040161118a91815260200190565b608083015151632653951560e21b60ff8316600884901c6001600160401b0316866020015187604001518860600151868a608001516040516020016155309897969594939291906179f3565b60405160208183030381529060405292505050919050565b60208381015160408086015160608701519151632653951560e21b9481019490945260f885901b6001600160f81b031916602485015260b885901b6001600160c01b0319166025850152602d840192909252604d83019190915260f01b6001600160f01b031916606d820152606f015b604051602081830303815290604052915050919050565b606061ffff801682604001515111156156045781604001515160405163a341969160e01b815260040161118a91815260200190565b60408083015180518451602080870151945192946155b894929390928692909101617a7e565b81516000615636613ec1565b90508661565c57604051630ebc95af60e21b815261ffff8a16600482015260240161118a565b8760005b8381101561576a57600086828151811061567c5761567c6176d8565b60200260200101519050806001600160a01b0316634b5b05058a84815181106156a7576156a76176d8565b60200260200101518e8b886000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160029054906101000a900460ff1660ff16815181106156f9576156f96176d8565b60200260200101518a8f896040518763ffffffff1660e01b8152600401615724959493929190617abc565b6000604051808303818588803b15801561573d57600080fd5b505af1158015615751573d6000803e3d6000fd5b5050505050508080615762906176ee565b915050615660565b5050505050505050505050565b6000828260405160200161578c929190617b00565b60405160208183030381529060405280519060200120905092915050565b6000806157b5613ec1565b90506001600160a01b0384166157de57604051632f44bd7760e01b815260040160405180910390fd5b6001600160a01b03841660009081526020829052604090205460ff1661582257604051630d583f4760e41b81526001600160a01b038516600482015260240161118a565b6001600160a01b03841660009081526020829052604081205484546201000090910460ff16916001831b916001600160401b03908316169003615883576040516307d86e9160e21b81526001600160a01b038716600482015260240161118a565b84546001600160401b03821982161667ffffffffffffffff199091161785556001850154600090815b818110156159ba57886001600160a01b03168860010182815481106158d3576158d36176d8565b6000918252602090912001546001600160a01b0316036159a857876001016001836158fe919061765e565b8154811061590e5761590e6176d8565b6000918252602090912001546001890180546001600160a01b03909216918390811061593c5761593c6176d8565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508760010180548061597d5761597d617817565b600082815260209020810160001990810180546001600160a01b0319169055019055600192506159ba565b806159b2816176ee565b9150506158ac565b50816159c8576159c861771d565b50505060018401549250505092915050565b6000611242836159e9846155cf565b615777565b615a22826159fa613ec1565b6001600160a01b0384166000908152602091909152604090205462010000900460ff166164ff565b7f35a2101eaac94b493e0dfca061f9a7f087913fde8678e7cde0aca9897edba0e58282615a4d613ec1565b6001600160a01b038581166000908152602092835260409081902054815195865293909116918401919091526201000090910460ff169082015260600161103f565b6000615a99613ec1565b90506000615aa5614aba565b90506000615ab1612ed2565b90506000615abd614383565b6001600160a01b038616600090815260208681526040918290208251606081018452905460ff8082161515808452610100830482161515948401949094526201000090910416928101929092529192509080615b2b57508060200151158015615b2b5750604081015160ff16155b615b3757615b3761771d565b604081015184546020830151600160ff9093169290921b166001600160401b03161515906000805b8654610100900460ff16811015615bc157896001600160a01b0316868281548110615b8c57615b8c6176d8565b6000918252602090912001546001600160a01b031603615baf5760019150615bc1565b80615bb9816176ee565b915050615b5f565b5081151583151514615bd557615bd561771d565b81151581151514615be857615be861771d565b8554604085015160ff918216911610615c0357615c0361771d565b505050505050505050565b6000615c1982610fdb565b15615c2657506001919050565b6001615c30613052565b600093845260205260408320805460ff19169115159190911790555090565b6000615c5e836040015161654d565b90507f000000000000000000000000000000000000000000000000000000000000000061ffff16816060015161ffff1614615ce1576060810151604051631ee5902560e11b815261ffff91821660048201527f0000000000000000000000000000000000000000000000000000000000000000909116602482015260440161118a565b6000615ceb61104b565b90506000615d1b8283615d148587600001516001600160481b03166127cb90919063ffffffff16565b91906129fe565b90506000615d2c8460400151616675565b90506000615d3c868a858561669d565b90508015615d4e575050505050611d87565b615c0386838560006133e3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b6001600160a01b0381163b615e395760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161118a565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000061ffff16306001600160a01b0316639a8a05926040518163ffffffff1660e01b8152600401602060405180830381865afa158015615edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190615f019190617b30565b61ffff161461113f5761113f61771d565b60006001600160401b03600883901c16158015610ce057505060ff161590565b600080615f3f84866166e6565b15615f7857615f4e848661670b565b9050615f5a83826166e6565b615f675760ff8316615f71565b615f71838261670b565b9150615f91565b615f82858561670b565b9050615f8e8382616750565b91505b615f9b82866166e6565b156120cc57604051631e74e8fb60e31b81526001600160481b0380841660048301528616602482015260440161118a565b600080516020617c7b83398151915254600160401b900460ff1661113f57604051631afcd79f60e31b815260040160405180910390fd5b61600b615fcc565b61601482616795565b610d4e816167a6565b616025615fcc565b61113f6167b7565b60008061603b6008846149db565b905068ffffffffffffffff0060ff821617611242565b60006160a6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166167bf9092919063ffffffff16565b805190915015610d2257808060200190518101906160c49190617733565b610d225760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161118a565b606060008260000361614657505060408051600081526020810190915282613a56565b5050604051828201601f83168061615b575060205b80830184810186838901015b8183101561617f578051835260209283019201616167565b5050848452601f01601f191660405250935093915050565b6000806161a56008846149db565b9050610c326161cd6161c86001600160401b03600888901c1660ff881685614719565b6146ad565b8260ff1660089190911b68ffffffffffffffff00161790565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316600003616220576000610ce0565b610ce0827f000000000000000000000000000000000000000000000000000000000000000061624d6136a3565b91906167ce565b6040518060e00160405280858152602001848152602001876001600160481b03168152602001426001600160401b031681526020018661ffff168152602001836001600160a01b03168152602001828152506162ae612bf2565b6001600160401b03808a1660009081526020928352604090819020845181559284015160018401558301516002830180546060860151608087015161ffff16600160881b0261ffff60881b1991909516600160481b026001600160881b03199092166001600160481b0390941693909317179190911691909117905560a08201516003820180546001600160a01b039092166001600160a01b031990921691909117905560c082015160048201906163669082617b9b565b50506040516001600160401b03891681527f69add1952a6a6b9cb86f04d05f0cb605cbb469a50ae916139d34495a9991481f915060200160405180910390a150505050505050565b604051600090339083908381818185875af1925050503d80600081146163f0576040519150601f19603f3d011682016040523d82523d6000602084013e6163f5565b606091505b5050905080610d4e57604051630b288dc560e21b81526004810183905260240161118a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660000361644e5750565b610cf7817f000000000000000000000000000000000000000000000000000000000000000061647b6136a3565b919061680a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b03166000036164b7575050565b610d4e827f00000000000000000000000000000000000000000000000000000000000000006164e46126d7565b61ffff85166000908152602091909152604090209190616889565b600160ff82161b61650e613052565b60009384526020526040909220805468ffffffffffffffff00198116610100918290046001600160401b03908116951694909417029290921790915550565b6040805160a0810182526000808252602082018190529181018290526060808201839052608082015290806165828482616903565b925090506001600160e01b03198116632653951560e21b146165c3576040516356d2569d60e01b81526001600160e01b03198216600482015260240161118a565b818401600181015160099182015160ff8216600882901b68ffffffffffffffff00161786529190930192906165f8868561692e565b6020870191909152935061660c868561692e565b6040870191909152600287820181015161ffff16606088015290810194506166359085906177e7565b86511061666257600286850181015194019361ffff16616656878683616123565b60808801919091529450505b61666c8685614fae565b50505050919050565b600060a082901c156147155760405163033b960d60e41b81526004810183905260240161118a565b6000806166aa8486616954565b905080156166c7576166bd8685856169d6565b6001915050610c32565b6166d18486616ab7565b6166da84616b34565b50600095945050505050565b60006166f28383616b9c565b506001600160401b03600891821c81169290911c161190565b60006167178383616b9c565b6112426167376001600160401b03600885811c8216919087901c1661776f565b68ffffffffffffffff0060089190911b1660ff85161790565b600061675c8383616b9c565b61124261677c6001600160401b03600885811c8216919087901c16617671565b68ffffffffffffffff0060089190911b1660ff84161790565b61679d615fcc565b610cf781616bd1565b6167ae615fcc565b610cf781616c16565b61362e615fcc565b6060610c328484600085616c1e565b6000816001600160401b03166000036167e957506000611242565b60006167f58584612705565b90506168018185616cf9565b95945050505050565b806001600160401b031660000361682057505050565b600061682c8483612705565b845467ffffffffffffffff60901b1916600160901b426001600160401b031602178555905061685b818461670b565b84546001600160481b0391909116600160481b0268ffffffffffffffffff60481b1990911617909355505050565b806001600160401b031660000361689f57505050565b60006168ab8483612705565b845467ffffffffffffffff60901b198116600160901b426001600160401b031602908117875591925061685b916001600160481b0391821690821617906168f490841686616d1e565b6001600160481b031690616d81565b60008060008061691c8686600491810182015192910190565b60e09190911b97909650945050505050565b6000806000806169478686602091810182015192910190565b9097909650945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160401b031660000361698e576000611242565b611242837f00000000000000000000000000000000000000000000000000000000000000006169bb6126d7565b61ffff861660009081526020919091526040902091906167ce565b6040518060600160405280836001600160481b03168152602001426001600160401b03168152602001826001600160a01b0316815250616a146133b5565b6000858152602091825260409081902083518154858501516001600160481b039092166001600160881b031990911617600160481b6001600160401b039092169190910217815592810151600190930180546001600160a01b0319166001600160a01b039094169390931790925590518481527f7f63c9251d82a933210c2b6d0b0f116252c3c116788120e64e8e8215df6f3162910160405180910390a1505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316600003616aec575050565b610d4e827f0000000000000000000000000000000000000000000000000000000000000000616b196126d7565b61ffff8516600090815260209190915260409020919061680a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160401b0316600003616b685750565b610cf7817f0000000000000000000000000000000000000000000000000000000000000000616b956136a3565b9190616889565b60ff828116908216808214611d8757604051635ce6db6160e11b815260ff80841660048301528216602482015260440161118a565b616bd9615fcc565b6000616be36143b0565b6001815590506000616bf3612834565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b614613615fcc565b606082471015616c7f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161118a565b600080866001600160a01b03168587604051616c9b919061760f565b60006040518083038185875af1925050503d8060008114616cd8576040519150601f19603f3d011682016040523d82523d6000602084013e616cdd565b606091505b5091509150616cee87838387616dad565b979650505050505050565b6000616d058383616b9c565b506001600160401b03600891821c81169290911c161090565b6000616d2a8383616b9c565b600883811c6001600160401b039081169184901c811682810192918311616d515782616d5a565b6001600160401b035b9250612140616d68846146ad565b68ffffffffffffffff0060089190911b1660ff88161790565b6000616d8d8383616b9c565b600882811c6001600160401b039081169185901c16106146a65781611242565b60608315616e1c578251600003616e15576001600160a01b0385163b616e155760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161118a565b5081610c32565b610c328383815115616e315781518083602001fd5b8060405162461bcd60e51b815260040161118a919061754d565b508054616e57906175ae565b6000825580601f10616e67575050565b601f016020900490600052602060002090810190610cf791905b808211156147155760008155600101616e81565b61ffff81168114610cf757600080fd5b600060208284031215616eb757600080fd5b813561124281616e95565b6001600160a01b0381168114610cf757600080fd5b600060208284031215616ee957600080fd5b813561124281616ec2565b60008060408385031215616f0757600080fd5b8235616f1281616e95565b946020939093013593505050565b60008060408385031215616f3357600080fd5b823591506020830135616f4581616e95565b809150509250929050565b600060208284031215616f6257600080fd5b5035919050565b6001600160401b0381168114610cf757600080fd5b600060208284031215616f9057600080fd5b813561124281616f69565b60005b83811015616fb6578181015183820152602001616f9e565b50506000910152565b60008151808452616fd7816020860160208601616f9b565b601f01601f19169290920160200192915050565b6020815281516020820152602082015160408201526001600160481b0360408301511660608201526001600160401b03606083015116608082015261ffff60808301511660a082015260018060a01b0360a08301511660c0820152600060c083015160e080840152610c32610100840182616fbf565b634e487b7160e01b600052602160045260246000fd5b602081016002831061709957634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b818110156170db57835161ffff16835292840192918401916001016170bb565b50909695505050505050565b600080604083850312156170fa57600080fd5b823561710581616e95565b91506020830135616f4581616ec2565b600081518084526020808501945080840160005b8381101561714e5781516001600160a01b031687529582019590820190600101617129565b509495945050505050565b6020815260006112426020830184617115565b60ff81168114610cf757600080fd5b6000806040838503121561718e57600080fd5b823561719981616e95565b91506020830135616f458161716c565b600080600080608085870312156171bf57600080fd5b84356171ca81616e95565b93506020850135925060408501356171e18161716c565b9396929550929360600135925050565b6000806040838503121561720457600080fd5b823591506020830135616f458161716c565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261723d57600080fd5b81356001600160401b038082111561725757617257617216565b604051601f8301601f19908116603f0116810190828211818310171561727f5761727f617216565b8160405283815286602085880101111561729857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080604083850312156172cb57600080fd5b82356172d681616e95565b915060208301356001600160401b038111156172f157600080fd5b6172fd8582860161722c565b9150509250929050565b604080825283519082018190526000906020906060840190828701845b8281101561734057815184529284019290840190600101617324565b50505092019290925292915050565b60008060006060848603121561736457600080fd5b83359250602084013561737681616e95565b929592945050506040919091013590565b60008060006060848603121561739c57600080fd5b83356173a781616e95565b92506020840135915060408401356001600160401b03808211156173ca57600080fd5b90850190606082880312156173de57600080fd5b6040516060810181811083821117156173f9576173f9617216565b8060405250823581526020830135602082015260408301358281111561741e57600080fd5b61742a8982860161722c565b6040830152508093505050509250925092565b6040815260006174506040830185617115565b905060ff831660208301529392505050565b602080825282518282018190526000919060409081850190868401855b828110156174b55781518051151585528681015115158786015285015160ff16858501526060909301929085019060010161747f565b5091979650505050505050565b8015158114610cf757600080fd5b60008060008060008060c087890312156174e957600080fd5b8635955060208701356174fb81616e95565b945060408701359350606087013592506080870135617519816174c2565b915060a08701356001600160401b0381111561753457600080fd5b61754089828a0161722c565b9150509295509295509295565b6020815260006112426020830184616fbf565b602080825282518282018190526000919060409081850190868401855b828110156174b557815180516001600160a01b0316855286015160ff1686850152928401929085019060010161757d565b600181811c908216806175c257607f821691505b6020821081036175e257634e487b7160e01b600052602260045260246000fd5b50919050565b61ffff9390931683526001600160a01b039190911660208301521515604082015260600190565b60008251617621818460208701616f9b565b9190910192915050565b60006020828403121561763d57600080fd5b81516112428161716c565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ce057610ce0617648565b6001600160401b0381811683821601908082111561769157617691617648565b5092915050565b61ffff8416815282602082015260606040820152815160608201526020820151608082015260006040830151606060a084015261214060c0840182616fbf565b634e487b7160e01b600052603260045260246000fd5b60006001820161770057617700617648565b5060010190565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60006020828403121561774557600080fd5b8151611242816174c2565b600060ff821660ff810361776657617766617648565b60010192915050565b6001600160401b0382811682821603908082111561769157617691617648565b60ff81511682526000602082015160406020850152610c326040850182616fbf565b61ffff83168152604060208201526000610c32604083018461778f565b6000602082840312156177e057600080fd5b5051919050565b80820180821115610ce057610ce0617648565b600060ff82168061780d5761780d617648565b6000190192915050565b634e487b7160e01b600052603160045260246000fd5b60ff8281168282160390811115610ce057610ce0617648565b600181815b8085111561788157816000190482111561786757617867617648565b8085161561787457918102915b93841c939080029061784b565b509250929050565b60008261789857506001610ce0565b816178a557506000610ce0565b81600181146178bb57600281146178c5576178e1565b6001915050610ce0565b60ff8411156178d6576178d6617648565b50506001821b610ce0565b5060208310610133831016604e8410600b8410161715617904575081810a610ce0565b61790e8383617846565b806000190482111561792257617922617648565b029392505050565b600061124260ff841683617889565b60008261795657634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610ce057610ce0617648565b60006020828403121561798457600080fd5b815161124281616ec2565b6000602082840312156179a157600080fd5b81516002811061124257600080fd5b6000602082840312156179c257600080fd5b815161124281616f69565b60006001600160401b038083168181036179e9576179e9617648565b6001019392505050565b6001600160e01b0319891681526001600160f81b031960f889901b1660048201526001600160c01b031960c088901b166005820152600d8101869052602d81018590526001600160f01b031960f085811b8216604d84015284901b16604f8201528151600090617a6a816051850160208701616f9b565b919091016051019998505050505050505050565b84815283602082015261ffff60f01b8360f01b16604082015260008251617aac816042850160208701616f9b565b9190910160420195945050505050565b61ffff8616815260a060208201526000617ad960a083018761778f565b8281036040840152617aeb8187616fbf565b60608401959095525050608001529392505050565b61ffff60f01b8360f01b16815260008251617b22816002850160208701616f9b565b919091016002019392505050565b600060208284031215617b4257600080fd5b815161124281616e95565b601f821115610d2257600081815260208120601f850160051c81016020861015617b745750805b601f850160051c820191505b81811015617b9357828155600101617b80565b505050505050565b81516001600160401b03811115617bb457617bb4617216565b617bc881617bc284546175ae565b84617b4d565b602080601f831160018114617bfd5760008415617be55750858301515b600019600386901b1c1916600185901b178555617b93565b600085815260208120601f198616915b82811015617c2c57888601518255948401946001909101908401617c0d565b5085821015617c4a5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a264697066735822122029feef80357427005b60badbdac88e66b2c1ccc542ff3b2db4cf8ae4182fed7964736f6c63430008130033";
2335
+ const isSuperArgs = (xs) => xs.length > 1;
1864
2336
  export class NttManager__factory extends ContractFactory {
1865
2337
  constructor(...args) {
1866
2338
  if (isSuperArgs(args)) {
1867
2339
  super(...args);
1868
2340
  }
1869
2341
  else {
1870
- const [linkLibraryAddresses, signer] = args;
1871
- super(_abi, NttManager__factory.linkBytecode(linkLibraryAddresses), signer);
2342
+ super(_abi, _bytecode, args[0]);
1872
2343
  }
1873
2344
  }
1874
- static linkBytecode(linkLibraryAddresses) {
1875
- let linkedBytecode = _bytecode;
1876
- linkedBytecode = linkedBytecode.replace(new RegExp("__\\$93083e246e55d56d98f3df2872cd16bfd0\\$__", "g"), linkLibraryAddresses["src/libraries/TransceiverStructs.sol:TransceiverStructs"]
1877
- .replace(/^0x/, "")
1878
- .toLowerCase());
1879
- return linkedBytecode;
1880
- }
1881
2345
  getDeployTransaction(_token, _mode, _chainId, _rateLimitDuration, _skipRateLimiting, overrides) {
1882
2346
  return super.getDeployTransaction(_token, _mode, _chainId, _rateLimitDuration, _skipRateLimiting, overrides || {});
1883
2347
  }