@gooddollar/goodcollective-contracts 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +14 -1
  2. package/contracts/DirectPayments/DirectPaymentsFactory.sol +13 -10
  3. package/contracts/DirectPayments/DirectPaymentsPool.sol +13 -4
  4. package/contracts/GoodCollective/GoodCollectiveSuperApp.sol +31 -55
  5. package/contracts/GoodCollective/IGoodCollectiveSuperApp.sol +6 -0
  6. package/contracts/UBI/UBIPool.sol +48 -36
  7. package/contracts/UBI/UBIPoolFactory.sol +10 -1
  8. package/contracts/test/HelperLibraryTest.sol +16 -0
  9. package/contracts/utils/HelperLibrary.sol +73 -5
  10. package/package.json +4 -3
  11. package/releases/deployment.json +21841 -565
  12. package/typechain-types/@uniswap/index.ts +0 -2
  13. package/typechain-types/contracts/DirectPayments/DirectPaymentsFactory.sol/DirectPaymentsFactory.ts +1327 -0
  14. package/typechain-types/contracts/{GoodCollective/GoodCollectiveSuperApp.sol → DirectPayments/DirectPaymentsFactory.sol}/index.ts +1 -1
  15. package/typechain-types/contracts/DirectPayments/DirectPaymentsFactory.ts +40 -5
  16. package/typechain-types/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool.ts +49 -0
  17. package/typechain-types/contracts/GoodCollective/GoodCollectiveSuperApp.ts +49 -0
  18. package/typechain-types/contracts/{UBI/MultiClaimModule.sol/IClaimable.ts → GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry.ts} +33 -23
  19. package/typechain-types/{factories/@uniswap/v3-periphery/contracts → contracts/GoodCollective/IGoodCollectiveSuperApp.sol}/index.ts +1 -1
  20. package/typechain-types/contracts/GoodCollective/index.ts +3 -2
  21. package/typechain-types/contracts/UBI/UBIPool.sol/UBIPool.ts +104 -49
  22. package/typechain-types/contracts/UBI/UBIPoolFactory.ts +43 -5
  23. package/typechain-types/contracts/UBI/index.ts +0 -2
  24. package/typechain-types/contracts/index.ts +2 -0
  25. package/typechain-types/contracts/test/HelperLibraryTest.ts +147 -0
  26. package/typechain-types/{@uniswap/v3-periphery/contracts/interfaces → contracts/test}/index.ts +1 -1
  27. package/typechain-types/factories/@uniswap/index.ts +0 -1
  28. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsFactory.sol/DirectPaymentsFactory__factory.ts +1004 -0
  29. package/typechain-types/factories/contracts/{GoodCollective/GoodCollectiveSuperApp.sol → DirectPayments/DirectPaymentsFactory.sol}/IRegistry__factory.ts +1 -1
  30. package/typechain-types/factories/contracts/{GoodCollective/GoodCollectiveSuperApp.sol → DirectPayments/DirectPaymentsFactory.sol}/index.ts +1 -1
  31. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsFactory__factory.ts +15 -2
  32. package/typechain-types/factories/contracts/DirectPayments/DirectPaymentsPool.sol/DirectPaymentsPool__factory.ts +57 -1
  33. package/typechain-types/factories/contracts/GoodCollective/GoodCollectiveSuperApp__factory.ts +57 -1
  34. package/typechain-types/factories/contracts/GoodCollective/IGoodCollectiveSuperApp.sol/IRegistry__factory.ts +52 -0
  35. package/typechain-types/{@gooddollar/goodprotocol/contracts/token/FeesFormula.sol → factories/contracts/GoodCollective/IGoodCollectiveSuperApp.sol}/index.ts +1 -1
  36. package/typechain-types/factories/contracts/GoodCollective/index.ts +2 -1
  37. package/typechain-types/factories/contracts/UBI/UBIPool.sol/UBIPool__factory.ts +109 -28
  38. package/typechain-types/factories/contracts/UBI/UBIPoolFactory__factory.ts +32 -4
  39. package/typechain-types/factories/contracts/UBI/index.ts +0 -1
  40. package/typechain-types/factories/contracts/index.ts +1 -0
  41. package/typechain-types/factories/contracts/test/HelperLibraryTest__factory.ts +154 -0
  42. package/typechain-types/{@uniswap/v3-periphery → factories/contracts/test}/index.ts +1 -2
  43. package/typechain-types/factories/contracts/utils/HelperLibrary__factory.ts +1 -1
  44. package/typechain-types/hardhat.d.ts +4 -31
  45. package/typechain-types/index.ts +6 -12
  46. package/contracts/UBI/MultiClaimModule.sol +0 -78
  47. package/typechain-types/@gooddollar/goodprotocol/contracts/token/FeesFormula.sol/IFeesFormula.ts +0 -115
  48. package/typechain-types/@uniswap/v3-periphery/contracts/index.ts +0 -5
  49. package/typechain-types/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.ts +0 -369
  50. package/typechain-types/contracts/GoodCollective/GoodCollectiveSuperApp.sol/GoodCollectiveSuperApp.ts +0 -1000
  51. package/typechain-types/contracts/UBI/MultiClaimModule.sol/IModule.ts +0 -196
  52. package/typechain-types/contracts/UBI/MultiClaimModule.sol/MultiClaimModule.ts +0 -242
  53. package/typechain-types/contracts/UBI/MultiClaimModule.sol/index.ts +0 -6
  54. package/typechain-types/factories/@gooddollar/goodprotocol/contracts/token/FeesFormula.sol/IFeesFormula__factory.ts +0 -60
  55. package/typechain-types/factories/@gooddollar/goodprotocol/contracts/token/FeesFormula.sol/index.ts +0 -4
  56. package/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/ISwapRouter__factory.ts +0 -263
  57. package/typechain-types/factories/@uniswap/v3-periphery/contracts/interfaces/index.ts +0 -4
  58. package/typechain-types/factories/@uniswap/v3-periphery/index.ts +0 -4
  59. package/typechain-types/factories/contracts/GoodCollective/GoodCollectiveSuperApp.sol/GoodCollectiveSuperApp__factory.ts +0 -728
  60. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/IClaimable__factory.ts +0 -33
  61. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/IModule__factory.ts +0 -84
  62. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/MultiClaimModule__factory.ts +0 -150
  63. package/typechain-types/factories/contracts/UBI/MultiClaimModule.sol/index.ts +0 -6
  64. /package/typechain-types/contracts/{GoodCollective/GoodCollectiveSuperApp.sol → DirectPayments/DirectPaymentsFactory.sol}/IRegistry.ts +0 -0
@@ -1,5 +1,6 @@
1
1
  /* Autogenerated file. Do not edit manually. */
2
2
  /* tslint:disable */
3
3
  /* eslint-disable */
4
- export * as goodCollectiveSuperAppSol from "./GoodCollectiveSuperApp.sol";
4
+ export * as iGoodCollectiveSuperAppSol from "./IGoodCollectiveSuperApp.sol";
5
+ export { GoodCollectiveSuperApp__factory } from "./GoodCollectiveSuperApp__factory";
5
6
  export { SuperAppBaseFlow__factory } from "./SuperAppBaseFlow__factory";
@@ -30,7 +30,7 @@ const _abi = [
30
30
  inputs: [
31
31
  {
32
32
  internalType: "address",
33
- name: "claimer",
33
+ name: "whitelistedRoot",
34
34
  type: "address",
35
35
  },
36
36
  ],
@@ -70,7 +70,7 @@ const _abi = [
70
70
  },
71
71
  {
72
72
  inputs: [],
73
- name: "MAX_MEMBERS_REACHED",
73
+ name: "MAX_CLAIMERS_REACHED",
74
74
  type: "error",
75
75
  },
76
76
  {
@@ -84,6 +84,17 @@ const _abi = [
84
84
  name: "MIN_FLOWRATE",
85
85
  type: "error",
86
86
  },
87
+ {
88
+ inputs: [
89
+ {
90
+ internalType: "address",
91
+ name: "manager",
92
+ type: "address",
93
+ },
94
+ ],
95
+ name: "NOT_MANAGER",
96
+ type: "error",
97
+ },
87
98
  {
88
99
  inputs: [
89
100
  {
@@ -99,7 +110,7 @@ const _abi = [
99
110
  inputs: [
100
111
  {
101
112
  internalType: "address",
102
- name: "claimer",
113
+ name: "whitelistedRoot",
103
114
  type: "address",
104
115
  },
105
116
  ],
@@ -470,9 +481,14 @@ const _abi = [
470
481
  },
471
482
  {
472
483
  internalType: "uint32",
473
- name: "maxMembers",
484
+ name: "maxClaimers",
474
485
  type: "uint32",
475
486
  },
487
+ {
488
+ internalType: "bool",
489
+ name: "onlyMembers",
490
+ type: "bool",
491
+ },
476
492
  ],
477
493
  indexed: false,
478
494
  internalType: "struct UBIPool.UBISettings",
@@ -585,25 +601,6 @@ const _abi = [
585
601
  stateMutability: "nonpayable",
586
602
  type: "function",
587
603
  },
588
- {
589
- inputs: [
590
- {
591
- internalType: "address",
592
- name: "member",
593
- type: "address",
594
- },
595
- ],
596
- name: "addMemberByManager",
597
- outputs: [
598
- {
599
- internalType: "bool",
600
- name: "",
601
- type: "bool",
602
- },
603
- ],
604
- stateMutability: "nonpayable",
605
- type: "function",
606
- },
607
604
  {
608
605
  inputs: [
609
606
  {
@@ -1234,9 +1231,14 @@ const _abi = [
1234
1231
  },
1235
1232
  {
1236
1233
  internalType: "uint32",
1237
- name: "maxMembers",
1234
+ name: "maxClaimers",
1238
1235
  type: "uint32",
1239
1236
  },
1237
+ {
1238
+ internalType: "bool",
1239
+ name: "onlyMembers",
1240
+ type: "bool",
1241
+ },
1240
1242
  ],
1241
1243
  internalType: "struct UBIPool.UBISettings",
1242
1244
  name: "_ubiSettings",
@@ -1340,6 +1342,19 @@ const _abi = [
1340
1342
  stateMutability: "view",
1341
1343
  type: "function",
1342
1344
  },
1345
+ {
1346
+ inputs: [
1347
+ {
1348
+ internalType: "address",
1349
+ name: "member",
1350
+ type: "address",
1351
+ },
1352
+ ],
1353
+ name: "removeMember",
1354
+ outputs: [],
1355
+ stateMutability: "nonpayable",
1356
+ type: "function",
1357
+ },
1343
1358
  {
1344
1359
  inputs: [
1345
1360
  {
@@ -1442,9 +1457,14 @@ const _abi = [
1442
1457
  },
1443
1458
  {
1444
1459
  internalType: "uint32",
1445
- name: "maxMembers",
1460
+ name: "maxClaimers",
1446
1461
  type: "uint32",
1447
1462
  },
1463
+ {
1464
+ internalType: "bool",
1465
+ name: "onlyMembers",
1466
+ type: "bool",
1467
+ },
1448
1468
  ],
1449
1469
  internalType: "struct UBIPool.UBISettings",
1450
1470
  name: "_ubiSettings",
@@ -1558,7 +1578,7 @@ const _abi = [
1558
1578
  },
1559
1579
  {
1560
1580
  internalType: "uint32",
1561
- name: "membersCount",
1581
+ name: "claimersCount",
1562
1582
  type: "uint32",
1563
1583
  },
1564
1584
  ],
@@ -1607,6 +1627,62 @@ const _abi = [
1607
1627
  stateMutability: "nonpayable",
1608
1628
  type: "function",
1609
1629
  },
1630
+ {
1631
+ inputs: [
1632
+ {
1633
+ internalType: "address",
1634
+ name: "_sender",
1635
+ type: "address",
1636
+ },
1637
+ {
1638
+ components: [
1639
+ {
1640
+ internalType: "address",
1641
+ name: "swapFrom",
1642
+ type: "address",
1643
+ },
1644
+ {
1645
+ internalType: "uint256",
1646
+ name: "amount",
1647
+ type: "uint256",
1648
+ },
1649
+ {
1650
+ internalType: "uint256",
1651
+ name: "minReturn",
1652
+ type: "uint256",
1653
+ },
1654
+ {
1655
+ internalType: "uint256",
1656
+ name: "deadline",
1657
+ type: "uint256",
1658
+ },
1659
+ {
1660
+ internalType: "bytes",
1661
+ name: "path",
1662
+ type: "bytes",
1663
+ },
1664
+ ],
1665
+ internalType: "struct HelperLibrary.SwapData",
1666
+ name: "_customData",
1667
+ type: "tuple",
1668
+ },
1669
+ {
1670
+ internalType: "bytes",
1671
+ name: "_ctx",
1672
+ type: "bytes",
1673
+ },
1674
+ ],
1675
+ name: "supportWithSwap",
1676
+ outputs: [
1677
+ {
1678
+ internalType: "bytes",
1679
+ name: "",
1680
+ type: "bytes",
1681
+ },
1682
+ ],
1683
+ stateMutability: "nonpayable",
1684
+ type: "function",
1685
+ },
1610
1686
  {
1611
1687
  inputs: [
1612
1688
  {
@@ -1699,9 +1775,14 @@ const _abi = [
1699
1775
  },
1700
1776
  {
1701
1777
  internalType: "uint32",
1702
- name: "maxMembers",
1778
+ name: "maxClaimers",
1703
1779
  type: "uint32",
1704
1780
  },
1781
+ {
1782
+ internalType: "bool",
1783
+ name: "onlyMembers",
1784
+ type: "bool",
1785
+ },
1705
1786
  ],
1706
1787
  stateMutability: "view",
1707
1788
  type: "function",
@@ -1753,7 +1834,7 @@ const _abi = [
1753
1834
  ] as const;
1754
1835
 
1755
1836
  const _bytecode =
1756
- "0x60e06040523060c0523480156200001557600080fd5b506040516200534638038062005346833981016040819052620000389162000098565b6001600160a01b038216608081905282908290620000695760405163538ba4f960e01b815260040160405180910390fd5b6001600160a01b031660a05250620000d7915050565b6001600160a01b03811681146200009557600080fd5b50565b60008060408385031215620000ac57600080fd5b8251620000b9816200007f565b6020840151909250620000cc816200007f565b809150509250929050565b60805160a05160c0516151dd620001696000396000818161102b0152818161106b0152818161125701528181611297015261130f01526000818161087d0152610dde015260008181610a9101528181610d6901528181610ef1015281816113bd015281816115fd0152818161192b01528181611a730152818161248601528181612c180152612c7d01526151dd6000f3fe60806040526004361061024f5760003560e01c806301ffc9a7146102545780630c710776146102895780630ce82d67146102b55780630e0cc1b9146102d85780631333d198146102fa5780631a2a84b31461031a5780631a787f2e1461033a5780631db128c71461035a578063200d2ed214610387578063230dbd2914610409578063248a9ca314610429578063298052df146104495780632b4116f71461045e5780632f2ff15d1461048b57806330d9c915146104ab57806336568abe146104cb5780633659cfe6146104eb5780633c65130c1461050b5780633e6968b61461052b5780634e71d92d146105405780634f1ef2861461055557806352d1902d1461056857806353c11f991461057d578063598f8fbf1461059d5780635a4c5152146105bd5780635ab1bd53146106435780635f9e7d77146106585780636180c79314610678578063647c75e21461069857806372ca8a3e1461070957806373b2e80e146107295780637b10399914610749578063884d1f401461076a57806391d148541461078a57806398d6621b146107aa5780639f8fddd2146107bf578063a10f469e146107df578063a217fddf14610801578063a4c0ed3614610816578063ae82720014610836578063bcb4546f14610849578063c31c9c071461086b578063c49120b41461089f578063c7713870146108bf578063d3112b2e146108d4578063d547741f14610909578063d80528ae14610929578063d86ed3e514610995578063dc61d5c2146109b5578063e06174e4146109f3578063ec87621c14610a5d578063f437bc5914610a7f575b600080fd5b34801561026057600080fd5b5061027461026f3660046142a6565b610ab3565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b506102a26459df64940081565b604051600b9190910b8152602001610280565b3480156102c157600080fd5b506102ca610aea565b604051908152602001610280565b3480156102e457600080fd5b506102f86102f3366004614303565b610b08565b005b34801561030657600080fd5b5061027461031536600461433c565b610b41565b34801561032657600080fd5b506102ca61033536600461433c565b610c5f565b34801561034657600080fd5b506102ca61035536600461433c565b610cff565b34801561036657600080fd5b5061037a610375366004614444565b610d47565b6040516102809190614568565b34801561039357600080fd5b5061013a5461013b5461013c5461013d5461013e5461013f5461014054610142546103c8979695949392919063ffffffff1688565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015263ffffffff1660e082015261010001610280565b34801561041557600080fd5b5061037a6104243660046145c3565b610e4d565b34801561043557600080fd5b506102ca61044436600461468d565b610e94565b34801561045557600080fd5b506102ca610ea9565b34801561046a57600080fd5b5060975461047e906001600160a01b031681565b60405161028091906146a6565b34801561049757600080fd5b506102f86104a63660046146ba565b610ec3565b3480156104b757600080fd5b5061037a6104c63660046146df565b610ee4565b3480156104d757600080fd5b506102f86104e63660046146ba565b610fa7565b3480156104f757600080fd5b506102f861050636600461433c565b611021565b34801561051757600080fd5b506102f8610526366004614834565b6110e9565b34801561053757600080fd5b506102ca611224565b34801561054c57600080fd5b506102f8611240565b6102f8610563366004614850565b61124d565b34801561057457600080fd5b506102ca611302565b34801561058957600080fd5b5061037a6105983660046145c3565b6113b0565b3480156105a957600080fd5b506102f86105b8366004614927565b61148d565b3480156105c957600080fd5b506101375461013854610139546106069263ffffffff80821693600160201b8304821693600160401b8404831693600160601b900460ff16921686565b6040805163ffffffff97881681529587166020870152938616938501939093529015156060840152608083015290911660a082015260c001610280565b34801561064f57600080fd5b5061047e6115e0565b34801561066457600080fd5b5061037a6106733660046146df565b6115f0565b34801561068457600080fd5b50610274610693366004614850565b6116d5565b3480156106a457600080fd5b506106e26106b336600461433c565b60986020526000908152604090208054600190910154600b81900b90600160601b90046001600160801b031683565b60408051938452600b9290920b60208401526001600160801b031690820152606001610280565b34801561071557600080fd5b5061027461072436600461433c565b61186c565b34801561073557600080fd5b5061027461074436600461433c565b611880565b34801561075557600080fd5b506101435461047e906001600160a01b031681565b34801561077657600080fd5b5061037a6107853660046146df565b61191e565b34801561079657600080fd5b506102746107a53660046146ba565b611a1b565b3480156107b657600080fd5b506102ca611a46565b3480156107cb57600080fd5b5061037a6107da366004614943565b611a51565b3480156107eb57600080fd5b506102ca60008051602061518883398151915281565b34801561080d57600080fd5b506102ca600081565b34801561082257600080fd5b50610274610831366004614991565b611b15565b6102f86108443660046149ec565b611b8e565b34801561085557600080fd5b506102ca6000805160206150e183398151915281565b34801561087757600080fd5b5061047e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156108ab57600080fd5b506102f86108ba366004614a20565b611c14565b3480156108cb57600080fd5b506102ca611e6d565b3480156108e057600080fd5b50609954609a546108fb916001600160a01b03908116911682565b604051610280929190614a6b565b34801561091557600080fd5b506102f86109243660046146ba565b611ff2565b34801561093557600080fd5b50609b54609c54609d54609e54610961939291906001600160a01b03811690600160a01b9004600b0b85565b604080519586526020860194909452928401919091526001600160a01b03166060830152600b0b608082015260a001610280565b3480156109a157600080fd5b5061037a6109b03660046145c3565b61200e565b3480156109c157600080fd5b506109ca61203c565b604080519485526020850193909352600b91820b928401929092520b6060820152608001610280565b3480156109ff57600080fd5b5061013354610134546101355461013654610a2a936001600160a01b03908116938116928116911684565b604080516001600160a01b0395861681529385166020850152918416918301919091529091166060820152608001610280565b348015610a6957600080fd5b506102ca60008051602061514183398151915281565b348015610a8b57600080fd5b5061047e7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216637965db0b60e01b1480610ae457506301ffc9a760e01b6001600160e01b03198316145b92915050565b61013d54600090610af9611224565b610b039190614a9b565b905090565b61013754600160601b900460ff16610b33576040516369973f2560e11b815260040160405180910390fd5b610b3d8282612104565b5050565b6000600080516020615141833981519152610b5b8161230b565b610b7360008051602061518883398151915284611a1b565b15610b815760019150610c59565b610135546001600160a01b031615610c3c57610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b4690610bc59087906004016146a6565b602060405180830381865afa158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c069190614aae565b90506001600160a01b038116610c3a5783604051630b7b234960e01b8152600401610c3191906146a6565b60405180910390fd5b505b610c5460008051602061518883398151915284612315565b600191505b50919050565b6001600160a01b0381166000908152609860209081526040808320815160608101835281548152600190910154600b81900b938201849052600160601b90046001600160801b031691810191909152908203610cbc575192915050565b6040810151610cd4906001600160801b031642614a9b565b81602001516001600160601b0316610cec9190614acb565b8151610cf89190614ae2565b9392505050565b6000610d09611224565b61013a54148015610d1c575061013b5415155b15610d3f57610d2a82611880565b610d375761013b54610ae4565b600092915050565b610ae4611e6d565b606082336001600160a01b03821614801590610d8c5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610dac573360405163087231bf60e31b8152600401610c3191906146a6565b6097546040516358c0dacb60e01b815273__$0d78a42341742155da77b97d7f993534c7$__916358c0dacb91610e14917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b0316908a90600401614af5565b60006040518083038186803b158015610e2c57600080fd5b505af4158015610e40573d6000803e3d6000fd5b5094979650505050505050565b60606000610e5d87890189614b66565b509050600080610e6f87890189614ba3565b91509150610e818d8484848a8a612419565b93505050505b9998505050505050505050565b60009081526065602052604090206001015490565b600061a8c0610eb6611224565b610af99062015180614acb565b610ecc82610e94565b610ed58161230b565b610edf8383612315565b505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f2f57604051632f2d36a760e01b815260040160405180910390fd5b610f3887612460565b610f5b5750604080518082019091526002815261060f60f31b6020820152610f9c565b610f648861186c565b610f8157604051631ea25bab60e31b815260040160405180910390fd5b50604080518082019091526002815261060f60f31b60208201525b979650505050505050565b6001600160a01b03811633146110175760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c31565b610b3d8282612514565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110695760405162461bcd60e51b8152600401610c3190614bcf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661109b61256f565b6001600160a01b0316146110c15760405162461bcd60e51b8152600401610c3190614c09565b6110ca8161258b565b604080516000808252602082019092526110e691839190612596565b50565b6000805160206151418339815191526111018161230b565b61110a82612701565b81516101378054602085015160408087015160608801511515600160601b0260ff60601b1963ffffffff928316600160401b021664ffffffffff60401b19948316600160201b026001600160401b0319909616978316979097179490941792909216949094179190911790915560808401516101385560a084015161013980549190921663ffffffff1991909116179055517f3713aa8ae40c5e0e8eba671a9bb0669bda3f77994070fc4450f5d2421552090590611218908490600060c08201905063ffffffff808451168352806020850151166020840152806040850151166040840152606084015115156060840152608084015160808401528060a08501511660a08401525092915050565b60405180910390a15050565b60006201518061123661a8c042614a9b565b610b039190614c59565b61124b336001612104565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112955760405162461bcd60e51b8152600401610c3190614bcf565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112c761256f565b6001600160a01b0316146112ed5760405162461bcd60e51b8152600401610c3190614c09565b6112f68261258b565b610b3d82826001612596565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461139d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610c31565b5060008051602061512183398151915290565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415806113f057506113ee89612460565b155b8061140157506113ff8a61186c565b155b156114455782828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610e8792505050565b600080611454888a018a614b66565b9092509050600080611468888a018a614c6d565b9150915061147b8e858584868c8c61275b565b9e9d5050505050505050505050505050565b6000805160206151418339815191526114a58161230b565b81516001600160a01b03166114cd5760405163890bc98f60e01b815260040160405180910390fd5b6101335482516001600160a01b03908116911614611527576101335461150b90600080516020615141833981519152906001600160a01b0316612514565b61152760008051602061514183398151915283600001516127ae565b815161013380546001600160a01b03199081166001600160a01b03938416908117909255602080860180516101348054851691871691909117905560408088018051610135805487169189169190911790556060808a0180516101368054909816908a16179096558251968752925187169386019390935291518516918401919091529051909216918101919091527fc5e56c36231b7247b96ddd6a7e47b60748a332bcb3a514d016fd2e74d915935190608001611218565b610143546001600160a01b031690565b6060336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141580611630575061162e87612460565b155b80611641575061163f8861186c565b155b156116655750604080518082019091526002815261060f60f31b6020820152610f9c565b60008061167486880188614b66565b90925090506000806116906001600160a01b038d1685856127b8565b50509150915081816040516020016116b5929190918252600b0b602082015260400190565b604051602081830303815290604052945050505050979650505050505050565b60006116ef60008051602061518883398151915284611a1b565b156116fc57506001610ae4565b610135546001600160a01b0316156117ae57610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b46906117409087906004016146a6565b602060405180830381865afa15801561175d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117819190614aae565b90506001600160a01b0381166117ac5783604051630b7b234960e01b8152600401610c3191906146a6565b505b610134546001600160a01b03161561184b57610134546040516356a42afd60e11b81526001600160a01b039091169063ad4855fa906117f7903090339088908890600401614c92565b6020604051808303816000875af1158015611816573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061183a9190614cc6565b151560000361184b57506000610ae4565b61186360008051602061518883398151915284612315565b50600192915050565b6097546001600160a01b0390811691161490565b610135546040516316874da360e11b815260009182916001600160a01b0390911690632d0e9b46906118b69086906004016146a6565b602060405180830381865afa1580156118d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f79190614aae565b61013a546001600160a01b0390911660009081526101416020526040902054149392505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461196957604051632f2d36a760e01b815260040160405180910390fd5b61197287612460565b6119955750604080518082019091526002815261060f60f31b6020820152610f9c565b61199e8861186c565b6119bb57604051631ea25bab60e31b815260040160405180910390fd5b60006119c985870187614b66565b5090506000806119e36001600160a01b038c1684306127b8565b505060408051600b9290920b60208301528181019290925281518082038301815260609091019091529b9a5050505050505050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610b0333610cff565b606083336001600160a01b03821614801590611a965750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15611ab6573360405163087231bf60e31b8152600401610c3191906146a6565b83600003611ad757604051630f6fa54560e41b815260040160405180910390fd5b609754611aef906001600160a01b0316863087612850565b611b0b858560006040518060200160405280600081525061295a565b5091949350505050565b6097546000906001600160a01b03163314611b4357604051630ce706f760e41b815260040160405180910390fd5b83600003611b6457604051630f6fa54560e41b815260040160405180910390fd5b611b80858560006040518060200160405280600081525061295a565b50600190505b949350505050565b6101435460408051638abf607760e01b815290516000926001600160a01b031691638abf60779160048083019260209291908290030181865afa158015611bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfd9190614aae565b9050611c088161258b565b610b3d81836000612596565b600054610100900460ff1615808015611c345750600054600160ff909116105b80611c555750611c4330612ba9565b158015611c55575060005460ff166001145b611cb85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c31565b6000805460ff191660011790558015611cdb576000805461ff0019166101001790555b61014380546001600160a01b038085166001600160a01b0319928316179092558551610133805491841691831691909117905560208087015161013480549185169184169190911790556040808801516101358054918616918516919091179055606080890151610136805491909616941693909317909355855161013780549288015194880151938801511515600160601b0260ff60601b1963ffffffff958616600160401b021664ffffffffff60401b19968616600160201b026001600160401b0319909516938616939093179390931794909416171790915560808401516101385560a084015161013980549190921663ffffffff1991909116179055611de483612701565b611def6000336127ae565b611e0b60008051602061514183398151915285600001516127ae565b61013654611e21906001600160a01b0316612bb8565b8015611e67576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b610136546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190611ea39030906004016146a6565b602060405180830381865afa158015611ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee49190614ce3565b61013754909150600090611efe9063ffffffff1683614c59565b90506000606461013a600201546069611f179190614acb565b611f219190614c59565b821180611f505750611f31610aea565b61013e54611f3f9190614a9b565b61013c54611f4d9190614acb565b83105b61013c5461013e5491925090600090611f67610aea565b611f72906001614ae2565b101580611f7c5750825b15611f985761013754611f959063ffffffff1686614c59565b91505b6101385461013f54611fe89190611fd99061271090611fb990612904614acb565b611fc39190614c59565b61013754600160401b900463ffffffff16612d5a565b611fe39085614c59565b612d71565b9695505050505050565b611ffb82610e94565b6120048161230b565b610edf8383612514565b6060600061201e87890189614b66565b50905061202d8b828686612d80565b9b9a5050505050505050505050565b60975460405163b2f918a160e01b8152609b546004820152609c546024820152609d546044820152609e546001600160a01b03818116606484015260a09190911d600b0b608483015290911660a482015260009081908190819073__$0d78a42341742155da77b97d7f993534c7$__9063b2f918a19060c401608060405180830381865af41580156120d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f69190614cfc565b935093509350935090919293565b610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b46906121369086906004016146a6565b602060405180830381865afa158015612153573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121779190614aae565b90506001600160a01b0381166121a25782604051630b7b234960e01b8152600401610c3191906146a6565b610134546001600160a01b0316158015906121d257506121d060008051602061518883398151915284611a1b565b155b156121f2578260405163130f4a3760e11b8152600401610c3191906146a6565b60006121fc612dce565b61013a546001600160a01b03841660009081526101416020526040902054919250900361223e5781604051631fc1cabf60e31b8152600401610c3191906146a6565b61013a546001600160a01b0383166000908152610141602052604081209190915561013f805460019290612273908490614ae2565b9091555050610140805482919060009061228e908490614ae2565b909155506122b89050836122a257846122a4565b825b610136546001600160a01b03169083613049565b836001600160a01b0316826001600160a01b03167f1c0764b87f885ff7e1be5f7c06a0cc99c5bdc0f7b4884440e6ebe5b12bfd511d836040516122fd91815260200190565b60405180910390a350505050565b6110e6813361309f565b600080516020615188833981519152820361240f576101435460405163329b55b760e21b81526001600160a01b039091169063ca6d56dc9061235b9084906004016146a6565b600060405180830381600087803b15801561237557600080fd5b505af1158015612389573d6000803e3d6000fd5b50506101395463ffffffff16158015925090506123b55750610139546101425463ffffffff9182169116115b156123d357604051632263c94160e01b815260040160405180910390fd5b6101428054600191906000906123f090849063ffffffff16614d47565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b610b3d82826130f8565b6060610f9c8686600b0b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061295a92505050565b604051635b69006f60e11b81526000805160206150e183398151915260048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6d200de90602401602060405180830381865afa1580156124d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f99190614aae565b6001600160a01b0316826001600160a01b0316149050919050565b60008051602061518883398151915282036125655761014280546001919060009061254690849063ffffffff16614d6b565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b610b3d828261317e565b600080516020615121833981519152546001600160a01b031690565b6000610b3d8161230b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125c957610edf836131e5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612623575060408051601f3d908101601f1916820190925261262091810190614ce3565b60015b6126865760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c31565b60008051602061512183398151915281146126f55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c31565b50610edf83838361327f565b602081015163ffffffff16158061271d5750805163ffffffff16155b806127305750604081015163ffffffff16155b8061273d57506080810151155b156110e657604051631e597d8360e11b815260040160405180910390fd5b60606127a28786600b0b8686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061295a92505050565b98975050505050505050565b610b3d8282612315565b60008060008060006127c9886132a4565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e888906127fd908b908b908b90600401614d88565b608060405180830381865afa15801561281a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283e9190614dab565b929b919a509850909650945050505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916128b49190614de9565b6000604051808303816000865af19150503d80600081146128f1576040519150601f19603f3d011682016040523d82523d6000602084013e6128f6565b606091505b50915091508180156129205750805115806129205750808060200190518101906129209190614cc6565b6129525760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401610c31565b505050505050565b8051819015156129758161296e5785613413565b6000613413565b60975460009061298f906001600160a01b031688306135af565b6001600160a01b0388166000908152609860205260409020549091508215612aea57600082600b0b1380156129cc57506459df649400600b83900b125b156129ef57604051624963df60e91b8152600b83900b6004820152602401610c31565b6001600160a01b038816600090815260986020526040902060010180546001600160e01b031916600160601b426001600160801b038116919091026001600160601b031916919091176001600160601b03851617909155612a51908790614a9b565b612a64906001600160601b038916614acb565b6001600160a01b03891660009081526098602052604081208054909190612a8c908490614ae2565b90915550612aa59050612a9f8884614e05565b8661363d565b609754909450612abe906001600160a01b0316306138b4565b609e80546001600160601b0392909216600160a01b026001600160a01b03909216919091179055612b21565b6001600160a01b03881660009081526098602052604081208054899290612b12908490614ae2565b90915550612b21905087613933565b6001600160a01b0388166000818152609860205260409020547f6342e11b65ccb38a3bb259be9cda846c74ad52b36b62a2ee4799dc3db63a04a390839086612b6a576000612b6c565b8a5b604080519384526020840192909252600b90810b8383015286900b60608301528615156080830152519081900360a00190a2505050949350505050565b6001600160a01b03163b151590565b6001600160a01b038116612bdf5760405163538ba4f960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b03838116919091179091556040516315a722b960e31b8152600160048201819052917f0000000000000000000000000000000000000000000000000000000000000000169063ad3915c890602401600060405180830381600087803b158015612c5c57600080fd5b505af1158015612c70573d6000803e3d6000fd5b50506040805180820182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168082529151635b69006f60e11b81526000805160206150e1833981519152600482015290935060208401925063b6d200de90602401602060405180830381865afa158015612cf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1b9190614aae565b6001600160a01b039081169091528151609980546001600160a01b0319908116928416929092179055602090920151609a805490931691161790555050565b600081831015612d6a5781610cf8565b5090919050565b6000818310612d6a5781610cf8565b6060612dc58460008086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061295a92505050565b95945050505050565b600080612dd9611224565b6101375461013a54919250612dfc91600160201b90910463ffffffff1690614ae2565b8111156130405761013a81905561013754610136546040516370a0823160e01b815263ffffffff909216916000916001600160a01b0316906370a0823190612e489030906004016146a6565b602060405180830381865afa158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190614ce3565b90506000612e9d63ffffffff841683614c59565b90506000606461013a600201546069612eb69190614acb565b612ec09190614c59565b821180612ef15750612ed0610aea565b612ee09063ffffffff8616614a9b565b61013c54612eee9190614acb565b83105b61013e54909150612f00610aea565b101580612f0a5750805b15612f705761013c82905563ffffffff841661013e81905561013d86905560408051878152602081018690528082019290925260608201849052517f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9181900360800190a15b61013f5461013854612f9c90612f8e612710611fb985612904614acb565b61013c54611fe39190614c59565b61013b55612fae611fc3600283614c59565b610137805463ffffffff92909216600160401b0263ffffffff60401b1990921691909117905561013b5461013f5461014054604080518a815260208101949094524390840152606083019190915260808201527fdd2b882b89647cd6c5641ce6ab9d46f1c17865d2b22f065850f30f83cc7d8cf89060a00160405180910390a15050600061013f819055610140555050505b505061013b5490565b610edf8363a9059cbb60e01b8484604051602401613068929190614e32565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613a6f565b6130a98282611a1b565b610b3d576130b681613b41565b6130c1836020613b53565b6040516020016130d2929190614e4b565b60408051601f198184030181529082905262461bcd60e51b8252610c3191600401614568565b6131028282611a1b565b610b3d5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561313a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6131888282611a1b565b15610b3d5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6131ee81612ba9565b6132505760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c31565b60008051602061512183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61328883613cee565b6000825111806132955750805b15610edf57611e678383613d2e565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a546001600160a01b0381166133e2576001600160a01b03821661336957826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133669190614aae565b91505b604051635b69006f60e11b81526000805160206150e183398151915260048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa1580156133bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133df9190614aae565b90505b6001600160a01b0382166133f8576133f8614eba565b6001600160a01b03811661340e5761340e614eba565b915091565b609d546134209042614a9b565b609e5461343d9190600160a01b90046001600160601b0316614acb565b609b805460009061344f908490614ae2565b9091555060009050806134606115e0565b6001600160a01b031614613539576134766115e0565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134d79190614ed0565b63ffffffff169050609b60020154426134f09190614a9b565b609e5460975461350e916001600160a01b03918216913091166135af565b6001600160601b03166135219190614acb565b609c8054600090613533908490614ae2565b90915550505b81156135a75761271061354c8282614a9b565b6135569084614acb565b6135609190614c59565b609b8054600090613572908490614ae2565b9091555061271090506135858284614acb565b61358f9190614c59565b609c80546000906135a1908490614ae2565b90915550505b505042609d55565b6000806135bb856132a4565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e888906135ef90889088908890600401614d88565b608060405180830381865afa15801561360c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136309190614dab565b5090979650505050505050565b8060006136486115e0565b6001600160a01b031614610ae45760006136606115e0565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa15801561369d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c19190614aae565b609e546097549192506000916136e5916001600160a01b03918216913091166135af565b609e549091506000906001600160a01b038481169116146137635750609e546001906001600160a01b03161561374757600082600b0b131561374757609e5460975461374491609991879130916001600160a01b039182169116613e17565b93505b609e80546001600160a01b0319166001600160a01b0385161790555b6001600160a01b03831661377957505050610ae4565b60006127106137866115e0565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137e79190614ed0565b6137f49060030b89614eed565b6137fe9190614f0d565b9050600061380c8285614f4b565b9050600081600b0b13158015613820575082155b1561384a57609754613843906099908890309089906001600160a01b0316613e17565b95506138a9565b600084600b0b13801561385b575082155b1561387d5760975461384390609990889088906001600160a01b031685613e3c565b600081600b0b13156138a9576097546138a690609990889088906001600160a01b031685613e61565b95505b505050505092915050565b6000806138c0846132a4565b60405163e8e7e2d160e01b81529092506001600160a01b038316915063e8e7e2d1906138f29087908790600401614a6b565b602060405180830381865afa15801561390f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b869190614f78565b600061393d6115e0565b6001600160a01b03160361394e5750565b60006139586115e0565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139b99190614aae565b90506001600160a01b0381166139cd575050565b60006127106139da6115e0565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3b9190614ed0565b613a4b9063ffffffff1685614acb565b613a559190614c59565b609754909150610edf906001600160a01b03168383613e86565b6000613ac4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613f909092919063ffffffff16565b805190915015610edf5780806020019051810190613ae29190614cc6565b610edf5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610c31565b6060610ae46001600160a01b03831660145b60606000613b62836002614acb565b613b6d906002614ae2565b6001600160401b03811115613b8457613b84614359565b6040519080825280601f01601f191660200182016040528015613bae576020820181803683370190505b509050600360fc1b81600081518110613bc957613bc9614f95565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613bf857613bf8614f95565b60200101906001600160f81b031916908160001a9053506000613c1c846002614acb565b613c27906001614ae2565b90505b6001811115613c9f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613c5b57613c5b614f95565b1a60f81b828281518110613c7157613c71614f95565b60200101906001600160f81b031916908160001a90535060049490941c93613c9881614fab565b9050613c2a565b508315610cf85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c31565b613cf7816131e5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060613d3983612ba9565b613d945760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610c31565b600080846001600160a01b031684604051613daf9190614de9565b600060405180830381855af49150503d8060008114613dea576040519150601f19603f3d011682016040523d82523d6000602084013e613def565b606091505b5091509150612dc5828260405180606001604052806027815260200161516160279139613f9f565b604080516000815260208101909152606090611fe89087908790879087908790613fb8565b604080516000815260208101909152606090611fe890879087908790879087906140a1565b604080516000815260208101909152606090611fe89087908790879087908790614108565b600080846001600160a01b031663a9059cbb60e01b8585604051602401613eae929190614e32565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051613eec9190614de9565b6000604051808303816000865af19150503d8060008114613f29576040519150601f19603f3d011682016040523d82523d6000602084013e613f2e565b606091505b5091509150818015613f58575080511580613f58575080806020019051810190613f589190614cc6565b613f895760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610c31565b5050505050565b6060611b868484600085614135565b60608315613fae575081610cf8565b610cf88383614205565b855460018701546040805160008152602081019091526060926001600160a01b0390811692634329d29392911690819063b4b333c6906140019089908c908c9060448101614c92565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519185901b6001600160e01b031916825261404e9392509087908c90600401614fc2565b6000604051808303816000875af115801561406d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526140959190810190615051565b50979650505050505050565b855460018701546060916001600160a01b0390811691634329d2939116806350209a62888a8960005b6040519080825280601f01601f1916602001820160405280156140f4576020820181803683370190505b5060405160240161400194939291906150aa565b855460018701546060916001600160a01b0390811691634329d2939116806362fc305e888a8960006140ca565b6060824710156141965760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610c31565b600080866001600160a01b031685876040516141b29190614de9565b60006040518083038185875af1925050503d80600081146141ef576040519150601f19603f3d011682016040523d82523d6000602084013e6141f4565b606091505b5091509150610f9c8783838761422f565b8151156142155781518083602001fd5b8060405162461bcd60e51b8152600401610c319190614568565b6060831561429c5782516000036142955761424985612ba9565b6142955760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c31565b5081611b86565b611b868383614205565b6000602082840312156142b857600080fd5b81356001600160e01b031981168114610cf857600080fd5b6001600160a01b03811681146110e657600080fd5b80356142f0816142d0565b919050565b80151581146110e657600080fd5b6000806040838503121561431657600080fd5b8235614321816142d0565b91506020830135614331816142f5565b809150509250929050565b60006020828403121561434e57600080fd5b8135610cf8816142d0565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561439157614391614359565b60405290565b604051601f8201601f191681016001600160401b03811182821017156143bf576143bf614359565b604052919050565b60006001600160401b038211156143e0576143e0614359565b50601f01601f191660200190565b600082601f8301126143ff57600080fd5b813561441261440d826143c7565b614397565b81815284602083860101111561442757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561445957600080fd5b83356001600160401b038082111561447057600080fd5b9085019060a0828803121561448457600080fd5b61448c61436f565b8235614497816142d0565b808252506020830135602082015260408301356040820152606083013560608201526080830135828111156144cb57600080fd5b6144d7898286016143ee565b60808301525094506144eb602087016142e5565b9350604086013591508082111561450157600080fd5b5061450e868287016143ee565b9150509250925092565b60005b8381101561453357818101518382015260200161451b565b50506000910152565b60008151808452614554816020860160208601614518565b601f01601f19169290920160200192915050565b602081526000610cf8602083018461453c565b60008083601f84011261458d57600080fd5b5081356001600160401b038111156145a457600080fd5b6020830191508360208285010111156145bc57600080fd5b9250929050565b600080600080600080600080600060c08a8c0312156145e157600080fd5b89356145ec816142d0565b985060208a01356145fc816142d0565b975060408a0135965060608a01356001600160401b038082111561461f57600080fd5b61462b8d838e0161457b565b909850965060808c013591508082111561464457600080fd5b6146508d838e0161457b565b909650945060a08c013591508082111561466957600080fd5b506146768c828d0161457b565b915080935050809150509295985092959850929598565b60006020828403121561469f57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080604083850312156146cd57600080fd5b823591506020830135614331816142d0565b600080600080600080600060a0888a0312156146fa57600080fd5b8735614705816142d0565b96506020880135614715816142d0565b95506040880135945060608801356001600160401b038082111561473857600080fd5b6147448b838c0161457b565b909650945060808a013591508082111561475d57600080fd5b5061476a8a828b0161457b565b989b979a50959850939692959293505050565b63ffffffff811681146110e657600080fd5b600060c082840312156147a157600080fd5b60405160c081016001600160401b03811182821017156147c3576147c3614359565b60405290508082356147d48161477d565b815260208301356147e48161477d565b602082015260408301356147f78161477d565b6040820152606083013561480a816142f5565b60608201526080838101359082015260a08301356148278161477d565b60a0919091015292915050565b600060c0828403121561484657600080fd5b610cf8838361478f565b6000806040838503121561486357600080fd5b823561486e816142d0565b915060208301356001600160401b0381111561488957600080fd5b614895858286016143ee565b9150509250929050565b6000608082840312156148b157600080fd5b604051608081016001600160401b03811182821017156148d3576148d3614359565b60405290508082356148e4816142d0565b815260208301356148f4816142d0565b60208201526040830135614907816142d0565b6040820152606083013561491a816142d0565b6060919091015292915050565b60006080828403121561493957600080fd5b610cf8838361489f565b60008060006060848603121561495857600080fd5b8335614963816142d0565b92506020840135915060408401356001600160401b0381111561498557600080fd5b61450e868287016143ee565b600080600080606085870312156149a757600080fd5b84356149b2816142d0565b93506020850135925060408501356001600160401b038111156149d457600080fd5b6149e08782880161457b565b95989497509550505050565b6000602082840312156149fe57600080fd5b81356001600160401b03811115614a1457600080fd5b611b86848285016143ee565b60008060006101608486031215614a3657600080fd5b614a40858561489f565b9250614a4f856080860161478f565b9150610140840135614a60816142d0565b809150509250925092565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610ae457610ae4614a85565b600060208284031215614ac057600080fd5b8151610cf8816142d0565b8082028115828204841417610ae457610ae4614a85565b80820180821115610ae457610ae4614a85565b600060018060a01b03808716835260806020840152808651166080840152602086015160a0840152604086015160c0840152606086015160e0840152608086015160a0610100850152614b4c61012085018261453c565b958216604085015250929092166060909101525092915050565b60008060408385031215614b7957600080fd5b8235614b84816142d0565b91506020830135614331816142d0565b80600b0b81146110e657600080fd5b60008060408385031215614bb657600080fd5b8235614bc181614b94565b946020939093013593505050565b6020808252602c9082015260008051602061510183398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061510183398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b600082614c6857614c68614c43565b500490565b60008060408385031215614c8057600080fd5b82359150602083013561433181614b94565b6001600160a01b038581168252848116602083015283166040820152608060608201819052600090611fe89083018461453c565b600060208284031215614cd857600080fd5b8151610cf8816142f5565b600060208284031215614cf557600080fd5b5051919050565b60008060008060808587031215614d1257600080fd5b84519350602085015192506040850151614d2b81614b94565b6060860151909250614d3c81614b94565b939692955090935050565b63ffffffff818116838216019080821115614d6457614d64614a85565b5092915050565b63ffffffff828116828216039080821115614d6457614d64614a85565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60008060008060808587031215614dc157600080fd5b845193506020850151614dd381614b94565b6040860151606090960151949790965092505050565b60008251614dfb818460208701614518565b9190910192915050565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610ae457610ae4614a85565b6001600160a01b03929092168252602082015260400190565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351614e7d816017850160208801614518565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614eae816028840160208801614518565b01602801949350505050565b634e487b7160e01b600052600160045260246000fd5b600060208284031215614ee257600080fd5b8151610cf88161477d565b600082600b0b82600b0b0280600b0b9150808214614d6457614d64614a85565b600081600b0b83600b0b80614f2457614f24614c43565b60016001605f1b0319821460001982141615614f4257614f42614a85565b90059392505050565b600b81810b9083900b0160016001605f1b03811360016001605f1b031982121715610ae457610ae4614a85565b600060208284031215614f8a57600080fd5b8151610cf881614b94565b634e487b7160e01b600052603260045260246000fd5b600081614fba57614fba614a85565b506000190190565b6001600160a01b0385168152608060208201819052600090614fe69083018661453c565b8281036040840152614ff8818661453c565b90508281036060840152610f9c818561453c565b600082601f83011261501d57600080fd5b815161502b61440d826143c7565b81815284602083860101111561504057600080fd5b611b86826020830160208701614518565b6000806040838503121561506457600080fd5b82516001600160401b038082111561507b57600080fd5b6150878683870161500c565b9350602085015191508082111561509d57600080fd5b506148958582860161500c565b6001600160a01b03858116825284166020820152600b83900b6040820152608060608201819052600090611fe89083018461453c56fea9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd346756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564829b824e2329e205435d941c9f13baf578548505283d29261236d8e6596d4636a26469706673582212206ac9c6b0234eafa9106723d70a842962fadba8fdc94bef9e3830dfc3b9da46c264736f6c63430008130033";
1837
+ "0x60e06040523060c0523480156200001557600080fd5b506040516200522f3803806200522f833981016040819052620000389162000098565b6001600160a01b038216608081905282908290620000695760405163538ba4f960e01b815260040160405180910390fd5b6001600160a01b031660a05250620000d7915050565b6001600160a01b03811681146200009557600080fd5b50565b60008060408385031215620000ac57600080fd5b8251620000b9816200007f565b6020840151909250620000cc816200007f565b809150509250929050565b60805160a05160c0516150b86200017760003960008181610fb901528181610ff9015281816112020152818161124201526112ba0152600081816108b901528181610d350152612230015260008181610acd01528181610cb701528181610e7f01528181611368015281816115890152818161192201528181611ce1015281816121460152818161284d01528181612c7e0152612ce301526150b86000f3fe60806040526004361061025a5760003560e01c806301ffc9a71461025f5780630b1ca49a146102945780630c710776146102b65780630ce82d67146102e25780630e0cc1b9146103055780631a2a84b3146103255780631a787f2e146103455780631db128c714610365578063200d2ed214610392578063230dbd2914610414578063248a9ca314610434578063298052df146104545780632b4116f7146104695780632f2ff15d1461049657806330d9c915146104b657806336568abe146104d65780633659cfe6146104f65780633e6968b61461051657806342df82cb1461052b5780634e71d92d1461054b5780634f1ef2861461056057806352d1902d1461057357806353c11f9914610588578063598f8fbf146105a85780635a4c5152146105c85780635ab1bd531461065f5780635f9e7d77146106745780636180c79314610694578063647c75e2146106b457806372ca8a3e1461072557806373b2e80e146107455780637b10399914610765578063884d1f40146107865780638d7c4cca146107a657806391d14854146107c657806398d6621b146107e65780639f8fddd2146107fb578063a10f469e1461081b578063a217fddf1461083d578063a4c0ed3614610852578063ae82720014610872578063bcb4546f14610885578063c31c9c07146108a7578063c7713870146108db578063d3112b2e146108f0578063d547741f14610925578063d80528ae14610945578063d86ed3e5146109b1578063dc61d5c2146109d1578063def482a414610a0f578063e06174e414610a2f578063ec87621c14610a99578063f437bc5914610abb575b600080fd5b34801561026b57600080fd5b5061027f61027a3660046141a8565b610aef565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102b46102af3660046141e7565b610b26565b005b3480156102c257600080fd5b506102cf6459df64940081565b604051600b9190910b815260200161028b565b3480156102ee57600080fd5b506102f7610b5a565b60405190815260200161028b565b34801561031157600080fd5b506102b4610320366004614222565b610b78565b34801561033157600080fd5b506102f76103403660046141e7565b610bad565b34801561035157600080fd5b506102f76103603660046141e7565b610c4d565b34801561037157600080fd5b506103856103803660046143b6565b610c95565b60405161028b919061447d565b34801561039e57600080fd5b5061013a5461013b5461013c5461013d5461013e5461013f5461014054610142546103d3979695949392919063ffffffff1688565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015263ffffffff1660e08201526101000161028b565b34801561042057600080fd5b5061038561042f3660046144d8565b610db6565b34801561044057600080fd5b506102f761044f3660046145a2565b610dfd565b34801561046057600080fd5b506102f7610e12565b34801561047557600080fd5b50609754610489906001600160a01b031681565b60405161028b91906145bb565b3480156104a257600080fd5b506102b46104b13660046145cf565b610e51565b3480156104c257600080fd5b506103856104d13660046145f4565b610e72565b3480156104e257600080fd5b506102b46104f13660046145cf565b610f35565b34801561050257600080fd5b506102b46105113660046141e7565b610faf565b34801561052257600080fd5b506102f7611077565b34801561053757600080fd5b506102b4610546366004614762565b611093565b34801561055757600080fd5b506102b46111eb565b6102b461056e36600461477e565b6111f8565b34801561057f57600080fd5b506102f76112ad565b34801561059457600080fd5b506103856105a33660046144d8565b61135b565b3480156105b457600080fd5b506102b46105c3366004614855565b611438565b3480156105d457600080fd5b5061013754610138546101395461061a9263ffffffff80821693600160201b808404831694600160401b850484169460ff600160601b9091048116948216929091041687565b6040805163ffffffff98891681529688166020880152948716948601949094529115156060850152608084015290921660a082015290151560c082015260e00161028b565b34801561066b57600080fd5b5061048961156c565b34801561068057600080fd5b5061038561068f3660046145f4565b61157c565b3480156106a057600080fd5b5061027f6106af36600461477e565b611661565b3480156106c057600080fd5b506106fe6106cf3660046141e7565b60986020526000908152604090208054600190910154600b81900b90600160601b90046001600160801b031683565b60408051938452600b9290920b60208401526001600160801b03169082015260600161028b565b34801561073157600080fd5b5061027f6107403660046141e7565b61185e565b34801561075157600080fd5b5061027f6107603660046141e7565b611872565b34801561077157600080fd5b5061014354610489906001600160a01b031681565b34801561079257600080fd5b506103856107a13660046145f4565b611915565b3480156107b257600080fd5b506102b46107c1366004614871565b611a12565b3480156107d257600080fd5b5061027f6107e13660046145cf565b611c89565b3480156107f257600080fd5b506102f7611cb4565b34801561080757600080fd5b506103856108163660046148bc565b611cbf565b34801561082757600080fd5b506102f760008051602061506383398151915281565b34801561084957600080fd5b506102f7600081565b34801561085e57600080fd5b5061027f61086d36600461490a565b611d79565b6102b4610880366004614965565b611df2565b34801561089157600080fd5b506102f7600080516020614fbc83398151915281565b3480156108b357600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b3480156108e757600080fd5b506102f7611e78565b3480156108fc57600080fd5b50609954609a54610917916001600160a01b03908116911682565b60405161028b929190614999565b34801561093157600080fd5b506102b46109403660046145cf565b612012565b34801561095157600080fd5b50609b54609c54609d54609e5461097d939291906001600160a01b03811690600160a01b9004600b0b85565b604080519586526020860194909452928401919091526001600160a01b03166060830152600b0b608082015260a00161028b565b3480156109bd57600080fd5b506103856109cc3660046144d8565b61202e565b3480156109dd57600080fd5b506109e661205c565b604080519485526020850193909352600b91820b928401929092520b606082015260800161028b565b348015610a1b57600080fd5b50610385610a2a3660046149b3565b612124565b348015610a3b57600080fd5b5061013354610134546101355461013654610a66936001600160a01b03908116938116928116911684565b604080516001600160a01b039586168152938516602085015291841691830191909152909116606082015260800161028b565b348015610aa557600080fd5b506102f760008051602061501c83398151915281565b348015610ac757600080fd5b506104897f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216637965db0b60e01b1480610b2057506301ffc9a760e01b6001600160e01b03198316145b92915050565b60008051602061501c833981519152610b3e81612377565b610b5660008051602061506383398151915283612381565b5050565b61013d54600090610b69611077565b610b739190614a27565b905090565b61013754600160601b900460ff16610ba3576040516369973f2560e11b815260040160405180910390fd5b610b568282612461565b6001600160a01b0381166000908152609860209081526040808320815160608101835281548152600190910154600b81900b938201849052600160601b90046001600160801b031691810191909152908203610c0a575192915050565b6040810151610c22906001600160801b031642614a27565b81602001516001600160601b0316610c3a9190614a3a565b8151610c469190614a51565b9392505050565b6000610c57611077565b61013a54148015610c6a575061013b5415155b15610c8d57610c7882611872565b610c855761013b54610b20565b600092915050565b610b20611e78565b606082336001600160a01b03821614801590610cda5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610d03573360405163087231bf60e31b8152600401610cfa91906145bb565b60405180910390fd5b6097546040516358c0dacb60e01b815273__$0d78a42341742155da77b97d7f993534c7$__916358c0dacb91610d6b917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b0316908a90600401614aa9565b602060405180830381865af4158015610d88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dac9190614ae4565b5091949350505050565b60606000610dc687890189614afd565b509050600080610dd887890189614b3a565b91509150610dea8d8484848a8a6126ba565b93505050505b9998505050505050505050565b60009081526065602052604090206001015490565b61013754600090600160201b900463ffffffff16610e2e611077565b610e389190614a51565b610e459062015180614a3a565b610b739061a8c0614a51565b610e5a82610dfd565b610e6381612377565b610e6d8383612701565b505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ebd57604051632f2d36a760e01b815260040160405180910390fd5b610ec687612827565b610ee95750604080518082019091526002815261060f60f31b6020820152610f2a565b610ef28861185e565b610f0f57604051631ea25bab60e31b815260040160405180910390fd5b50604080518082019091526002815261060f60f31b60208201525b979650505050505050565b6001600160a01b0381163314610fa55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610cfa565b610b568282612381565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ff75760405162461bcd60e51b8152600401610cfa90614b66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110296128db565b6001600160a01b03161461104f5760405162461bcd60e51b8152600401610cfa90614ba0565b611058816128f7565b6040805160008082526020820190925261107491839190612902565b50565b60006201518061108961a8c042614a27565b610b739190614bda565b60008051602061501c8339815191526110ab81612377565b6110b482612a6d565b81516101378054602085015160408087015160608801511515600160601b0260ff60601b1963ffffffff928316600160401b021664ffffffffff60401b19948316600160201b9081026001600160401b0319909716988416989098179590951793909316939093179190911790925560808501516101385560a0850151610139805460c0880151151590950264ffffffffff19909516919092161792909217909155517f9c2d0f3e240667c2b704104ff988af37be9eb4befb81fe00424626b088ee7579906111df908490600060e08201905063ffffffff808451168352806020850151166020840152806040850151166040840152606084015115156060840152608084015160808401528060a08501511660a08401525060c0830151151560c083015292915050565b60405180910390a15050565b6111f6336001612461565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112405760405162461bcd60e51b8152600401610cfa90614b66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112726128db565b6001600160a01b0316146112985760405162461bcd60e51b8152600401610cfa90614ba0565b6112a1826128f7565b610b5682826001612902565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113485760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610cfa565b50600080516020614ffc83398151915290565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614158061139b575061139989612827565b155b806113ac57506113aa8a61185e565b155b156113f05782828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610df092505050565b6000806113ff888a018a614afd565b9092509050600080611413888a018a614bfc565b915091506114268e858584868c8c612ac7565b9e9d5050505050505050505050505050565b60008051602061501c83398151915261145081612377565b61145982612b1a565b6101335482516001600160a01b039081169116146114b357610133546114979060008051602061501c833981519152906001600160a01b0316612381565b6114b360008051602061501c8339815191528360000151612b6d565b815161013380546001600160a01b03199081166001600160a01b03938416908117909255602080860180516101348054851691871691909117905560408088018051610135805487169189169190911790556060808a0180516101368054909816908a16179096558251968752925187169386019390935291518516918401919091529051909216918101919091527fc5e56c36231b7247b96ddd6a7e47b60748a332bcb3a514d016fd2e74d9159351906080016111df565b610143546001600160a01b031690565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415806115bc57506115ba87612827565b155b806115cd57506115cb8861185e565b155b156115f15750604080518082019091526002815261060f60f31b6020820152610f2a565b60008061160086880188614afd565b909250905060008061161c6001600160a01b038d168585612b77565b5050915091508181604051602001611641929190918252600b0b602082015260400190565b604051602081830303815290604052945050505050979650505050505050565b610135546000906001600160a01b03161561171657610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b46906116a89087906004016145bb565b602060405180830381865afa1580156116c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e99190614c21565b90506001600160a01b0381166117145783604051630b7b234960e01b8152600401610cfa91906145bb565b505b610134546001600160a01b031615801590611746575061174460008051602061501c83398151915233611c89565b155b156117ee57610134546040516356a42afd60e11b81526001600160a01b039091169063ad4855fa90611782903090339088908890600401614c3e565b6020604051808303816000875af11580156117a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c59190614c72565b15156000036117e9578260405163130f4a3760e11b8152600401610cfa91906145bb565b61183d565b61013954600160201b900460ff16801561181d575061181b60008051602061501c83398151915233611c89565b155b1561183d5782604051636f6acad560e01b8152600401610cfa91906145bb565b61185560008051602061506383398151915284612701565b50600192915050565b6097546001600160a01b0390811691161490565b610135546040516316874da360e11b815260009182916001600160a01b0390911690632d0e9b46906118a89086906004016145bb565b602060405180830381865afa1580156118c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e99190614c21565b90506118f3611077565b6001600160a01b03909116600090815261014160205260409020541492915050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461196057604051632f2d36a760e01b815260040160405180910390fd5b61196987612827565b61198c5750604080518082019091526002815261060f60f31b6020820152610f2a565b6119958861185e565b6119b257604051631ea25bab60e31b815260040160405180910390fd5b60006119c085870187614afd565b5090506000806119da6001600160a01b038c168430612b77565b505060408051600b9290920b60208301528181019290925281518082038301815260609091019091529b9a5050505050505050505050565b600054610100900460ff1615808015611a325750600054600160ff909116105b80611a535750611a4130612c0f565b158015611a53575060005460ff166001145b611ab65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610cfa565b6000805460ff191660011790558015611ad9576000805461ff0019166101001790555b61014380546001600160a01b038085166001600160a01b0319928316179092558551610133805491841691831691909117905560208087015161013480549185169184169190911790556040808801516101358054918616918516919091179055606080890151610136805491909616941693909317909355855161013780549288015194880151938801511515600160601b0260ff60601b1963ffffffff958616600160401b021664ffffffffff60401b19968616600160201b9081026001600160401b03199096169487169490941794909417959095169290921793909317905560808501516101385560a0850151610139805460c0880151151590940264ffffffffff199094169190921617919091179055611bf784612b1a565b611c0083612a6d565b611c0b600033612b6d565b611c2760008051602061501c8339815191528560000151612b6d565b61013654611c3d906001600160a01b0316612c1e565b8015611c83576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610b7333610c4d565b606083336001600160a01b03821614801590611d045750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15611d24573360405163087231bf60e31b8152600401610cfa91906145bb565b83600003611d4557604051630f6fa54560e41b815260040160405180910390fd5b609754611d5d906001600160a01b0316863087612dc0565b610dac8585600060405180602001604052806000815250612eca565b6097546000906001600160a01b03163314611da757604051630ce706f760e41b815260040160405180910390fd5b83600003611dc857604051630f6fa54560e41b815260040160405180910390fd5b611de48585600060405180602001604052806000815250612eca565b50600190505b949350505050565b6101435460408051638abf607760e01b815290516000926001600160a01b031691638abf60779160048083019260209291908290030181865afa158015611e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e619190614c21565b9050611e6c816128f7565b610b5681836000612902565b610136546040516370a0823160e01b815260009182916001600160a01b03909116906370a0823190611eae9030906004016145bb565b602060405180830381865afa158015611ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eef9190614ae4565b61013754909150600090611f099063ffffffff1683614bda565b90506000606461013a600201546069611f229190614a3a565b611f2c9190614bda565b821180611f70575061013e54611f40610b5a565b11158015611f705750611f51610b5a565b61013e54611f5f9190614a27565b61013c54611f6d9190614a3a565b83105b61013c5461013e5491925090600090611f87610b5a565b611f92906001614a51565b101580611f9c5750825b15611fb85761013754611fb59063ffffffff1686614bda565b91505b6101385461013f546120089190611ff99061271090611fd990612904614a3a565b611fe39190614bda565b61013754600160401b900463ffffffff16613244565b6120039085614bda565b61325b565b9695505050505050565b61201b82610dfd565b61202481612377565b610e6d8383612381565b6060600061203e87890189614afd565b50905061204d8b82868661326a565b9b9a5050505050505050505050565b60975460405163b2f918a160e01b8152609b546004820152609c546024820152609d546044820152609e546001600160a01b03818116606484015260a09190911d600b0b608483015290911660a482015260009081908190819073__$0d78a42341742155da77b97d7f993534c7$__9063b2f918a19060c401608060405180830381865af41580156120f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121169190614c8f565b935093509350935090919293565b606083336001600160a01b038216148015906121695750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15612189573360405163087231bf60e31b8152600401610cfa91906145bb565b6097546040516370a0823160e01b81526000916001600160a01b0316906370a08231906121ba9030906004016145bb565b602060405180830381865afa1580156121d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fb9190614ae4565b6097546040516321437a5360e01b815291925073__$0d78a42341742155da77b97d7f993534c7$__916321437a539161226a917f0000000000000000000000000000000000000000000000000000000000000000918a916001600160a01b03909116908c903090600401614cda565b602060405180830381865af4158015612287573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ab9190614ae4565b506097546040516370a0823160e01b815260009183916001600160a01b03909116906370a08231906122e19030906004016145bb565b602060405180830381865afa1580156122fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123229190614ae4565b61232c9190614a27565b90508060000361234f57604051630f6fa54560e41b815260040160405180910390fd5b61236b8782600060405180602001604052806000815250612eca565b50939695505050505050565b61107481336132b8565b600080516020615063833981519152821480156123b157506123b160008051602061506383398151915282611c89565b15612457576101428054600191906000906123d390849063ffffffff16614d1b565b825463ffffffff9182166101009390930a9283029190920219909116179055506101435460405163058e524d60e11b81526001600160a01b0390911690630b1ca49a906124249084906004016145bb565b600060405180830381600087803b15801561243e57600080fd5b505af1158015612452573d6000803e3d6000fd5b505050505b610b568282613311565b610135546040516316874da360e11b81526000916001600160a01b031690632d0e9b46906124939086906004016145bb565b602060405180830381865afa1580156124b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d49190614c21565b90506001600160a01b0381166124ff5782604051630b7b234960e01b8152600401610cfa91906145bb565b6101395463ffffffff1615801590612522575061013954600160201b900460ff16155b1561253f5761253f60008051602061506383398151915284612701565b6101395463ffffffff16151580612560575061013954600160201b900460ff165b8015612581575061257f60008051602061506383398151915284611c89565b155b156125a1578260405163130f4a3760e11b8152600401610cfa91906145bb565b60006125ab613378565b61013a546001600160a01b0384166000908152610141602052604090205491925090036125ed5781604051631fc1cabf60e31b8152600401610cfa91906145bb565b61013a546001600160a01b0383166000908152610141602052604081209190915561013f805460019290612622908490614a51565b9091555050610140805482919060009061263d908490614a51565b909155506126679050836126515784612653565b825b610136546001600160a01b0316908361360a565b836001600160a01b0316826001600160a01b03167f1c0764b87f885ff7e1be5f7c06a0cc99c5bdc0f7b4884440e6ebe5b12bfd511d836040516126ac91815260200190565b60405180910390a350505050565b6060610f2a8686600b0b8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612eca92505050565b60008051602061506383398151915282148015612733575061273160008051602061506383398151915282611c89565b155b1561281d576101395463ffffffff161580159061275f5750610139546101425463ffffffff9182169116115b1561277d5760405163a079801760e01b815260040160405180910390fd5b6101435460405163329b55b760e21b81526001600160a01b039091169063ca6d56dc906127ae9084906004016145bb565b600060405180830381600087803b1580156127c857600080fd5b505af11580156127dc573d6000803e3d6000fd5b50506101428054600193509091506000906127fe90849063ffffffff16614d3f565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b610b568282613660565b604051635b69006f60e11b8152600080516020614fbc83398151915260048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063b6d200de90602401602060405180830381865afa15801561289c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c09190614c21565b6001600160a01b0316826001600160a01b0316149050919050565b600080516020614ffc833981519152546001600160a01b031690565b6000610b5681612377565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561293557610e6d836136e6565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561298f575060408051601f3d908101601f1916820190925261298c91810190614ae4565b60015b6129f25760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610cfa565b600080516020614ffc8339815191528114612a615760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610cfa565b50610e6d838383613780565b602081015163ffffffff161580612a895750805163ffffffff16155b80612a9c5750604081015163ffffffff16155b80612aa957506080810151155b1561107457604051631e597d8360e11b815260040160405180910390fd5b6060612b0e8786600b0b8686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612eca92505050565b98975050505050505050565b80516001600160a01b03161580612b3c575060408101516001600160a01b0316155b80612aa9575060608101516001600160a01b031661107457604051631e597d8360e11b815260040160405180910390fd5b610b568282612701565b6000806000806000612b88886137a5565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e88890612bbc908b908b908b90600401614d5c565b608060405180830381865afa158015612bd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bfd9190614d7f565b929b919a509850909650945050505050565b6001600160a01b03163b151590565b6001600160a01b038116612c455760405163538ba4f960e01b815260040160405180910390fd5b609780546001600160a01b0319166001600160a01b03838116919091179091556040516315a722b960e31b8152600160048201819052917f0000000000000000000000000000000000000000000000000000000000000000169063ad3915c890602401600060405180830381600087803b158015612cc257600080fd5b505af1158015612cd6573d6000803e3d6000fd5b50506040805180820182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168082529151635b69006f60e11b8152600080516020614fbc833981519152600482015290935060208401925063b6d200de90602401602060405180830381865afa158015612d5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d819190614c21565b6001600160a01b039081169091528151609980546001600160a01b0319908116928416929092179055602090920151609a805490931691161790555050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b1790529151600092839290881691612e249190614dbd565b6000604051808303816000865af19150503d8060008114612e61576040519150601f19603f3d011682016040523d82523d6000602084013e612e66565b606091505b5091509150818015612e90575080511580612e90575080806020019051810190612e909190614c72565b612ec25760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b6044820152606401610cfa565b505050505050565b8051609754829115159073__$0d78a42341742155da77b97d7f993534c7$__9063891d61cc90609b906001600160a01b0316612f0461156c565b85612f0f5789612f12565b60005b6040516001600160e01b031960e087901b16815260048101949094526001600160a01b03928316602485015291166044830152606482015260840160006040518083038186803b158015612f6557600080fd5b505af4158015612f79573d6000803e3d6000fd5b505060975460009250612f9791506001600160a01b03168830613914565b6001600160a01b038816600090815260986020526040902054909150821561318557600082600b0b138015612fd457506459df649400600b83900b125b15612ff757604051624963df60e91b8152600b83900b6004820152602401610cfa565b6001600160a01b038816600090815260986020526040902060010180546001600160e01b031916600160601b426001600160801b038116919091026001600160601b031916919091176001600160601b03851617909155613059908790614a27565b61306c906001600160601b038916614a3a565b6001600160a01b03891660009081526098602052604081208054909190613094908490614a51565b909155505060975473__$0d78a42341742155da77b97d7f993534c7$__90631f8f04bf90609990609b906001600160a01b03166130cf61156c565b6130d98d89614dd9565b8b6040518763ffffffff1660e01b81526004016130fb96959493929190614e06565b600060405180830381865af4158015613118573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131409190810190614e49565b609754909450613159906001600160a01b0316306139a2565b609e80546001600160601b0392909216600160a01b026001600160a01b039092169190911790556131bc565b6001600160a01b038816600090815260986020526040812080548992906131ad908490614a51565b909155506131bc905087613a21565b6001600160a01b0388166000818152609860205260409020547f6342e11b65ccb38a3bb259be9cda846c74ad52b36b62a2ee4799dc3db63a04a390839086613205576000613207565b8a5b604080519384526020840192909252600b90810b8383015286900b60608301528615156080830152519081900360a00190a2505050949350505050565b6000818310156132545781610c46565b5090919050565b60008183106132545781610c46565b60606132af8460008086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612eca92505050565b95945050505050565b6132c28282611c89565b610b56576132cf81613b5d565b6132da836020613b6f565b6040516020016132eb929190614eb6565b60408051601f198184030181529082905262461bcd60e51b8252610cfa9160040161447d565b61331b8282611c89565b15610b565760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080613383611077565b6101375461013a549192506133a691600160201b90910463ffffffff1690614a51565b81106136015761013a81905561013754610136546040516370a0823160e01b815263ffffffff909216916000916001600160a01b0316906370a08231906133f19030906004016145bb565b602060405180830381865afa15801561340e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134329190614ae4565b9050600061344663ffffffff841683614bda565b90506000606461013a60020154606961345f9190614a3a565b6134699190614bda565b8211806134b257508363ffffffff16613480610b5a565b111580156134b25750613491610b5a565b6134a19063ffffffff8616614a27565b61013c546134af9190614a3a565b83105b61013e549091506134c1610b5a565b1015806134cb5750805b156135315761013c82905563ffffffff841661013e81905561013d86905560408051878152602081018690528082019290925260608201849052517f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9181900360800190a15b61013f546101385461355d9061354f612710611fd985612904614a3a565b61013c546120039190614bda565b61013b5561356f611fe3600283614bda565b610137805463ffffffff92909216600160401b0263ffffffff60401b1990921691909117905561013b5461013f5461014054604080518a815260208101949094524390840152606083019190915260808201527fdd2b882b89647cd6c5641ce6ab9d46f1c17865d2b22f065850f30f83cc7d8cf89060a00160405180910390a15050600061013f819055610140555050505b505061013b5490565b610e6d8363a9059cbb60e01b8484604051602401613629929190614f25565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613d0a565b61366a8282611c89565b610b565760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556136a23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6136ef81612c0f565b6137515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610cfa565b600080516020614ffc83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61378983613ddc565b6000825111806137965750805b15610e6d57611c838383613e1c565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a546001600160a01b0381166138e3576001600160a01b03821661386a57826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015613843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138679190614c21565b91505b604051635b69006f60e11b8152600080516020614fbc83398151915260048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa1580156138bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138e09190614c21565b90505b6001600160a01b0382166138f9576138f9614f3e565b6001600160a01b03811661390f5761390f614f3e565b915091565b600080613920856137a5565b604051631cd43d1160e31b81529092506001600160a01b038316915063e6a1e8889061395490889088908890600401614d5c565b608060405180830381865afa158015613971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139959190614d7f565b5090979650505050505050565b6000806139ae846137a5565b60405163e8e7e2d160e01b81529092506001600160a01b038316915063e8e7e2d1906139e09087908790600401614999565b602060405180830381865afa1580156139fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dea9190614f54565b6000613a2b61156c565b6001600160a01b031603613a3c5750565b6000613a4661156c565b6001600160a01b031663469048406040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa79190614c21565b90506001600160a01b038116613abb575050565b6000612710613ac861156c565b6001600160a01b03166324a9d8536040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b299190614f71565b613b399063ffffffff1685614a3a565b613b439190614bda565b609754909150610e6d906001600160a01b03168383613f05565b6060610b206001600160a01b03831660145b60606000613b7e836002614a3a565b613b89906002614a51565b6001600160401b03811115613ba057613ba061425b565b6040519080825280601f01601f191660200182016040528015613bca576020820181803683370190505b509050600360fc1b81600081518110613be557613be5614f8e565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110613c1457613c14614f8e565b60200101906001600160f81b031916908160001a9053506000613c38846002614a3a565b613c43906001614a51565b90505b6001811115613cbb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110613c7757613c77614f8e565b1a60f81b828281518110613c8d57613c8d614f8e565b60200101906001600160f81b031916908160001a90535060049490941c93613cb481614fa4565b9050613c46565b508315610c465760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610cfa565b6000613d5f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661400f9092919063ffffffff16565b805190915015610e6d5780806020019051810190613d7d9190614c72565b610e6d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610cfa565b613de5816136e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060613e2783612c0f565b613e825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610cfa565b600080846001600160a01b031684604051613e9d9190614dbd565b600060405180830381855af49150503d8060008114613ed8576040519150601f19603f3d011682016040523d82523d6000602084013e613edd565b606091505b50915091506132af828260405180606001604052806027815260200161503c6027913961401e565b600080846001600160a01b031663a9059cbb60e01b8585604051602401613f2d929190614f25565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051613f6b9190614dbd565b6000604051808303816000865af19150503d8060008114613fa8576040519150601f19603f3d011682016040523d82523d6000602084013e613fad565b606091505b5091509150818015613fd7575080511580613fd7575080806020019051810190613fd79190614c72565b6140085760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610cfa565b5050505050565b6060611dea8484600085614037565b6060831561402d575081610c46565b610c468383614107565b6060824710156140985760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610cfa565b600080866001600160a01b031685876040516140b49190614dbd565b60006040518083038185875af1925050503d80600081146140f1576040519150601f19603f3d011682016040523d82523d6000602084013e6140f6565b606091505b5091509150610f2a87838387614131565b8151156141175781518083602001fd5b8060405162461bcd60e51b8152600401610cfa919061447d565b6060831561419e5782516000036141975761414b85612c0f565b6141975760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cfa565b5081611dea565b611dea8383614107565b6000602082840312156141ba57600080fd5b81356001600160e01b031981168114610c4657600080fd5b6001600160a01b038116811461107457600080fd5b6000602082840312156141f957600080fd5b8135610c46816141d2565b801515811461107457600080fd5b803561421d81614204565b919050565b6000806040838503121561423557600080fd5b8235614240816141d2565b9150602083013561425081614204565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156142995761429961425b565b604052919050565b60006001600160401b038211156142ba576142ba61425b565b50601f01601f191660200190565b600082601f8301126142d957600080fd5b81356142ec6142e7826142a1565b614271565b81815284602083860101111561430157600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561433057600080fd5b60405160a081016001600160401b0380821183831017156143535761435361425b565b8160405282935084359150614367826141d2565b818352602085013560208401526040850135604084015260608501356060840152608085013591508082111561439c57600080fd5b506143a9858286016142c8565b6080830152505092915050565b6000806000606084860312156143cb57600080fd5b83356001600160401b03808211156143e257600080fd5b6143ee8783880161431e565b945060208601359150614400826141d2565b9092506040850135908082111561441657600080fd5b50614423868287016142c8565b9150509250925092565b60005b83811015614448578181015183820152602001614430565b50506000910152565b6000815180845261446981602086016020860161442d565b601f01601f19169290920160200192915050565b602081526000610c466020830184614451565b60008083601f8401126144a257600080fd5b5081356001600160401b038111156144b957600080fd5b6020830191508360208285010111156144d157600080fd5b9250929050565b600080600080600080600080600060c08a8c0312156144f657600080fd5b8935614501816141d2565b985060208a0135614511816141d2565b975060408a0135965060608a01356001600160401b038082111561453457600080fd5b6145408d838e01614490565b909850965060808c013591508082111561455957600080fd5b6145658d838e01614490565b909650945060a08c013591508082111561457e57600080fd5b5061458b8c828d01614490565b915080935050809150509295985092959850929598565b6000602082840312156145b457600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080604083850312156145e257600080fd5b823591506020830135614250816141d2565b600080600080600080600060a0888a03121561460f57600080fd5b873561461a816141d2565b9650602088013561462a816141d2565b95506040880135945060608801356001600160401b038082111561464d57600080fd5b6146598b838c01614490565b909650945060808a013591508082111561467257600080fd5b5061467f8a828b01614490565b989b979a50959850939692959293505050565b63ffffffff8116811461107457600080fd5b803561421d81614692565b600060e082840312156146c157600080fd5b60405160e081016001600160401b03811182821017156146e3576146e361425b565b60405290508082356146f481614692565b8152602083013561470481614692565b6020820152604083013561471781614692565b6040820152606083013561472a81614204565b60608201526080838101359082015261474560a084016146a4565b60a082015261475660c08401614212565b60c08201525092915050565b600060e0828403121561477457600080fd5b610c4683836146af565b6000806040838503121561479157600080fd5b823561479c816141d2565b915060208301356001600160401b038111156147b757600080fd5b6147c3858286016142c8565b9150509250929050565b6000608082840312156147df57600080fd5b604051608081016001600160401b03811182821017156148015761480161425b565b6040529050808235614812816141d2565b81526020830135614822816141d2565b60208201526040830135614835816141d2565b60408201526060830135614848816141d2565b6060919091015292915050565b60006080828403121561486757600080fd5b610c4683836147cd565b6000806000610180848603121561488757600080fd5b61489185856147cd565b92506148a085608086016146af565b91506101608401356148b1816141d2565b809150509250925092565b6000806000606084860312156148d157600080fd5b83356148dc816141d2565b92506020840135915060408401356001600160401b038111156148fe57600080fd5b614423868287016142c8565b6000806000806060858703121561492057600080fd5b843561492b816141d2565b93506020850135925060408501356001600160401b0381111561494d57600080fd5b61495987828801614490565b95989497509550505050565b60006020828403121561497757600080fd5b81356001600160401b0381111561498d57600080fd5b611dea848285016142c8565b6001600160a01b0392831681529116602082015260400190565b6000806000606084860312156149c857600080fd5b83356149d3816141d2565b925060208401356001600160401b03808211156149ef57600080fd5b6149fb8783880161431e565b9350604086013591508082111561441657600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610b2057610b20614a11565b8082028115828204841417610b2057610b20614a11565b80820180821115610b2057610b20614a11565b60018060a01b0381511682526020810151602083015260408101516040830152606081015160608301526000608082015160a06080850152611dea60a0850182614451565b600060018060a01b03808716835260806020840152614acb6080840187614a64565b9481166040840152929092166060909101525092915050565b600060208284031215614af657600080fd5b5051919050565b60008060408385031215614b1057600080fd5b8235614b1b816141d2565b91506020830135614250816141d2565b80600b0b811461107457600080fd5b60008060408385031215614b4d57600080fd5b8235614b5881614b2b565b946020939093013593505050565b6020808252602c90820152600080516020614fdc83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020614fdc83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b600082614bf757634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215614c0f57600080fd5b82359150602083013561425081614b2b565b600060208284031215614c3357600080fd5b8151610c46816141d2565b6001600160a01b03858116825284811660208301528316604082015260806060820181905260009061200890830184614451565b600060208284031215614c8457600080fd5b8151610c4681614204565b60008060008060808587031215614ca557600080fd5b84519350602085015192506040850151614cbe81614b2b565b6060860151909250614ccf81614b2b565b939692955090935050565b600060018060a01b03808816835260a06020840152614cfc60a0840188614a64565b9581166040840152938416606083015250911660809091015292915050565b63ffffffff828116828216039080821115614d3857614d38614a11565b5092915050565b63ffffffff818116838216019080821115614d3857614d38614a11565b6001600160a01b0393841681529183166020830152909116604082015260600190565b60008060008060808587031215614d9557600080fd5b845193506020850151614da781614b2b565b6040860151606090960151949790965092505050565b60008251614dcf81846020870161442d565b9190910192915050565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610b2057610b20614a11565b868152602081018690526001600160a01b03858116604083015284166060820152600b83900b608082015260c060a08201819052600090612b0e90830184614451565b600060208284031215614e5b57600080fd5b81516001600160401b03811115614e7157600080fd5b8201601f81018413614e8257600080fd5b8051614e906142e7826142a1565b818152856020838501011115614ea557600080fd5b6132af82602083016020860161442d565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351614ee881601785016020880161442d565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614f1981602884016020880161442d565b01602801949350505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215614f6657600080fd5b8151610c4681614b2b565b600060208284031215614f8357600080fd5b8151610c4681614692565b634e487b7160e01b600052603260045260246000fd5b600081614fb357614fb3614a11565b50600019019056fea9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd346756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564829b824e2329e205435d941c9f13baf578548505283d29261236d8e6596d4636a26469706673582212207ef020a9be5627731b8187654bbd3e792648cee5fa1eb0b3a2a98ae51d843ac764736f6c63430008130033";
1757
1838
 
1758
1839
  type UBIPoolConstructorParams =
1759
1840
  | [linkLibraryAddresses: UBIPoolLibraryAddresses, signer?: Signer]
@@ -143,9 +143,14 @@ const _abi = [
143
143
  },
144
144
  {
145
145
  internalType: "uint32",
146
- name: "maxMembers",
146
+ name: "maxClaimers",
147
147
  type: "uint32",
148
148
  },
149
+ {
150
+ internalType: "bool",
151
+ name: "onlyMembers",
152
+ type: "bool",
153
+ },
149
154
  ],
150
155
  indexed: false,
151
156
  internalType: "struct UBIPool.UBISettings",
@@ -407,9 +412,14 @@ const _abi = [
407
412
  },
408
413
  {
409
414
  internalType: "uint32",
410
- name: "maxMembers",
415
+ name: "maxClaimers",
411
416
  type: "uint32",
412
417
  },
418
+ {
419
+ internalType: "bool",
420
+ name: "onlyMembers",
421
+ type: "bool",
422
+ },
413
423
  ],
414
424
  internalType: "struct UBIPool.UBISettings",
415
425
  name: "_limits",
@@ -495,9 +505,14 @@ const _abi = [
495
505
  },
496
506
  {
497
507
  internalType: "uint32",
498
- name: "maxMembers",
508
+ name: "maxClaimers",
499
509
  type: "uint32",
500
510
  },
511
+ {
512
+ internalType: "bool",
513
+ name: "onlyMembers",
514
+ type: "bool",
515
+ },
501
516
  ],
502
517
  internalType: "struct UBIPool.UBISettings",
503
518
  name: "_limits",
@@ -766,6 +781,19 @@ const _abi = [
766
781
  stateMutability: "view",
767
782
  type: "function",
768
783
  },
784
+ {
785
+ inputs: [
786
+ {
787
+ internalType: "address",
788
+ name: "member",
789
+ type: "address",
790
+ },
791
+ ],
792
+ name: "removeMember",
793
+ outputs: [],
794
+ stateMutability: "nonpayable",
795
+ type: "function",
796
+ },
769
797
  {
770
798
  inputs: [
771
799
  {
@@ -904,7 +932,7 @@ const _abi = [
904
932
  ] as const;
905
933
 
906
934
  const _bytecode =
907
- "0x60a06040523060805234801561001457600080fd5b5060805161390461004c600039600081816107b4015281816107f701528181610888015281816108cb0152610ab501526139046000f3fe6080604052600436106200014c5760003560e01c806301ffc9a71462000151578063038defd7146200018b578063248a9ca314620001c157806324a9d85314620001f55780632f2ff15d146200023157806336568abe14620002585780633659cfe6146200027d5780634690484014620002a25780634f1ef28614620002d35780634f962c8c14620002ea57806352d1902d146200030f57806357b7076714620003275780638abf6077146200034c5780638e819e54146200036e57806391d1485414620003935780639cedd89b14620003b85780639cf5c61314620003f2578063a217fddf1462000417578063a8aba550146200042e578063ac4afa381462000453578063ca6d56dc1462000478578063d547741f146200049d578063e9e50b0414620004c2578063f9a6694614620004e7578063fadd65c3146200050c578063fcf1e0091462000540575b600080fd5b3480156200015e57600080fd5b50620001766200017036600462001d7c565b62000565565b60405190151581526020015b60405180910390f35b3480156200019857600080fd5b50620001b0620001aa36600462001dbe565b6200059d565b604051620001829392919062001e32565b348015620001ce57600080fd5b50620001e6620001e036600462001e6d565b620006e8565b60405190815260200162000182565b3480156200020257600080fd5b5060fe546200021b90600160a01b900463ffffffff1681565b60405163ffffffff909116815260200162000182565b3480156200023e57600080fd5b50620002566200025036600462001e87565b620006fd565b005b3480156200026557600080fd5b50620002566200027736600462001e87565b62000724565b3480156200028a57600080fd5b50620002566200029c36600462001dbe565b620007aa565b348015620002af57600080fd5b5060fe54620002c4906001600160a01b031681565b60405162000182919062001eba565b62000256620002e436600462001f8b565b6200087e565b348015620002f757600080fd5b50620002566200030936600462002018565b6200093f565b3480156200031c57600080fd5b50620001e662000aa8565b3480156200033457600080fd5b50620002c46200034636600462002063565b62000b59565b3480156200035957600080fd5b5060fb54620002c4906001600160a01b031681565b3480156200037b57600080fd5b50620002566200038d366004620020ac565b62000b92565b348015620003a057600080fd5b5062000176620003b236600462001e87565b62000d38565b348015620003c557600080fd5b50620002c4620003d736600462001e6d565b60fd602052600090815260409020546001600160a01b031681565b348015620003ff57600080fd5b5062000256620004113660046200211e565b62000d63565b3480156200042457600080fd5b50620001e6600081565b3480156200043b57600080fd5b50620002c46200044d366004620021fb565b62000dcc565b3480156200046057600080fd5b50620002c46200047236600462001e6d565b62000f0e565b3480156200048557600080fd5b50620002566200049736600462001dbe565b62000f3a565b348015620004aa57600080fd5b5062000256620004bc36600462001e87565b62000fb5565b348015620004cf57600080fd5b5062000256620004e1366004620022e3565b62000fd7565b348015620004f457600080fd5b50620002c462000506366004620021fb565b62001024565b3480156200051957600080fd5b50620005316200052b36600462001dbe565b6200115b565b6040516200018291906200231d565b3480156200054d57600080fd5b50620002566200055f36600462001dbe565b620011d3565b60006001600160e01b03198216637965db0b60e01b14806200059757506301ffc9a760e01b6001600160e01b03198316145b92915050565b60fc60205260009081526040902080548190620005ba906200236c565b80601f0160208091040260200160405190810160405280929190818152602001828054620005e8906200236c565b8015620006395780601f106200060d5761010080835404028352916020019162000639565b820191906000526020600020905b8154815290600101906020018083116200061b57829003601f168201915b5050506001840154600285018054949560ff9092169491935091506200065f906200236c565b80601f01602080910402602001604051908101604052809291908181526020018280546200068d906200236c565b8015620006de5780601f10620006b257610100808354040283529160200191620006de565b820191906000526020600020905b815481529060010190602001808311620006c057829003601f168201915b5050505050905083565b60009081526065602052604090206001015490565b6200070882620006e8565b62000713816200127e565b6200071f83836200128a565b505050565b6001600160a01b03811633146200079a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b620007a6828262001314565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620007f55760405162461bcd60e51b81526004016200079190620023a8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620008296200137e565b6001600160a01b031614620008525760405162461bcd60e51b81526004016200079190620023e3565b6200085d816200139b565b604080516000808252602082019092526200087b91839190620013a8565b50565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003620008c95760405162461bcd60e51b81526004016200079190620023a8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620008fd6200137e565b6001600160a01b031614620009265760405162461bcd60e51b81526004016200079190620023e3565b62000931826200139b565b620007a682826001620013a8565b81806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200098e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009b491906200241e565b336040518363ffffffff1660e01b8152600401620009d492919062002438565b602060405180830381865afa158015620009f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1891906200244f565b151560000362000a3b57604051631d799a6d60e21b815260040160405180910390fd5b6001600160a01b038316600090815260fc6020526040902062000a5f8382620024c1565b50826001600160a01b03167f941ad6ac0538b96f9e89b9b52ec11031b50591baa2f16c0cdf1f94c69f389d6d8360405162000a9b91906200258d565b60405180910390a2505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161462000b455760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840162000791565b506000805160206200388883398151915290565b60ff602052816000526040600020818154811062000b7657600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801562000bb35750600054600160ff909116105b8062000bd8575062000bc53062001520565b15801562000bd8575060005460ff166001145b62000c3d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000791565b6000805460ff19166001179055801562000c61576000805461ff0019166101001790555b8360405162000c709062001d52565b62000c7c919062001eba565b604051809103906000f08015801562000c99573d6000803e3d6000fd5b5060fb80546001600160a01b0319166001600160a01b0392831617905560fe80549185166001600160c01b031990921691909117600160a01b63ffffffff85160217905562000cea6000866200152f565b801562000d31576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600062000d70816200127e565b6001600160a01b038316600081815260fc6020908152604091829020600101805460ff191686151590811790915591519182527fafdc942e2e075abc791516f168aed9293862095eb31c0dab19c8d0d061018a93910162000a9b565b8351602080860191909120600090815260fd909152604081205485906001600160a01b0316801562000ef357806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e46573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e6c91906200241e565b336040518363ffffffff1660e01b815260040162000e8c92919062002438565b602060405180830381865afa15801562000eaa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed091906200244f565b151560000362000ef357604051631d799a6d60e21b815260040160405180910390fd5b62000f038787878760006200153b565b979650505050505050565b610100818154811062000f2057600080fd5b6000918252602090912001546001600160a01b0316905081565b33600090815260fc60205260409020600201805462000f59906200236c565b905060000362000f7c57604051630cc15fbb60e11b815260040160405180910390fd5b6001600160a01b0316600090815260ff602090815260408220805460018101825590835291200180546001600160a01b03191633179055565b62000fc082620006e8565b62000fcb816200127e565b6200071f838362001314565b600062000fe4816200127e565b5060fe80546001600160a01b039093166001600160a01b031963ffffffff909316600160a01b02929092166001600160c01b031990931692909217179055565b8351602080860191909120600090815260fd909152604081205485906001600160a01b031680156200114b57806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200109e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010c491906200241e565b336040518363ffffffff1660e01b8152600401620010e492919062002438565b602060405180830381865afa15801562001102573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200112891906200244f565b15156000036200114b57604051631d799a6d60e21b815260040160405180910390fd5b62000f038787878760016200153b565b6001600160a01b038116600090815260ff6020908152604091829020805483518184028101840190945280845260609392830182828015620011c757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620011a8575b50505050509050919050565b6000620011e0816200127e565b60fb54604051631b2ce7f360e11b81526001600160a01b0390911690633659cfe6906200121290859060040162001eba565b600060405180830381600087803b1580156200122d57600080fd5b505af115801562001242573d6000803e3d6000fd5b50506040516001600160a01b03851692507f71ce7583e9b7e543de8a69a6af369c0b3528b287064f9dce26a38025e36dc2c79150600090a25050565b6200087b8133620018c8565b62001296828262000d38565b620007a65760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620012d03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b62001320828262000d38565b15620007a65760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602062003888833981519152546001600160a01b031690565b6000620007a6816200127e565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620013de576200071f836200192c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200143b575060408051601f3d908101601f1916820190925262001438918101906200241e565b60015b620014a05760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000791565b600080516020620038888339815191528114620015125760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000791565b506200071f838383620019cb565b6001600160a01b03163b151590565b620007a682826200128a565b60008063c49120b460e01b8585306040516024016200155d939291906200261f565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290508215620015ea5760fb546040516001600160a01b03909116908290620015b79062001d60565b620015c492919062002659565b604051809103906000f080158015620015e1573d6000803e3d6000fd5b509150620016a1565b60fb60009054906101000a90046001600160a01b03166001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200163e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001664919062002687565b81604051620016739062001d6e565b6200168092919062002659565b604051809103906000f0801580156200169d573d6000803e3d6000fd5b5091505b8651602080890191909120600090815260fd90915260409020546001600160a01b0316620016fc578651602080890191909120600090815260fd9091526040902080546001600160a01b0319166001600160a01b0384161790555b6001600160a01b038216600090815260fc60205260409020620017208782620024c1565b506001600160a01b038216600090815260fc60205260409020600201620017488882620024c1565b50604051632f2ff15d60e01b81526001600160a01b03831690632f2ff15d906200177a90600090339060040162002438565b600060405180830381600087803b1580156200179557600080fd5b505af1158015620017aa573d6000803e3d6000fd5b5050604051631b2b455f60e11b81526001600160a01b03851692506336568abe9150620017df90600090309060040162002438565b600060405180830381600087803b158015620017fa57600080fd5b505af11580156200180f573d6000803e3d6000fd5b505061010080546001810182556000919091527f45e010b9ae401e2eb71529478da8bd513a9bdc2d095a111e324f5b95c09ed87b0180546001600160a01b0319166001600160a01b03861617905550506040516200186f908890620026a7565b6040518091039020826001600160a01b03167f6e28d0056b9996bf985e7aee9b92fcd65006bee12b5b5ab52af0885cec63bd4c888888604051620018b693929190620026c5565b60405180910390a35095945050505050565b620018d4828262000d38565b620007a657620018e481620019fc565b620018f183602062001a0f565b60405160200162001904929190620026fc565b60408051601f198184030181529082905262461bcd60e51b825262000791916004016200258d565b620019378162001520565b6200199b5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000791565b6000805160206200388883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b620019d68362001bcf565b600082511180620019e45750805b156200071f57620019f6838362001c11565b50505050565b6060620005976001600160a01b03831660145b6060600062001a2083600262002785565b62001a2d9060026200279f565b6001600160401b0381111562001a475762001a4762001ece565b6040519080825280601f01601f19166020018201604052801562001a72576020820181803683370190505b509050600360fc1b8160008151811062001a905762001a90620027b5565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062001ac25762001ac2620027b5565b60200101906001600160f81b031916908160001a905350600062001ae884600262002785565b62001af59060016200279f565b90505b600181111562001b77576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062001b2d5762001b2d620027b5565b1a60f81b82828151811062001b465762001b46620027b5565b60200101906001600160f81b031916908160001a90535060049490941c9362001b6f81620027cb565b905062001af8565b50831562001bc85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000791565b9392505050565b62001bda816200192c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062001c1e8362001520565b62001c7b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000791565b600080846001600160a01b03168460405162001c989190620026a7565b600060405180830381855af49150503d806000811462001cd5576040519150601f19603f3d011682016040523d82523d6000602084013e62001cda565b606091505b509150915062001d058282604051806060016040528060278152602001620038a86027913962001d0e565b95945050505050565b6060831562001d1f57508162001bc8565b62001bc8838381511562001d365781518083602001fd5b8060405162461bcd60e51b81526004016200079191906200258d565b6104c980620027e683390190565b6106cd8062002caf83390190565b6104ec806200337c83390190565b60006020828403121562001d8f57600080fd5b81356001600160e01b03198116811462001bc857600080fd5b6001600160a01b03811681146200087b57600080fd5b60006020828403121562001dd157600080fd5b813562001bc88162001da8565b60005b8381101562001dfb57818101518382015260200162001de1565b50506000910152565b6000815180845262001e1e81602086016020860162001dde565b601f01601f19169290920160200192915050565b60608152600062001e47606083018662001e04565b8415156020840152828103604084015262001e63818562001e04565b9695505050505050565b60006020828403121562001e8057600080fd5b5035919050565b6000806040838503121562001e9b57600080fd5b82359150602083013562001eaf8162001da8565b809150509250929050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b038111828210171562001f095762001f0962001ece565b60405290565b60006001600160401b038084111562001f2c5762001f2c62001ece565b604051601f8501601f19908116603f0116810190828211818310171562001f575762001f5762001ece565b8160405280935085815286868601111562001f7157600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121562001f9f57600080fd5b823562001fac8162001da8565b915060208301356001600160401b0381111562001fc857600080fd5b8301601f8101851362001fda57600080fd5b62001feb8582356020840162001f0f565b9150509250929050565b600082601f8301126200200757600080fd5b62001bc88383356020850162001f0f565b600080604083850312156200202c57600080fd5b8235620020398162001da8565b915060208301356001600160401b038111156200205557600080fd5b62001feb8582860162001ff5565b600080604083850312156200207757600080fd5b8235620020848162001da8565b946020939093013593505050565b803563ffffffff81168114620020a757600080fd5b919050565b60008060008060808587031215620020c357600080fd5b8435620020d08162001da8565b93506020850135620020e28162001da8565b92506040850135620020f48162001da8565b9150620021046060860162002092565b905092959194509250565b80151581146200087b57600080fd5b600080604083850312156200213257600080fd5b82356200213f8162001da8565b9150602083013562001eaf816200210f565b600060c082840312156200216457600080fd5b60405160c081016001600160401b038111828210171562002189576200218962001ece565b6040529050806200219a8362002092565b8152620021aa6020840162002092565b6020820152620021bd6040840162002092565b60408201526060830135620021d2816200210f565b606082015260808381013590820152620021ef60a0840162002092565b60a08201525092915050565b6000806000808486036101808112156200221457600080fd5b85356001600160401b03808211156200222c57600080fd5b6200223a89838a0162001ff5565b965060208801359150808211156200225157600080fd5b50620022608882890162001ff5565b9450506080603f19820112156200227657600080fd5b506200228162001ee4565b6040860135620022918162001da8565b81526060860135620022a38162001da8565b60208201526080860135620022b88162001da8565b604082015260a0860135620022cd8162001da8565b60608201529150620021048660c0870162002151565b60008060408385031215620022f757600080fd5b8235620023048162001da8565b9150620023146020840162002092565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620023605783516001600160a01b03168352928401929184019160010162002339565b50909695505050505050565b600181811c908216806200238157607f821691505b602082108103620023a257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201526000805160206200386883398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206200386883398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6000602082840312156200243157600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b6000602082840312156200246257600080fd5b815162001bc8816200210f565b601f8211156200071f57600081815260208120601f850160051c81016020861015620024985750805b601f850160051c820191505b81811015620024b957828155600101620024a4565b505050505050565b81516001600160401b03811115620024dd57620024dd62001ece565b620024f581620024ee84546200236c565b846200246f565b602080601f8311600181146200252d5760008415620025145750858301515b600019600386901b1c1916600185901b178555620024b9565b600085815260208120601f198616915b828110156200255e578886015182559484019460019091019084016200253d565b50858210156200257d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600062001bc8602083018462001e04565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b63ffffffff808251168352806020830151166020840152806040830151166040840152606082015115156060840152608082015160808401528060a08301511660a0840152505050565b6101608101620026308286620025a2565b6200263f6080830185620025d5565b6001600160a01b0392909216610140919091015292915050565b6001600160a01b03831681526040602082018190526000906200267f9083018462001e04565b949350505050565b6000602082840312156200269a57600080fd5b815162001bc88162001da8565b60008251620026bb81846020870162001dde565b9190910192915050565b6000610160808352620026db8184018762001e04565b915050620026ed6020830185620025a2565b6200267f60a0830184620025d5565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516200273081601785016020880162001dde565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516200276381602884016020880162001dde565b01602801949350505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200059757620005976200276f565b808201808211156200059757620005976200276f565b634e487b7160e01b600052603260045260246000fd5b600081620027dd57620027dd6200276f565b50600019019056fe608060405234801561001057600080fd5b506040516104c93803806104c983398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610350806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100aa575b600080fd5b61006f61006a3660046102ea565b6100bd565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610105565b61007e610119565b61006f6100b83660046102ea565b610128565b6100c56101a6565b6100ce81610205565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61010d6101a6565b610117600061029a565b565b6000546001600160a01b031690565b6101306101a6565b6001600160a01b03811661019a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6101a38161029a565b50565b336101af610119565b6001600160a01b0316146101175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610191565b6001600160a01b0381163b6102785760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610191565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102fc57600080fd5b81356001600160a01b038116811461031357600080fd5b939250505056fea264697066735822122038970e7cf09dc887c70d5260fa612ed542a4b7fc825586d54bcad83fc1ebdd9164736f6c6343000813003360806040526040516106cd3803806106cd83398101604081905261002291610421565b61002e82826000610035565b505061054b565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e1565b8361026e565b505b505050565b6100ff8161029a565b61015e5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101c8816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c391906104e1565b61029a565b61022d5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610155565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029383836040518060600160405280602781526020016106a6602791396102a9565b9392505050565b6001600160a01b03163b151590565b6060600080856001600160a01b0316856040516102c691906104fc565b600060405180830381855af49150503d8060008114610301576040519150601f19603f3d011682016040523d82523d6000602084013e610306565b606091505b50909250905061031886838387610322565b9695505050505050565b6060831561038f5782516000036103885761033c8561029a565b6103885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610155565b5081610399565b61039983836103a1565b949350505050565b8151156103b15781518083602001fd5b8060405162461bcd60e51b81526004016101559190610518565b80516001600160a01b03811681146103e257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015610418578181015183820152602001610400565b50506000910152565b6000806040838503121561043457600080fd5b61043d836103cb565b60208401519092506001600160401b038082111561045a57600080fd5b818501915085601f83011261046e57600080fd5b815181811115610480576104806103e7565b604051601f8201601f19908116603f011681019083821181831017156104a8576104a86103e7565b816040528281528860208487010111156104c157600080fd5b6104d28360208301602088016103fd565b80955050505050509250929050565b6000602082840312156104f357600080fd5b610293826103cb565b6000825161050e8184602087016103fd565b9190910192915050565b60208152600082518060208401526105378160408501602087016103fd565b601f01601f19169190910160400192915050565b61014c8061055a6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea26469706673582212207b4f4f4bd905b812712d76801c617b8aa3f4c3f8d6d9e59a18563606189dd4e564736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460806040526040516104ec3803806104ec833981016040819052610022916102e9565b61002e82826000610035565b5050610406565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104c56027913961017e565b9392505050565b6100d6816101f7565b61013d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b03168560405161019b91906103b7565b600060405180830381855af49150503d80600081146101d6576040519150601f19603f3d011682016040523d82523d6000602084013e6101db565b606091505b5090925090506101ed86838387610206565b9695505050505050565b6001600160a01b03163b151590565b6060831561027357825160000361026c57610220856101f7565b61026c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610134565b508161027d565b61027d8383610285565b949350505050565b8151156102955781518083602001fd5b8060405162461bcd60e51b815260040161013491906103d3565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102e05781810151838201526020016102c8565b50506000910152565b600080604083850312156102fc57600080fd5b82516001600160a01b038116811461031357600080fd5b60208401519092506001600160401b038082111561033057600080fd5b818501915085601f83011261034457600080fd5b815181811115610356576103566102af565b604051601f8201601f19908116603f0116810190838211818310171561037e5761037e6102af565b8160405282815288602084870101111561039757600080fd5b6103a88360208301602088016102c5565b80955050505050509250929050565b600082516103c98184602087016102c5565b9190910192915050565b60208152600082518060208401526103f28160408501602087016102c5565b601f01601f19169190910160400192915050565b60b1806104146000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea2646970667358221220a4cda07e5b291f61d81b4ee016ef5ca6a806aa56384b08ff8d52828dbed4d68d64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220b52d528c0ed4f231a7b96b0b2f5a368821a266b3a17cc27ff793f31a9f17a17f64736f6c63430008130033";
935
+ "0x60a06040523060805234801561001457600080fd5b50608051613b3b61004c60003960008181610ad301528181610b1601528181610ba701528181610bea0152610dd40152613b3b6000f3fe608060405260043610620001585760003560e01c806301ffc9a7146200015d578063038defd714620001975780630b1ca49a14620001cd5780631e13edd214620001f4578063248a9ca3146200022857806324a9d853146200025c5780632f2ff15d146200029857806336568abe14620002bd5780633659cfe614620002e25780634690484014620003075780634f1ef28614620003295780634f962c8c146200034057806352d1902d146200036557806357b70767146200037d5780638abf607714620003a25780638e819e5414620003c457806391d1485414620003e95780639cedd89b146200040e5780639cf5c6131462000448578063a217fddf146200046d578063ac4afa381462000484578063ca6d56dc14620004a9578063d547741f14620004ce578063e9e50b0414620004f3578063f0eabaa71462000518578063fadd65c3146200053d578063fcf1e0091462000571575b600080fd5b3480156200016a57600080fd5b50620001826200017c36600462001f49565b62000596565b60405190151581526020015b60405180910390f35b348015620001a457600080fd5b50620001bc620001b636600462001f8b565b620005ce565b6040516200018e9392919062001fff565b348015620001da57600080fd5b50620001f2620001ec36600462001f8b565b62000719565b005b3480156200020157600080fd5b50620002196200021336600462002203565b620008c9565b6040516200018e9190620022f6565b3480156200023557600080fd5b506200024d620002473660046200230a565b62000a0b565b6040519081526020016200018e565b3480156200026957600080fd5b5060fe546200028290600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016200018e565b348015620002a557600080fd5b50620001f2620002b736600462002324565b62000a20565b348015620002ca57600080fd5b50620001f2620002dc36600462002324565b62000a47565b348015620002ef57600080fd5b50620001f26200030136600462001f8b565b62000ac9565b3480156200031457600080fd5b5060fe5462000219906001600160a01b031681565b620001f26200033a36600462002357565b62000b9d565b3480156200034d57600080fd5b50620001f26200035f366004620023c1565b62000c5e565b3480156200037257600080fd5b506200024d62000dc7565b3480156200038a57600080fd5b50620002196200039c3660046200240c565b62000e78565b348015620003af57600080fd5b5060fb5462000219906001600160a01b031681565b348015620003d157600080fd5b50620001f2620003e33660046200243b565b62000eb1565b348015620003f657600080fd5b50620001826200040836600462002324565b62001057565b3480156200041b57600080fd5b50620002196200042d3660046200230a565b60fd602052600090815260409020546001600160a01b031681565b3480156200045557600080fd5b50620001f26200046736600462002493565b62001082565b3480156200047a57600080fd5b506200024d600081565b3480156200049157600080fd5b5062000219620004a33660046200230a565b620010eb565b348015620004b657600080fd5b50620001f2620004c836600462001f8b565b62001117565b348015620004db57600080fd5b50620001f2620004ed36600462002324565b62001192565b3480156200050057600080fd5b50620001f262000512366004620024c6565b620011b4565b3480156200052557600080fd5b50620002196200053736600462002203565b62001201565b3480156200054a57600080fd5b50620005626200055c36600462001f8b565b62001338565b6040516200018e919062002500565b3480156200057e57600080fd5b50620001f26200059036600462001f8b565b620013b0565b60006001600160e01b03198216637965db0b60e01b1480620005c857506301ffc9a760e01b6001600160e01b03198316145b92915050565b60fc60205260009081526040902080548190620005eb906200254f565b80601f016020809104026020016040519081016040528092919081815260200182805462000619906200254f565b80156200066a5780601f106200063e576101008083540402835291602001916200066a565b820191906000526020600020905b8154815290600101906020018083116200064c57829003601f168201915b5050506001840154600285018054949560ff90921694919350915062000690906200254f565b80601f0160208091040260200160405190810160405280929190818152602001828054620006be906200254f565b80156200070f5780601f10620006e3576101008083540402835291602001916200070f565b820191906000526020600020905b815481529060010190602001808311620006f157829003601f168201915b5050505050905083565b33600090815260fc60205260409020600201805462000738906200254f565b90506000036200075b57604051630cc15fbb60e11b815260040160405180910390fd5b60005b6001600160a01b038216600090815260ff6020526040902054811015620008c5576001600160a01b038216600090815260ff60205260409020805433919083908110620007af57620007af6200258b565b6000918252602090912001546001600160a01b031603620008b0576001600160a01b038216600090815260ff602052604090208054620007f290600190620025b7565b815481106200080557620008056200258b565b60009182526020808320909101546001600160a01b03858116845260ff90925260409092208054919092169190839081106200084557620008456200258b565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918416815260ff909152604090208054806200088d576200088d620025cd565b600082815260209020810160001990810180546001600160a01b03191690550190555b80620008bc81620025e3565b9150506200075e565b5050565b8351602080860191909120600090815260fd909152604081205485906001600160a01b03168015620009f057806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000943573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009699190620025ff565b336040518363ffffffff1660e01b81526004016200098992919062002619565b602060405180830381865afa158015620009a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009cd919062002630565b1515600003620009f057604051631d799a6d60e21b815260040160405180910390fd5b62000a008787878760006200145b565b979650505050505050565b60009081526065602052604090206001015490565b62000a2b8262000a0b565b62000a3681620017d8565b62000a428383620017e4565b505050565b6001600160a01b038116331462000abd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b620008c582826200186e565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300362000b145760405162461bcd60e51b815260040162000ab49062002650565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000b48620018d8565b6001600160a01b03161462000b715760405162461bcd60e51b815260040162000ab4906200268b565b62000b7c81620018f5565b6040805160008082526020820190925262000b9a9183919062001902565b50565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300362000be85760405162461bcd60e51b815260040162000ab49062002650565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662000c1c620018d8565b6001600160a01b03161462000c455760405162461bcd60e51b815260040162000ab4906200268b565b62000c5082620018f5565b620008c58282600162001902565b81806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000cad573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000cd39190620025ff565b336040518363ffffffff1660e01b815260040162000cf392919062002619565b602060405180830381865afa15801562000d11573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d37919062002630565b151560000362000d5a57604051631d799a6d60e21b815260040160405180910390fd5b6001600160a01b038316600090815260fc6020526040902062000d7e838262002718565b50826001600160a01b03167f941ad6ac0538b96f9e89b9b52ec11031b50591baa2f16c0cdf1f94c69f389d6d8360405162000dba9190620027e4565b60405180910390a2505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161462000e645760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840162000ab4565b5060008051602062003abf83398151915290565b60ff602052816000526040600020818154811062000e9557600080fd5b6000918252602090912001546001600160a01b03169150829050565b600054610100900460ff161580801562000ed25750600054600160ff909116105b8062000ef7575062000ee43062001a7a565b15801562000ef7575060005460ff166001145b62000f5c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000ab4565b6000805460ff19166001179055801562000f80576000805461ff0019166101001790555b8360405162000f8f9062001f1f565b62000f9b9190620022f6565b604051809103906000f08015801562000fb8573d6000803e3d6000fd5b5060fb80546001600160a01b0319166001600160a01b0392831617905560fe80549185166001600160c01b031990921691909117600160a01b63ffffffff8516021790556200100960008662001a89565b801562001050576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006200108f81620017d8565b6001600160a01b038316600081815260fc6020908152604091829020600101805460ff191686151590811790915591519182527fafdc942e2e075abc791516f168aed9293862095eb31c0dab19c8d0d061018a93910162000dba565b6101008181548110620010fd57600080fd5b6000918252602090912001546001600160a01b0316905081565b33600090815260fc60205260409020600201805462001136906200254f565b90506000036200115957604051630cc15fbb60e11b815260040160405180910390fd5b6001600160a01b0316600090815260ff602090815260408220805460018101825590835291200180546001600160a01b03191633179055565b6200119d8262000a0b565b620011a881620017d8565b62000a4283836200186e565b6000620011c181620017d8565b5060fe80546001600160a01b039093166001600160a01b031963ffffffff909316600160a01b02929092166001600160c01b031990931692909217179055565b8351602080860191909120600090815260fd909152604081205485906001600160a01b031680156200132857806001600160a01b03166391d14854826001600160a01b031663a217fddf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200127b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012a19190620025ff565b336040518363ffffffff1660e01b8152600401620012c192919062002619565b602060405180830381865afa158015620012df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001305919062002630565b15156000036200132857604051631d799a6d60e21b815260040160405180910390fd5b62000a008787878760016200145b565b6001600160a01b038116600090815260ff6020908152604091829020805483518184028101840190945280845260609392830182828015620013a457602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162001385575b50505050509050919050565b6000620013bd81620017d8565b60fb54604051631b2ce7f360e11b81526001600160a01b0390911690633659cfe690620013ef908590600401620022f6565b600060405180830381600087803b1580156200140a57600080fd5b505af11580156200141f573d6000803e3d6000fd5b50506040516001600160a01b03851692507f71ce7583e9b7e543de8a69a6af369c0b3528b287064f9dce26a38025e36dc2c79150600090a25050565b600080848430604051602401620014759392919062002882565b60408051601f198184030181529190526020810180516001600160e01b03166346be266560e11b17905290508215620014fa5760fb546040516001600160a01b03909116908290620014c79062001f2d565b620014d4929190620028bc565b604051809103906000f080158015620014f1573d6000803e3d6000fd5b509150620015b1565b60fb60009054906101000a90046001600160a01b03166001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200154e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015749190620028ea565b81604051620015839062001f3b565b62001590929190620028bc565b604051809103906000f080158015620015ad573d6000803e3d6000fd5b5091505b8651602080890191909120600090815260fd90915260409020546001600160a01b03166200160c578651602080890191909120600090815260fd9091526040902080546001600160a01b0319166001600160a01b0384161790555b6001600160a01b038216600090815260fc6020526040902062001630878262002718565b506001600160a01b038216600090815260fc6020526040902060020162001658888262002718565b50604051632f2ff15d60e01b81526001600160a01b03831690632f2ff15d906200168a90600090339060040162002619565b600060405180830381600087803b158015620016a557600080fd5b505af1158015620016ba573d6000803e3d6000fd5b5050604051631b2b455f60e11b81526001600160a01b03851692506336568abe9150620016ef90600090309060040162002619565b600060405180830381600087803b1580156200170a57600080fd5b505af11580156200171f573d6000803e3d6000fd5b505061010080546001810182556000919091527f45e010b9ae401e2eb71529478da8bd513a9bdc2d095a111e324f5b95c09ed87b0180546001600160a01b0319166001600160a01b03861617905550506040516200177f9088906200290a565b6040518091039020826001600160a01b03167f2d89f584379c0b23270129f3ee10b4bfdd48e940725c460ee90c3b42b6106440888888604051620017c69392919062002928565b60405180910390a35095945050505050565b62000b9a813362001a95565b620017f0828262001057565b620008c55760008281526065602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200182a3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6200187a828262001057565b15620008c55760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60008051602062003abf833981519152546001600160a01b031690565b6000620008c581620017d8565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615620019385762000a428362001af9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562001995575060408051601f3d908101601f191682019092526200199291810190620025ff565b60015b620019fa5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840162000ab4565b60008051602062003abf833981519152811462001a6c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840162000ab4565b5062000a4283838362001b98565b6001600160a01b03163b151590565b620008c58282620017e4565b62001aa1828262001057565b620008c55762001ab18162001bc9565b62001abe83602062001bdc565b60405160200162001ad19291906200295f565b60408051601f198184030181529082905262461bcd60e51b825262000ab491600401620027e4565b62001b048162001a7a565b62001b685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840162000ab4565b60008051602062003abf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b62001ba38362001d9c565b60008251118062001bb15750805b1562000a425762001bc3838362001dde565b50505050565b6060620005c86001600160a01b03831660145b6060600062001bed836002620029d2565b62001bfa906002620029ec565b6001600160401b0381111562001c145762001c146200203a565b6040519080825280601f01601f19166020018201604052801562001c3f576020820181803683370190505b509050600360fc1b8160008151811062001c5d5762001c5d6200258b565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062001c8f5762001c8f6200258b565b60200101906001600160f81b031916908160001a905350600062001cb5846002620029d2565b62001cc2906001620029ec565b90505b600181111562001d44576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062001cfa5762001cfa6200258b565b1a60f81b82828151811062001d135762001d136200258b565b60200101906001600160f81b031916908160001a90535060049490941c9362001d3c8162002a02565b905062001cc5565b50831562001d955760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000ab4565b9392505050565b62001da78162001af9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062001deb8362001a7a565b62001e485760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000ab4565b600080846001600160a01b03168460405162001e6591906200290a565b600060405180830381855af49150503d806000811462001ea2576040519150601f19603f3d011682016040523d82523d6000602084013e62001ea7565b606091505b509150915062001ed2828260405180606001604052806027815260200162003adf6027913962001edb565b95945050505050565b6060831562001eec57508162001d95565b62001d95838381511562001f035781518083602001fd5b8060405162461bcd60e51b815260040162000ab49190620027e4565b6104c98062002a1d83390190565b6106cd8062002ee683390190565b6104ec80620035b383390190565b60006020828403121562001f5c57600080fd5b81356001600160e01b03198116811462001d9557600080fd5b6001600160a01b038116811462000b9a57600080fd5b60006020828403121562001f9e57600080fd5b813562001d958162001f75565b60005b8381101562001fc857818101518382015260200162001fae565b50506000910152565b6000815180845262001feb81602086016020860162001fab565b601f01601f19169290920160200192915050565b60608152600062002014606083018662001fd1565b8415156020840152828103604084015262002030818562001fd1565b9695505050505050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200207557620020756200203a565b60405290565b60006001600160401b03808411156200209857620020986200203a565b604051601f8501601f19908116603f01168101908282118183101715620020c357620020c36200203a565b81604052809350858152868686011115620020dd57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126200210957600080fd5b62001d95838335602085016200207b565b803563ffffffff811681146200212f57600080fd5b919050565b801515811462000b9a57600080fd5b600060e082840312156200215657600080fd5b60405160e081016001600160401b03811182821017156200217b576200217b6200203a565b6040529050806200218c836200211a565b81526200219c602084016200211a565b6020820152620021af604084016200211a565b60408201526060830135620021c48162002134565b606082015260808381013590820152620021e160a084016200211a565b60a082015260c0830135620021f68162002134565b60c0919091015292915050565b6000806000808486036101a08112156200221c57600080fd5b85356001600160401b03808211156200223457600080fd5b6200224289838a01620020f7565b965060208801359150808211156200225957600080fd5b506200226888828901620020f7565b9450506080603f19820112156200227e57600080fd5b506200228962002050565b6040860135620022998162001f75565b81526060860135620022ab8162001f75565b60208201526080860135620022c08162001f75565b604082015260a0860135620022d58162001f75565b60608201529150620022eb8660c0870162002143565b905092959194509250565b6001600160a01b0391909116815260200190565b6000602082840312156200231d57600080fd5b5035919050565b600080604083850312156200233857600080fd5b8235915060208301356200234c8162001f75565b809150509250929050565b600080604083850312156200236b57600080fd5b8235620023788162001f75565b915060208301356001600160401b038111156200239457600080fd5b8301601f81018513620023a657600080fd5b620023b7858235602084016200207b565b9150509250929050565b60008060408385031215620023d557600080fd5b8235620023e28162001f75565b915060208301356001600160401b03811115620023fe57600080fd5b620023b785828601620020f7565b600080604083850312156200242057600080fd5b82356200242d8162001f75565b946020939093013593505050565b600080600080608085870312156200245257600080fd5b84356200245f8162001f75565b93506020850135620024718162001f75565b92506040850135620024838162001f75565b9150620022eb606086016200211a565b60008060408385031215620024a757600080fd5b8235620024b48162001f75565b915060208301356200234c8162002134565b60008060408385031215620024da57600080fd5b8235620024e78162001f75565b9150620024f7602084016200211a565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620025435783516001600160a01b0316835292840192918401916001016200251c565b50909695505050505050565b600181811c908216806200256457607f821691505b6020821081036200258557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115620005c857620005c8620025a1565b634e487b7160e01b600052603160045260246000fd5b600060018201620025f857620025f8620025a1565b5060010190565b6000602082840312156200261257600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b6000602082840312156200264357600080fd5b815162001d958162002134565b6020808252602c9082015260008051602062003a9f83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602062003a9f83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b601f82111562000a4257600081815260208120601f850160051c81016020861015620026ef5750805b601f850160051c820191505b818110156200271057828155600101620026fb565b505050505050565b81516001600160401b038111156200273457620027346200203a565b6200274c816200274584546200254f565b84620026c6565b602080601f8311600181146200278457600084156200276b5750858301515b600019600386901b1c1916600185901b17855562002710565b600085815260208120601f198616915b82811015620027b55788860151825594840194600190910190840162002794565b5085821015620027d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600062001d95602083018462001fd1565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b63ffffffff808251168352806020830151166020840152806040830151166040840152606082015115156060840152608082015160808401528060a08301511660a08401525060c0810151151560c08301525050565b6101808101620028938286620027f9565b620028a260808301856200282c565b6001600160a01b0392909216610160919091015292915050565b6001600160a01b0383168152604060208201819052600090620028e29083018462001fd1565b949350505050565b600060208284031215620028fd57600080fd5b815162001d958162001f75565b600082516200291e81846020870162001fab565b9190910192915050565b60006101808083526200293e8184018762001fd1565b915050620029506020830185620027f9565b620028e260a08301846200282c565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516200299381601785016020880162001fab565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351620029c681602884016020880162001fab565b01602801949350505050565b8082028115828204841417620005c857620005c8620025a1565b80820180821115620005c857620005c8620025a1565b60008162002a145762002a14620025a1565b50600019019056fe608060405234801561001057600080fd5b506040516104c93803806104c983398101604081905261002f9161013a565b61003833610047565b61004181610097565b5061016a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101185760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b60006020828403121561014c57600080fd5b81516001600160a01b038116811461016357600080fd5b9392505050565b610350806101796000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100aa575b600080fd5b61006f61006a3660046102ea565b6100bd565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610105565b61007e610119565b61006f6100b83660046102ea565b610128565b6100c56101a6565b6100ce81610205565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61010d6101a6565b610117600061029a565b565b6000546001600160a01b031690565b6101306101a6565b6001600160a01b03811661019a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6101a38161029a565b50565b336101af610119565b6001600160a01b0316146101175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610191565b6001600160a01b0381163b6102785760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610191565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102fc57600080fd5b81356001600160a01b038116811461031357600080fd5b939250505056fea264697066735822122038970e7cf09dc887c70d5260fa612ed542a4b7fc825586d54bcad83fc1ebdd9164736f6c6343000813003360806040526040516106cd3803806106cd83398101604081905261002291610421565b61002e82826000610035565b505061054b565b61003e836100f6565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100f1576100ef836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e991906104e1565b8361026e565b505b505050565b6100ff8161029a565b61015e5760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101c8816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c391906104e1565b61029a565b61022d5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610155565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392909216919091179055565b606061029383836040518060600160405280602781526020016106a6602791396102a9565b9392505050565b6001600160a01b03163b151590565b6060600080856001600160a01b0316856040516102c691906104fc565b600060405180830381855af49150503d8060008114610301576040519150601f19603f3d011682016040523d82523d6000602084013e610306565b606091505b50909250905061031886838387610322565b9695505050505050565b6060831561038f5782516000036103885761033c8561029a565b6103885760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610155565b5081610399565b61039983836103a1565b949350505050565b8151156103b15781518083602001fd5b8060405162461bcd60e51b81526004016101559190610518565b80516001600160a01b03811681146103e257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015610418578181015183820152602001610400565b50506000910152565b6000806040838503121561043457600080fd5b61043d836103cb565b60208401519092506001600160401b038082111561045a57600080fd5b818501915085601f83011261046e57600080fd5b815181811115610480576104806103e7565b604051601f8201601f19908116603f011681019083821181831017156104a8576104a86103e7565b816040528281528860208487010111156104c157600080fd5b6104d28360208301602088016103fd565b80955050505050509250929050565b6000602082840312156104f357600080fd5b610293826103cb565b6000825161050e8184602087016103fd565b9190910192915050565b60208152600082518060208401526105378160408501602087016103fd565b601f01601f19169190910160400192915050565b61014c8061055a6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610029565b6100c2565b565b600061005c7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610099573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100bd91906100e6565b905090565b3660008037600080366000845af43d6000803e8080156100e1573d6000f35b3d6000fd5b6000602082840312156100f857600080fd5b81516001600160a01b038116811461010f57600080fd5b939250505056fea26469706673582212207b4f4f4bd905b812712d76801c617b8aa3f4c3f8d6d9e59a18563606189dd4e564736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656460806040526040516104ec3803806104ec833981016040819052610022916102e9565b61002e82826000610035565b5050610406565b61003e83610061565b60008251118061004b5750805b1561005c5761005a83836100a1565b505b505050565b61006a816100cd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100c683836040518060600160405280602781526020016104c56027913961017e565b9392505050565b6100d6816101f7565b61013d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080856001600160a01b03168560405161019b91906103b7565b600060405180830381855af49150503d80600081146101d6576040519150601f19603f3d011682016040523d82523d6000602084013e6101db565b606091505b5090925090506101ed86838387610206565b9695505050505050565b6001600160a01b03163b151590565b6060831561027357825160000361026c57610220856101f7565b61026c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610134565b508161027d565b61027d8383610285565b949350505050565b8151156102955781518083602001fd5b8060405162461bcd60e51b815260040161013491906103d3565b634e487b7160e01b600052604160045260246000fd5b60005b838110156102e05781810151838201526020016102c8565b50506000910152565b600080604083850312156102fc57600080fd5b82516001600160a01b038116811461031357600080fd5b60208401519092506001600160401b038082111561033057600080fd5b818501915085601f83011261034457600080fd5b815181811115610356576103566102af565b604051601f8201601f19908116603f0116810190838211818310171561037e5761037e6102af565b8160405282815288602084870101111561039757600080fd5b6103a88360208301602088016102c5565b80955050505050509250929050565b600082516103c98184602087016102c5565b9190910192915050565b60208152600082518060208401526103f28160408501602087016102c5565b601f01601f19169190910160400192915050565b60b1806104146000396000f3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6058565b565b600060537f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156076573d6000f35b3d6000fdfea2646970667358221220a4cda07e5b291f61d81b4ee016ef5ca6a806aa56384b08ff8d52828dbed4d68d64736f6c63430008130033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bb902b028d41f4c94dc6927678b85cf1d3995382683933259295fcdb77b6daab64736f6c63430008130033";
908
936
 
909
937
  type UBIPoolFactoryConstructorParams =
910
938
  | [signer?: Signer]